Repository navigation
v1.91.289.0 feat: skill diet pilots for plan-design-review, office-hours and design-review (GSTA-134) - #3525
Conversation
SKILL.md 66,063 -> 56,209 B (claude host); review-sections.md 52,243 -> 50,183 B. Cut model-known prose (cognitive patterns, verbose designer prose, duplicated formatting rules); UX principles kept as a five-line Krug summary after the blind judge showed wayfinding loss without it. Section layout unchanged: autoplan's methodology snapshot requires review-sections.md as the only indexed section. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Moves the Phase 3.5 Codex second opinion and the Phase 4.25 visual design (designer mockups / HTML sketch) out of the eager SKILL.md into on-demand sections behind STOP pointers; the CODEX_SECOND_OPINION, DESIGN_MOCKUP and DESIGN_SKETCH resolvers are untouched. Claude-host SKILL.md 73,248 -> 43,885 bytes. skill-diet before/after (Opus, 9 tasks x 3): success 26/27 -> 27/27, median tokens per successful run 170,197 -> 124,941; blind judge after 10, before 5 of 15. YC pitch, flattery and promo text unchanged (sections byte-identical to main). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Moves the outside voices and the test-framework bootstrap into on-demand sections (the bootstrap now loads at Phase 8e.5, its only consumer: a JS-behavior fix that needs a regression test with no known test command), replaces the UX principles block with a Krug summary, and tightens the DESIGN_METHODOLOGY prose (design-review is its only consumer). Shared resolvers TEST_BOOTSTRAP and DESIGN_OUTSIDE_VOICES are untouched. Claude-host SKILL.md 115,947 -> 84,869 bytes. skill-diet before/after (Opus, 12 tasks x 3): success 32/36 -> 34/36, median tokens per successful run 326,662 -> 257,819; blind judge after 9, before 5, tie 1. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Every pin moves down except office-hours' parity maxSizeRatio (1.1796 -> 1.1921, GStack Minder's call as merge-queue owner): its union grew 1,662 B because the second-opinion question now sits in the skeleton while the untouched CODEX_SECOND_OPINION resolver keeps its own copy. design-review leaves the size allowlist on every host. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
|
😎 This pull request was merged. |
…w Phase 8d diet Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…the diet Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
… skill diets Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
E2E Evals: ✅ PASS4 executed, 0 reused rule/judge records | 0 manual accepted (unscored; no score-cache credit) | $.27 rule/judge cost | reconcile exit: 0 Profile: pr / mode Rule and judge shards
Fail-closed reconciliationSliced lane: planner → duration-packed executors → fail-closed report. Behavior cases run a pre-registered 3-trial panel (PASS at 2/3 with no contract violation); a PASS 2/3 is shown with its failed trial, never as a clean pass. Reused results retain their original provenance and expiry. Dispatched narrow screen (gstack-ship-queue ready --screen) of merge commit |
…lots Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> # Conflicts: # CHANGELOG.md
What changed
The second opinion and visual design move to on-demand sections: office-hours loads them only when the founder asks for one.
Before/after as text: The second opinion and visual design move to on-demand sections: office-hours loads them only when the founder asks for one
Test bootstrap loads at its only consumer: Phase 8e.5 reads sections/test-bootstrap.md when the repo has no test framework.
Before/after as text: Test bootstrap loads at its only consumer: Phase 8e.5 reads sections/test-bootstrap.md when the repo has no test framework
plan-design-review's designer intro keeps the rule (generate mockups when DESIGN_READY) and drops the command list and motivation.
Before/after as text: plan-design-review's designer intro keeps the rule (generate mockups when DESIGN_READY) and drops the command list and motivation
Why
Garry picked option A1 on 2026-10-27: "pilot now with the upstream skill-diet on two or three large skills nobody is editing this week (design-review, office-hours, plan-design-review). Each slimmed skill ships only if it passes skill-diet's before/after test and gstack's own paid tests for that skill." All three skills passed both, so each run of them now loads 15 to 40 percent fewer bytes for the same or better task results.
Blast radius
The change touches the three skills' templates, their new
sections/*.mdfiles, and three resolvers inscripts/resolvers/design.ts(DESIGN_METHODOLOGY,DESIGN_SKETCH,DESIGN_MOCKUP) that only these skills render. Every other skill's regenerated output is byte-identical to main on every host (script ran:gen:skill-docs --host allplusdiff -rqagainst a main worktree), so the 85 differing generated files all belong to the three skills;CODEX_SECOND_OPINIONis untouched.Approvals
Source: gstack-approvals record for gsta134/skill-diet-pilots (display only; not an approval citation).
Summary
The three largest design-facing skills were dieted with the upstream skill-diet method. Blocks that only some runs use moved behind one-line "read when" pointers into on-demand sections, and prose the model already knows was cut; descriptions and triggers did not change. The size, context-budget and carve guards were re-pinned to the measured results, with one cap raised under an owner grant.
Numbers (Claude host, bytes; panel is Opus 5.5, 3 runs per arm; token medians are the lower median of successful runs):
Codex host: office-hours 81,152 → 48,074 and design-review 124,144 → 90,977. The 30% target was missed for plan-design-review and design-review; both still shipped because they passed the before/after test and the paid cases.
Paid cases (reused evidence, no new paid runs in /ship): plan-design-review at product head 7e2ad74 was all green (
carve-section-loading-plan-design-reviewfailed once and passed its one rerun, flaky). office-hours and design-review were run at b0fba22. office-hours is green exceptoffice-hours-brain-writeback, flaky (1/3, then 2/3 on its rerun; a fake-gbrain fixture defect). design-review's rule cases are green and both judges pass;design-review-detector-shim-domskipped at b0fba22 (browse binary absent, zero executed), so it was rerun afterbun run build:gatesat 84e53b7: PASS 1/1, one executed.design-review-fixself-skips without Aside and executed zero cases, so it is not a pass. The final head differs from b0fba22 in design-review only by three checklist header digits (12→11, 8→6, 11→8); the fix-loop judge's extracted input (Phase 7 to Additional Rules) is byte-identical.Gate integrity:
test/fixtures/skill-md-size-allowlist.jsondeletes 15 pins and lowers 8, raising none.test/fixtures/context-budget.jsonmoves only the three skills' keys.test/helpers/carve-guards.tslowersmaxSkeletonBytesand design-review'sminUnionBytesandmaxSizeRatio(ratios rounded up at 4 decimals).test/helpers/placeholder-allowlist.tsdeletes the stale<affected-url>entry, because the allowlist's own staleness check failed after the design-review diet removed its only fence. The one raise is office-hoursmaxSizeRatio1.1796 → 1.1921, granted by GStack Minder as merge-queue owner. The measured 156,286 / 131,110 = 1.19202 needs 1.1921 after rounding up; the grant text said 1.1920. Follow-up: letCODEX_SECOND_OPINIONtake a flag that omits its question when the skeleton asks it, then lower the cap.Rule 25 trial merge with #3375 (c411341): conflicts in plan-design-review
SKILL.md/SKILL.md.tmpl(take the diet side) anddocs/skills.md(a #3375-vs-main conflict, not this PR's).Test Coverage
Coverage gate: could not determine percentage — skipping (prose and gate-only change). The 12 contract test files for the moved blocks are green; tests repointed to the new sections are listed in the CHANGELOG.
Tests ran: remote gate 18861
Pre-Landing Review
One blocking finding: CI free-suite shard 13 failed in
test/env-host-fence-conformance.test.ts(CEO-12) on a stale<affected-url>placeholder entry; fixed in 15fdefb, and that test now passes 25 of 25. No other finding met the blocking floor. Pass 3 re-checked the docs-audit fix (design-review checklist header counts), the docs edits and the CHANGELOG, and found nothing.REVIEW_LOOP: passes=3 blocking_found=1 deferred=0 noted=4 fixed=1 scope=frozen
Gate edits: 14 listed, 14 read, 1 finding — 1 kept (reasons below), 0 restored, 0 open
maxSizeRatioraise,test/helpers/carve-guards.ts: granted by the merge-queue owner (GStack Minder) under Garry's standing approval of parity-cap re-pins.Outside review: openai/gpt-6.1-sol (medium), cross-family, 0 blocking findings. Its review record has no start token, so its freshness reads UNVERIFIED; that is missing freshness coverage, not a pass.
Review notes
Below the blocking floor; recorded here and not fixed in this PR (product prose is frozen for the paid evidence).
test/helpers/touchfiles-data.ts:1604judge 'design-review/SKILL.md fix loop' reads section files but touchfiles omit design-review/sections/**test/helpers/carve-guards.ts:281expectedSections for office-hours and design-review omit the four new sections, so the static pointer guard does not cover them (pointers resolve today)test/helpers/carve-guards.ts:283paid office-hours scenario demands the second opinion but requiredReads does not assert second-opinion.md was read (changing a paid case needs owner call)office-hours/sections/second-opinion.md.tmpl:1'skip its AskUserQuestion' is singular while the section has a second AskUserQuestion (premise-revision consent)office-hours/SKILL.md.tmpl:233office-hours offers the second opinion before checking the disabled-provider preference; a disabled send stays blockedtest/helpers/carve-guards.tsplan-design-reviewminUnionBytesslack predates this PRdocs/skills.md:447report path (039e42d) and the design-review checklist header counts (f1496a2).GSTA-134-decisions.tsvrow 16 records the ask to GStack Minder for the ratio raise and row 17 the grant (approvals record a-7390cbb4c515). Rows 18-24 supersede or add to earlier rows after the cross-family trail review.Exploratory QA
Not run: no runtime surface changed (skill prose and test gates only).
Design Review
No frontend files changed — design review skipped.
Eval Results
Reused paid evidence from the lead's runs, listed under Summary with their heads. Panel spend was $131.61 against a cap raised from $100 to $180. No paid evals ran during /ship.
Greptile Review
No Greptile comments.
Plan Completion
20 items: 10 done, 5 changed, 2 partial, 3 not done. Partial: the 30% target (plan-design-review −14.9%, design-review −26.8%) and
design-review-fixnot run (needs Aside). Changed: budget $100 → $180 (spent $131.61), the office-hours ratio 1.1921 vs grant text 1.1920, office-hours scored on 9 tasks, design-review rules restored as one sentence, and test repoints. Not done:reports/GSTA-134.md(owed by the lead); CHANGELOG, receipt and images are done in this run.Verification Results
All five obligations held, none blocked or skipped: typecheck (exit 0), generated-docs freshness (pregate regen: skill-docs and ship-goldens fresh), credential scan (1061 added lines clean), module-size ratchet and skill size guard (green in the 13 focused gate files, 518 tests, and again in the remote gate), and the remote free gate (18861 tests, 0 failed on tree ae8640b6b699).
TODOS
No TODO items completed in this PR.
Documentation
Status: current — the re-audit (gsta134-docs-2) found no further corrections. Attempt 1's two factual edits are verified, and the checklist-count blocker is repaired in f1496a2.
Scope: base 10b77de..f1496a2 (29 files: the skill diets for /plan-design-review, /office-hours and /design-review, plus the design.ts resolver and test re-pins), plus the unstaged ARCHITECTURE.md, docs/skills.md and CHANGELOG.md. The authored templates, the new section templates, and the top-level and nested docs that reference these skills were checked.
Documentation health:
{{UX_PRINCIPLES}}consumers are now /design-html and /design-shotgun only (verified).~/.gstack/projects/<slug>/designs/design-audit-<date>/(verified against REPORT_DIR).Coverage: no new public surface. Descriptions, triggers and commands are unchanged, and the new
sections/*.mdfiles are internal on-demand loads that each SKILL.md section index points to. Coverage: all shipped features have adequate documentation.Diagram drift: none.
Debt: the "80-item audit" wording (docs/skills.md, BROWSER.md) is approximate: 83 counted bullets plus the AI-slop category. Revisit if the checklist shrinks further.
Test plan
gstack-pregate --stage tests --remote --spend-cap 2 --timeout 2700 --allow-repo-commands: 18861 tests, 0 failed on tree ae8640b6b699, $0.07 (one flaky pass on serial retry:test/plan-seed-submission.test.ts)gstack-pregate --stage preflight --allow-repo-commands: pass (regen, secrets, strays, literals, timing, guards)bun run typecheck: exit 0bun test test/env-host-fence-conformance.test.ts test/generated-bash-placeholders.test.ts: 25 and 158 tests green, none failing🤖 Generated with Claude Code