mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-14 17:05:28 +02:00
chore(guards): register wave-1 carves; monolith invariants retire; baselines + ratchet follow
CARVE_GUARDS gains review/codex/land-and-deploy (12 carved skills total); their MONOLITH_INVARIANTS entries retire (invariants now generate from the registry, cso precedent). Touchfiles: carve-section-loading covers the three new carves; the codex + land-and-deploy LLM-judge dep lists widen to their sections. Regen + goldens + branch-internal baseline + ratchet ceilings recaptured (review 24,052 -> skeleton-based ceiling; union floors hold). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
4e54d6e0a2
commit
00737fcb1b
@@ -371,6 +371,91 @@ export const CARVE_GUARDS: Record<string, CarveGuard> = {
|
||||
// v1.64+v1.65 merge sums both waves' preamble growth; measured 1.073.
|
||||
maxSizeRatio: 1.08,
|
||||
},
|
||||
// ── Token-reduction Phase 4 wave 1 (v1.69.x branch) ──────────────────────
|
||||
review: {
|
||||
skill: 'review',
|
||||
expectedSections: ['plan-completion.md', 'review-army.md', 'adversarial.md'],
|
||||
requiredReads: ['plan-completion.md', 'review-army.md'],
|
||||
scenario:
|
||||
"The working tree has a real diff against the base branch (assume Step 1's git checks passed; the diff implements the PLAN.md cache layer). Run the /review flow: the scope-drift and plan-completion deep pass against PLAN.md, then the critical pass, then the Review Army specialist dispatch — apply the specialist checklists yourself instead of launching subagents. Produce the review report. Do NOT commit, push, or create a PR.",
|
||||
staticInvariants: {
|
||||
mustStayInSkeleton: [
|
||||
'## Step 0: Detect platform and base branch',
|
||||
'## Step 1: Check branch',
|
||||
'## Step 1.5: Scope Drift Detection',
|
||||
'## Step 4: Critical pass (core review)',
|
||||
'## Confidence Calibration',
|
||||
'## Step 5: Fix-First Review',
|
||||
'## Important Rules',
|
||||
'Persist Eng Review result',
|
||||
],
|
||||
mustPrecedeStop: ['## Step 0: Detect platform and base branch'],
|
||||
mustMoveToSection: [
|
||||
'Plan File Discovery',
|
||||
'MULTI-SPECIALIST CONFIRMED',
|
||||
'Cross-model synthesis',
|
||||
'codex review --base',
|
||||
],
|
||||
gateAfterStop: undefined, // operational multi-STOP skill, like ship
|
||||
},
|
||||
behavioral: 'plan',
|
||||
maxSkeletonBytes: 55_600, // Phase 4 wave 1; measured 55,010
|
||||
minUnionBytes: 89_000, // Phase 4 wave 1; measured union 93,357
|
||||
mustContain: ['confidence', 'P1', 'P2', 'Review Army', 'adversarial'],
|
||||
},
|
||||
codex: {
|
||||
skill: 'codex',
|
||||
expectedSections: ['review-mode.md', 'challenge-mode.md', 'consult-mode.md'],
|
||||
requiredReads: ['review-mode.md', 'consult-mode.md'],
|
||||
scenario:
|
||||
"Run the /codex skill twice: first Review mode against this branch's diff (produce the GATE verdict), then Consult mode with the follow-up 'is the strongest finding worth fixing before ship?'. Follow the Step 1 dispatch and read each selected mode's section before executing it; if the codex CLI is unavailable, still walk the mode instructions and report what you would run.",
|
||||
staticInvariants: {
|
||||
mustStayInSkeleton: [
|
||||
'## Step 1: Detect mode',
|
||||
'## Filesystem Boundary',
|
||||
'Synthesis recommendation (REQUIRED)',
|
||||
'Recommendation: <action> because',
|
||||
'UNDER_CODEX',
|
||||
],
|
||||
mustPrecedeStop: ['## Step 1: Detect mode', '## Filesystem Boundary'],
|
||||
mustMoveToSection: [
|
||||
'The gate FAILS CLOSED',
|
||||
'Think like an attacker and a chaos engineer',
|
||||
'codex exec resume',
|
||||
],
|
||||
gateAfterStop: 'EXIT PLAN MODE GATE',
|
||||
},
|
||||
behavioral: 'prompt',
|
||||
maxSkeletonBytes: 55_760, // Phase 4 wave 1; measured 55,155
|
||||
minUnionBytes: 83_400, // Phase 4 wave 1; measured union 84,304
|
||||
mustContain: ['GATE: PASS', 'CROSS-MODEL ANALYSIS', 'codex exec resume', 'sandbox_mode="read-only"', 'mktemp'],
|
||||
maxSizeRatio: 1.06, // measured 1.040 vs the v1.64.1.0 parity baseline
|
||||
},
|
||||
'land-and-deploy': {
|
||||
skill: 'land-and-deploy',
|
||||
expectedSections: ['first-run-validation.md', 'readiness-gate.md', 'merge-and-deploy.md'],
|
||||
requiredReads: ['readiness-gate.md', 'merge-and-deploy.md'],
|
||||
scenario:
|
||||
'This project has a confirmed prior /land-and-deploy run (treat the Step 1.5 check as CONFIRMED). A PR exists for this branch and CI is green. Simulate — do not run gh or actually merge: run the pre-merge readiness gate and produce the readiness report, then walk the merge and deploy-strategy steps, stating which merge path and deploy strategy you would take. Do NOT use AskUserQuestion.',
|
||||
staticInvariants: {
|
||||
mustStayInSkeleton: [
|
||||
'land-deploy-confirmed',
|
||||
'## Step 3.4: VERSION drift detection',
|
||||
'## Step 6: Wait for deploy',
|
||||
],
|
||||
mustPrecedeStop: ['land-deploy-confirmed'],
|
||||
mustMoveToSection: [
|
||||
'PRE-MERGE READINESS REPORT',
|
||||
'gh pr merge --squash --auto --delete-branch',
|
||||
'DEPLOY INFRASTRUCTURE VALIDATION',
|
||||
],
|
||||
gateAfterStop: undefined, // operational skill
|
||||
},
|
||||
behavioral: 'prompt',
|
||||
maxSkeletonBytes: 57_500, // Phase 4 wave 1; estimated ~56.2KB rendered — re-measured at regen
|
||||
minUnionBytes: 91_000, // Phase 4 wave 1; estimated union ~94.9KB
|
||||
mustContain: ['readiness', 'merge', 'canary', 'revert', 'staging'],
|
||||
},
|
||||
};
|
||||
|
||||
/** Sorted carved-skill names. Consumers derive their lists from this — no parallel lists. */
|
||||
|
||||
@@ -206,19 +206,8 @@ export function runParityChecks(opts: {
|
||||
*/
|
||||
const MONOLITH_INVARIANTS: ParityInvariant[] = [
|
||||
// cso is now carved — its invariant is generated from CARVE_GUARDS below.
|
||||
{
|
||||
skill: 'review',
|
||||
mustContain: ['confidence', 'P1', 'P2'],
|
||||
mustHaveHeadings: ['## Preamble', '## When to invoke'],
|
||||
// The adversarial step swapped its bare `command -v codex` check for the shared
|
||||
// codexPreflight() block (install + auth tri-state + CODEX_MODE branch prose),
|
||||
// landing ~6.3% over the v1.53.0.0 baseline. Intentional: it adds proper
|
||||
// not-installed vs not-authed handling, not slop.
|
||||
// v1.64+v1.65 merge: both waves grew the shared preamble (evidence
|
||||
// directive + telemetry failure flags); measured 1.094.
|
||||
maxSizeRatio: 1.10,
|
||||
minBytes: 70_000,
|
||||
},
|
||||
// review, codex, and land-and-deploy carved in token-reduction Phase 4
|
||||
// wave 1 (v1.69.x branch) — their invariants generate from CARVE_GUARDS too.
|
||||
{
|
||||
skill: 'qa',
|
||||
mustContain: ['bug', 'browse', 'fix'],
|
||||
|
||||
@@ -111,7 +111,7 @@ export const E2E_TOUCHFILES: Record<string, string[]> = {
|
||||
// skills with no prior plan-mode test:
|
||||
'office-hours-auto-mode': ['bin/gstack-skill-start', 'bin/gstack-skill-end', 'office-hours/**', 'scripts/resolvers/preamble/generate-completion-status.ts', 'scripts/resolvers/question-tuning.ts', 'scripts/resolvers/preamble/generate-ask-user-format.ts', 'scripts/resolvers/preamble.ts', 'test/helpers/claude-pty-runner.ts', 'test/skill-e2e-office-hours-auto-mode.test.ts'],
|
||||
'office-hours-phase4-fork': ['bin/gstack-skill-start', 'bin/gstack-skill-end', 'office-hours/**', 'scripts/resolvers/preamble/generate-ask-user-format.ts', 'scripts/resolvers/preamble/generate-completion-status.ts', 'scripts/resolvers/preamble.ts', 'scripts/resolvers/question-tuning.ts', 'test/helpers/llm-judge.ts', 'test/skill-e2e-office-hours-phase4.test.ts'],
|
||||
'llm-judge-recommendation': ['test/helpers/llm-judge.ts', 'test/llm-judge-recommendation.test.ts', 'scripts/resolvers/preamble/generate-ask-user-format.ts', 'codex/SKILL.md.tmpl', 'scripts/resolvers/review.ts'],
|
||||
'llm-judge-recommendation': ['codex/**', 'test/helpers/llm-judge.ts', 'test/llm-judge-recommendation.test.ts', 'scripts/resolvers/preamble/generate-ask-user-format.ts', 'codex/SKILL.md.tmpl', 'scripts/resolvers/review.ts'],
|
||||
// v1.21+ AUTO_DECIDE preserve eval (periodic). Verifies the Tool resolution
|
||||
// fix doesn't trip the legitimate /plan-tune opt-in path: when the user has
|
||||
// written a never-ask preference, AUQ should still auto-decide rather than
|
||||
@@ -139,7 +139,7 @@ export const E2E_TOUCHFILES: Record<string, string[]> = {
|
||||
// devex, office-hours + future PR2 carves). One file iterating CARVE_GUARDS;
|
||||
// the selector sets GSTACK_CARVE_SKILL=<name> to scope cost to the changed
|
||||
// skill (D-CODEX A). Touching the registry/helper or sections.ts runs all.
|
||||
'carve-section-loading': ['plan-eng-review/**', 'plan-design-review/**', 'plan-devex-review/**', 'office-hours/**', 'document-release/**', 'design-consultation/**', 'cso/**', 'test/helpers/carve-guards.ts', 'scripts/resolvers/sections.ts', 'scripts/gen-skill-docs.ts', 'test/helpers/auq-sdk-capture.ts', 'test/helpers/session-runner.ts'],
|
||||
'carve-section-loading': ['review/**', 'codex/**', 'land-and-deploy/**', 'plan-eng-review/**', 'plan-design-review/**', 'plan-devex-review/**', 'office-hours/**', 'document-release/**', 'design-consultation/**', 'cso/**', 'test/helpers/carve-guards.ts', 'scripts/resolvers/sections.ts', 'scripts/gen-skill-docs.ts', 'test/helpers/auq-sdk-capture.ts', 'test/helpers/session-runner.ts'],
|
||||
'autoplan-chain-pty': ['autoplan/**', 'plan-ceo-review/**', 'plan-design-review/**', 'plan-eng-review/**', 'plan-devex-review/**', 'test/fixtures/plans/ui-heavy-feature.md', 'test/helpers/claude-pty-runner.ts', 'test/skill-e2e-autoplan-chain.test.ts'],
|
||||
'e2e-harness-audit': ['bin/gstack-skill-start', 'bin/gstack-skill-end', 'plan-ceo-review/**', 'plan-eng-review/**', 'plan-design-review/**', 'plan-devex-review/**', 'scripts/resolvers/preamble/generate-completion-status.ts', 'test/helpers/agent-sdk-runner.ts', 'test/helpers/claude-pty-runner.ts'],
|
||||
|
||||
@@ -783,7 +783,7 @@ export const LLM_JUDGE_TOUCHFILES: Record<string, string[]> = {
|
||||
'office-hours/SKILL.md design sketch': ['office-hours/SKILL.md', 'office-hours/SKILL.md.tmpl', 'scripts/gen-skill-docs.ts'],
|
||||
|
||||
// Deploy skills
|
||||
'land-and-deploy/SKILL.md workflow': ['land-and-deploy/SKILL.md', 'land-and-deploy/SKILL.md.tmpl'],
|
||||
'land-and-deploy/SKILL.md workflow': ['land-and-deploy/SKILL.md', 'land-and-deploy/SKILL.md.tmpl', 'land-and-deploy/sections/**'],
|
||||
'canary/SKILL.md monitoring loop': ['canary/SKILL.md', 'canary/SKILL.md.tmpl'],
|
||||
'benchmark/SKILL.md perf collection': ['benchmark/SKILL.md', 'benchmark/SKILL.md.tmpl'],
|
||||
'setup-deploy/SKILL.md platform setup': ['setup-deploy/SKILL.md', 'setup-deploy/SKILL.md.tmpl'],
|
||||
|
||||
Reference in New Issue
Block a user