cc-os/docs/adr/0045-never-ask-twice-mechan...

4.0 KiB

id date status supersedes superseded-by affected-paths affected-components
0045 2026-07-18 Accepted
plugins/os-sdlc/reference/never-ask-twice.md
plugins/os-sdlc/
plugins/os-adr/skills/find/
plugins/os-adr/skills/create/
plugins/os-vault/skills/query/
plugins/os-vault/skills/write/
plugins/os-backlog/
os-sdlc
os-adr
os-vault
os-backlog

0045 — Never-ask-twice mechanism formalized: ideation-primary lookup-and-mint over os-adr and os-vault

Context

The factory family (os-sdlc, os-adr, os-vault, os-backlog) needs an operating principle that stops the human being asked the same question on every run. Prior to this ADR the mechanism existed only as design intent in plugins/os-sdlc/reference/never-ask-twice.md, spanning four plugins with no single owner and no recorded decision. A 2026-07-18 grill settled the open questions: where human-input points live, how lookup happens, how records get minted, and how the ADR/vault-convention boundary is drawn.

Decision

Adopt a cross-plugin, ideation-primary never-ask-twice mechanism owned jointly by os-sdlc, os-adr, os-vault, and os-backlog. (1) Home: human-input points live in the ideation phases (grill / to-spec / to-tickets), not the implementation pipeline; the pipeline keeps one thin valve — a mid-implementation spec gap is a ticket defect that fails back to the spec layer, never an inline ask. Standards reach implementation via lint rules and agent prompts. (2) Lookup: a single batched pre-pass runs at session load (/os-adr:find then /os-vault:query over relevant facets), and questions are drafted against that corpus; a topic-shift mid-interview triggers a re-lookup for the new topic, not per-question inline lookups. (3) Minting: answers accumulate in a running decisions-so-far list during the interview (crash/resume mitigation); at settle, the skill proposes a scope classification for the whole batch (repo ADR vs. vault convention), the human confirms once, and everything mints together — the session is not complete until the mint pass has run. (4) ADR/convention delineation: conventions are defaults that hold until overridden; ADRs are project-local adoptions of, or deviations from, them. The mint-time scope question plus periodic audit are the entire promotion/demotion machinery; promotion and demotion happen only in audits, never mid-run, with cadence deferred to the self-improvement-loops design. No new storage system and no literal decision-tree engine — the existing ADR corpus and vault conventions ARE the tree; os-sdlc adds only wiring on top of os-adr and os-vault.

Consequences

Easier: grill/to-spec/to-tickets sessions stop re-asking settled questions; a decision recorded once is findable everywhere it applies; the pipeline stays mechanical since spec gaps route back to ideation instead of prompting inline. Harder: the mechanism guarantees plumbing (findability) but not judgment (applying the right convention in an ambiguous case) — mis-minted conventions are only caught at artifact review or audit demotion, not prevented up front; the pre-pass adds a lookup step to every ideation session load; nothing enforces the mint-pass-before-complete rule except skill discipline, since there is no dedicated storage or engine tracking session completeness.

Alternatives rejected

A literal decision-tree engine or dedicated new storage system for decisions — rejected: the ADR corpus plus vault conventions already serve as the tree; a new system would duplicate os-adr/os-vault for no added capability. Per-question inline lookups (query os-adr/os-vault live as each question is drafted) — rejected in favor of one batched pre-pass per session plus topic-shift re-lookup: cheaper, and the interview's question set is knowable up front except when the topic genuinely shifts. A dedicated promotion/demotion skill or a new taxonomy for the ADR/convention boundary — rejected: the mint-time scope question and periodic audit are sufficient boundary machinery; the existing ADR-011 six flat facets already organize the domain the grill pre-pass queries.