test: register wave-4 carves (office-hours ext, design-html, design-shotgun) — 20 carved skills

Both design entries carry requiredReads + loading-eval scenarios (D3A
condition). office-hours phase sections are mode-exclusive, so only the
always-reached design/handoff section is a deterministic requiredRead.
Baselines and ratchet recaptured.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-08-25 18:05:54 +00:00
co-authored by Claude Fable 5
parent 4fce22d708
commit 64f55cc0b1
4 changed files with 91 additions and 31 deletions
+3 -3
View File
@@ -14,9 +14,9 @@
"context-save": 9551,
"cso": 14524,
"design-consultation": 12985,
"design-html": 15001,
"design-html": 12841,
"design-review": 23567,
"design-shotgun": 14031,
"design-shotgun": 13028,
"devex-review": 14924,
"diagram": 3847,
"document-generate": 11679,
@@ -36,7 +36,7 @@
"landing-report": 8844,
"learn": 8514,
"make-pdf": 4957,
"office-hours": 21191,
"office-hours": 17468,
"open-gstack-browser": 4429,
"openclaw/skills/gstack-openclaw-ceo-review": 2764,
"openclaw/skills/gstack-openclaw-investigate": 1429,
+19 -19
View File
@@ -1,10 +1,10 @@
{
"tag": "v1.69.1.0",
"capturedAt": "2026-08-25T17:36:29.077Z",
"capturedFromCommit": "706091cb",
"capturedAt": "2026-08-25T18:01:18.758Z",
"capturedFromCommit": "3bc3b5d5",
"capturedFromBranch": "prompt-token-load-reduction",
"totalSkills": 53,
"totalCorpusBytes": 2810742,
"totalCorpusBytes": 2814663,
"estTotalCatalogTokens": 4195,
"topHeaviest": [
{
@@ -29,10 +29,10 @@
},
{
"skill": "office-hours",
"skillMdBytes": 116652,
"skillMdLines": 1322,
"estTokens": 29163,
"tmplBytes": 30566,
"skillMdBytes": 118175,
"skillMdLines": 1134,
"estTokens": 29544,
"tmplBytes": 15409,
"descriptionLen": 860,
"hasGateEval": true,
"hasPeriodicEval": false
@@ -221,10 +221,10 @@
},
"design-html": {
"skill": "design-html",
"skillMdBytes": 57411,
"skillMdLines": 1122,
"estTokens": 14353,
"tmplBytes": 22567,
"skillMdBytes": 58940,
"skillMdLines": 903,
"estTokens": 14735,
"tmplBytes": 17680,
"descriptionLen": 235,
"hasGateEval": true,
"hasPeriodicEval": false
@@ -241,10 +241,10 @@
},
"design-shotgun": {
"skill": "design-shotgun",
"skillMdBytes": 53700,
"skillMdLines": 984,
"estTokens": 13425,
"tmplBytes": 13331,
"skillMdBytes": 54569,
"skillMdLines": 915,
"estTokens": 13642,
"tmplBytes": 13378,
"descriptionLen": 788,
"hasGateEval": true,
"hasPeriodicEval": false
@@ -431,10 +431,10 @@
},
"office-hours": {
"skill": "office-hours",
"skillMdBytes": 116652,
"skillMdLines": 1322,
"estTokens": 29163,
"tmplBytes": 30566,
"skillMdBytes": 118175,
"skillMdLines": 1134,
"estTokens": 29544,
"tmplBytes": 15409,
"descriptionLen": 860,
"hasGateEval": true,
"hasPeriodicEval": false
+67 -7
View File
@@ -249,16 +249,17 @@ export const CARVE_GUARDS: Record<string, CarveGuard> = {
},
'office-hours': {
skill: 'office-hours',
expectedSections: ['design-and-handoff.md'],
expectedSections: ['design-and-handoff.md', 'phase-2a-startup-diagnostic.md', 'phase-2b-builder-brainstorm.md'],
// Phase sections are mode-exclusive (a session runs exactly one of 2A/2B),
// so only the always-reached design/handoff section is a deterministic read.
requiredReads: ['design-and-handoff.md'],
scenario:
'Run office hours for this product idea through to the end: have the diagnostic conversation, explore alternatives, then write the design doc and run the relationship handoff (Phases 5-6).',
staticInvariants: {
mustStayInSkeleton: [],
mustMoveToSection: [],
// office-hours is conversational; the design-doc/handoff section has no
// post-STOP review gate in the skeleton.
gateAfterStop: undefined,
mustMoveToSection: ['### The Six Forcing Questions', '### Pushback Patterns', 'Anti-Sycophancy Rules', 'Wild exemplar'],
mustPrecedeStop: ['**Mode mapping:**'],
gateAfterStop: '## Section self-check',
},
behavioral: 'prompt',
// v1.2.0 activation lift: first-run-guidance section in the shared preamble,
@@ -270,8 +271,8 @@ export const CARVE_GUARDS: Record<string, CarveGuard> = {
// the #538 opt-out + D1 evidence directive — ratio 1.104 measured.
// #2499 project-scope MCP jq in the brain-sync block grew every tier-2+
// skeleton ~1.5KB (entry resolution emitted once per SKILL.md).
maxSkeletonBytes: 82_900, // token-reduction Phases 1-2 (v1.69.x branch): preamble bash -> bin/gstack-skill-start, onboarding -> gated emission; measured 82,304
minUnionBytes: 106_000, // token-reduction Phases 1-2 (v1.69.x branch); measured union 117,855
maxSkeletonBytes: 68_200, // token-reduction Phase 4 wave 4 (v1.69.x branch): 2A/2B carved out; measured 66,852
minUnionBytes: 115_800, // Phase 4 wave 4; measured union 118,175
mustContain: ['design doc', 'problem statement'],
maxSizeRatio: 1.12,
},
@@ -621,6 +622,65 @@ export const CARVE_GUARDS: Record<string, CarveGuard> = {
minUnionBytes: 66_000, // measured union 73,496
mustContain: ['retrospective', '45-minute gap', 'Ship of the week', 'Praise'],
},
// ── Token-reduction Phase 4 wave 4 (v1.69.x branch): design doctrine carve ──
// (D3A: read-on-demand doctrine, requiredReads-guarded + loading eval)
'design-html': {
skill: 'design-html',
expectedSections: ['doctrine.md', 'pretext-patterns.md'],
requiredReads: ['doctrine.md', 'pretext-patterns.md'],
scenario:
'Walk /design-html in SIMULATION — do not run bash, start servers, launch a browser, or take screenshots. Treat Step 0 as already resolved: no CEO plan, no approved mockup, no variants, no DESIGN.md, no prior finalized.html — freeform mode (Case C option D), screen name "pricing", the user wants a pricing page for a developer-tools SaaS (dark, dense, three tiers, monospace-leaning). Do NOT use AskUserQuestion — proceed with the stated assumptions. Read each pointed section before doing its step, then execute Steps 1-3: produce the implementation spec, state the chosen Pretext tier and why, and generate the complete Pretext-native HTML — include the HTML in your report instead of writing files. Stop there: skip Step 3.5, Step 4, and Step 5.',
staticInvariants: {
mustStayInSkeleton: [
'## Step 0: Input Detection',
'## Step 2: Smart Pretext API Routing',
'### HTML Generation',
'AI slop blacklist',
'## Step 4: Preview + Refinement Loop',
'## Important Rules',
],
mustPrecedeStop: ['## DESIGN SETUP'],
mustMoveToSection: [
'### The Three Laws of Usability',
'### The Goodwill Reservoir',
'### Pretext Wiring Patterns',
'### Pretext API Reference',
],
gateAfterStop: undefined, // operational skill, no plan-mode gate
},
behavioral: 'prompt',
maxSkeletonBytes: 49_900, // Phase 4 wave 4; measured 48,886
minUnionBytes: 57_500, // Phase 4 wave 4; measured union 58,682
mustContain: ["Don't make me think", "Users scan, they don't read", 'The Goodwill Reservoir', 'PRETEXT API CHEATSHEET', 'Pattern 3: Text around obstacles'],
},
'design-shotgun': {
skill: 'design-shotgun',
expectedSections: ['doctrine.md'],
requiredReads: ['doctrine.md'],
scenario:
'Walk /design-shotgun in SIMULATION — do not run bash, launch a browser, call the design binary, or spawn agents. Treat Step 0 as NO_PREVIOUS_SESSIONS and Step 1 context as fully gathered: a landing page for an open-source CLI tool, audience = developers evaluating it from a GitHub README link, no DESIGN.md, no taste profile or prior approved.json (Step 2 finds nothing). Do NOT use AskUserQuestion — proceed with the stated assumptions. Read each pointed section before doing its step, then run Step 3a at full depth: write three distinct variant concepts with their full variant-specific generation briefs, apply the anti-convergence check, and produce the concept list plus briefs as the report. Stop before Step 3b.',
staticInvariants: {
mustStayInSkeleton: [
'## Step 0: Session Detection',
'## Step 2: Taste Memory',
'Anti-convergence directive',
'### Step 3b: Concept Confirmation',
'## Important Rules',
],
mustPrecedeStop: ['## DESIGN SETUP'],
mustMoveToSection: [
'### The Three Laws of Usability',
'### The Goodwill Reservoir',
"Users scan, they don't read",
],
gateAfterStop: undefined,
},
behavioral: 'prompt',
maxSkeletonBytes: 50_600, // Phase 4 wave 4; measured 49,578
minUnionBytes: 53_200, // Phase 4 wave 4; measured union 54,290
mustContain: ["Don't make me think", "Users scan, they don't read", 'trunk test', '44px minimum'],
},
};
/** Sorted carved-skill names. Consumers derive their lists from this — no parallel lists. */
+2 -2
View File
@@ -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': ['qa/**', 'browse/**', 'retro/**', 'autoplan/**', 'spec/**', 'setup-gbrain/**', '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'],
'carve-section-loading': ['design-html/**', 'design-shotgun/**', 'qa/**', 'browse/**', 'retro/**', 'autoplan/**', 'spec/**', 'setup-gbrain/**', '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'],
@@ -415,7 +415,7 @@ export const E2E_TOUCHFILES: Record<string, string[]> = {
// frontmatter. Touched by anything that changes resolver output, gen
// pipeline, detection helper, refresh subcommand, or the on-demand
// docs the resolver points to.
'office-hours-brain-writeback': [
'office-hours-brain-writeback': ['office-hours/sections/**',
'scripts/resolvers/gbrain.ts',
'scripts/gen-skill-docs.ts',
'bin/gstack-gbrain-detect',