Correct the recipe body and procedure pause axes in the module docs - #600
Merged
Conversation
The Recipe module page listed three of the five RecipeStep arms and none of the four substitution sentinels, so a reader sizing up how expressive a recipe is would conclude that values cannot flow between steps. They can: a capture step deposits a reading, a later setpoint consumes it, and a compute step chains on an earlier step's artifact. What a recipe really lacks is control flow, which is a much narrower gap than the page implied and worth stating precisely rather than by omission. Document the two capture and compute arms alongside the original three, and add the sentinels keyed on the two facts that distinguish them: when each resolves (expansion versus execute time) and who produces the value. Only BindingRef is resolved by expand; the other three ride into the pinned step list and the determinism hash as opaque sentinels, which is what lets a steered or chained routine be authored as a recipe at all. Also record the define-time structural checks that were undocumented, including the one-sink guard that keeps the Dataset-of-record selection unambiguous, and give the glossary its missing Recipe and RecipeStep entries so the vocabulary exists outside the module page. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Operation module page carried an out-of-scope note claiming there is no pause-and-resume cycle today. Held has been a real state for a while: ProcedureStatus carries it, ProcedureHeld and ProcedureResumed are on the stream, hold_procedure and resume_procedure are slices, a migration widened the projection's status CHECK to admit it, and two conduct entry points exist only to serve it. A reader planning around that note would have rebuilt what already works. The drift had spread past the one bullet, so this corrects the whole axis: the FSM diagram and transition table gain the pause pair and the fact that abort and truncate accept Held while complete does not; the events table gains the five rows it was missing; the append-activities guard admits that a paused conduct is not advancing; the aggregate state summary gains three fields; and the projection DDL and its prose match the migration that widened the CHECK. Two smaller repairs ride along. The Steering paragraph named reconduct_until_advised, a casualty of the re- prefix becoming a _from suffix. And the title attribute hardcoded event and slice counts that had both gone stale, so it now carries a qualitative claim like its sibling pages and the event count moved into the body as a generated marker that the build recomputes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Two documentation pages had drifted behind the conduct-path runtimes, in ways that would mislead someone planning work against them. Both were found while answering a design question about how CORA absorbs a change in how beamline staff run an experiment, which is exactly the question these pages are supposed to answer.
Recipe module page plus glossary
The
RecipeStepunion was documented as three arms when the code has five, and none of the four value-substitution sentinels appeared anywhere in the reference docs. The practical effect is a wrong conclusion: a reader would think values cannot flow between steps, when a capture step deposits a reading that a later setpoint consumes, and a compute step chains on an earlier step's artifact. What a recipe actually lacks is control flow, a much narrower and more interesting gap.RecipeCaptureStep,RecipeComputeStep), with the fields each carries.BindingRefis resolved byexpand; the other three ride into the pinned step list and the determinism hash as opaque sentinels, which is what makes a steered or chained routine authorable as a recipe.RecipeandRecipeStepentries. It had neither, in a section titled "Recipe ladder".Operation module page
An out-of-scope note claimed there is no pause-and-resume cycle today.
Heldhas been real for a while: the status carries it,ProcedureHeldandProcedureResumedare on the stream,hold_procedureandresume_procedureare slices, migration20260621060000widened the projection's status CHECK to admit it, andconduct_or_hold_procedureplusconduct_from_procedureexist only to serve it. The drift had spread past that one bullet:Heldwhile complete does not.ProcedureResumedclearslast_status_reasonback to NULL.reconduct_until_advised, a casualty of there-prefix becoming a_fromsuffix. It was the only such survival anywhere indocs/.Verification
make docs-build(mkdocs--strict) builds clean, with no new anchor or link notices.pytest tests/architecturepasses at 29733 passed, 591 skipped. Code was read as the authority throughout; no claim here is paraphrased from the prose being replaced.🤖 Generated with Claude Code