Squelette 3.20.2 — the fake newer template starts from blank registers too
Second fix to the template suite for derived projects, right after 3.20.1. Not a single line of the controller changes; for the template itself, nothing changes.
What was broken. The upgrade tests build a "newer version" of the template by copying the tree the suite runs in (make_template_source). Inside a derived project, that copy carried the project's own records — its ideas list, whose ideas point at its Work Items and its decisions — and --seed-required planted them into a pristine copy that has neither: the rehearsal audit failed on IDEAS. Found while rehearsing a real project's upgrade to 3.20.1 on a throwaway copy: 182 tests, 1 red — the last one the bound volume had been hiding.
What changes.
- Fixture (
tests/test_template.py,make_template_source): the template source goes throughreset_to_not_started_fixture, like every test copy — blank records, template role, not initialized. - New test (B16,
test_a_template_source_built_inside_a_derived_project_carries_none_of_its_records): from a bound derived project holding an idea aimed at its own Work Item, it builds a template source, checks it carries no idea, no decision and no volume, then replays the path that fell (--seed-required,--apply). Red on 3.20.1, green on 3.20.2. - Core manifest at 3.20.2; demo and transcript regenerated; changelog, roadmap and view updated.
Verified. Template: 183 tests green, audit, bootstrap-audit, traceability and demo.py --check PASS. A real derived project upgraded with this core: 183 tests, 173 passed, 10 skipped, 0 failures.
For derived projects. A routine upgrade with template-upgrade from tag v3.20.2 (one core file changes: tests/test_template.py) — straight from 3.20.0 if 3.20.1 was skipped —, under a Work Item and the double stop, then install-gate.