prose(experiment): the spawn offer, the return leg, and the graceful lock - #1073
Merged
Conversation
leeovery
force-pushed
the
feat/experiment-integration
branch
from
September 1, 2026 09:04
30706d0 to
147138c
Compare
leeovery
force-pushed
the
feat/experiment-integration
branch
from
September 1, 2026 09:56
147138c to
dfe87fe
Compare
leeovery
force-pushed
the
feat/experiment-integration
branch
from
September 1, 2026 11:07
dfe87fe to
455e2d3
Compare
leeovery
force-pushed
the
feat/experiment-integration
branch
from
September 1, 2026 11:38
455e2d3 to
f742968
Compare
leeovery
force-pushed
the
feat/experiment-integration
branch
from
September 1, 2026 13:41
f742968 to
40d4976
Compare
leeovery
force-pushed
the
feat/experiment-integration
branch
from
September 1, 2026 15:20
40d4976 to
8c475cf
Compare
…onversation's two pauses The now-or-later choice right after a spawn (experiment-spawn-gate, addressed to the spawning item, refused for an id it holds no wait on) and the blocked-conclusion gate (experiment-wait-gate: blocker naming the open ids, guidance naming the ways out, pause/keep menu — the graceful face of the engine's completion refusal). Pinned in the render-surfaces suite; the simulation audits both at their prescribed moments. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…the now-or-later exit One shared reference carries the flow: the conversational offer (a number about to bear a decision — declining keeps the sighting in the session, labelled exploratory), the spawn recorded while the conversation still holds the knowledge (create, the plain-terms problem file with its provenance line, the waiting point noted in the session's own document, both cadence commits), then the engine-rendered now-or-later gate. Now pauses the session with the menu one step away — the laboratory starts in fresh context; later returns to the loop with conclusion blocked. Wired into all four session surfaces in the off-topic trigger's register. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…he blocked conclusion The reconcile advisory gains its experiment branch: the register rendered, each newly terminal record's report read in full, verdicts presented as evidence the conversation weighs and can override, an abandonment surfacing its reason with the waiting point back open. The research and discussion conclude flows check the evidence waits before the ceremony and meet a live wait with the wait gate — pause to the menu or keep talking — so the engine refusal stays the backstop, never the UX. The epic route gloss covers the record id where the stored route is invoked. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ate surface Touching closing-gates.md adopts its menus: the re-review offer, the mandatory review gate's two faces, and the wrap-up consent become one variant-keyed surface, wording preserved — the final-review variant carries the classification's quoted reason as --reason. Distinct from conclude-gate on purpose: that surface is the completion consent the same close reaches later, and the two stops coexist in one conclusion. The prose now carries the fetch and the verbatim emission; the ratchet pin retires with the last templated fence. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…release advisory binds and covers cancel, the wait gate outruns the defer sweep The spawn's record commit takes --sweep: the experiment topic is the laboratory's slot, never the spawner's to claim. The research loop gains the laboratory cue its discussion sibling already carried. The release advisory reads the series off the manifest to bind each record's directory, reads every terminal report in full, and now covers the cancel release — nothing measured, the waiting point back open — with a callout worded for every release. The discussion's evidence-wait check moves ahead of the defer sweep, into the concluding ceremony's head, so a point blocked pending evidence is never written deferred on the way to a close that cannot pass; the refusal keeps one home. And the menu promise is scoped to what every work type renders — the menu carries the way in, with per-record rows the epic dashboard's own. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…es align The epic menu's cancel flow meets every refusal the engine now raises: one broadened cascade branch fetches the gate — which derives whichever apply: collapsing specs, a series cancel's wait release, or a waiting conversation's stranded experiments — and the receipt says where the ball sits when waits released or records closed; the section's absolute claims scope per phase. The release advisory speaks the triangle — a cancel abandons open records with its reason on each row, and a new spawn revives even a cancelled series. The wait gate's guidance is one sentence true for every work type. The concluding ceremony's map stage becomes its own section so the empty wait branch routes explicitly, and the bridge continuations' pipeline lines carry the experiment slot, the epic plan template glossing the record id its experiment routes add. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Park is the roadmap's word for set-aside-retrievable — the closing ceremony's evidence gate says deferred, the state it actually guards. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… three arguments The bridge's plan template drops its experiment id branch and the continue-epic route gloss its record-id clause — routes are phase-blind three-positional invocations everywhere, and the record resolves inside the phase. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ate; the spawner-cancel gate speaks per-record experiment-spawn.md follows the crash-window-free shape — the problem statement goes to the session's cache scratch and the create installs it, so the separate write step and its window disappear. The spawn-side cancel-cascade statement derives from the item's own waits: those records end abandoned, this conversation's waiting points close, a sibling conversation's experiments are named untouched. The two pause exits show their cadence-commit fence like every other commit site. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…, top-level evidence, and the entry note that claims A refused create gets its branch: nothing recorded — no id, no lock, the scratch survives — say why in one line and return to the session loop; the note and both commits run only on success. The release advisory reads top-level rows alone (a parent's verdict synthesises its subs, so sub reports are the parent's business) and its path template always resolves. The picker's resolved record announces through the claiming note on every path — Starting for a conceived record, Resuming in flight — and the auto-select line folds into it, one line per entry, the slot claimed as it speaks. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
leeovery
force-pushed
the
feat/experiment-integration
branch
from
September 1, 2026 17:27
8c475cf to
13232f9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR3 of the experiment-phase stack, on #1071. Built fresh against
design/experiment-phase.md(#1057); replaces the integration layer of the closed #1062.What this is
The seam between the conversations and the laboratory:
workflow-shared/references/experiment-spawn.md, loaded identically by research and discussion): when a number is about to bear a decision, the session offers the laboratory — conversationally, never a script, and declining keeps the inline measurement as a legitimate exploratory sighting. On yes the spawn is recorded right there:experiment create --from {phase}(id + lock), the plain-termsproblem.mdwith its provenance line and no design content — the spawning phase is the client at the laboratory door — then the now-or-later gate (render experiment-spawn-gate). "Now" pauses the conversation mid-phase with no closing ceremony and hands the user to the menu in fresh context (/clear+/workflow-start); "later" continues with conclusion blocked. Both roads end at the menu; the laboratory is always entered fresh — nothing crosses into another phase's processing skill mid-session, and the bridge never carries a spawn.reconcile-advisory.mdgains theexperimentbranch — at the spawning conversation's next entry the register renders, each newly terminal report is read in full, verdicts land as evidence the conversation weighs and can override, an abandonment surfaces its reason with the waiting point back open. Serves both flag origins (the holder released at a conclude/abandon, and a completed discussion flagged by the one-hop).awaiting_experimentsbeside their triage checks and renderexperiment-wait-gate— blocker naming the open ids, guidance naming the ways out, pause/keep menu. The engine's completion refusal stays the backstop, never the UX.experiment-spawn-gate(refuses an id the item holds no wait on — the gate follows the recorded spawn) andexperiment-wait-gate(refuses when nothing is owed), pinned in the render-surfaces suite and driven in the simulation.Also: both epic-menu invokers now gloss the experiment route's fourth positional (
$3= the record id).Gates:
npm test2670/2670 ·npm run test:cligreen ·npm run test:migrationsgreen ·npm run typecheckclean.🤖 Generated with Claude Code