Skip to content

FE-811: Ship-gate rename residue and live mention autocomplete#179

Draft
lunelson wants to merge 24 commits into
ln/fe-823-elicitation-backlog-substrate-and-agenda-read-backfrom
ln/fe-811-ship-gate-residue-and-mentions
Draft

FE-811: Ship-gate rename residue and live mention autocomplete#179
lunelson wants to merge 24 commits into
ln/fe-823-elicitation-backlog-substrate-and-agenda-read-backfrom
ln/fe-811-ship-gate-residue-and-mentions

Conversation

@lunelson

@lunelson lunelson commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Regenerate fixture curation graph overview

Regenerate project graph review overview

Guard probe reports against retired graph tokens

Label non-anchor related edges as lateral

Use live graph nodes for mention autocomplete

Reconcile FE-811 ship gate cleanup

@graphite-app graphite-app Bot changed the base branch from ln/fe-823-elicitation-backlog-substrate-and-agenda-read-back to graphite-base/179 June 8, 2026 11:34
lunelson and others added 13 commits June 8, 2026 22:07
Apply the hardened coverage admission gate: the coverage layer is mostly
closed. Reclassify exchanges-and-generalized-capture from coverage to a
bounded feature (its exchange inventory is already materialized across the
three layers) and add renderer-golden-coverage as the one genuinely-open
coverage frontier (preview harness exists; lock/formalize stage never
adopted) — parallel, discretionary, never a ship gate. Record the
temporary-ledger precedence of elicitation-driver over new coverage
breadth, and fix the stale poc-live-ship-gate autocomplete-parked note.

Amp-Thread-ID: https://ampcode.com/threads/T-019ea6aa-0ce3-766e-8458-36e6a4450587
Co-authored-by: Amp <amp@ampcode.com>
Apply the second planner's corrections after verifying renderer/exchange
state in code:
- renderer-golden-coverage: partial-oracle completion, not greenfield
  (graph/neighborhood + session/runtime-frame already carry goldens);
  bound to durable renderers, exclude markdown/toon helpers and stubs
- exchanges-and-generalized-capture: bounded proving feature because the
  load-bearing unknown is capture semantics, not breadth closure; some
  exchange breadth still deferred/topology-stubbed (present-candidates)
- elicitation-driver: bounded feature / cross-cut closing row, not coverage

Amp-Thread-ID: https://ampcode.com/threads/T-019ea6aa-0ce3-766e-8458-36e6a4450587
Co-authored-by: Amp <amp@ampcode.com>
Surfaced from manual feedback-loop work: locking prompt partials and
composeAgentPrompt output is a second open coverage frontier of the same
partial-oracle kind as renderer-golden-coverage.

Verified state: compose.test.ts / prompting.test.ts are invariant-rich
(structure, manifest legality, grade filtering, pin rules, >=700-char
depth floor) but no golden lock of partial bodies or composed-prompt
output exists, and there is no composed-prompt preview harness. Framed as
partial-oracle completion, not greenfield. Parallel/discretionary, never a
ship gate, does not preempt elicitation-driver (which pairs with it).

Updated coverage narrative, sequencing, ASCII map, and notes to carry
both locking frontiers.

Amp-Thread-ID: https://ampcode.com/threads/T-019ea6aa-0ce3-766e-8458-36e6a4450587
Co-authored-by: Amp <amp@ampcode.com>
lunelson and others added 10 commits June 8, 2026 22:08
…ojections

Replace the two drifting category→metadata tables (EDGE_CATEGORY_METADATA
in schema/edges.ts and the drifted CATEGORY_POLICY) with a single
EDGE_CATEGORY_METADATA in policy/category-policy.ts. The old pair
disagreed on impact direction for proof/support; the consolidated table
carries endpoint roles, impact direction+strength (none/advisory/cascade),
criteria-help, and projection effect in one place.

Add two anchor-relative projections derived from it:
- projection/labels.ts: direction-aware semantic phrasing (two-tier).
- projection/direction.ts: upstream/downstream/lateral for the
  reconciliation flow, derived from the impact columns.

Wire node-neighborhood renderer to group incident edges by directional
relation and label each line semantically; retire the inline endpoint
role-token leak (graph-slice + edges.ts return to baseline). Reconcile
GRAPH_MODEL.md and graph/README.md to the new shape.

Amp-Thread-ID: https://ampcode.com/threads/T-019ea862-2101-73ce-8c08-09aca617f03a
Co-authored-by: Amp <amp@ampcode.com>
Add edge-spread/hub-neighborhood.json: one requirement anchor wired to
naturally-typed neighbors covering every edge category in both relation
directions, both proof/support stances, the three realization refinements
(expresses / implemented by / established by), hard vs soft impact, a
lateral association, and an ambient cross-neighbor edge.

