Skip to content

loop-census: all-blocked cycle fallback bypasses the blocking gate for a release issue with real (non-cyclic) open blockers #200

Description

@robercano-ghbot

The 2026-07-29T11:46:48Z tick emitted action=advance issue=178 for the milestone-gated release issue #178. Investigation before touching any release machinery found #178 is still explicitly blocked:

Root cause: loop-census.sh's "all-blocked cycle fallback" (issue #97 comment, ~line 750): "only trips when at least one candidate was otherwise eligible but every one of them got blocked... falling back to lowest-number". #178 is the only planned-labeled candidate in the v0.3.0 milestone right now, so when the per-candidate blocking-graph gate correctly marks it blocked, advance_ready stays none after the loop — which trips the cycle-fallback, and the fallback ignores the blocking-graph gate entirely, re-selecting #178 anyway.

That fallback exists for genuine dependency cycles (A blocks B blocks A) where honoring the gate would deadlock the loop forever. It is firing here on a simple, non-cyclic, not-yet-satisfied dependency chain instead — the release issue is correctly blocked, just not yet ready, and there's no cycle to break. The fallback can't currently distinguish "real cycle, must override" from "single planned candidate whose blockers are still legitimately open, must wait."

Impact: unless a human/agent notices before acting on the verdict, the loop will attempt to execute release.sh v0.3.0 (version bump, changelog, tag, publish, close milestone) while #138/#139 are unimplemented — shipping a release that still bundles unpackaged self-dev assets and lacks the needs-human escalation label safety net.

Suggested fix direction: the all-blocked fallback should only override the gate when it can detect an actual cycle among planned candidates (blocker also blocked by something back in the planned set), not merely "every planned candidate happens to be blocked by something still open." A release issue in particular should probably never be fallback-eligible.

No code changes made; no branch/worktree created. Filing as backlog per policy — not planned, since that label is the owner's call.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    backlogFiled, not yet approved by the owner - the loop must NOT pick it upmodule:harnessOrchestrator machinery under .claudepriority:highNext in line

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions