Audit follow-up F-2 (INTEGRATION-AUDIT-01 §10.2). Phase Z families surface showed 11 tracked / 11 contracted / 13 on disk. The 2 untracked WIP files (app_sw_package_vs_solution.html, pre_construction_model_info_stacked.html) are now declared in _WIP_FILES.md as uncontracted and out-of-scope for the runtime matcher; promote/remove is gated on #42. The 11/11 tracked + contracted baseline is unchanged. A new pytest enforces tracked families ↔ frame_contracts.yaml set-equality modulo the WIP allowlist parsed from _WIP_FILES.md, so future drift fails fast in CI before #42 expands to 32 frames. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Phase Z Families — WIP Marker
Status: intentionally untracked, uncontracted, out-of-scope for runtime matcher.
Closes audit follow-up: INTEGRATION-AUDIT-01-REPORT.md §10.2 F-2 (option c).
Gate for promote/remove: Gitea issue #42 (IMP-04b Catalog extension to 32 frames).
Baseline lock (2026-05-19)
| Surface | Count | Notes |
|---|---|---|
git ls-files templates/phase_z2/families/*.html |
11 | tracked family templates |
templates/phase_z2/catalog/frame_contracts.yaml top-level keys |
11 | 1:1 with tracked basenames |
Get-ChildItem templates/phase_z2/families/*.html |
13 | tracked 11 + WIP 2 (below) |
Active contracted family count = 11. Tracked basenames ↔ frame_contracts.yaml top-level keys are set-equal. Drift between disk (13) and contracted (11) is fully explained by the 2 WIP files below.
WIP family templates (uncontracted)
| File | Figma frame | Status |
|---|---|---|
app_sw_package_vs_solution.html |
frame 23 (1171281203) |
WIP — not in frame_contracts.yaml, not in runtime matcher set. |
pre_construction_model_info_stacked.html |
frame 9 (1171281180) |
WIP — not in frame_contracts.yaml, not in runtime matcher set. |
These files are partials authored during Phase Z-2 MVP-1.5b exploration. They are not part of the contracted Phase Z runtime catalog and must not be enumerated by frame selection, matcher, or any Stage 3 pipeline surface.
Rules
- Adding a file to
templates/phase_z2/families/*.htmlwithout a matchingframe_contracts.yamlentry is only permitted if it is named here as WIP. tests/test_family_contract_baseline.pyenforces this invariant: tracked families ↔frame_contracts.yamlkeys must be set-equal, modulo the WIP allowlist parsed from this file.- Promoting a WIP file (add
frame_contracts.yamlentry + register with matcher) or removing it must happen under issue #42 or a follow-up issue, not silently.
References
docs/architecture/INTEGRATION-AUDIT-01-REPORT.md§10.2 F-2 (audit finding closed by issue #52, option c)docs/architecture/IMP-18-SVG-GAP-REPORT.mdL28, L51 (count basis corrected to11 contracted + 2 WIP)- Gitea issue #52 (this reconciliation)
- Gitea issue #42 (pre-flight gate for promote/remove)