experiment: absorption, the docs pass, and the prose cases - #1074
Merged
Conversation
leeovery
force-pushed
the
feat/experiment-crosscut
branch
from
September 1, 2026 01:57
438f722 to
effc584
Compare
leeovery
force-pushed
the
feat/experiment-crosscut
branch
from
September 1, 2026 09:04
effc584 to
6bee1e0
Compare
leeovery
force-pushed
the
feat/experiment-crosscut
branch
from
September 1, 2026 09:57
6bee1e0 to
d948919
Compare
leeovery
force-pushed
the
feat/experiment-crosscut
branch
from
September 1, 2026 11:07
d948919 to
df287fc
Compare
leeovery
force-pushed
the
feat/experiment-crosscut
branch
from
September 1, 2026 11:38
df287fc to
90a9746
Compare
leeovery
force-pushed
the
feat/experiment-crosscut
branch
from
September 1, 2026 13:41
90a9746 to
416fe3a
Compare
leeovery
force-pushed
the
feat/experiment-crosscut
branch
from
September 1, 2026 15:20
416fe3a to
7293497
Compare
The absorb moves a feature's series whole — item, records, and the record directory renamed under the epic topic — with any live evidence wait riding its holder, topic-keyed beside the series so the completion refusal and release edges keep holding after the move. A series name collision in the epic refuses like the discussion's, and a research item carrying live experiment state that a collision suffix would land off the topic name refuses too — the join is by name, and a stranded wait could never release. Experiments make no knowledge-base call; the receipt names the moved series by its record count. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A new chapter walks the laboratory end to end from the user's side — the offer, the problem-in/no-design-content spawn, the lock, the fresh- context entry, design → freeze → run → report → verdict, amendments, splits, abandonment, the return leg, and the register. The chapters the phase now touches gain their slice: the conversations' spawn offer and lock, the pipeline tables' slot, the epic menu's per-experiment entries and ranking, the absorb's travelling series, the cancel courtesy, the knowledge base's deliberate exclusion, and the agents chapter's no-standing-workforce note. CLAUDE.md gains the phase entry, the pipeline slots, the record-directory path, the $3 record id, and the presence rows; the README's pipelines carry the slot. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The spawn-and-return round trip from each side and the laboratory's own walk: research spawns and takes the now-exit (create + problem with provenance and no design content + the engine-owned lock, closing ceremony skipped); discussion spawns, keeps talking on the later exit, and its close attempt meets the wait gate; the per-record epic entry walks design → freeze → run → verdict, releasing the wait and flagging the spawner; and a put-down run's re-entry surfaces the abandonment through the advisory's experiment branch with the point back open and the once-blocked conclusion now passing. Worlds are recipe-built and snap byte-identical; code-settleable claims ride the invariants. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ver earned Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Touching absorb-into-epic.md adopts its menus: the name-confirm gate (the default topic name with the y/back/Rename choice), the proceed consent beneath the summary, and the post-absorption continue-as-epic menu — the pivot continuation's sibling — become render surfaces, wording preserved. The name gate validates its --into against the manage detail's absorb targets; the continuation takes the deleted feature's name as a flag. The prose carries the fetch and the verbatim emission, and the templated-fence pin tightens with the migrated pair. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
name, routes for the join refusal, and the book keeps to the boundary The absorb pre-check covers the series so a series-only collision is caught at the name rather than the transaction, whose join refusal now routes back to the name step; the summary columns re-cut so the series row aligns. The agents chapter re-homes the laboratory sentence so the critics keep their pronoun, the experiments chapter drops the cost clause — the no-cost boundary binds the book — and the menu promise is scoped to what every work type renders, in the book and CLAUDE.md alike. The cases follow the moved prose: the blocked close now meets the wait gate before the defer sweep (nothing written deferred), the conclude gate's absence is pinned, the spawn-side record commits carry their sweep in recipes, pins, and the sim, and the release advisory's series read is pinned on the return leg. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…n the book and the record, the join by landing name, and the boundary cases The pipeline tables of all six phase entries carry the parenthesised experiment slot; commands.md documents the cancel triangle end to end — open records abandoned with the cancellation's reason, the spawner-side cascade, the reactivate refusal, and the spawn that revives a cancelled series — and CLAUDE.md's cancellation bullet and briefs line follow, its live_sources note narrowing with the engine. The lifecycle chapter aligns to the triangle in the book's voice. The absorb join fix replaces the refusal with the landing: a research item carrying live experiment state lands at the topic name — the join every release edge reads — and a collision there refuses uniformly, the dead-recovery branch retired from the prose. Two prose cases join the corpus: the amendment boundary's far side (results visible — a pushed rule change lands as a dated correction and a successor, the conclusion executing the rule as registered) and the concluded return leg (the flagged research re-entry binding the record's directory from the manifest read, reading the report in full, weighing the verdict, and concluding past the released wait); the blocked-close case pins the map gateway's absence. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The conduct texts, fixtures, and expected paths drop "park" and "put down" for the one terminal verb; the wait-gate claim mirrors the ceremony's deferral wording. The fixture snapshot re-pins its recipe hash — the world itself is unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The phase entry, the agents chapter, the absorb surfaces, and the walk-to-verdict case each carried a lone negative no sibling in the same position carries. The KB exclusion joins the never-list where every unindexed phase already lives; the absorb pin takes the suite's exhaustive form, which proves the same absence and the positive list. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
CLAUDE.md's entry-routing section drops the experiment exception — every entry takes the uniform three positionals — and the phase entry's menu sentences follow: one row per topic with live records, resolution inside the phase, and the next-or-menu loop after a record ends. The experiments chapter, the dashboard tour, and the research-and-discussion page say the same. The two entry-driven prose cases shed the fourth argument: each fixture's series holds one live record, so the walks auto-select E1, the picker stays unrendered, and the return leg takes the bridge exit over the finished series — the next gate excluded by invariant. The retired validate-record.md leaves the file lists; the return leg's next-experiment.md joins them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…cs and cases follow the spawn's problem transaction The absorb's research move loses its rename machinery: a feature's research is single and self-named and lands at the topic name unconditionally — the same landing the discussion and the series take — with a collision refusing beside the discussion's and a foreign-named item refusing loudly. The pipeline diagrams say (Experiment) singular and the never-entered-directly clause moves out of the notation sentence into the type paragraphs. The prose cases' spawn sequences follow --problem (invariants re-pinned, fixture recipes reworked, snapshots regenerated); the spawner-cancel and create wording in CLAUDE.md, commands.md, and the lifecycle chapter follows the per-record cascade and the crash-window-free spawn. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ase, top-level counts, and the summary the engine draws The absorb's foreign-name guard covers discussion, research, and experiment alike — the feature directory is deleted afterwards, so a silently skipped item would be lost; the pre-existing discussion hole closes with the series'. Counts speak experiments, not records: a series E1, E1.1, E2 is two, everywhere a number appears. The pre-confirm summary migrates to an engine surface (render absorb-summary) — every fact the feature's own manifest, the hand- repadded fence retired — and the flow's collision probe covers research, its refusal branch keyed on the message tail. CLAUDE.md's staleness bullet gains the derived-slot walk-past and the conclude trigger, its ranking sentence softens to the design's words; the pipeline surfaces gain the (Experiment) slot uniformly. Two prose cases land — the amendment boundary's near side (dated entry, re-present, explicit go; the declined change struck; no re-freeze verb) and the series loop (picker first ask, next at the gate, the second record auto-resolved) — and the two stale recipe hashes are re-stamped. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
leeovery
force-pushed
the
feat/experiment-crosscut
branch
from
September 1, 2026 17:27
7293497 to
b96c3dd
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.
PR4 of the experiment-phase stack, on #1073 — the final slice. Built fresh against
design/experiment-phase.md(#1057); replaces the cross-cutting layer of the closed #1063.What this is
phases.experiment.items.{topic}whole — records, verdicts, reasons, derived status — and renames the record directory into the epic; a liveawaiting_experimentsrides its holder untouched,reconcile_needed: "experiment"now travels on research mirrors too, and collisions on the series refuse like the discussion's. Experiment state joins by topic name on both sides, so a research item holding live experiment state that would land collision-suffixed refuses loudly with the recovery named — the wait must never strand. Experiments make no knowledge-store call anywhere in the transaction. The receipt names the moved series.docs/experiments.md— the lifecycle from the user's side: the offer, the laboratory model, the fresh-context control, design → freeze → autonomous run → verdict, amendments before results, splits, abandonment, the return leg, the register, and the deliberate knowledge-base absence. Plus the full pass: research-and-discussion, work-types, how-it-fits-together, knowledge-base, lifecycle-operations, and agents gain experiment coverage where shipped behaviour reaches them.Experiment (opt.)slot, the layout gains the record path, entry routing gains$3, presence notes the phase; README at its own granularity.research-spawns-an-experiment(the offer and the now-exit),discussion-spawns-an-experiment-and-continues(later-exit into the wait gate),experiment-walks-to-verdict(per-record entry through design, freeze, run, verdict, release + flag),experiment-abandoned-returns-open(the re-entry surfacing an abandonment, the point back open). Worlds recipe-built, snapshots generated and byte-stable under the goldens; walks run on command, never in the gates.closing-gates.md's four prose menus became the variant-keyedclosing-gatesurface (on the integration layer), andabsorb-into-epic.md's three becameabsorb-name-gate,absorb-confirm-gate, andabsorb-continuation— wording preserved verbatim, all pinned.Zero-residue sweep of the whole stack diff: clean — no store contact, no triage contact, no discovery routing, no cost machinery, no old-model vocabulary, no historical narration.
Gates:
npm test2681/2681 ·npm run test:cligreen ·npm run test:migrationsgreen ·npm run typecheckclean · conventions lint 37/37.🤖 Generated with Claude Code