Skip to content

feat(prose): a discussion holds for outstanding research — and the wait gate is one fetch - #1093

Open
leeovery wants to merge 1 commit into
feat/research-wait-enginefrom
feat/research-wait-prose
Open

feat(prose): a discussion holds for outstanding research — and the wait gate is one fetch#1093
leeovery wants to merge 1 commit into
feat/research-wait-enginefrom
feat/research-wait-prose

Conversation

@leeovery

@leeovery leeovery commented Sep 2, 2026

Copy link
Copy Markdown
Owner

What

The prose half of the research-wait change, stacked on #1091. A discussion re-entering over outstanding research is told so and keeps its reconcile flag until the research has landed; once it has, the landed file is read in full into the discussion before the session opens. Both conclude flows fetch the single wait-gate surface, and the experiment-wait-gate alias goes.

Changes

  • reconcile-advisory.md, research branch — reads the research item's status first. completed: the existing advisory, the research file read in full, the flag cleared. in-progress / triaged: a different non-blocking advisory (research outstanding, in flight or parked; decisions may rest on ground it re-examines; this work cannot conclude until it lands; the menu's research row is the way in) and the flag held. The header sentence now states the one exception.
  • discussion-session.md §G and topic-completion.md — the awaiting_experiments read plus conditional render become one render wait-gate fetch: empty proceeds, sections emit and STOP into the existing pause/keep branches. The pause signpost is kind-neutral; the gate names what is owed.
  • Alias droppedexperiment-wait-gate removed from the engine, the usage banner, commands.md, CLAUDE.md, the simulation, and the four prose cases whose invariants named it (now render wait-gate, the awaiting_experiments read no longer asserted where the prose no longer performs it).
  • CLAUDE.md — the Experiment paragraph names wait-gate; Staleness hops records the in-progress hop out of research and the advisory's held branch.

Cases

  • discussion-holds-for-outstanding-research (new, claims world): resume over a parked research stub → the outstanding advisory, flag held → wrap-up meets the wait gate (parked) → pause. Invariants pin the status read, the gate fetch, and the absence of any flag delete, completion, or closing gate.
  • discussion-resumes-on-landed-research (new, assertion state): resume after the research completed → the landed advisory, the research read in full, one manifest delete — ordered after the status read and before the resume gate — and no wait gate anywhere.
  • Both fixtures are recipe-built on the epic mainline: the stub is born by a real research-side topic triage delivery from a sibling research session, the landed variant absorbs the concern and completes.

Verification

npm test 2783 pass · npm run typecheck clean · npm run test:cli green. node tests/prose/run.cjs select --diff main lists 54 cases; the six this slice touches directly are the two new ones plus discussion-spawns-an-experiment-and-continues, experiment-abandoned-returns-open, research-resumes-on-the-verdict, research-spawns-an-experiment.

Observation, not changed

Waits are work-type agnostic engine-side, but the advisory's "research row" is an epic-menu construct; a linear work unit with research reopened beneath an in-flight discussion would have no route back to the research. No prose path produces that state today (revisit reopens research only after the discussion has concluded), so it is noted rather than built.

🤖 Generated with Claude Code

…it gate is one fetch

Research feeds discussion. The reconcile advisory's research branch now
reads the research item's status first: landed research is read in full
and the flag cleared; research still in flight or parked surfaces an
advisory and holds the flag, so the discussion's re-entry keeps saying so
until the research has actually concluded and been read into it.

The discussion's and the research's concluding ceremonies fetch
`render wait-gate` once — empty when nothing is owed, the gate's own
sections otherwise — in place of the `awaiting_experiments` read and its
two conditionals, with the pause signposts true for any kind of wait.

The `experiment-wait-gate` alias is dropped everywhere: render.cjs and
the usage banner, commands.md, CLAUDE.md (which also records the held
flag and the in-progress hop), the render-surfaces and pipeline
simulation suites, and the four prose cases whose invariants named it
(discussion-spawns-an-experiment-and-continues,
experiment-abandoned-returns-open, research-resumes-on-the-verdict,
research-spawns-an-experiment).

Two new prose cases on the epic mainline:
- discussion-holds-for-outstanding-research — resume over a parked
  research stub: the advisory holds the flag, the wrap-up meets the wait
  gate, the user pauses
- discussion-resumes-on-landed-research — the research has landed: it is
  read in full and the flag cleared before the session opens; no wait
  gate anywhere

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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