Skip to content

impl(fleet/project): adopt native GitHub sub-issues + blocked-by for epic children (16 epics) instead of text-derived links #1166

Open

Description

@dezren39

Finding

Dependency and parentage across the fleet are still mostly text-derived (issue bodies, backlog prose) - the orchestrator derives blockedBy hourly from text + classification (documented in #910 design Q&A), while GitHub offers native sub-issues and blocked-by relations that render in the UI, survive edits, and are API-clean for the collector to consume (see epic-rollups issue).

Proposal

Migration pass for the 16 pool epics: children become native sub-issues of their epic; known dependency pairs become native blocked-by. Orchestrator reconciliation prefers native relations, falling back to text derivation. Record per-epic completion on this issue; the lifecycle protocol doc gets the "new epics use native relations at filing" rule.

Acceptance

Acceptance criteria

  • All 16 pool epics have their children as native GitHub sub-issues (or a recorded exception per epic on this issue) — restating the body's Acceptance section as the criteria section.
  • Known dependency pairs across the 16 epics are recorded as native blocked-by relations.
  • One orchestrator run's blockedBy output is shown to match the native relations on a sampled chain, with text derivation kept only as fallback.
  • Per-epic completion is recorded on this issue, and the lifecycle protocol doc gains the "new epics use native relations at filing" rule.

Activity

  1. added
    kind/choreRoutine maintenance, housekeeping, dependency hygiene
    app/pm-stackpm-stack (Pad/Grist) in developing-today/code
    on Oct 27, 2026
  2. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  3. added
    priority/normalOrdinary priority (the default)
    effort/lLarge: multi-day or open-ended; expect staged check-ins
    source/humanFiled directly by a human
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 28, 2026
  4. dezren39 commented on Oct 28, 2026

    @dezren39
    MemberAuthor

    Intake review

    • Related: design+impl: org-level GitHub Project as the conceptual-project layer — orchestrator-synced, dashboard-read #910 (design Q&A documenting the text-derived blockedBy derivation this replaces); the epic-rollups work named in the body; parent/dependency data is also consumed by the fleet orchestrator and the collector.
    • Still live: a merged-PR search found no PR explicitly resolving this issue (no native sub-issues migration has landed); the issue remains open with only kind/chore + app/pm-stack before this pass.
    • Notes: the body carries an ## Acceptance section; an ## Acceptance criteria section restating it has been appended (original body preserved verbatim above it).
    • Risks: 16 epics is a wide migration — partial adoption (some epics native, some text-derived) is worse than either alone unless the orchestrator's preference order (native first, text fallback) is verified on the sampled chain before the pass is declared done.
    • Suggested approach: script the migration per epic (children + blocked-by pairs from the current text derivation), record per-epic completion here as each lands, and finish with the protocol-doc rule so new epics are born native.
    • Labels normalized by fleet monitor: priority/normal, effort/l (16-epic migration + verification), source/human, status/needs-triage, meta/enriched.
  5. added
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    and removed on Nov 1, 2026
  6. 64 remaining items

  7. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  8. added
    queue/queuedHas a queued task in the Supabase agent queue
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 3, 2026
  9. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: task 7643
    • Found via: monitor reconciliation
    • Task: Claim-eviction repair: the queue task for this issue is queued and unclaimed (its previous claim's lease expired without a complete/park/block), but the issue labels still said claimed. Labels reset to the truth: queue/queued + status/needs-triage. Checkpoint stage on the task: handed_off.
    • Expectation: a queue lane re-claims the task and resumes from the checkpoint stage named in the task progress.
  10. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  11. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  12. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    Task 7643 was launched and bound to OpenCode session ses_e5e5c664809ffeuBevReG3fyo2 by opencode-claimant. It is executing as repo-worker-code and has the packet, prior triage evidence, and project-scope blocker in its prompt.

  13. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · triage — STILL LIVE, partially complete

    Fresh verification at 2026-11-03T22:58Z: issue #1166 is still open. The repository's current main is 7a8500417188465deea72339db81fcf1a92c8448 (latest commit at 22:55:27Z).

    Evidence and scope

    Check run at current main
    Ran bun run scripts/check-epic-conformance.ts from pm-stack/aggregator/ using source at 7a8500417188465deea72339db81fcf1a92c8448. It exited 1: 0/53 conforming; 53 need attention. The audit explicitly skipped Project #4 membership because gh lacks read:project; this audit checks epic metadata, not native sub-issue completion.

    Blocker and order
    A fresh Project v2 query is denied for missing read:project, so Project-only child lists cannot be resolved here. Do not infer children or record exceptions without that evidence.

    1. Attach/re-read the body-identifiable children under epic(quota-plane): Stage 2 — 15-minute quota gathering in the PM stack, token adapters, automated pool decisions #1149 and Long-term: migrate the pm stack into Supabase — refactor component state into schemas for central management #3142 (start with pm stack → Supabase phase 1 (#3142): orchestration state into Supabase tables, orchestration.json becomes a generated export #5005–pm stack → Supabase phase 5 (#3142): central management surface — inspect / pause / repair every component's state #5008).
    2. With read:project, resolve the remaining Project-only epic children and attach native sub-issues, or record an explicit per-epic exception on this issue.
    3. At closeout, rerun the audit, capture an actual orchestrator blockedBy sample, and record per-epic completion/exceptions. Keep impl(fleet/project): adopt native GitHub sub-issues + blocked-by for epic children (16 epics) instead of text-derived links #1166 open until its acceptance is met.

    No implementation was performed in this triage; #1166 remains the tracker.

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

Metadata

Metadata

Assignees

Labels

app/pm-stackpm-stack (Pad/Grist) in developing-today/codeeffort/lLarge: multi-day or open-ended; expect staged check-inskind/choreRoutine maintenance, housekeeping, dependency hygienemeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/claimedQueue worker lifecycle statesource/humanFiled directly by a humanstatus/in-progressQueue worker lifecycle statetask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions