FE-897: Alpha hardening residues#237
Conversation
PR SummaryLow Risk Overview Seeding: Runtime vocab: Axis constants and types move from Prompt shape: Canonical Reviewed by Cursor Bugbot for commit 82cd906. Bugbot is set up for automated code reviews on this repo. Configure here. |
There was a problem hiding this comment.
Pull request overview
This PR closes the FE-897 alpha-hardening residue bundle by (1) introducing an import-free session runtime vocabulary leaf, (2) adding an explicit --all-seeds seeding mode plus a disposition catalog for tracked seed sets, and (3) recording FE-893 prompt-shape decisions/deferrals in canonical READMEs with guard tests.
Changes:
- Added
src/session/schema/kinds.tsas a pure constants/types leaf for session runtime vocabulary and updated downstream imports/tests to use it. - Extended the seed-fixtures CLI with
--all-seeds, added a tracked seed disposition catalog, and expanded tests to lock the behavior and documentation. - Documented deferred/adopted prompt-resource shapes in
.piREADMEs and added a test to ensure those decisions remain recorded.
Reviewed changes
Copilot reviewed 26 out of 27 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/session/schema/README.md | New topology README describing the session schema vocab leaf and dependency rule. |
| src/session/schema/kinds.ts | New import-free constants/types leaf for session runtime vocab (mode/role/strategy/lens). |
| src/session/runtime-state.ts | Refactored to consume runtime vocab from schema/kinds.ts instead of duplicating literals. |
| src/session/README.md | Documents the new session runtime vocabulary leaf and updated ownership boundaries. |
| src/session/agent-context-seed.ts | Redirected type import to the new runtime vocab leaf. |
| src/projections/session/runtime-state.ts | Redirected runtime-vocab type imports to the new leaf. |
| src/projections/session/runtime-policy.ts | Redirected runtime-vocab type imports to the new leaf. |
| src/projections/session/affordances.ts | Redirected runtime-vocab type imports to the new leaf. |
| src/projections/session/tests/runtime-state.test.ts | Updated to import strategy ids from the new vocab leaf. |
| src/projections/tests/topology-boundaries.test.ts | Added topology assertions for the new session schema leaf and removed inline vocab exports from runtime-state. |
| src/graph/seed-fixtures.ts | Added --all-seeds selection, tracked-seed discovery, and per-seed spec slugging for bulk workbench seeding. |
| src/graph/tests/seed-fixtures.test.ts | Added CLI tests for --all-seeds and locked the seed disposition catalog coverage. |
| src/.pi/skills/README.md | Recorded deferred prompt-resource shape decisions (references/, generated vocab refs). |
| src/.pi/extensions/runtime/state.ts | Redirected runtime-vocab type imports to the new leaf. |
| src/.pi/extensions/commands/index.ts | Split runtime-state mutation import from runtime-vocab imports (now from schema leaf). |
| src/.pi/extensions/chrome/index.ts | Redirected runtime-vocab type imports to the new leaf. |
| src/.pi/components/runtime-posture/axis-picker.ts | Redirected runtime-vocab imports to the new leaf. |
| src/.pi/agents/README.md | Recorded adopted/deferred agent prompt-shape decisions (SYSTEM.md, [sub]). |
| src/.pi/tests/runtime-axis-picker.test.ts | Redirected runtime-vocab imports to the new leaf. |
| src/.pi/tests/runtime-axis-picker.harness.test.ts | Redirected runtime-vocab imports to the new leaf. |
| src/.pi/tests/prompt-shape-readmes.test.ts | New test ensuring deferred/adopted prompt-shape decisions stay recorded in READMEs. |
| src/.pi/tests/architecture.test.ts | Updated expectation to point at the new runtime vocab leaf for role ids. |
| package-lock.json | Lockfile update (bin path normalization for a dependency). |
| memory/SPEC.md | Updated D73-L/D58-L text to include the session schema leaf and prompt-shape deferral decisions. |
| memory/PLAN.md | Marked alpha-hardening as done and recorded completion notes/branch metadata. |
| .fixtures/seeds/README.md | New disposition catalog for tracked seed sets and --all-seeds usage. |
| .fixtures/README.md | Linked to seed catalog and documented --all-seeds opt-in behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| import { | ||
| AGENT_LENS_IDS, | ||
| AGENT_STRATEGY_IDS, | ||
| OPERATIONAL_MODE_IDS, | ||
| type AgentLensSelection, | ||
| type AgentStrategySelection, | ||
| type AutoAxisSelection, | ||
| type OperationalModeId, | ||
| } from './schema/kinds.js'; | ||
|
|
|
|
||
| Drizzle-free, Pi-free closed vocabulary for session-domain state. | ||
|
|
||
| - `kinds.ts` is the session-side mirror of `src/graph/schema/kinds.ts`: a pure constants leaf that imports nothing and owns the runtime axis vocab for `op_mode`, `strategy`, `lens`, and the `auto` sentinel. |
| - **Runtime vocabulary leaf** — `schema/kinds.ts` mirrors | ||
| `graph/schema/kinds.ts` for the session side: a drizzle-free, Pi-free leaf that | ||
| owns closed `op_mode` / `strategy` / `lens` ids plus the `auto` sentinel and | ||
| display-only planned mode choices. `runtime-state.ts` consumes and re-exports | ||
| this vocab; it no longer owns duplicate axis literals. |
ln-judo-review found two code-judo moves left by the alpha-hardening residue commits: - src/session/runtime-state.ts carried ~18 lines of re-exports that no consumer imports (every axis-vocab consumer already imports from the leaf). The build surfaced six consumers the review grep missed (axis-picker, two picker tests, commands/index, chrome/index, agent-context-seed); redirect them to schema/kinds.js, then delete the facade and trim the internal import to the seven body-used symbols. Reinforces D73-L: the leaf is the unambiguous single source. - src/graph/seed-fixtures.ts had single/all branches each spelling readSelectedSeed → seedFixture → stdout. Collapse to one seeding path; preserves identical stdout, --reset semantics, and the all-seeds summary. Net -28 lines. npm run verify green (124 files, 941 tests).
06a7e1c to
82cd906
Compare

Stack Context
This PR sits above FE-861 and closes the small alpha-hardening residue collection tracked by FE-897.
What?
--all-seedsworkbench seeding and the seed disposition catalog.Why?
These residues were too small to justify separate frontier branches but still needed a tracked cleanup pass before the alpha stack could be tied off cleanly.