diff --git a/docs/adr/0001-decision-records-storage.md b/docs/adr/0001-decision-records-storage.md new file mode 100644 index 0000000..3bd9438 --- /dev/null +++ b/docs/adr/0001-decision-records-storage.md @@ -0,0 +1,3 @@ +# Store decision records under docs/adr/ with an adr: citation token + +**Context.** Every load-bearing decision except technology had three destinations, all of which rot: "Context and vision" prose the parser ignores, `[ASSUMPTION]` markers nothing forces resolving, or nowhere at all — so the *why* never travelled with the *what* into specs and runner sessions. **Decision.** Decision records live in project-scoped `docs/adr/NNNN-.md` (append-only, one flat sequence, like `docs/stack.md`), and feats cite them with a third ref token, `adr:`, tokenized and linted beside `stack:` and `[[wiki]]`. **Why.** Reusing the proven stack-ref machinery (tokenize → validate → inline into the brief) makes hand-written ADRs first-class before any skill ships, and a lintable citation is what a plain `NNNN-slug.md` file alone lacks; the rejected alternatives — a wiki page (prose, not a contract) and a plan-scoped record (invisible to sibling plans) — both recreate the drift this feature removes. diff --git a/docs/adr/0002-two-tier-interview.md b/docs/adr/0002-two-tier-interview.md new file mode 100644 index 0000000..ee93dcb --- /dev/null +++ b/docs/adr/0002-two-tier-interview.md @@ -0,0 +1,3 @@ +# Draft interviews in two tiers — batch scope facts, grill decisions + +**Context.** The prd skill's Draft used one batched multiple-choice interview ("1B, 2A, 3C") optimized for speed, which bundles load-bearing decisions in with scope facts so they pass undiscussed; pure one-at-a-time grilling (the studied grilling skill) is the opposite failure — it makes cheap scope facts as expensive as real decisions. **Decision.** Draft runs two tiers: the existing batched lettered multiple-choice for scope facts, then a sequential Decision grill (one decision per exchange, recommendation first, dependency order, ADR written inline) for every candidate that passes the triple gate. **Why.** csdd's batch already beats grilling for facts and grilling already beats batch for decisions, so splitting on the triple gate takes the strength of each; the grill applies only to the 2–5 gate-positive decisions a typical initiative carries, bounding the interview cost that killed pure grilling. diff --git a/docs/adr/0003-glossary-deferred.md b/docs/adr/0003-glossary-deferred.md new file mode 100644 index 0000000..59cfab6 --- /dev/null +++ b/docs/adr/0003-glossary-deferred.md @@ -0,0 +1,3 @@ +# Defer the glossary / ubiquitous language to its own phase + +**Context.** domain-modeling bundles a `CONTEXT.md` glossary (ubiquitous language, canonical entity aliases) with its ADR discipline, and it was tempting to ship both under the decision-records feature. **Decision.** The glossary is deferred to its own phase (`docs/plans/PLAN-glossary.md`) rather than folded into decision-records. **Why.** The glossary's real value is the canonical/alias entity table feeding the knowledge-base graph extractor, so it must be designed *with* the graph — a different seam than the plan-grammar/validate/brief seams this feature touches; conflating the two would widen this feature's blast radius for no shared machinery. This is the explicit "no" — the deferral is a decision, not an omission — and PLAN-glossary is the phase that resolves it. diff --git a/docs/glossary.md b/docs/glossary.md new file mode 100644 index 0000000..85532c6 --- /dev/null +++ b/docs/glossary.md @@ -0,0 +1,52 @@ +# Glossary — csdd's ubiquitous language + +This is the project's **ubiquitous-language contract**: one canonical term per +domain concept, defined as what it **is**, with an `_Avoid_` list of the synonyms +it bans. Identifiers (feat slugs, spec directories, wiki page names) are minted +from canonical terms; `csdd plan validate`, `csdd graph analyze`, and +`csdd wiki lint` report an avoided term used as a whole token. Prose outside the +`## Language` section is ignored by the parser. + +## Language + +### Planning + +**Plan**: The structured document above specs (`docs/plans//`) that +decomposes an initiative into feats; each feat becomes exactly one spec. +_Avoid_: prd, epic + +**Feat**: One row of a plan's Feats table — a spec-sized chunk of work with an +explicit objective, dependencies, and refs; it becomes exactly one spec. +_Avoid_: feature, story, ticket + +**Spec**: The per-feature contract under `specs//` (requirements, design, +tasks) that a feat is realized as. +_Avoid_: specification-doc + +**Seed**: A pre-authored artifact under a plan's `seeds//` that hands the +eventual spec a head start. + +**Brief**: The deterministic context pack `csdd plan brief` assembles for one run +step — the feat, its refs, decisions, and the step contract. + +### Contracts + +**Quality Gate**: A `-