Drop slice from plan-plane kinds; add CueLoop pattern liftout#283
Drop slice from plan-plane kinds; add CueLoop pattern liftout#283lunelson wants to merge 4 commits into
Conversation
Plan plane now stops at frontier: remove the premature slice plan kind from the graph schema and update all consumers (data-model contexts, web kind display, projection labels), docs, tests, snapshots, and seed fixtures (slice plan nodes promoted to frontier). Add docs/design/CUELOOP_PATTERN_LIFTOUT.md as reference-only prior-art for the orchestrator-tool-port frontier (FE-1107), linked from its cold-start reads in memory/cards/orchestrator-tool-port--plan-check-tool.md. Amp-Thread-ID: https://ampcode.com/threads/T-019f1da6-9a65-76cf-a781-911736afc999 Co-authored-by: Amp <amp@ampcode.com>
Add SPEC decision D101-L: the plan plane stops at frontier, the plan-plane
kind set is {milestone, frontier}, and slice is dropped. Amend D56-L and
D94-L with back-references (D94-L REQ/AC plane-relocation tripwire resolved:
requirement/criterion stay intent-plane). Open a Future Direction bet for the
plan-plane epistemic-horizon / decision-flow model and the candidate scope
node. Close the reference chain in src/graph/TOPOLOGY.md.
Add PLAN frontier planning-process-model (proving): plan-as-projection as the
cheapest first tracer, with the horizon/decision-flow model and scope-node
question deferred behind the epistemic fog.
Amp-Thread-ID: https://ampcode.com/threads/T-019f1da6-9a65-76cf-a781-911736afc999
Co-authored-by: Amp <amp@ampcode.com>
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
PR SummaryMedium Risk Overview Product UX: Operational modes show Specify / Execute in chrome, commands, and composed prompts (internal ids Verification & dev: New Misc: Elicitation doc tweaks (scratchpad vs kinds; plan questions stop at frontier); component preview gallery uses width-aware truncation; graph TOPOLOGY notes unsorted query row order. Reviewed by Cursor Bugbot for commit 74aacb3. Bugbot is set up for automated code reviews on this repo. Configure here. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 5927125. Configure here.
There was a problem hiding this comment.
Pull request overview
Removes the premature slice node kind from the plan plane (plan plane now stops at frontier) and updates schema/projections/UI/tests/fixtures to match, while also making the product subagent tool available in Specify mode (no longer dev-gated) and adding CueLoop prior-art reference documentation.
Changes:
- Drop
slicefrom plan-plane kinds (PLAN_KINDS = { milestone, frontier }) and update plan ordering, labels, UI kind display, tests, snapshots, and seed fixtures accordingly. - Promote product subagents: register/allow the
subagenttool under Specify-mode policy, update dev docs/usage strings, and improve operational-mode labeling in prompts/commands/chrome. - Add reference docs (
CUELOOP_PATTERN_LIFTOUT.md) and a repo-levelTESTING_PLAN.md, and update SPEC/PLAN to record the new D103-L decision + planning-process-model frontier.
Reviewed changes
Copilot reviewed 62 out of 62 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| TESTING_PLAN.md | Adds a demo/audit checklist for manual validation of current dev loops and observability surfaces. |
| src/web/features/graph/kind-display.ts | Removes slice from UI kind labels and display ordering. |
| src/web/components/tests/node-card.test.tsx | Updates KindBadge expectations to use frontier instead of slice. |
| src/README.md | Terminology update: “SPEC-mode” → “Specify-mode”. |
| src/graph/TOPOLOGY.md | Updates decision reference list to include the new plan-plane decision. |
| src/graph/schema/nodes.ts | Removes slice from node metadata and latest-expected-band mapping. |
| src/graph/schema/kinds.ts | Removes slice from PLAN_KINDS. |
| src/graph/projection/labels.ts | Removes refinement mapping that referenced slice. |
| src/graph/projection/tests/labels.test.ts | Drops refine-matrix coverage for requirement → slice. |
| src/graph/tests/queries.test.ts | Removes slice from node-kind metadata/readiness expectations. |
| src/graph/tests/command-executor.test.ts | Updates plan-node creation test to create a frontier node. |
| src/dev/TOPOLOGY.md | Clarifies --dev-tools enables query tools only; subagents are product-enabled. |
| src/dev/README.md | Documents npm run dev flows and clarifies debug mirrors vs --dev-tools. |
| src/dev/dev-cli.ts | Updates usage text for --dev-tools vs product subagents. |
| src/dev/tests/tier-2-harness.test.ts | Asserts subagent tool is present/active in product boot (not dev-gated). |
| src/app/pi-subagents.ts | Updates documentation comment to reflect product subagent registration behavior. |
| src/app/pi-extensions.ts | Removes subagent from dev opt-in channel; keeps dev opt-in for query tools only. |
| src/app/brunch-tui.ts | Enables subagents by default for normal launches; wires delegatable set into boot. |
| src/app/tests/brunch-tui.test.ts | Updates boot test expectations to reflect product-enabled subagents and dev-gated query tools. |
| src/agents/TOPOLOGY.md | Terminology update: “SPEC-mode” → “Specify-mode”. |
| src/agents/subagents/TOPOLOGY.md | Terminology update for prompt-mode naming. |
| src/agents/skills/map/references/map-plans.md | Updates plan-plane guidance: stop at frontier, no plan-plane slice. |
| src/agents/runtime/TOPOLOGY.md | Terminology update: “SPEC/CODE” → “Specify/Execute”. |
| src/agents/runtime/executor/TOPOLOGY.md | Terminology update and clarifies Execute-mode executor responsibility. |
| src/agents/runtime/executor/compose-prompt.ts | Improves executor control header with product/operational-mode labels. |
| src/agents/runtime/elicitor/TOPOLOGY.md | Terminology update: “SPEC-mode” → “Specify-mode”. |
| src/agents/runtime/elicitor/compose-live-prompt.ts | Types operational mode id and renders both id + label in control header. |
| src/agents/runtime/elicitor/active-tools.ts | Adds subagent to the live elicitor allowed-tool list. |
| src/agents/runtime/elicitor/tests/active-tools.test.ts | Updates tool-policy tests for product subagent + dev query tool behavior. |
| src/agents/runtime/elicitor/snapshots/live-elicitor-prompt.md | Snapshot update for new control header lines. |
| src/agents/prompts/TOPOLOGY.md | Updates product-label terminology (Specify/Execute). |
| src/agents/prompts/executor.md | Wording tweak for Execute prompt intro. |
| src/agents/prompts/elicitor.md | Wording tweak for Specify-mode prompt intro. |
| src/agents/contexts/data-model/session/runtime-frame.ts | Renders operational-mode label + id in session runtime frame. |
| src/agents/contexts/data-model/session/snapshots/runtime-frame-ready.md | Snapshot update for new runtime-frame render. |
| src/agents/contexts/data-model/plan/plan-output.ts | Removes slice from plan-node ordering. |
| src/agents/contexts/data-model/plan/tests/plan-output.test.ts | Updates plan-output fixture to use frontier instead of slice. |
| src/agents/contexts/data-model/plan/snapshots/plan-output.md | Snapshot update for plan output without slice. |
| src/agents/contexts/data-model/graph/tests/graph-slice.test.ts | Updates assertions for plan-node code changes (F2 vs S1). |
| src/agents/contexts/data-model/graph/snapshots/related-hub-REQ1.md | Snapshot update reflecting promoted frontier node and label changes. |
| src/agents/contexts/data-model/graph/snapshots/neighborhood-hub-REQ1.md | Snapshot update reflecting promoted frontier node and label changes. |
| src/agents/contexts/data-model/graph/snapshots/neighborhood-hub-REQ1-hops2.md | Snapshot update reflecting promoted frontier node and label changes. |
| src/agents/contexts/data-model/graph/snapshots/neighborhood-hub-REQ1-compact.md | Snapshot update reflecting promoted frontier node and label changes. |
| src/agents/contexts/data-model/graph/snapshots/graph-overview-kind-coverage-matrix.md | Snapshot updates: legend, plan codes, and edges after slice removal. |
| src/.pi/extensions/subagents/TOPOLOGY.md | Updates extension documentation for product-enabled subagents. |
| src/.pi/extensions/commands/index.ts | Uses operational-mode labels in notifications/completions and improves unknown-mode message. |
| src/.pi/extensions/chrome/index.ts | Displays operational-mode label in chrome footer instead of raw id. |
| src/.pi/extensions/tests/commands-runtime-switch.test.ts | Updates expectations for new mode labeling in notifications. |
| src/.pi/extensions/tests/chrome.test.ts | Updates footer-line expectation for new mode labeling. |
| memory/SPEC.md | Records D103-L plan-plane decision and updates cross-references/future-direction notes. |
| memory/PLAN.md | Adds planning-process-model frontier and updates sequencing list. |
| memory/cards/orchestrator-tool-port--plan-check-tool.md | Adds CueLoop liftout doc to cold-start reads for FE-1107. |
| docs/design/ELICITATION_QUESTIONS.md | Updates plan-plane kind set and question prompt guidance after slice removal. |
| docs/design/CUELOOP_PATTERN_LIFTOUT.md | Adds CueLoop prior-art pattern liftout for orchestrator-tool-port. |
| .fixtures/seeds/yamlbase/base.json | Promotes plan slice nodes to frontier in the seed. |
| .fixtures/seeds/rd-loop/base.json | Promotes plan slice nodes to frontier in the seed. |
| .fixtures/seeds/kind-coverage-matrix/base.json | Promotes plan slice node to frontier in the seed. |
| .fixtures/seeds/fable/base.json | Promotes plan slice nodes to frontier in the seed. |
| .fixtures/seeds/edge-hub-neighborhood/base.json | Promotes plan slice node to frontier in the seed. |
| .fixtures/seeds/edge-category-directions/base.json | Promotes plan slice node to frontier in the seed. |
| .fixtures/seeds/dumpchat/base.json | Promotes plan slice nodes to frontier in the seed. |
| .fixtures/seeds/brunch-self/base.json | Promotes plan slice nodes to frontier in the seed. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| delegatableAgents: | ||
| agentState.operationalMode === 'elicit' | ||
| ? ['explorer', 'researcher', 'projector', 'reviewer'] | ||
| : [], |
| - **Companion prior art:** the external `../brunch` orchestrator | ||
| ([`/Users/lunelson/Code/hashintel/brunch/ORCHESTRATOR.md`](/Users/lunelson/Code/hashintel/brunch/ORCHESTRATOR.md) | ||
| and `src/orchestrator/src/`), already listed in the card's cold-start reads. |
| | D99-L | Reviewed advisory capture is graph-persistable but not self-settling. Bulk acquisition from arbitrary sources (brownfield code, referenced documents, pasted specs/plans, design concepts) first produces an assistant-authored digest and discussion; once the user confirms the understanding, graph-shaped material may be persisted with a settlement dimension separate from `basis`. `advisory` settlement means "accepted as observed/source-derived signal, still requiring harmonization against inner-band concerns and later projection"; `settled` means "accepted as current spec truth/commitment for its band." Early outer-band signal is the common advisory case: later-band material captured inside a smaller concern envelope must be carried forward for promotion, rewrite, supersession, or reconciliation rather than treated as globally fixed. Depends on: D63-L, D64-L, D80-L, D81-L, D82-L, D94-L. | Materialized (2026-07-01, Card 5): `NODE_SETTLEMENTS` (`src/graph/schema/kinds.ts`), `GraphNode.settlement` / `GraphEdge.settlement` (nodes/edges tables default `settled`); `mutate_graph`'s `createSettlement` param persists advisory bulk-acquisition material. Design ledger: [`docs/design/SESSION_LOCAL_ELICITATION_GAPS.md`](docs/design/SESSION_LOCAL_ELICITATION_GAPS.md). | active | | ||
| | D101-L | Session-local elicitation-gap scratchpad replaces the persisted spec-scoped register (supersedes D65-L). "What still needs asking" is cumulative session state — a todo.ts-style scratchpad the elicitor reads/writes turn-by-turn via a Brunch session-state extension (a new `brunch.elicitation_scratchpad` custom transcript entry following the `src/session/runtime-state.ts` fold pattern, plus read/write tools replacing `read_elicitation_gaps`/`update_elicitation_gaps`). Non-authoritative (I56-L): durable truth stays in the graph; low-confidence noticings land here, not the graph (D81-L). Foreground world reads and subagents receive it in their session snapshots (`src/.pi/extensions/agent-runtime/system-prompts/world-reads.ts`, `src/app/pi-subagents.ts`). Depends on: D65-L, D81-L, D102-L; I56-L. | [`src/session/elicitation-scratchpad.ts`](src/session/elicitation-scratchpad.ts), [`src/session/TOPOLOGY.md`](src/session/TOPOLOGY.md), [`src/.pi/extensions/brunch-data/elicitation/scratchpad-tools.ts`](src/.pi/extensions/brunch-data/elicitation/scratchpad-tools.ts). | active | | ||
| | D102-L | A session's scratchpad starts from a thin, graph-derived neutral seed (facts, not scores) and orientation is prompt-guided: the elicitor.md system prompt carries the "new session → establish orientation → focus a vein" directive that turns the neutral seed into a session-specific asking agenda. Orientation is prompt behavior, not a new persisted product primitive; the seed carries no readiness scores or coverage counts (D45-L). Derivation detail is unresolved (A36-L). Depends on: D101-L, D94-L; A36-L. | [`src/agents/contexts/seeds/graph-fact-seed.ts`](src/agents/contexts/seeds/graph-fact-seed.ts), [`src/agents/prompts/elicitor.md`](src/agents/prompts/elicitor.md). Derivation stays the raw-facts shape confirmed 2026-07-01 (A36-L); richer derivation remains open. | active | | ||
| | D103-L | Plan plane stops at `frontier`; the durable plan-plane kind set is `{milestone, frontier}` and `slice` is dropped. Rationale: plan-plane graph truth is mostly *projection* from intent/oracle/design down to milestones and frontiers, but the epistemic horizon (fog-of-war) and non-structural sequential dependency bite at the *scoping* level, where extending horizon or gaining parallelism are design-style decision-flow trade-offs made per scope at build time (`ln-scope`/`ln-build`), not durable graph nodes. `slice` was premature: no reader consumed it, and it conflated projectable plan truth with horizon-bounded execution scoping. Buildable slicing is downstream scoping/execution (the ln-scope/ln-build scope-card process unit), not a plan node. Resolves the D94-L held-open REQ/AC plane-relocation tripwire: with plan-plane granularity settled, `requirement`/`criterion` stay intent-plane and acceptance criteria do not become slice-connected plan nodes. A durable accountability node below `frontier` (candidate `scope`, orchestration/executor-owned per D98-L) and the plan-plane epistemic-horizon/decision-flow model are deferred to the planning-persistence future direction, not built here. Relates: D87-L (`unknown` = horizon made first-class on the intent plane), D99-L (advisory/settled epistemic vocabulary). Depends on: D56-L, D94-L. Amends: D56-L (plan-kind enumeration), D83-L (plan-output kind list). Supersedes: the `slice` plan-plane node kind. | [`src/graph/TOPOLOGY.md`](src/graph/TOPOLOGY.md); `PLAN_KINDS` in [`src/graph/schema/kinds.ts`](src/graph/schema/kinds.ts) | active | |
| > **Status:** product SPEC-mode wiring active. Normal Brunch launches inject the | ||
| > selected parent spec/workspace/session snapshot, spec-bound graph readers, and |
Code: - gallery-component: ANSI-safe width truncation via pi-tui truncateToWidth - component-preview: deep-link path stops the TUI in finally so a throwing entry cannot leave the terminal raw - graph-fact-seed: zero-count detection uses === undefined, not falsy - brunch-tui: subagents always registered with the code-owned delegatable set; per-mode tool policy (elicitor/executor allowlists) decides advertisement instead of boot-time conditional registration - nodes.ts formatGraphNodeCode: loud descriptive error for persisted out-of-enum kinds (e.g. retired slice), naming the reseed remedy Docs: - AGENTS.md verification recipe matches package.json (check ends with check:promoted-run-paths; verify is fix→test→build) - dev/TOPOLOGY.md drops nonexistent dev:components:watch - session/TOPOLOGY.md: scratchpad projection comes from the session-branch entries fold, not spec-scoped reads - subagents/TOPOLOGY.md: Specify-mode terminology + unconditional registration semantics - ELICITATION_QUESTIONS.md scratchpad item description matches real schema - CUELOOP_PATTERN_LIFTOUT.md drops absolute local path link - graph/TOPOLOGY.md names the row-order contract (unspecified; consumers sort) Also refreshes three file snapshots stale since the D103-L slice removal. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>


Drop slice from plan-plane kinds; add CueLoop pattern liftout
Plan plane now stops at frontier: remove the premature slice plan kind
from the graph schema and update all consumers (data-model contexts,
web kind display, projection labels), docs, tests, snapshots, and seed
fixtures (slice plan nodes promoted to frontier).
Add docs/design/CUELOOP_PATTERN_LIFTOUT.md as reference-only prior-art
for the orchestrator-tool-port frontier (FE-1107), linked from its
cold-start reads in memory/cards/orchestrator-tool-port--plan-check-tool.md.
Amp-Thread-ID: https://ampcode.com/threads/T-019f1da6-9a65-76cf-a781-911736afc999
Co-authored-by: Amp amp@ampcode.com
Record D101-L plan-plane decision and planning-process-model frontier
Add SPEC decision D101-L: the plan plane stops at frontier, the plan-plane
kind set is {milestone, frontier}, and slice is dropped. Amend D56-L and
D94-L with back-references (D94-L REQ/AC plane-relocation tripwire resolved:
requirement/criterion stay intent-plane). Open a Future Direction bet for the
plan-plane epistemic-horizon / decision-flow model and the candidate scope
node. Close the reference chain in src/graph/TOPOLOGY.md.
Add PLAN frontier planning-process-model (proving): plan-as-projection as the
cheapest first tracer, with the horizon/decision-flow model and scope-node
question deferred behind the epistemic fog.
Amp-Thread-ID: https://ampcode.com/threads/T-019f1da6-9a65-76cf-a781-911736afc999
Co-authored-by: Amp amp@ampcode.com
Doctor-mode testing-plan and first fixes