feature_list.json is the single source of truth for the feature plan and execution status. Developers, Agents, the CLI, Git hooks, and CI all read it.
Top-level fields
A milestone contains at least
id, title, and objective. List order is used to check milestone ordering for dependencies.
Feature definition
verification
type can only be automated or manual. verify executes automated items; evidence manual records manual items. source_refs should point precisely to the acceptance criteria covered by the check.
CLI-managed fields
Do not maintain these fields manually:claim: owner, actor, claim time, lease, heartbeat, and takeover information.workspace: branch, path, baseline commit, and creation time.- Test, manual, review, and project approval records in
evidence. blockerand lifecycle status transitions.
evidence
Commonkind values for feature evidence include test, manual, and review. Records contain results and timestamps plus the relevant command, verification index, reviewer, actor, notes, or CI metadata. Top-level project evidence is used for artifact approval and additionally stores the artifact and content hash.
Archiving milestones
milestone archive (see the Planning commands reference) moves a fully-passing milestone, and its features, out of feature_list.json into .harness/archive/<milestone-id>.json:
claim, feature start, and dependency-cycle checks still treat them as satisfied (“passing”) dependencies, and traceability still counts them toward the requirements, stories, and acceptance criteria they covered. Archiving is a storage move for completed work, not a way to drop it — it keeps feature_list.json focused on the current and upcoming milestones without losing history or breaking anything that depended on the archived work.