Checklists

requirements.md

Specification Quality Checklist: Doctrine Public API Surface

Purpose: Validate specification completeness and quality before proceeding to planning Created: 2026-08-10 Feature: spec.md

Content Quality

  • ✅ No implementation details (languages, frameworks, APIs) — note: this is an internal architecture mission; module/facade names are the domain objects, not incidental tech choices
  • ✅ Focused on user value and business needs (maintainer + consumer value: an enforced, shippable boundary)
  • ✅ Written for the relevant stakeholders (doctrine/charter maintainers)
  • ✅ 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
  • ✅ Non-functional requirements include measurable thresholds (complexity ≤ 15, identity 100%, ≤ 3 s, mypy --strict)
  • ✅ Success criteria are measurable
  • ✅ Success criteria are technology-agnostic where meaningful (outcome-framed: zero direct imports, zero CRITICAL smells, suite green)
  • ✅ All acceptance scenarios are defined
  • ✅ Edge cases are identified
  • ✅ Scope is clearly bounded (C-004: precondition only, no wheel cutover)
  • ✅ Dependencies and assumptions identified

Feature Readiness

  • ✅ All functional requirements have clear acceptance criteria
  • ✅ User scenarios cover primary flows (surface → facades → migration → ratchet → sole-door → debt)
  • ✅ Feature meets measurable outcomes defined in Success Criteria
  • ✅ No implementation details leak into specification beyond the named domain surfaces

Notes

scoping brief (docs/plans/doctrine/3179-public-api-surface-scoping.md), so requirement extraction did not surface open clarifications.

extractor.py cognitive-complexity refactor, not just the campsite cleanups.

  • Items marked incomplete require spec updates before /spec-kitty.plan.
  • All items pass on the first validation iteration. The spec is grounded in the pre-committed
  • SonarCloud debt scope (FR-009/010/011) reflects the operator's explicit choice to include the