Keep requirement ownership with the user and the wording with the orchestrator - #182
Merged
Merged
Conversation
The orchestration guide directed every confirmation and question through a selectable-option prompt. At the requirements stop the candidates would have to be authored by the orchestrator, which records the orchestrator's wording as the user's decision and contradicts the convergence hearing's own pass condition. Remove the blanket directive and the equivalent per-stop mapping in recipe-implement. Stops keep their existing wait-for-confirmation rule, and the sites whose candidate sets are enumerable outside the session keep their own directive. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Scope evidence began from likely target paths, so an existing surface that already owns the requested responsibility surfaced only if it happened to sit on one of those paths. Its `effect` recorded routing impact alone, which cannot support a product decision about whether that surface should change. Enter the scan from the implied product responsibility, and record each retained boundary's current treatment alongside the consequence a user would observe. The depth gate and the branch stop condition are unchanged, and a responsibility a cost driver or question relies on is either source-backed or an unknown. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ough analysis The orchestrator passed the user's full request to requirement-analyzer and read back a six-category classification of that same wording. The orchestrator already holds the wording, and `requirements_verbatim` at the Design stop already comes from it, so the classification added no evidence while placing agent inference in the same object as repository observation. Invoke the analyzer with a minimum evidence contract: the shortest verbatim outcome plus the shortest reason needed to interpret it. The analyzer returns repository evidence only. Evaluation requests, speculative ideas, and prescribed mechanisms are now classified in requirement-convergence from the retained user wording, so they remain judgment-only candidates. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Each recipe enumerated its own confirmation contents, and every list mixed the user's settled boundaries, repository observations, and still-open questions into one flat presentation. A reader could not tell which line was already decided and by whom. Define Confirmed scope, Decision evidence, User decisions, and Workflow once in requirement-convergence, where the hearing already runs, and have the recipes add only the items the shared shape cannot know. Open decisions are posed as questions so the recorded answer stays in the user's wording, which is the hearing's existing pass condition. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Change detection fired only on a proposed change. When codebase or UI analysis exposed an existing user-facing responsibility whose treatment nobody had decided, it entered design scope without reaching the user. Compare each such responsibility against the confirmed scope after an analysis result returns, and route it back only when leaving it or changing it would alter the confirmed outcome or an exclusion. Technical choices about how to satisfy the confirmed scope keep going to the design owners. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…umption The design recipes assigned requirement convergence wholesale to the orchestrator, which reads as authority over what the user decided rather than over judging its readiness. Split that ownership in both recipes, and add the consumption test the minimum requirement handoff relies on to llm-friendly-context, keeping the existing sufficiency checks so the rule tests both directions. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
HC-01 carried codebase-analyzer's governing-source rule without naming its destination, and that rule is already stated at each invocation site. The hearing's first two steps described the same act as the Scope Confirmation shape, and its per-message question cap contradicted the same row's completion evidence once three fields were below `ready`. Fold both steps into rendering the shape; the substantive bounds stay. Restore the cost unknowns to the Scope Confirmation, which the shape dropped, and remove the label vocabulary the analyzer depended on but nothing defined. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Reinstates the all-empty check, not the per-category one removed in #181: a unit with routes but no tests proceeds, a unit with no routes, tests, or public exports does not. `unit_inventory` is the completeness baseline for code-verifier, and three empty categories balance at `inputCount: 0`, so such a unit passed verification with no evidence examined and no limitation reported. Co-Authored-By: Claude Opus 5 (1M context) <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.
What changed
The user's wording stays in the orchestrator.
requirement-analyzerreceived the full request and returned a six-category classification of that same wording. The orchestrator already holds it, andrequirements_verbatimat the Design stop already comes from it. The analyzer is now invoked with a minimum evidence contract — the shortest verbatim outcome plus the shortest reason needed to interpret it — and returns repository evidence only. Evaluation requests, speculative ideas, and prescribed mechanisms are classified inrequirement-convergencefrom the retained wording.Scope evidence starts from the responsibility, not the paths. Discovery began at likely target paths, so an existing surface already owning the requested responsibility surfaced only if it happened to sit on one. Each retained boundary now records its current treatment alongside the consequence a user would observe. The depth gate and branch stop condition are unchanged.
The requirements stop has one output shape. Confirmed scope, Decision evidence, User decisions, and Workflow are defined once in
requirement-convergence; the recipes add only what the shared shape cannot know. Separating settled boundaries from repository observations from open questions is what makes the decision informable. Only an explicit user answer moves an item into Confirmed scope.Each stop selects its own confirmation form. The blanket directive routing every confirmation through a selectable-option prompt is removed. At the requirements stop the candidates would have to be authored by the orchestrator, which records the orchestrator's wording as the user's decision and contradicts the hearing's own pass condition. Stops keep their wait-for-confirmation rule; the sites whose candidate sets are enumerable outside the session keep their own directive.
Analysis-exposed product boundaries return to the requirements gate. Change detection fired only on a proposed change, so a user-facing responsibility surfaced by codebase or UI analysis entered design scope without reaching the user. It now returns only when leaving it or changing it would alter the confirmed outcome or an exclusion; technical choices continue to the design owners.
Ownership wording. The user owns product requirements and exclusions; the orchestrator owns convergence readiness, Structural Scale, and routing.
Reverse-engineering discovery is gated on a non-empty unit inventory. This reinstates the all-empty check, not the per-category one removed in #181: a unit with routes but no tests proceeds, a unit with no routes, tests, or public exports does not.
unit_inventoryis the completeness baseline forcode-verifier, and three empty categories balance atinputCount: 0, so such a unit passed verification with no evidence examined and no limitation reported.Handoff context is tested for consumption.
llm-friendly-contextnow checks that every included item is consumed by the target action, alongside the existing sufficiency checks.Version 0.27.0 to 0.27.1.
🤖 Generated with Claude Code