Repository navigation
Description
Part of epic #1184 (PM stack coherence — wave 2, 2026-10-26).
The stack's sources disagree regularly — Project Status vs the aggregator's derived state, Kaneo card state vs GitHub issue state — and today each disagreement lives where it happens to render: a ⚠ badge on /projects, invisible everywhere else, with no way to resolve the class of problem, only the instance. A source-conflict inbox collects every live disagreement into one queue: each entry names the item, the two sources, both values, and how long they have disagreed. Drew (or the orchestrator, for classes Drew has ruled on) records a per-class ruling — "for Kaneo-vs-GitHub state, trust GitHub" — and the ruling applies to that class going forward, recorded as data (not code), until changed. Resolved classes stop generating inbox entries; a source that starts disagreeing in a new way creates a new class rather than re-opening an old ruling silently.
Acceptance:
- One page lists all current source disagreements across facets (not only /projects), each with item, sources, both values, and disagreement age.
- A per-class "trust source X" ruling can be recorded, is stored as data, and measurably suppresses that class's entries while applying the trusted value in renders.
- Rulings are listed and revocable in the same place; revoking re-surfaces the class's current disagreements.
- The inbox count appears in the stack health surface so a growing conflict backlog is itself visible; covered by tests with seeded disagreement fixtures.
Acceptance criteria
- A source-conflict inbox exists: one resolvable queue collecting Project-vs-derived and Kaneo-vs-GitHub disagreements, grouped per conflict class.
- Each class can receive a trust ruling; renders then apply the trusted value consistently, and rulings are listed and revocable in the same place (revoking re-surfaces the class's current disagreements).
- The inbox count appears in the stack health surface; behaviour is covered by tests with seeded disagreement fixtures.
Activity
developing-today commentedon Oct 27, 2026
CODE-406
dezren39 commentedon Oct 27, 2026
Intake review
Related: epic #1184 (wave 2 parent).
Notes: the largest of this wave-2 batch (a new surface + ruling store + render integration) — effort/l. Verified live: disagreements still surface only as per-page badges (e.g. on /projects); no inbox exists on main.
Risks: auto-applying a trust ruling to renders before the ruling model is proven could hide real divergence — ship detection + inbox first, rulings second.
Suggested approach: slice 1 = conflict detection feeding a read-only inbox page from the canonical projection; slice 2 = rulings + render application.
dezren39 commentedon Nov 1, 2026
agent-note:v1 — queue task 2534 (lane E) — triage verdict: CONFIRMED on current main
Verified 2026-11-01 against origin/main 0ea0a0f:
pm-stack/aggregator/src/render.ts:4897renders the Project-vs-derived clash as a badge on the /projects item card ("both are shown, neither is preferred"), andmodel.ts:1207documents the model as "Dated disagreements between sources, shown not resolved".conflictroute in the aggregator server, no/conflictspage or/api/conflicts.json.rulingappears nowhere in aggregator src; nothing stores per-class rulings as data, and renders never apply a trusted value.Route: scoped implementation packet enqueued as queue task 4992 (small_fix): /conflicts inbox + /api/conflicts.json across facets, per-class trust rulings as data (suppress + apply trusted value, listed/revocable), inbox count on the health surface, seeded-fixture tests.
39 remaining items
dezren39 commentedon Nov 3, 2026
🤖 Agent note · triaged
dezren39 commentedon Nov 3, 2026
🤖 Agent note · picked up
queue/4992-1282-source-conflict-inbox, no PR (verified fresh)/conflictsinbox page,/api/conflicts.json, inbox count on the health surface, seeded-fixture tests. No trust rulings, no render-value changes.queue/4992-1282-source-conflict-inboxin~/git/fleet/4992-1282-source-conflict-inbox, one PR, targeted aggregator tests greenMerge pull request #5032 from developing-today/queue/4992-1282-source…
developing-today commentedon Nov 3, 2026
agent-note:v1
state: reviewed (coverage loop-back)
Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 4992 (small_fix, queued, priority 40) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
Found via: coverage loop-back 2026-11-03
fix(aggregator): full-pool selector counts + pre-cap external count (#…
feat(aggregator): per-epic dependency graph — selector, one-hop graph…