mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-17 02:15:31 +02:00
Merge origin/main (v1.64.1.0 code-smell wave) into test-evals-ci-speedup
Both sides shipped overlapping test-infra work in parallel; resolutions compose intent rather than picking sides: - free-tests.yml (both added): keep this branch's lane (canonical strict-parallel runner, secretless, plain runner, ~2min) over main's per-file-serial container loop (45min budget, hand-curated skip list, needs GITHUB_TOKEN); ported main's git safe.directory insight. - Dockerfile.ci Bun install: main discovered the installer IGNORES the BUN_VERSION env var (the old form silently installed latest) — main's arg-form mechanism + this branch's 1.3.13 target. - parity baseline: both sides rebased after hitting the same silent drift; adopted main's v1.64.1.0 union-normalized fixture and dropped this branch's interim v1.64.0.0 capture. carve-guards caps: main's tighter re-ratchets win (all four). - touchfiles: kept this branch's three-file facade split; ported main's pure-data removals (dead sidebar-agent entries, spec judge entry, ship-idempotency) into touchfiles-data.ts. - ship-idempotency SDK variant: main deliberately removed it as redundant with the real-PTY test; adopted — dropped this branch's rehomed copy and its periodic matrix row (the zombie-monolith deletion stands; coverage-audit + triage rehomes verified untouched by main). - e2e-tier-alignment: taught the new parent-mapper hard check main's consolidated describeE2ETier()/e2eTierEnabled() self-gate shapes (the helper's header names this file as a required recognizer). - browse/test/compare-board.test.ts: quarantined behind GSTACK_COMPARE_BOARD_TESTS=1 — all 16 tests fail identically on origin/main solo on dev machines (blame protocol receipts in-file); main's own CI lane skip-lists it. An always-red file would block every PR now that free-tests is a required check. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -167,12 +167,28 @@ describe('SKILL.md size budget regression (gate, free)', () => {
|
||||
// skeleton+sections union), so exempt the skeleton from the body-strip floor.
|
||||
// EQ1: derived from the canonical CARVE_GUARDS registry — no parallel list.
|
||||
const SECTIONS_EXTRACTED = new Set<string>(CARVED_SKILLS);
|
||||
// Intentional one-off shrinks vs the frozen baseline (each needs a reason):
|
||||
// - spec: the baseline measured a template bug — prose at Phase 5 mentioned
|
||||
// {{PREAMBLE}} literally, so the generator expanded the ENTIRE preamble a
|
||||
// second time mid-sentence (~47 KB of duplication). Fixed by rewording the
|
||||
// prose; spec/SKILL.md now carries exactly one preamble (~80.9 KB, ×0.79).
|
||||
// - scrape/diagram/open-gstack-browser/landing-report/pair-agent/skillify:
|
||||
// the baseline measured these at the silent tier-4 default (a missing
|
||||
// preamble-tier frontmatter fell through `?? 4`). Their tiers are now
|
||||
// declared correctly (1-2), shedding the tier-2..4 onboarding prose they
|
||||
// never should have carried (-271 lines each for tier 1).
|
||||
const INTENTIONAL_SHRINKS = new Set<string>([
|
||||
'spec',
|
||||
'scrape', 'diagram', 'open-gstack-browser',
|
||||
'landing-report', 'pair-agent', 'skillify',
|
||||
]);
|
||||
|
||||
const undershoots: Array<{
|
||||
skill: string; beforeBytes: number; afterBytes: number; ratio: number;
|
||||
}> = [];
|
||||
for (const [skill, before] of Object.entries(baseline.skills)) {
|
||||
if (SECTIONS_EXTRACTED.has(skill)) continue;
|
||||
if (INTENTIONAL_SHRINKS.has(skill)) continue;
|
||||
const after = current.skills[skill];
|
||||
if (!after) continue; // skill removed since baseline — separate concern
|
||||
const ratio = after.skillMdBytes / before.skillMdBytes;
|
||||
|
||||
Reference in New Issue
Block a user