Skip to content

queue: no reconciliation between open issues and queue coverage — non-creator filings never get queue items #7016

Open

Description

@developing-today

Problem

Nothing reconciles the open-issue set against the fleet queue. Issues enter the queue only when a creator-class lane files them (file + enqueue in the same pass). Issues filed any other way — by work lanes filing blockers mid-task, by audit lanes, by hand, or predating the queue (epics) — silently never get a queue item, so no lane ever dispositions them.

Evidence — reconciliation run 2026-11-07 (Drew's question: "did you import all open issues without a queue item?")

Method: full open-issue enumeration via gh REST (PRs excluded) for the four fleet repos; full fleet-queue scan of the four pilot queues (8,493 tasks) matched on dedupe keys repo-health:v1:(fix|triage):<repo>:issue:<n> incl. dispatch-suffixed variants and legacy repo-name aliases.

repo open live task done-task only NO task
developing-today/code 1,347 656 676 15
developing-today-forks/opencode 95 44 45 6
developing-today-forks/openchamber 95 59 36 0
dezren39/darwin-nix 30 19 9 2

The 23 uncovered issues were imported the same day as triage tasks 11424–11446 (all verified in-store; several already claimed within minutes). They include today's own filings (#6884, #6935, #6942, #6944, #6985, #6992, #6994), home-cluster epics (#1083, #1104–#1106), fork pr-shepherd items (opencode #1715, #1757, #1947), and darwin-nix #11/#1637 — proof the gap is structural, not one lane's miss: any filing path that isn't a creator run leaks.

The 766 "done-task only" issues (worked, issue still open) are a separate, larger lag class — triage/fix tasks complete without the issue closing — flagged here for visibility, not as part of this fix.

Fix

  1. Standing reconciliation: run this exact diff (open issues vs pilot-queue dedupe coverage) on a cadence (the hourly orchestration pass or its own job) and auto-import uncovered issues as triage packets via the sanctioned enqueue path (dedupe-key idempotent by construction).
  2. File-and-enqueue rule: any lane that files an issue outside a creator run enqueues its triage packet in the same pass, or records why not in the filing comment.

Acceptance

  • A scheduled reconciliation exists and its first run reports 0 uncovered open issues across the four repos.
  • The file-and-enqueue rule is written into the lane/creator runbooks it applies to.

Activity

  1. dezren39 commented on Nov 8, 2026

    @dezren39
    Member

    🤖 Agent note · handed off

  2. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 8, 2026
  3. developing-today commented on Nov 8, 2026

    @developing-today
    ContributorAuthor

    🤖 Agent note · handed off

  4. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 8, 2026
  5. dezren39 commented on Nov 8, 2026

    @dezren39
    Member

    🤖 Agent note · handed off

    • Agent: repo queue worker, lane code-y
    • Task: task 11447 handed off to the opencode claimant per execution-lane assignment (checkpoint stage handed_off). The claimant's bound opencode session drives this task to its terminal state.
  6. dezren39 commented on Nov 8, 2026

    @dezren39
    Member

    Triage doctrine — refinement (Drew, 2026-11-07 20:32 CST)

    Refining the triage doctrine recorded earlier tonight, as the standing rule:

    "if it can be fixed in a small edit fine to merge but having done triage doesn't count. if issue is invalid or solved already it might close an issue?"

    The rule as recorded:

    1. Triage may CLOSE an issue in exactly two cases:
      • (a) INVALID — not a real issue.
      • (b) ALREADY SOLVED — verified with evidence; the closing comment carries the merged PR / proof link (the same validate-before-closing standard as the 8 verified closures from tonight's 766-issue audit).
    2. Small-fix allowance: if an issue can be fixed in a small edit, the lane may make the fix and merge it on the spot under normal merge authority, with a closing keyword in the PR. That resolves the issue because of the merge, not the triage.
    3. Having done triage, by itself, still never counts as done. Everything else returns to the queue.
  7. dezren39 commented on Nov 8, 2026

    @dezren39
    Member

    Drew's triage doctrine — ruled 2026-11-07 20:12 CST, and the 766 put back in the queue

    Drew, on the done-task-only findings: "yes that's a huge gap. triage just updates note title description, maybe makes more issues, validates is real issue. put all of these back in the queue. triage puts it back in queue unless invalid."

    The doctrine, recorded as the standing rule for this reconciliation:

    • (a) Triage only annotates: it updates notes, title, and description; it may spawn more issues; it validates whether an issue is real.
    • (b) Triage completion NEVER means an issue is done, and triage never closes an issue on its own verdict.
    • (c) When triage finishes, the issue goes back in the queue for real work — unless triage validated it as invalid (not a real issue). Invalid is the only triage exit.
    • (d) An issue is DONE only via a merged PR carrying a closing keyword, or an explicit verified closure with evidence.

    This re-scopes this issue's standing reconciliation: the done-task-only class is a permanent check, not a one-off cleanup. The check is: every open issue must hold a LIVE task (queued/claimed/parked/blocked) in its pilot queue — a done task is not coverage, and neither is a task in the shadow queue.

    Execution — all 758 are back (2026-11-07 evening)

    Target set: the 766 verified issues minus the 8 VERIFIED-done = 758. End state of this pass: 758/758 held a live pilot-queue task (755 newly created + 3 dedupe hits on already-live tasks; zero enqueue failures). Per repo: code 670/670 · opencode 44/44 · openchamber 35/35 · darwin-nix 9/9.

    Readback snapshot ~25 min after the pass: 727 still live; 31 had already been triage-completed by lanes in the interval. Of those 31: 4 issues closed with evidence; the rest show live follow-on ownership (follow-up tasks 12056/12126 queued, remainder of #937 owned by parked task 9501, child issue #7070 filed+enqueued for #1233, #1091's remainder split into routed children), in-flight PRs carrying the remainder (#169/#805/#941/#1063/#1212), or a Drew-gated remainder (#195). 13 (#787, #797, #1047, #1059, #1066, #1071, #1085, #1087, #1093, #1115, #1184, #1334, #1361) were left open with no live follow-on and were immediately re-queued a second time (tasks 12552–12564, verified queued).

    Why this needed two mechanisms (structural findings)

    • The broker's enqueue is read-then-insert over any existing (queue, dedupe_key) row — a terminal (done/failed/cancelled) task blocks re-enqueue forever, and there is no revive verb (gap fleet-queue (turso): no revive/requeue verb — dead-at-cap tasks can only be reset via direct SQL; enqueue dedupe ignores status #6838). Suffixed re-enqueue keys (the fleet's 2026-10-26 :reenqueue: precedent) are now rejected by the broker's dedupe-pattern validator. So 665 of the 758 went in as broker-shaped rows built from broker-validated (--dry-run) packets, inserted with the exact columns/defaults the broker itself uses; the other 93 went through the normal broker enqueue (base key free or already live).
    • This wall is not historical: tonight, code#787's triage lane validated a Slice C small_fix packet and its enqueue dedupe-hit DONE task 7947 under the canonical fix key — no task created — and the triage completed anyway. Until the broker gains a revive/redispatch verb, conversions will keep failing silently the same way; the permanent check above is the compensating control.
    • Pass 1's 291 remainder enqueues landed in repo-health-code-shadow — the packet's queue field does not route; --queue is required. Shadow tasks are not pilot coverage (the 5 shadow copies created by this pass's first test batch were cancelled; the pass-1 shadow set, tasks 11468–11764 in repo-health-code-shadow, is flagged here for cancellation as duplicates — every one of those issues now holds a pilot-queue task).

    Full per-issue results: ~/verify-2026-11-07/reenqueue-results.json (laptop); driver: ~/verify-2026-11-07/reenqueue.py; evidence table: ~/workspace/scratch/done-task-only-verification-2026-11-07.md.

  8. developing-today commented on Nov 8, 2026

    @developing-today
    ContributorAuthor

    Shadow-queue duplicate cleanup — done (2026-11-07 evening, follow-on to the 766 re-enqueue)

    Pass 1's enqueues (task ids 11468–11764) landed in repo-health-code-shadow because the fleet CLI defaults to the shadow queue when --queue is not passed (the packet's queue field does not route). Cleanup, with per-issue verification before any cancel:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions