Skip to content

fix(schemas): resolve blocking open questions instead of deferring them to design.md#1366

Merged
clay-good merged 1 commit into
mainfrom
fix/design-open-questions-guidance
Jul 17, 2026
Merged

fix(schemas): resolve blocking open questions instead of deferring them to design.md#1366
clay-good merged 1 commit into
mainfrom
fix/design-open-questions-guidance

Conversation

@clay-good

@clay-good clay-good commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

Status: Ready for review. One file, +10/-1, instruction text only.

What was wrong: The design instruction told agents to end design.md with an "Open Questions" section but never said what to do with those questions. Agents dutifully wrote down unresolved decisions and moved straight on to tasks, silently picking answers along the way. Users hit this and don't know whether they're supposed to answer the questions before continuing — that's exactly the confusion in discussion #1296 ("should we address this Open Questions before we proceed... or opsx:continue will handle this?").

How it was fixed: Two instruction edits in schemas/spec-driven/schema.yaml (read at runtime, no build step):

  • design: Open Questions is now scoped to unknowns that can safely be answered later; anything that would change the specs, the approach, or the task breakdown must be resolved now — ask the user instead of guessing.
  • tasks: before writing the task list, check design.md for Open Questions and resolve blocking ones with the user, so the check still fires when tasks are generated in a later session (/opsx:continue).

Proof: YAML parses, and the real CLI emits the new text:

$ openspec instructions design --change open-questions-demo
...
- **Open Questions**: Unknowns that can safely be answered later without
  changing the specs, the approach, or the task breakdown. Omit if none.

Open questions are for genuinely deferrable unknowns, not decisions you
skipped. If a question would change the specs, the chosen approach, or
the task breakdown, resolve it now - ask the user instead of guessing.

vitest run test/commands/schema.test.ts test/core/artifact-graph/resolver.test.ts test/commands/artifact-workflow.test.ts test/core/view.test.ts — 123 tests passed.

Notes: Touches a different hunk of the same file as #1326 (specs instruction), so the two won't conflict. No changeset, matching #1326.

Closes the question raised in discussion #1296.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Improvements
    • Updated workflow guidance to ensure open questions are deferred only when they do not affect specifications, implementation approach, or task planning.
    • Added instructions to resolve design-impacting questions before creating the task list.

…em to design.md

The design instruction told agents to end design.md with an Open Questions
section but never said what to do with those questions, so blocking decisions
flowed silently into tasks and implementation. Now the design instruction
scopes the section to safely deferrable unknowns and tells the agent to ask
the user about anything that would change the specs, approach, or tasks; the
tasks instruction adds the matching check before writing the task list.

Discussion: #1296

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@clay-good
clay-good requested a review from TabishB as a code owner July 15, 2026 15:19
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Changes

Spec-driven workflow guidance

Layer / File(s) Summary
Open Questions resolution guidance
schemas/spec-driven/schema.yaml
Design guidance now restricts deferred questions to genuinely deferrable unknowns, while task guidance requires resolving questions that affect the build before creating tasks.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Suggested reviewers: tabishb

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the change to resolve blocking open questions before they reach design.md.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/design-open-questions-guidance

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@schemas/spec-driven/schema.yaml`:
- Around line 125-128: Update the task-phase instruction in the schema to use
the same blocking criteria as the design-phase check: unresolved questions
affecting the specifications, chosen approach, or task breakdown must be
resolved with the user before writing tasks. Keep the existing requirement to
inspect design.md and avoid unstated assumptions in tasks.md.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 87819c38-8ab9-4677-b658-fccdbefc1727

📥 Commits

Reviewing files that changed from the base of the PR and between 0a99f41 and c6e0483.

📒 Files selected for processing (1)
  • schemas/spec-driven/schema.yaml

Comment on lines +125 to +128
Before writing tasks, check design.md for Open Questions. If any of them
would change what gets built, resolve them with the user first - do not
bake an unstated assumption into the task list.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Keep the task-phase check aligned with the design-phase criteria.

The design instruction also treats changes to the specifications, chosen approach, or task breakdown as blocking. Reuse those same three criteria here so an unresolved approach or planning decision cannot be baked into tasks.md.

Proposed fix
       Before writing tasks, check design.md for Open Questions. If any of them
-      would change what gets built, resolve them with the user first - do not
+      would change the specs, the chosen approach, or the task breakdown,
+      resolve them with the user first - do not
       bake an unstated assumption into the task list.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Before writing tasks, check design.md for Open Questions. If any of them
would change what gets built, resolve them with the user first - do not
bake an unstated assumption into the task list.
Before writing tasks, check design.md for Open Questions. If any of them
would change the specs, the chosen approach, or the task breakdown,
resolve them with the user first - do not
bake an unstated assumption into the task list.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@schemas/spec-driven/schema.yaml` around lines 125 - 128, Update the
task-phase instruction in the schema to use the same blocking criteria as the
design-phase check: unresolved questions affecting the specifications, chosen
approach, or task breakdown must be resolved with the user before writing tasks.
Keep the existing requirement to inspect design.md and avoid unstated
assumptions in tasks.md.

@alfred-openspec alfred-openspec left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The design and tasks instructions enforce the decision boundary at both artifact-generation points while preserving genuinely deferrable questions. The focused behavior and full CI look good.

@clay-good
clay-good added this pull request to the merge queue Jul 17, 2026
Merged via the queue into main with commit a313bf1 Jul 17, 2026
14 checks passed
@clay-good
clay-good deleted the fix/design-open-questions-guidance branch July 17, 2026 18:11
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.

2 participants