Skip to content

Parked questions say who decides (9.3.2) - #582

Merged
gmickel merged 3 commits into
mainfrom
fix/open-questions-owner
Oct 27, 2026
Merged

gmickel merged 3 commits into
mainfrom
fix/open-questions-owner

Conversation

@gmickel

@gmickel gmickel commented Oct 27, 2026

Copy link
Copy Markdown
Owner

Why

A spec often stops on a decision that belongs to someone outside the conversation ("product decides"). Refine already parked those under ## Open Questions with an owner. Capture couldn't: the template didn't name the section, and capture writes only what the template names. So a handed-off question landed in ## Parked unknowns with no owner, and a product owner couldn't ask for "the open questions for product" across branches.

What changes

  • Template and repo SPEC.md: Open Questions is listed as an optional auxiliary section, with the owner format *(owner: <role>)*. The fog rule in Parked unknowns now points a decision someone can make to Open Questions. Every sentence stating "capture adds no section the template leaves out" names the one exception, and so does docs/spec-template.md.
  • Capture: writes ## Open Questions for a handed-off decision, even when a custom template omits it (as refine already does). It goes where the template places the section, otherwise before Requirement coverage.
  • Refine: the owner can be any role (product, engineering, qa, security), not only the two. When an entry is answered, refine moves the answer into the section that owns it and deletes the bullet. An anchored entry keeps its anchor, flipped to status=answered, which matches how tracker-sync already imports answers. The conduct checklist follows.
  • Backlog mode: the ask stage ends its question line with the owner tag. The anchor id hashes stable fields only, so dedup is unchanged.
  • teams.md: one bullet that points to the new for-teams section on flow-next.dev (the docs commit follows this PR).

Prompt cost and structure (G1, G4)

  • G1: about 300 tokens more per capture run (the template block plus one bullet) and about 100 per refine run. That buys a handed-off question that keeps its owner instead of being lost among the unknowns.
  • G4: the section is optional and written only after a hand-off happens. Nothing has to be filled before the agent acts, and nothing is gated.

Verified

  • python3 scripts/run_tests_parallel.py: 4067 tests, 0 failures. Ruff is clean.
  • The scaffold parity test (SPEC.md matches the template) passes, and so does the Codex mirror check.
  • Cross-family review (gpt-6.1-sol, high) ran three rounds. Round 1 found two real gaps: the template contract was still stated without the exception in three places, and the refine checklist missed the anchored-answer transition. Round 2 found one more no-list sentence. Round 3 returned SHIP with no findings.
  • Not run live: no capture or refine session against a real hand-off.

Version

Patch 9.3.2. The bump is included and the changelog entry is under [flow-next 9.3.2].

https://claude.ai/code/session_01LbHwMnkD6ovBw6n8cnD8hQ

Capture can now write ## Open Questions for a decision handed to someone
outside the conversation, tagged *(owner: <role>)*, using refine's existing
format. Refine accepts any role and graduates an answered entry into its
owning section (an anchored entry flips to status=answered). Backlog mode's
ask stage adds the same owner tag to its question line. The template and
the repo-root SPEC.md document the section; teams.md gets one bullet.

Claude-Session: https://claude.ai/code/session_01LbHwMnkD6ovBw6n8cnD8hQ

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 66b7c3a. Configure here.

- **`## Acceptance Criteria`** — `- **R1:** ...` prose bullets, allocated from R1 (fresh spec, no renumber concern). When `.flow/criteria.md` exists, never restate a G-ID as an R-ID; reference it in prose and write an R only for what this spec adds.
- **`## Requirement coverage`** — only when the template names it, `NO_PLAN_OPT=0`, and §2.8 resolved to `plan`: each R-ID mapped to `fn-N.M (TBD - populate via /flow-next:plan)`. Omitted on the `direct` and `refine` routes: work's single implicit task is the coverage, and a placeholder nobody fills would mislead completion review. Capture writes no tasks.
- **`## Parked unknowns`** (optional) — only genuine fog, one bullet each, naming what would resolve it. Decidable now → decide it; resolvable by scheduled work → a task for plan; inferred fill-in stays tagged, not parked.
- **`## Open Questions`** (optional; written even when the template leaves it out, as refine does; placed where the template puts it, otherwise before `## Requirement coverage`) — a decision the conversation hands to someone who isn't in it ("PM decides", "ask security"), one bullet each: `**<question>** — for <owner> to decide; leaning <X>. *(owner: <role>)*`. The role is the one the person named (product, engineering, qa), never a person's name. A decision with nobody named to make it stays in Parked unknowns; never settle a parked question from your own leaning.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Capture conduct misses Open Questions

Medium Severity

Capture now writes ## Open Questions for a handed-off decision even when the resolved template omits it, but agent_docs/conduct/capture.md still describes only the prior contract. A dogfood run that parks that question under ## Parked unknowns or drops it can pass the checklist.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 66b7c3a. Configure here.

@gmickel
gmickel merged commit 272a402 into main Oct 27, 2026
14 checks passed
@gmickel
gmickel deleted the fix/open-questions-owner branch October 27, 2026 21:29
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