diff --git a/test/helpers/carve-guards.ts b/test/helpers/carve-guards.ts index a56ef9a07..e0ce5ec25 100644 --- a/test/helpers/carve-guards.ts +++ b/test/helpers/carve-guards.ts @@ -87,6 +87,12 @@ export interface CarveGuard { minUnionBytes: number; /** Parity: content phrases the union must preserve. */ mustContain: string[]; + /** + * Parity: optional per-skill override for the union size-growth ceiling vs the + * v1.53.0.0 baseline (default 1.05). Bumped only when a deliberate cross-cutting + * preamble feature legitimately grows a smaller carved skeleton past 5%. + */ + maxSizeRatio?: number; } export const CARVE_GUARDS: Record = { @@ -216,6 +222,11 @@ export const CARVE_GUARDS: Record = { maxSkeletonBytes: 50_000, minUnionBytes: 55_000, mustContain: ['CHANGELOG', 'Diataxis', 'coverage'], + // The AUQ-failure prose fallback (v1.57.2.0) adds ~2KB to every skill's + // always-loaded preamble; on this small carved skeleton that lands at ~5.9% + // over the pre-carve/pre-AUQ v1.53.0.0 baseline. Headroom for the + // cross-cutting addition; all other skills keep the strict 1.05 ceiling. + maxSizeRatio: 1.08, }, 'design-consultation': { skill: 'design-consultation', diff --git a/test/helpers/parity-harness.ts b/test/helpers/parity-harness.ts index 9d43a8142..186f4833d 100644 --- a/test/helpers/parity-harness.ts +++ b/test/helpers/parity-harness.ts @@ -252,7 +252,7 @@ const CARVED_INVARIANTS: ParityInvariant[] = Object.values(CARVE_GUARDS).map((g) minBytes: g.minUnionBytes, mustContain: g.mustContain, mustHaveHeadings: ['## Preamble', '## When to invoke'], - maxSizeRatio: 1.05, + maxSizeRatio: g.maxSizeRatio ?? 1.05, })); export const PARITY_INVARIANTS: ParityInvariant[] = [