Generate features.json in the project root. CRITICAL FORMAT: Must be a JSON array (not a dict/object). One entry per story. The /auto loop reads this file with json.load() and iterates it as a list. Wrong format = auto loop breaks.
Story file naming: Use E{n}-S{n}.md format (e.g., E1-S1.md, E3-S4.md). Alternative: {GROUP}-{NN}-{slug}.md (e.g., A-01-types.md). The id field in features.json must match the filename stem.
Schema per entry (all 10 fields required):
[
{
"id": "E1-S1",
"category": "foundation",
"story": "Define shared types and enums",
"group": "A",
"description": "One-line summary",
"steps": ["AC1: Given...", "AC2: Given..."],
"passes": null,
"last_evaluated": null,
"failure_reason": null,
"failure_layer": null
}
]
Validation: After writing, verify: python3 -c "import json; d=json.load(open('features.json')); assert isinstance(d, list), 'Must be array'; print(f'{len(d)} features')"