Skip to content

Turn D6 into a scope-boundary row so learners see what is excluded - #15

Merged
Carr1005 merged 1 commit into
mainfrom
scope-boundary-row-spec
Jul 28, 2026
Merged

Turn D6 into a scope-boundary row so learners see what is excluded#15
Carr1005 merged 1 commit into
mainfrom
scope-boundary-row-spec

Conversation

@Carr1005

Copy link
Copy Markdown
Collaborator

The problem

At the §0 pre-build gate the learner is asked one question per Ledger row. D6 asked "anything explicitly unwanted?" — and never showed them what was already excluded. Three concrete failures:

  • Unaskable. Its Options column held one entry, Add exclusions freely. AskUserQuestion requires 2–4 options, so the row can't be presented through the mechanism §0 step 1 mandates. It's the only row in the Ledger with a single option.
  • Invisible default. Nothing beyond §1 "Not Included" is a pointer. The gate presents rows one at a time, so the learner answers a question about exclusions with the exclusions themselves 20 lines away in a section they aren't shown.
  • Near-empty by construction. The subtractive framing belongs to integration mode, which this spec doesn't build. Here the deliverable is fixed and pinned by 20 ACs, and every meaningful subtraction is already an Options pick at D7/D11/D15.

The change

One table row. D6 becomes a scope boundary: the question carries the §1 list so the learner is choosing against something they can see, and a second option lets them name anything they want back — the spec doesn't guess which.

Each excluded item gets a handling rule so the agent's response is determinate rather than improvised:

Item Handling
Additive, owned by no other row (UI, multi-user, auth) Restore it
Course names it, never builds it (caching, scratchpads, reranking, graph retrieval, decay, fine-tuning) Buildable, but the spec supplies no parameters and no ACs
Hybrid search, Oracle-specific operations Defer to D14 — don't decide the same thing twice
Integration into an existing codebase Unavailable in this build mode

A genuine additional exclusion still reaches the agent through the question tool's automatic "Other", and must name the ACs it retires.

Scope

Deliberately minimal — the lowest-risk option of the three considered:

  • §1 not restructured. Regrouping its bullets would make the rendered question shorter and identical every run, but it's a load-bearing section four other places reference, for cosmetic gain.
  • §0 gate not touched. A "one question per row is a floor, not a ceiling" clause would license the follow-up capture, but editing the gate risks being read as permission to merge or skip rows — the exact failure §12.10/§12.11 of the generation guide warn about.

Verified: one line changed, D6 still has the same eight columns as D5 and D7, no Ledger rows added or renumbered, every existing D<n> cross-reference still valid.

Companion PRs: the same row in spec.coding-agent-lab.md, and the generation guide so future specs are born with it.

🤖 Generated with Claude Code

D6 asked "anything explicitly unwanted?" and failed three ways:

- Its Options column held a single entry, "Add exclusions freely."
  AskUserQuestion requires 2-4 options, so the row could not be asked
  through the mechanism §0 step 1 requires.
- Its Default was a pointer, `Nothing beyond §1 "Not Included"`. The
  gate presents rows one at a time, so the learner was asked about
  exclusions without ever being shown them.
- The subtractive framing is near-empty in standalone-takeaway mode:
  the deliverable is fixed and pinned by 20 acceptance criteria, and
  every meaningful subtraction is already an Options pick at D7-D15.

The row now discloses rather than invites: the question carries the §1
list, and a second option lets the learner name anything they want back
instead of the spec guessing for them. Each excluded item gets a
handling rule — restore, buildable-but-unsupported, defer to D14, or
unavailable in this build mode — so the agent's response is determinate.

One table row changed. §1 and the §0 gate are untouched, and every
existing D<n> cross-reference stays valid.

Co-Authored-By: Claude Opus 5 (1M context) <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