Skip to content

feat(aggregator): explain dependency cycles, external refs, and graph actions #3975

Open

Description

@dezren39

Part of epic #1184; implements anomaly and action behavior from design issue #1257. Design note: doc/2026-11-01T21-05-00Z_design_aggregator_dependency_graph_1257.md (proposed by the linked design PR).

Goal

Make dependency anomalies explicit and let eligible graph items use the dashboard's existing audited action path without introducing direct GitHub or Project writes.

Acceptance criteria

  • Dependency cycles are detected as strongly connected components and rendered as named warning groups with member links; the UI does not pick a false root or imply one cycle member alone frees the rest.
  • Valid refs outside the loaded Project pool render as linked owner/repo#number stubs with unknown/outside-pool state, never as resolved. Malformed/unavailable edge data is distinguished from a valid external ref.
  • Rank/count behavior for cycle members and external refs matches the linked design(aggregator): cross-project dependency graph — critical path per epic and what unblocks the most work #1257 design note and is covered by tests.
  • Existing supported actions render only for items eligible in the published action pipeline and post through POST /api/actions with the existing action store/consumer and pending/result feedback. Unsupported items link to their normal detail and explain why inline action is unavailable.
  • No graph control writes GitHub/Project directly or bypasses current triage validation; any new issue-dispatch verb is deferred to a separate audited design.

Activity

  1. added
    kind/featureNew feature or capability request
    priority/normalOrdinary priority (the default)
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    app/pm-stackpm-stack (Pad/Grist) in developing-today/code
    source/agentCreated by an agent worker
    on Nov 1, 2026
  2. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  3. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: triaged (coverage pass)
    Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
    Found via: coverage pass 2026-11-03

  4. 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
  5. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: triaged
    task: 8323 (repo-health-code-pilot, lane code-m)

    Triage — STILL LIVE, unblocked (2026-11-03)

    Verified against fresh state:

    • Issue feat(aggregator): explain dependency cycles, external refs, and graph actions #3975 is open; no held / user/owned / do-not-merge / do-not-auto-edit labels.
    • Design issue design(aggregator): cross-project dependency graph — critical path per epic and what unblocks the most work #1257 is CLOSED and the design note is on main: doc/2026-11-01T21-05-00Z_design_aggregator_dependency_graph_1257.md. No open dependency blocks this work.
    • Current graph code (pm-stack/aggregator/src/graph.ts, 193 lines) provides hasGraphEdges, blockedSummary (cycle-safe traversal: a cycle degrades to a truncated path, never a hang), and depthLayout. That is all:
      • No strongly-connected-component cycle detection and no named cycle warning groups — cycles are silently truncated, exactly the "false root / unexplained anomaly" gap this issue names.
      • No external-ref stubs: grep for outside-pool/external-ref handling in the aggregator source returns nothing; refs outside the loaded Project pool are not rendered as linked owner/repo#number stubs with unknown/outside-pool state.
      • No graph-item actions through the audited POST /api/actions pipeline from the graph view.

    Routing

    Implementation follow-up enqueued from this triage. Suggested split for the implementer (effort/m): (1) SCC detection + named cycle groups + rank/count tests per the #1257 note; (2) external-ref stubs distinguishing malformed/unavailable edge data from valid external refs; (3) eligible-item actions via the existing action store/consumer only — no direct GitHub/Project writes, no new dispatch verb.

    Found via: queue task 8323 triage, lane code-m, 2026-11-03.

  6. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  7. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    work/assignedQueue worker lifecycle state
    on Nov 4, 2026
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/codekind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/parkedQueue task is parked (waiting on CI, time, or an event)source/agentCreated by an agent workerstatus/parkedDeliberately paused with a recorded resume conditiontask/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