Checklists
requirements.md
Specification Quality Checklist: CI Topology Shrink & Guard Un-Blinding
Purpose: Validate specification completeness and quality before proceeding to planning Created: 2026-07-04 Feature: spec.md
Content Quality
- ✅ No implementation details (languages, frameworks, APIs) — filenames/job-names are the domain here (CI topology); requirements stay outcome-framed (routing behavior, coverage completeness, wallclock), not implementation prescriptions
- ✅ Focused on user value and business needs — developer feedback loop, coverage correctness, CI cost
- ✅ Written for non-technical stakeholders — the "hurting us" framing + measurable outcomes are legible; the CI-internal nature makes some domain terms unavoidable
- ✅ All mandatory sections completed
Requirement Completeness
- ✅ No [NEEDS CLARIFICATION] markers remain
- ✅ Requirements are testable and unambiguous
- ✅ Requirement types are separated (Functional / Non-Functional / Constraints)
- ✅ IDs are unique across FR-###, NFR-###, and C-### entries
- ✅ All requirement rows include a non-empty Status value (all Open)
- ✅ Non-functional requirements include measurable thresholds (≤ next lane; 100% dirs; 0 orphans; 8 invariants)
- ✅ Success criteria are measurable (SC-001..006 all numeric/binary)
- ✅ Success criteria are technology-agnostic — framed as routing/coverage/wallclock outcomes
- ✅ All acceptance scenarios are defined (Given/When/Then per user story)
- ✅ Edge cases are identified (windows split-brain, serial ports, dossier gap, nested roots, coverage drop, empty cone, job explosion)
- ✅ Scope is clearly bounded (Closes list + explicit OUT-of-scope + C-004 scope fence)
- ✅ Dependencies and assumptions identified (bound-model substrate #2368; #1931 parent; fresh-timings NFR-001 ceiling deferred to plan)
Feature Readiness
- ✅ All functional requirements have clear acceptance criteria (mapped to US1/US2/US3)
- ✅ User scenarios cover primary flows (shrink / un-blind / split)
- ✅ Feature meets measurable outcomes defined in Success Criteria
- ✅ No implementation details leak into specification beyond the CI-domain nouns inherent to the problem
Notes
- NFR-001 numeric ceiling is intentionally deferred to plan time ("set from fresh per-shard timings") — this is a measurable-when-measured threshold, not an unresolved clarification. Plan MUST pull fresh timings and pin the constant.
- C-006 (nightly-move) is a conditional in-mission option gated on the plan-time timing datapoint — not a scope ambiguity.
- All items pass; spec is ready for
/spec-kitty.plan. No [NEEDS CLARIFICATION] markers; no operator decision outstanding (the one scope fork — full-scope incl. arch-un-blind — was ruled by the operator before authoring).