Lock three renderer previews exercising the projection layer:
- neighborhood-hub-REQ1: integrated directional + semantic render (hops=1)
- neighborhood-hub-REQ1-hops2: ambient-edge counting at hops=2
- graph-slice-category-directions-full-debug: anchorless flat edge render
  across all categories (regression-guards the reverted slice renderer)

Amp-Thread-ID: https://ampcode.com/threads/T-019ea862-2101-73ce-8c08-09aca617f03a
Co-authored-by: Amp <amp@ampcode.com>
…shape-only renderer previews

Split verification along the design seam: labels and directionality are pure
functions, so they own correctness; renderers own only output shape.

Projection unit tests, now the full executable lookup matrices:
- labels.test.ts: every Tier-1 (category, anchorRole, stance) base cell +
  every Tier-2 (category, sourceKind, targetKind) realization refinement.
- direction.test.ts: every category's impact axis and the neighbor
  relation+strength from both anchor endpoints.

Renderer tests consolidated into one home, src/renderers/graph/previews.test.ts:
- the locked __previews__/*.md snapshot IS the assertion; positive
  'looks like X' string matches removed (the projection matrices prove those).
- only cross-cutting shape invariants kept: no raw structural vocabulary leaks
  into anchored projections, and large-graph slices stay bounded.
- adds neighborhood-hub-REQ1-bounded preview locking maxEdges omission.
- retires graph-slice.test.ts, node-neighborhood.test.ts,
  node-neighborhood-spread.test.ts, and the .pi wrapper node.test.ts (the
  wrapper is a pure pass-through; maxNeighbors dead option dropped).

Also lands the architecture-boundary fix from the parallel agent: the real
fixture-reads.test-support implementation moves to src/graph/, leaving a
re-export shim under src/renderers/graph/.

All src/graph + src/renderers + architecture tests pass (197). Unrelated
pre-existing failure in src/probes/structured-exchange-ordering-proof remains
(temp extension load), untouched.

Amp-Thread-ID: https://ampcode.com/threads/T-019ea862-2101-73ce-8c08-09aca617f03a
Co-authored-by: Amp <amp@ampcode.com>
…PLAN.md

First fixture hand-derived from real planning prose rather than synthetic
placeholders, proving the full loop: prose -> graph fixture -> the real
propose-graph validator (seedFixture -> CommandExecutor) -> renderers.

.fixtures/seeds/brunch-self/spec-graph.json: one planning_ready spec describing
Brunch itself across all four planes. As a by-product of being faithful it
covers every node kind and every edge category (both proof/support stances) and
includes a supersession lineage. The grouped-list render shows 54 nodes / 30
edges from 55 / 31 authored because the active-context projection (D60-L)
correctly hides the superseded predecessor requirement and its dangling edge.

src/renderers/graph/previews.test.ts: locks a whole-spec grouped-list plus
REQ1 (one-authority requirement) and MOD1 (CommandExecutor, hops=2)
neighborhood previews. Seeding through readGraphSliceFixture also gates
structural legality — the test fails if any node/edge is illegal.

Validated: src/graph + src/renderers (195 tests) pass.
Amp-Thread-ID: https://ampcode.com/threads/T-019ea862-2101-73ce-8c08-09aca617f03a
Co-authored-by: Amp <amp@ampcode.com>
…e) + validate-fixture CLI

Hand-derive structurally-legal spec graphs from four external projects'
prose docs to exercise the propose-graph validator and graph renderers
beyond the brunch-self example:

- dumpchat   41 nodes / 33 edges  (docs/SPEC.md, mostly faithful intent/design)
- yamlbase   69 nodes / 65 edges  (memory/SPEC.md + PLAN.md)
- rd-loop    54 nodes / 35 edges  (README + concept docs, more projection)
- fable      67 nodes / 37 edges  (memory/SPEC.md + ROADMAP.md)

Each covers all four planes, every node kind, all eight edge categories,
both proof/support stances, and one acyclic supersession lineage.

Add src/graph/validate-fixture.ts, a standalone CLI that seeds one fixture
through the real CommandExecutor and reports authored/stored/active-context
counts, so fixtures can be authored and validated without test-file contention.

Amp-Thread-ID: https://ampcode.com/threads/T-019ea862-2101-73ce-8c08-09aca617f03a
Co-authored-by: Amp <amp@ampcode.com>
@lunelson lunelson force-pushed the ln/fe-811-ship-gate-residue-and-mentions branch from 5412a06 to 753c9af Compare June 8, 2026 20:09
@lunelson lunelson force-pushed the graphite-base/179 branch from 1447843 to 68273e3 Compare June 8, 2026 20:09
@lunelson lunelson changed the base branch from graphite-base/179 to ln/fe-823-elicitation-backlog-substrate-and-agenda-read-back June 8, 2026 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant