Context
A P0 authority audit of PR #15085 found that the generated Handoff Retrospective is neither the planned Bird View nor a truthful independent handoff feature.
The operator restated the original contract on 2026-07-12: Bird View was always intended as runtime exploration tools, never a Markdown blob inside sandman_handoff.md. Memory/session history and resolved pull-request history must be separate runtime views (#14435 and #15088).
The static handoff path was introduced by #14603 / #14706 after a peer relay listed handoff as one possible consumer. The ticket then promoted that suggestion into “the consumer side the operator actually asked for” and demoted the runtime get_digest(window) idea to an unfiled follow-up. Cross-family reviews, including @neo-gpt’s, audited parser safety and code correctness but missed that Gate-0 premise inversion.
The Problem
The live section creates four correctness failures:
- Wrong product/authority: it is presented as the historical Bird View even though parent Discussion
#11375 explicitly rejects presentation-first work as the missing capability.
- False totals:
fetchRecentMergedPRs, fetchRecentClosedIssues, and fetchRecentOpenedIssues use --limit 50. The generated 3-day section presents each array length as a window total without a truncation flag.
- Wrong “opened PRs” semantics: the class is derived from
fetchOpenPRs(), then window-filtered by createdAt, so it counts only PRs opened in-window that remain open at synthesis time—not PRs opened in the window.
- No “WHAT happened” content: sessions are metadata-only placeholders (
session recorded); PR review/comment reasoning is not read; the module does not consume temporal-summary or the open dynamic synthesis lane.
Exact live falsifier for the handoff’s own recorded 2026-07-09 09:11Z → 2026-07-12 09:11Z window:
| Class |
Rendered |
Bounded GitHub search |
| Merged PRs |
50 |
86 |
| Opened PRs |
10 |
99 |
| Closed issues |
50 |
97 |
| Opened issues |
50 |
85 |
The section therefore turns implementation caps and current-state filters into confident historical claims. Keeping it while building the real tools would preserve a second, contradictory authority in every generated handoff.
The Architectural Reality
ai/services/graph/GoldenPathSynthesizer.mjs:776-805 owns the capped GitHub readers; :816-832 owns metadata-only session labels; :1509-1574 wires a fixed 3-day direct-read block.
ai/services/graph/handoffRetrospectiveAssembler.mjs folds six raw arrays; it never reads the temporal pyramid.
ai/services/graph/handoffRetrospective.mjs renders the Markdown and claims callers can “query the temporal substrate for depth,” but the runtime query tool does not exist yet.
resources/content/sandman_handoff.md:151-176 is generated output and currently contains the misleading section. It must change through the generator path, not by hand-editing only the artifact.
rg found the runtime modules consumed by GoldenPathSynthesizer and their focused specs; intake must re-run the exact reference sweep before deleting now-unused symbols/files.
The Fix
Remove the Handoff Retrospective from the Golden Path generation path.
- Delete the fixed 3-day synthesis block, its direct history readers, and associated imports from
GoldenPathSynthesizer.mjs when the reference sweep confirms no independent consumer.
- Delete
handoffRetrospective.mjs, handoffRetrospectiveAssembler.mjs, and their focused specs if they become unreferenced; do not preserve dead code as a speculative future UI contract.
- Regenerate the handoff through its canonical generator and verify that
## Handoff Retrospective is absent.
- Remove or rewrite adjacent tests/JSDoc that call the static section the Bird View/history leg. Preserve
parseGoldenPath() behavior and every unrelated Golden Path section.
- Do not replace the removed block with a new Markdown summary. Runtime successors are #14435 and #15088.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
sandman_handoff.md generated section ## Handoff Retrospective |
Operator P0 correction + #11375 queryable-synthesis boundary |
Remove the section entirely |
Existing Computed Golden Path remains; no historical substitute until runtime tools ship |
GoldenPathSynthesizer JSDoc/tests |
Regenerated handoff contains no retrospective heading |
GoldenPathSynthesizer retrospective readers/wiring |
Live source + exact-window falsifier |
Delete capped/wrong-semantics direct readers and fixed 3-day wiring when unreferenced |
Fail compilation/test if a hidden consumer exists; intake then narrows deletion to handoff-only seam |
Source JSDoc |
reference sweep + focused unit suite |
handoffRetrospective* modules |
#14603 / #14706 (superseded product premise) |
Delete if no non-handoff consumer remains |
No speculative compatibility layer |
N/A after deletion |
import/reference sweep |
| Runtime Bird View |
#14435 + #15088 |
Explicitly not implemented in this corrective PR |
No history surface in Markdown |
Related links only |
Diff contains no replacement renderer/tool |
Decision Record impact
aligned-with ADR 0028: restores its query-time L3–L5 boundary and removes a misleading parallel consumer. No ADR amendment is required.
Acceptance Criteria
Out of Scope
- Implementing either runtime tool (#14435 / #15088).
- Fleet Manager or UI changes.
- Rewriting archived issue/PR archaeology; public correction comments already preserve the supersession record.
- Temporal-summary writer completion or #15035.
Avoided Traps
- No “fix the cap” patch: exact counts would still leave the wrong static product layer.
- No hidden feature flag: the operator rejected this surface, so disabled dead code is not an asset.
- No hand-edited generated file without generator removal.
- No combined cleanup + runtime-tool PR.
Related
Runtime successors: #14435 · #15088
Parent authority: #12679 · #11375
Wrong-shape origin: #14603 · #14706 · PR #14694 · PR #14709
Authority correction: https://github.com/neomjs/neo/pull/15085#issuecomment-4950763963
Live duplicate sweep: latest 20 open issues, exact-title GitHub search, Knowledge Base tickets, active+archived local issue/Discussion content, and last 30 all-state A2A messages checked at 2026-07-12T10:03:44.549Z; no equivalent cleanup ticket or in-flight claim found.
Origin Session ID: 837ad74b-c2d2-413d-9aab-b7165a93a82a
Retrieval Hint: "remove Handoff Retrospective false capped counts static Bird View GoldenPathSynthesizer #15085 authority correction"
Context
A P0 authority audit of PR
#15085found that the generated Handoff Retrospective is neither the planned Bird View nor a truthful independent handoff feature.The operator restated the original contract on 2026-07-12: Bird View was always intended as runtime exploration tools, never a Markdown blob inside
sandman_handoff.md. Memory/session history and resolved pull-request history must be separate runtime views (#14435 and #15088).The static handoff path was introduced by
#14603/#14706after a peer relay listed handoff as one possible consumer. The ticket then promoted that suggestion into “the consumer side the operator actually asked for” and demoted the runtimeget_digest(window)idea to an unfiled follow-up. Cross-family reviews, including @neo-gpt’s, audited parser safety and code correctness but missed that Gate-0 premise inversion.The Problem
The live section creates four correctness failures:
#11375explicitly rejects presentation-first work as the missing capability.fetchRecentMergedPRs,fetchRecentClosedIssues, andfetchRecentOpenedIssuesuse--limit 50. The generated 3-day section presents each array length as a window total without a truncation flag.fetchOpenPRs(), then window-filtered bycreatedAt, so it counts only PRs opened in-window that remain open at synthesis time—not PRs opened in the window.session recorded); PR review/comment reasoning is not read; the module does not consumetemporal-summaryor the open dynamic synthesis lane.Exact live falsifier for the handoff’s own recorded 2026-07-09 09:11Z → 2026-07-12 09:11Z window:
The section therefore turns implementation caps and current-state filters into confident historical claims. Keeping it while building the real tools would preserve a second, contradictory authority in every generated handoff.
The Architectural Reality
ai/services/graph/GoldenPathSynthesizer.mjs:776-805owns the capped GitHub readers;:816-832owns metadata-only session labels;:1509-1574wires a fixed 3-day direct-read block.ai/services/graph/handoffRetrospectiveAssembler.mjsfolds six raw arrays; it never reads the temporal pyramid.ai/services/graph/handoffRetrospective.mjsrenders the Markdown and claims callers can “query the temporal substrate for depth,” but the runtime query tool does not exist yet.resources/content/sandman_handoff.md:151-176is generated output and currently contains the misleading section. It must change through the generator path, not by hand-editing only the artifact.rgfound the runtime modules consumed by GoldenPathSynthesizer and their focused specs; intake must re-run the exact reference sweep before deleting now-unused symbols/files.The Fix
Remove the Handoff Retrospective from the Golden Path generation path.
GoldenPathSynthesizer.mjswhen the reference sweep confirms no independent consumer.handoffRetrospective.mjs,handoffRetrospectiveAssembler.mjs, and their focused specs if they become unreferenced; do not preserve dead code as a speculative future UI contract.## Handoff Retrospectiveis absent.parseGoldenPath()behavior and every unrelated Golden Path section.Contract Ledger Matrix
sandman_handoff.mdgenerated section## Handoff Retrospective#11375queryable-synthesis boundaryGoldenPathSynthesizerretrospective readers/wiringhandoffRetrospective*modules#14603/#14706(superseded product premise)Decision Record impact
aligned-with ADR 0028: restores its query-time L3–L5 boundary and removes a misleading parallel consumer. No ADR amendment is required.Acceptance Criteria
sandman_handoff.mdno longer contains## Handoff Retrospectiveor a replacement static history digest.handoffRetrospective.mjs,handoffRetrospectiveAssembler.mjs, and focused specs are deleted if the exact reference sweep confirms no independent consumer.GoldenPathSynthesizerand route parsing retain all unrelated behavior; focused unit tests pass.Out of Scope
Avoided Traps
Related
Runtime successors: #14435 · #15088
Parent authority: #12679 · #11375
Wrong-shape origin:
#14603·#14706· PR#14694· PR#14709Authority correction: https://github.com/neomjs/neo/pull/15085#issuecomment-4950763963
Live duplicate sweep: latest 20 open issues, exact-title GitHub search, Knowledge Base tickets, active+archived local issue/Discussion content, and last 30 all-state A2A messages checked at 2026-07-12T10:03:44.549Z; no equivalent cleanup ticket or in-flight claim found.
Origin Session ID: 837ad74b-c2d2-413d-9aab-b7165a93a82a
Retrieval Hint: "remove Handoff Retrospective false capped counts static Bird View GoldenPathSynthesizer #15085 authority correction"