mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-09 06:28:59 +02:00
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:
co-authored by
Claude Fable 5
parent
4fce22d708
commit
64f55cc0b1
Vendored
+3
-3
@@ -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
@@ -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
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user