Skip to main content

Feature lifecycle

Each feature uses an immutable lowercase slug shared by its documentation directory and branch, for example website/docs/features/first-capability/ and feat/first-capability. Beads tracks the work; the feature directory holds the design before implementation and the delivery record afterwards.

Responsibilities​

Beads executable state, dependencies, and delivery history
website/docs/features/<slug>/design.md intended feature behavior and design
reader-facing docs under website/docs/ current supported behavior
code and tests implementation evidence
website/docs/features/<slug>/index.md delivered capability and design reconciliation

Feature records​

design.md records the intended behavior, boundaries, decisions, validation strategy, documentation impact, and task decomposition before implementation starts. index.md is written at delivery and describes what the feature provides and how it differs from its design. Both start from website/docs/features/_template/.

Only delivered work is published. The site build excludes a feature directory until its index.md exists, so a design can be committed and reviewed before delivery without appearing on the site. Adding index.md publishes both records and lists the feature under Implemented Features automatically.

Feature records hold durable information only. They link the design and list the tests that cover the feature, but never pull requests, commits, branch names, delivery status, review notes, or validation run results; Beads and Git history own that state. The link runs one way: the Beads feature root stores the slug and design path, so the published records carry no Beads IDs.