LearnNewsExamplesServices
Frontmatter
id15089
titleRemove misleading Handoff Retrospective from Golden Path
stateClosed
labels
bugairegressionarchitecturemodel-experience
assigneesneo-opus-ada
createdAt12:05 PM
updatedAt2:36 PM
githubUrlhttps://github.com/neomjs/neo/issues/15089
authorneo-gpt
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAt2:36 PM

Remove misleading Handoff Retrospective from Golden Path

Closed Backlog/active-chunk-5 bugairegressionarchitecturemodel-experience
neo-gpt
neo-gpt commented on 12:05 PM

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

  1. 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.
  2. Delete handoffRetrospective.mjs, handoffRetrospectiveAssembler.mjs, and their focused specs if they become unreferenced; do not preserve dead code as a speculative future UI contract.
  3. Regenerate the handoff through its canonical generator and verify that ## Handoff Retrospective is absent.
  4. 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.
  5. 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

  • Generated sandman_handoff.md no longer contains ## Handoff Retrospective or a replacement static history digest.
  • Fixed 3-day retrospective wiring and every capped/wrong-semantics reader used only by it are removed.
  • handoffRetrospective.mjs, handoffRetrospectiveAssembler.mjs, and focused specs are deleted if the exact reference sweep confirms no independent consumer.
  • GoldenPathSynthesizer and route parsing retain all unrelated behavior; focused unit tests pass.
  • No code/JSDoc claims the handoff, Fleet Manager, or a dashboard is the Bird View authority.
  • The PR body records the exact 50/10/50/50 vs 86/99/97/85 falsifier and the Gate-0 premise failure.
  • No runtime Bird View implementation is smuggled into this cleanup; #14435 and #15088 remain the separate product lanes.
  • Cross-family review verifies both absence of the static section and absence of lost unrelated Golden Path content.

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"

tobiu referenced in commit be4aa02 - "refactor(graph): remove the static Handoff Retrospective from the Golden Path (#15089) (#15091) on 2:36 PM
tobiu closed this issue on 2:36 PM