test: rebase parity baseline to v1.64.0.0; fix capture-vs-check drift

The parity ratchet had quietly failed for 7 skills — v1.58-v1.64 growth
landed past the v1.57.7.0 anchors and nothing caught it because this
test had no CI lane (verified pre-existing: SKILL.md content is
byte-identical to origin/main). Same rebase protocol as
v1.53->v1.57.7.0; old baseline retained for the audit trail.

Root-caused a second latent bug while rebasing: captureBaseline recorded
SKELETON-ONLY bytes while the checker compares UNION bytes (skeleton +
carved sections/*.md), so a fresh capture read carved skills at ~2x
ratio (ship: 82KB captured vs 183KB checked). captureBaseline now takes
sectionedSkills and records unions for carved skills — capture and check
measure the same thing, so the NEXT rebase can't hit this. Four
CARVE_GUARDS skeleton caps re-ratcheted to current +headroom
(plan-ceo 92K, plan-eng 70K, office-hours 100K, design-consultation
70K), annotated inline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-08-15 08:43:22 -07:00
co-authored by Claude Fable 5
parent 39715addff
commit 0d1544c2db
5 changed files with 696 additions and 12 deletions
+8 -1
View File
@@ -14,6 +14,7 @@
import * as fs from 'fs';
import * as path from 'path';
import { captureBaseline } from '../test/helpers/capture-parity-baseline';
import { PARITY_INVARIANTS } from '../test/helpers/parity-harness';
const ROOT = path.resolve(import.meta.dir, '..');
@@ -33,7 +34,13 @@ const defaultOut = path.join(
);
const outPath = outOverride ? path.resolve(outOverride) : defaultOut;
const baseline = captureBaseline({ repoRoot: ROOT, tag });
const baseline = captureBaseline({
repoRoot: ROOT,
tag,
// Carved skills record UNION bytes (skeleton + sections/*.md) so the
// baseline measures the same thing parity-harness checks against.
sectionedSkills: PARITY_INVARIANTS.filter(i => i.sectioned).map(i => i.skill),
});
fs.mkdirSync(path.dirname(outPath), { recursive: true });
fs.writeFileSync(outPath, JSON.stringify(baseline, null, 2) + '\n');