0.7.1g1G6: freeze the final canonical population (P1 mint unblocked) - #466
Conversation
Fresh unrestricted 7-family canonical campaign at checkpoint 284faa4 (no narrowing): 2544 rows, complete-population digest 9aebd3202288c82ff006f2db33c95cac0772746fa3c3061569167cd3f45df9b0, validated against the committed digest 9e2febc7 by the repository's own canonicalProjection recipe. Reconciliation: shared 2195 / base-only 189 (all 189 relocated by source-level key, 0 unexplained) / candidate-only 349; appearing NON_KILLED 67, all 67 with an admissible adjudication (16 prior + 36 G5b + 11 G5c + 4 G5d), 0 missing. Determinism: independent re-aggregation reproduces the digest exactly. No authority change; P1 not minted; P2 not consumed.
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
It is a documentation-only freeze record with no code or authority changes, and every independently verifiable claim (arithmetic, analyzer config, digest recipe, committed 2384-row population, empty ledgers, and the reproduced committed digest) checks out.
Review effort: Balanced
Findings: None
What changed in this PR
This PR adds a documentation checkpoint (a Markdown report plus a machine-readable JSON companion) that records the freeze of the final canonical mutation-testing population for task 0.7.1g1G6, the gate between G5 closure and the "P1 mint". It does not touch any production code, authority ledger, baseline, or analyzer; it is a measurement/audit record only.
Changes:
- Adds
TASK-0.7.1g1G6-CANONICAL-POPULATION-FREEZE.mddocumenting the 2544-row frozen population, reconciliation against the committed 2384-row population, disappearance custody, appearing-population admissibility, determinism, and preserved caveats. - Adds the structured
TASK-0.7.1g1G6-CANONICAL-POPULATION-FREEZE.jsoncompanion capturing the same campaign/reconciliation/admissibility data in schema v1.
| File | Description |
|---|---|
| docs/roadmap/0.7.0/TASK-0.7.1g1G6-CANONICAL-POPULATION-FREEZE.md | Narrative freeze record; all status/family/outcome tallies reconcile to 2544 and reconciliation math is internally consistent. |
| docs/roadmap/0.7.0/TASK-0.7.1g1G6-CANONICAL-POPULATION-FREEZE.json | Structured companion; valid JSON, numbers agree with the Markdown, and analyzer/digest-recipe descriptions match the repository. |
I confirmed: all internal arithmetic reconciles (status, family, outcome, reconciliation, candidate-by-status, admissibility, and 49m3s = 2943s); the JSON is valid; the analyzer config (plugin 1.19.0, engine 1.22.1, the 11-mutator set, timeoutConst 4000, timeoutFactor 1.25) matches MutationProbeInitScript/MaintainabilityBaselinePlugin; the digest recipe description matches MutationRatchetVerifier.canonicalProjection(); the committed population is exactly 2384 rows; and the evolution/admission ledgers are empty as stated. I also reproduced the committed digest 9e2febc7… exactly from mutation-baseline.json, corroborating the "validated before use" claim.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
5bcb030
into
epic/0.7.1-control-plane-authority
…ities (#467) * feat(0.7.1g1P1): mint authority for the 67 admissible appearing identities P1 mint through the existing M30-M39 population-admission mechanism: 67 preauthorizations (16 prior adjudications + 36 G5b TOOLING_LIMITATION + 11 G5c EQUIVALENT + 4 G5d UNREACHABLE), each bound to fromBaseSha 5bcb030 (the actual squash merge of #466) and to the G6 population digest 9aebd320, with per-entry analyzer semantics and the adjudication provenance recorded in reason. The KILLED twelfth G5c identity is excluded. The population does not change; P2 consumption is out of scope. No other authority file is touched. * docs(0.7.1g1P1): complete the rationale for three retained admissions Three of the sixteen prior-adjudication admissions carried a truncated reason field (a half-serialized Python list repr cut at 140 characters). Their complete committed chronology is now stated explicitly: final adjudication EQUIVALENT in TASK-0.7.1g1G4-RESIDUAL-11-MANIFEST.json; predecessor TASK-0.7.1g1G4-RESIDUAL-25-MANIFEST.json disposition UNDETERMINED Verified against both committed manifests: all three are UNDETERMINED in the residual-25 record and EQUIVALENT in the residual-11 record. Only the reason fields changed; identity, status, outcome, analyzer, fromBaseSha, populationDigest and cohort membership are untouched. P1 invariants re-proven: 67 admissions, 36/27/4 statuses, 36/16/11/4 provenance, 0 KILLED.
Checkpoint
284faa4fe590eaf20c91843c119053fb6c384b4d— the squash merge of #465. Branch cut directly from it, so this diff is exactly the two G6 documents. Admission ledger:admissions: [], unchanged.Endpoint
CANONICAL POPULATION FROZEN — P1 MINT UNBLOCKED
This is the gate between G5 closure and P1. G5 closed 52 = 36 + 12 + 4 with remainder 0, which proves the known custody set is closed — not that the final unrestricted campaign contains the population we believe. Hence measurement before mint.
Campaign
Real committed 7-family canonical configuration, no narrowing (worktree config diff empty), isolated worktree at the checkpoint: BUILD SUCCESSFUL in 49m 3s, 14 reports,
measuredCommit= the checkpoint, analyzer semantics unchanged.9aebd3202288c82ff006f2db33c95cac0772746fa3c3061569167cd3f45df9b0The digest uses the repository's own
canonicalProjection()recipe, and my implementation was validated before use by reproducing the committed population's digest9e2febc7…exactly.7081ed74…is not reused — the measured artifact and custody record both moved.Reconciliation
committed 2384 · fresh 2544 · shared 2195 · base-only 189 · candidate-only 349 (approval 296, evidence 53) · 52 changed statuses among shared · identity loss/gain/substitution 0/0/0 · unexplained disappearance 0.
Disappearance custody: all 189/189 base-only rows match a fresh row on the source-level key
(module, class, method, descriptor, mutator, description). The canonical identity excludes the source line but includes PIT block/index, so an edited site keeps its key while its identity changes. Caveat: that is a key-level relocation match, not a proof of semantic identity, andmutation-evolution.ymlis empty and cites none of the 189 — it is not the custody mechanism here.Appearing-population admissibility
67 appearing NON_KILLED, 67 covered, 0 missing, 0 double-covered: 16 prior adjudications (P1 manifest) + 36 G5b + 11 G5c + 4 G5d. The twelfth G5c identity was KILLED, so it is not in the appearing population.
Determinism
Independently re-derived from the 14 raw reports (with XML unescaping): 2544 unique identities, identical identity set, 0 status mismatches, 0 family mismatches, identical digest.
Authority
No authority-semantic change: ledger still empty, no baseline/classification/enrollment/mutator/timeout/ceiling change, campaign outputs never committed, and nothing modified to satisfy the measurement.
Preserved caveat
The four G5d UNREACHABLE findings are artifact-relative — they rest on
resolveGovernedSuspension()/resolveGovernedIdentity()being unable to suspend. If either ever gains a genuine suspension point, those four become re-adjudication candidates rather than staying grandfathered.Not done
P1 not minted. P2 not consumed. No authority file touched.
Verification:
spotlessCheck verifyStaticAnalysis verifyChangePolicy -PchangePolicyBase=284faa4f…BUILD SUCCESSFUL. Exact-head CI is the final authority. Not self-merged.