You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(aggregator): roadmap annotations — dated decision/outcome notes on roadmap items and epics, rendered on the timeline #1284
Part of epic #1184 (PM stack coherence — wave 2, 2026-10-26).
Roadmap items and epics slip, get re-scoped, or get deliberately dropped, and the reasoning lives in chat — weeks later the timeline shows a moved item with no trace of why. Roadmap annotations fix the record at the source: a dated note (decision, outcome, or context) attachable to any roadmap item or epic, rendered on the timeline/drill-down next to the item it explains, attributed like dashboard comments (never anonymous) and stored in the aggregator's own store keyed by the item's stable ref, so annotations survive feed republishes and source reshuffles. Annotations are part of the item's drill-down and its JSON twin, and a "why did this slip" answer should be reachable from the roadmap in one click — the target being that schedule changes stop being chat archaeology.
Acceptance:
Any roadmap item or epic can carry dated, attributed annotations, created from its drill-down page.
Annotations render on the roadmap timeline and item page in date order, and are present in the item's JSON twin.
Annotations persist across feed republishes and aggregator restarts (keyed by stable item ref, covered by a store test like the comments store).
Editing is append/correct-by-new-note (history is not silently rewritten), matching the dashboard comment model.
Acceptance criteria
Roadmap items and epics can carry dated annotations (decision / outcome / context) that render on the timeline/drift views and are present in the item's machine-first JSON twin.
Annotations persist across feed republishes and aggregator restarts (keyed by stable item ref, covered by a store test like the comments store).
Editing is append/correct-by-new-note — history is not silently rewritten — matching the dashboard comment model.
Notes: body criteria preserved above; appended section formalises them. Verified live this run: recent aggregator PRs (#1318 honesty/freshness, #1305 project pages) touch adjacent surfaces but add no annotation store or rendering.
Risks: annotation store keyed by anything less stable than the item ref will lose notes on republish — the store test is the guard.
Suggested approach: reuse the existing comments-store pattern (same persistence/keying), add the timeline render + JSON twin field, seed with one real annotation (a recent re-scope) to prove the flow.
Finding: Implementation committed as 6bd25de and PR feat(aggregator): roadmap annotations (#1284) #4054 opened. Targeted tests pass; full aggregator suite reports 940 pass and one registry-fixture failure reproduced on clean main. Fresh PR status has no CI test/build checks yet; CodeRabbit is neutral/skipping.
Expectation: done — verification on the laptop: roadmap-annotations.test.ts 2/2 pass; slice3 24 pass / 1 fail (the known pre-existing env-dependent routes baseline reproduced on clean main by earlier shifts; the change is Nix-only and the bun suites do not read it); nix-instantiate --parse OK. Earlier shift evidence stands: targeted annotation tests pass, full aggregator suite 940 pass / same 1 baseline fail.
Activity
developing-today commentedon Oct 27, 2026
CODE-408
dezren39 commentedon Oct 27, 2026
Intake review
Related: epic #1184 (wave 2 parent).
Notes: body criteria preserved above; appended section formalises them. Verified live this run: recent aggregator PRs (#1318 honesty/freshness, #1305 project pages) touch adjacent surfaces but add no annotation store or rendering.
Risks: annotation store keyed by anything less stable than the item ref will lose notes on republish — the store test is the guard.
Suggested approach: reuse the existing comments-store pattern (same persistence/keying), add the timeline render + JSON twin field, seed with one real annotation (a recent re-scope) to prove the flow.
17 remaining items
dezren39 commentedon Nov 1, 2026
agent-note:v1 — state: parked (small_fix task 5002, OpenChamber scheduled lane)
fix(pm-stack): keep roadmap annotation state in the aggregator state …
Merge pull request #4054 from developing-today/queue/5002-1284-roadma…
dezren39 commentedon Nov 1, 2026
🤖 Agent note · done
PM_AGG_ROADMAP_ANNOTATIONS_FILEto the aggregator state dir innixos/services/pm-stack/default.nix(same pattern as the coverage snapshot). Codex re-review of 585be44: completed, no findings.roadmap-annotations.test.ts2/2 pass; slice3 24 pass / 1 fail (the known pre-existing env-dependent routes baseline reproduced on clean main by earlier shifts; the change is Nix-only and the bun suites do not read it);nix-instantiate --parseOK. Earlier shift evidence stands: targeted annotation tests pass, full aggregator suite 940 pass / same 1 baseline fail.queue/5002-1284-roadmap-annotations