fix(dispatcher): avoid head-of-line blocking of independent authorized work #373
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/dispatcher-ready-step-scheduling"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Root cause
The independent step assessor correctly confirms a real hold on one live-verification step, but strict sequential ordering makes separately authorized later publication unreachable. Parent decisions are present (not ignored), yet read-only reassessment cannot change the work selection. This produces endless blocker notifications despite independently possible work. No business-specific repair or second writer is needed.
Fix
After an independently confirmed blocked/waiting result, the selected validator may admit ONE exact existing later step, only if original mandate, real dependencies, approvals/CI, parent decisions and settled evidence support its independent execution. Persist original stable step identities and the held assessment/correction/session/route; reorder only the existing uncompleted suffix. The original step stays OPEN. Overall completion still requires every original step. No unknown/settled effects replay. Parent clarification invalidates an unstarted readiness permit; manual stop/pause/expiry fences remain. Dedicated validator selection is honored, no legacy fallback.
Verification
Preserves dirty primary Core/Plugins worktrees; isolated worktree only. After normal merge, activate using the configured external native update owner and verify original writer progress. No ledger editing, cancellation, force merges or duplicate publisher.
Integrated concurrent main #371/#372 normally before final validation. Final exact head
282fe6efdb: local full suite 2048 passed / 1 existing skip / zero failures; typecheck/build/diff-check pass. Exact-head Forgejo decision-interface-ci full-validation succeeded in 2m16s. 12 new focused cases. Live configured-validator read-only proof selects original source step 4 and preserves a real missing-approval gate. Proceeding with normal merge and native-owner activation; no force/bypass.LIVE VERIFIED: Both Shikamaru and Akira selected AND running Core
42c14cc577via supported native owner. Authenticated API identity and software provenance checked; installed scheduling code and process paths verified. No config/ledger edits, SIGKILL, cancelled mandates or maintenance-created business writer.Actual existing blocked execution 559dbf4d resumed under #373: persisted order [0,1,3,2], original blocked live-verification report retained, original stable publication intent step:559dbf4d-4a7b-4860-ac94-178c3c97734f:3:medium. Existing original worker ran real tools and published previously stranded test commit 938ae8e9ebdf2b84d645ab1f4a6cba8f3951e643 to the existing PR; remote head independently verified. This is not a claim that the genuine live dependency has been resolved or that the business PR is already merged. A newer parent timing decision woke its old retry while #374 was being prepared; the once-only migration is additionally covered by six old-hour-backoff recovery regressions, not falsely claimed as the cause of that particular wake.
Final #374 full suite 2054 passed / 1 existing skip / zero failures; typecheck/build pass. #373 and #374 exact-head Forgejo full-validation green before normal non-force merge. Real configured validator evaluated actual retained task read-only: independently selects source step 4 while refusing a required-approval bypass control. Evidence ~/.cache/hayate-maintenance/dispatcher-ready-step-scheduling/summary.json and original-writer-progress.json.