Repository navigation
v1.91.277.0 feat(preamble): office-hours stops copying the shared AskUserQuestion subsections (GSTA-96) - #3453
Merged
Merged
Conversation
… (GSTA-96) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ion (GSTA-96) Every tier 2+ SKILL.md inlined the same ~23 KB preamble. It now renders once per host into sections/preamble.md beside each tier 2+ SKILL.md; the SKILL.md keeps a pointer that asks for the Read only when the file's id is not already in context. Only sections byte-identical to the shared render move, so every skill keeps exactly its pre-hoist paragraphs (verified across all 41 skills). Parity caps for ten skills raised to their measured unions (owner-approved, Garry 2026-10-25: "do it"); 63 size pins lowered and 26 deleted. 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> # Conflicts: # CHANGELOG.md
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> # Conflicts: # CHANGELOG.md
…mplate's identity in the PR planner (GSTA-96) screen-summary failed on #3434 with 'PR profile requires full validation' for nine skills whose only paid coverage is periodic: their new sections/preamble.md had no dependency identity, while the SKILL.md beside it inherits its template's. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…the hoist resolver, not a section template (GSTA-96) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…odel-overlays guards the coverage half) The completeness section shrank by 3 characters (5 bytes), matching the 89 pins lowered by 3. The default-copy test pinned only the minimal-code half; an expectMentions check now fails if the full-coverage or never-excuses-a-gap clause is dropped. 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> # Conflicts: # CHANGELOG.md # test/fixtures/skill-md-size-allowlist.json
…qual coverage) The default-copy check now also fails if 'on equal coverage' is dropped from the smaller-diff rule (which would tell models to prefer the smaller diff unconditionally) or if the no-impossible-state-checks clause is removed. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
The [Unreleased] Tests bullet now says the default-copy test checks both halves of the rule (full coverage of the requirement; smaller diff only at equal coverage; no impossible-state checks; never excuses a gap), matching 88e3cc0 and 44eacaf. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ore code Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…pe; tests bind each completeness rule) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Adds test/preamble-hoist.test.ts (tier 1 unchanged; tier 2+ SKILL.md plus sections/preamble.md reproduces the pre-hoist preamble; pointer position and id) and two gen-skill-docs-checks cases (one shared preamble per host, beside every pointer and named by its id; preamble artifact kind). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
- setup: follow a symlinked sections/ dir in the carved-pointer status check - touchfiles: select preamble-hoist.ts alongside every preamble.ts entry - section-manifest: exempt sections/preamble.md only for skills whose SKILL.md carries the shared-preamble pointer - skill-size-budget: growth ceiling measures SKILL.md plus its shared preamble - host-conformance: tolerate a missing sections/ dir, as setup does - skill-validation: read bin/gstack-skill-start directly - skill-fixture: error messages and docblocks name the actual boundary (harness-version non-behavioral note updated) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ep 9.4, pass 2) The growth ceiling now measures SKILL.md plus the shared preamble, the same measure as the shrink floor; the docblock said SKILL.md only. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
….md restates the new one Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…(ship Step 9.4) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…wording Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> # Conflicts: # CHANGELOG.md # test/fixtures/skill-md-size-allowlist.json
plan-ceo-review's parity cap moves 1.0999 -> 1.1006 for the approved COMPLETENESS IS COVERAGE bullet (Garry 2026-10-25: "do it", parity caps to measured size; applied by GStack Minder). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…rule quote (ship Step 7) host-conformance: --status still finds a broken bare sections/ pointer when a carved Claude skill's installed sections/ is a directory symlink (fails at the pre-repair 0e5d11f). gen-skill-docs: the house rule review/specialists/ simplification.md quotes from ETHOS.md still appears in ETHOS.md. 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>
…first-run intro say complete coverage, minimal code (GSTA-96) The pointer skipped the shared file when any text carrying its id was in context, so a page or file with that heading could stand in for the anti-spoofing rules (security, red team and adversarial review, ship run 2). It now requires the skill's own earlier Read. The digest's Boil the Ocean bullet and the first-run intro still said 'AI makes completeness cheap, so do the complete thing' (docs audit blocker); both now carry Garry's 'complete coverage, minimal code' (2026-10-25: '1/ yes fix this'). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ean wording (ship Step 7) preamble-hoist: on every host, tier and render option the pointer allows the skip only when the skill's own Read is in context. agents-digest and gstack-skill-start: the digest bullet and the lake intro say complete coverage, minimal code, never the retired phrasing. Each fails at 9af36d0. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…id-only one (ship Step 9.4) The preamble-hoist.ts docblock and ARCHITECTURE.md still said the shared preamble is re-read only when its id is absent; since 2acf1a4 the pointer requires the skill's own earlier Read of the file. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ng tests (ship Step 13) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…head cannot change a release output (GSTA-96) CI 'Check VERSION is not stale vs queue' classified #3434 as stamped because it touched agents-digest/gstack-AGENTS.md (a release_outputs path), while regenerating only the generator fails the digest freshness test. The first-run intro rewording stays. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…stops copying the shared AskUserQuestion subsections (GSTA-96) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
|
😎 This pull request was merged. |
…plus-added order (ship Step 7, GSTA-96) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…subsections; office-hours cap history ends 'Before: 1.2279' (ship Step 9.4) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…preamble-hoist Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> # Conflicts: # ARCHITECTURE.md # CHANGELOG.md # docs/PROJECT_STRUCTURE.md # test/fixtures/context-budget.json # test/fixtures/skill-md-size-allowlist.json # test/helpers/carve-guards.ts # test/helpers/touchfiles-data.ts
…wo context-budget rows above main (GSTA-96, per GStack Minder) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…preamble-hoist Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> # Conflicts: # CHANGELOG.md # test/fixtures/context-budget.json
…s after its v1.91.265.0 merge (GSTA-96, per GStack Minder) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This was referenced Oct 27, 2026
… install (GSTA-96) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…vesting wording (GSTA-96) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…preamble-hoist 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>
…dedupe Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…270.0 merge (GSTA-96) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ts sections path mapped (GSTA-96) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…d rows (GSTA-96) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…preamble-hoist 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>
…ncated (GSTA-96) 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>
…dedupe Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…preamble-hoist Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…dedupe Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
… base=origin/main@3e4240a policy=base origin/main@3e4240a76f30:.gstack/ship-policy.json) ship, next in queue at 1.91.277.0 STAMP_VERSION: 1.91.277.0 claims: ignored (stamp-at-merge) stage version: done (wrote 1.91.277.0) stage release_tool: done (bun scripts/gen-agents-digest.ts) stage changelog: done (Unreleased -> 1.91.277.0) stage stamp_paths: done (1 mention(s) in 1 file(s) (1.91.270.0 -> 1.91.277.0)) stage mirror: skipped (no mirror in policy) stage apply: done (5 file(s)) FILES: CHANGELOG.md VERSION agents-digest/gstack-AGENTS.md lib/ship-policy.ts package.json MERGE_CONDITION: sha=a78ce08af9815b7ed6bdef9b91ee2c3d0df418a3 next: NEW_VERSION=1.91.277.0; commit and push only the stamp diff above (FILES), with no edit of your own: the train's verify accepts the CHANGELOG only as the base's plus this PR's entry re-headed; merge with the expected head a78ce08 and recompute on a stale queue. GSTACK_RESULT: skill=restamp status=complete run=/workspace/gstack/.gstack/tmp/restamp-journal.json Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
5 tasks done
garrytan
added a commit
that referenced
this pull request
Oct 27, 2026
…hat decided to freeze freezeQueue took a second prState read per unverified slot and filed anything but an exact MERGED under unmerged, so a slot that read MERGED at stopped() and was unreadable a moment later was recorded as unmerged (the record half of train 24's #3453 misfile). stopped() now reads each unverified slot once and passes those states in; a MERGED slot stays merged, and a slot unreadable beside a merged one is kept out of unmerged and named in the reason. The fixture's gh shim gains a per-PR vanish count so a test can change GitHub's answer between two reads. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #3434 (shared-preamble hoist), which is READY at b727a6d and fully merged into this branch. #3425 was closed without merging; its commits are in #3434. The base is main, so this diff includes all of #3434; this PR's own change is
git diff b727a6d3c...HEAD.What changed
office-hours/SKILL.md's AskUserQuestion section. Before, it carried full copies of two shared subsections only to add the
Q<N>form. After, only theQ<N>form remains, as its own subsection, and the shared file supplies the rest.scripts/resolvers/preamble/generate-ask-user-format.tsmoves office-hours'Q<N>open-question form, together with its "a free-text reply answers the most recent unansweredQ<N>" routing sentence, into one### Open-ended questionssubsection appended to the AskUserQuestion section. The wording of the form is unchanged, and every other skill renders byte-identically.scripts/resolvers/preamble-hoist.ts, a variant may add subsections after the shared ones. It keeps only its changed and added subsections, under the note "Only these subsections replace the shared ones or, under a new heading, add to its end". Variants without additions keep the existing note, and v1.91.276.0 feat(preamble): tier 2+ skills load the shared preamble once per session (GSTA-96) #3434's empty-variant guard stays.test/helpers/skill-startup.tschanged (readSkillEffective appends added subsections), so itsscripts/harness-version.jsonblob is re-pinned, recorded non-behavioral at HARNESS_VERSION 6:readSkillStartup,readSharedSectionsandreadSkillEffectivereturn the same bytes as the pinned helper for every tier 2+ render without added subsections (735 across all hosts) and for office-hours' SKILL.md before this change. Only office-hours' fixture input changes, because its prompt changed. No pass-rate series resets.Tokens (Anthropic count_tokens, claude-sonnet-4-5, measured at 5db328f before the main merges)
At this head office-hours/SKILL.md is 73,248 bytes, 6,328 fewer than at #3434's head; its parity union goes from 160,952 to 154,624 bytes.
Why
The hoist left office-hours paying almost 2,000 extra tokens on a session's first invocation, because it re-read two subsections it already had from the shared file. The approved follow-up was to remove the private copies that only duplicate shared text and keep the ones that differ on purpose.
Approvals
Tests and gate integrity
test/helpers/skill-startup.tsapplies added subsections when it builds a skill's effective text, so the hoisted-equals-inline check (test/preamble-hoist.test.ts) covers office-hours' new layout. Two tests intest/preamble-hoist.test.tspin the variant-note choice on every host and tier and the order of changed and added subsections.test/helpers/carve-guards.tslowers office-hours' parity cap from 1.2279 to 1.1796 (measured 154,653 before the main merge, 154,624 = 1.1793 now), below the pre-hoist 1.18.test/ceo-workflow-clarity.test.tsadds 'accepted scope' to the CEO completeness posture check.gstack-gate-diff b727a6d3c): 6 eligible hunks, all read, none tagged. Each tightens or adds. They are one added assertion phrase, one lowered cap, two new tests, the helper extension and a comment on plan-eng-review's unchanged cap. No cap, pin, threshold, budget, trial count or assertion goes up or gets weaker./ship (crew rule 22, unattended)
--allow-repo-commandsflag; it was rerun whole with the corrected launch.Deferred (rule 23: advisory, informational, test gaps)
test/preamble-hoist.test.ts's newsubheadingsscanner repeats the fence loop of the file's ownsections()splitter (testing and simplification, advisory). Part of the already-triaged splitter-duplication class.variantSubsectionswould accept an added subsection that reuses a shared heading, whichreadSkillEffectivewould treat as a replacement. No skill does this, and the hoisted-equals-inline test turns red if one does.Q<N>form moved after### Self-check; the static text is pinned bytest/office-hours-open-question-form.test.ts.variantSubsectionsbranches that no render reaches have no test. They are own shorter than shared, changed and added together on the generator side, and neither changed nor added.test/helpers/skill-startup.ts.Re-READY on #3434 d402d44 (84aa6dd)
#3434 re-READYed at d402d44 after its rule 19 merge of main v1.91.255.0 (context-budget.json resolved by hand). That head is merged into this branch with no conflicts; generated files and ship goldens are fresh. Focused: context-budget ratchet, size guard, parity, carve, preamble-hoist, harness version, gen-skill-docs checks, section manifest, host-config, AskUserQuestion resolver (382/0). Remote free tier at tree c7c1b54f189f: 19,734 tests, 0 failed ($0.06). Dispatched CI green; Windows Setup E2E crashed once in
gstack-hook-checkwith exit 0xC0000142 (DLL init failed on the runner, not a test verdict; the same step passed at the two previous heads) and passed on its one rerun. #3453's own delta is unchanged since 92ce208, so no new review pass (rule 23: 3 of 3, last clean). The focused office-hours paid evidence at b40a000 stands.Re-READY on #3434 62ec2e6 (2f6fdcc)
#3434 re-READYed at 62ec2e6 after its rule 19 merge of main v1.91.260.0 (#3433 GSTA-92 phase 2, #3481 review convergence). That head merged into this branch with no conflicts; generated files and ship goldens are fresh. One commit on top follows GStack Minder's direction. This PR's CHANGELOG entry corrects two wording advisories in #3434's post-merge bullet (31 allowlist raises, not 30; the gstack and alwaysOnTotal context-budget rows sit above main's unchanged ceilings by the measured growth). Focused: size guard, parity, carve, preamble-hoist, context-budget ratchet, catalog budget, touchfiles, gen-skill-docs checks, section manifest, harness version, host-config, skill-size budget, office-hours open-question form, CEO clarity, model overlays (1025/0). Remote free tier at tree 79d099359ee1: 19,839 tests, 0 failed ($0.06; earlier attempts were refused by the shared Ubicloud vCPU quota before any VM was billed). Dispatched CI green at 2f6fdcc (runs 40435520005, 40435523081, 40435525773, 40435528289). This PR's own diff is unchanged since 92ce208, so no new review pass (rule 23: 3 of 3, last clean); the focused office-hours paid evidence at b40a000 stands.
Re-READY on #3434 f45f1ad (af025a0)
#3434 re-READYed at f45f1ad after its rule 19 merge of main v1.91.265.0 (#3430 /design-motion, #3493 ETHOS; context-budget union, eval-plan raised by #3493's measured growth, gstack back to main's value). That head merged into this branch with no conflicts; generated files and ship goldens are fresh. One commit on top restates this PR's CHANGELOG corrections to #3434's post-merge bullets (per GStack Minder): 31 allowlist raises, alwaysOnTotal above main's unchanged ceiling by the measured growth, gstack now back at main's value, and the ratchet bill's 7,398.5 in place of the raw 7,542 for alwaysOnTotal. Focused guards 1032/0. Remote free tier at tree 67e02aaa9b1f: 19,918 tests, 0 failed ($0.07). Dispatched CI green at af025a0 (runs 40446706525, 40446709221, 40446712166, 40446714449). This PR's own diff is unchanged since 92ce208, so no new review pass (rule 23: 3 of 3, last clean); the focused office-hours paid evidence at b40a000 stands.
Re-READY after train 20 (a78ce08)
Train 20 (gate run 40454750574) went red on auq-format-gate. The red is attributed to #3434: its planted-skill fixture never let the model read the hoisted
sections/preamble.md, and #3434 has repaired it. #3453 was pulled from the train with it. This branch has since merged four later #3434 heads. They are 191a44c (main v1.91.270.0), c8ed25f (the parallel-capture test for the mapped sections path), 6578bcb (GStack Minder's rule 19 merge of main v1.91.273.0) and now 234227f (main v1.91.274.0, where #3507 re-pins the design-review and design-html caps and sets design-html's context-budget row to 8,896). The 234227f merge was clean. A CHANGELOG sentence (efab108, at GStack Minder's direction) corrects #3434's post-v1.91.270.0 bullet: "every row that rises matches main's own recapture" holds only for the non-hoisted rows, and main measures the hoisted ones unhoisted (eval-plan10,581 against this branch's 4,887). In the 6578bcb merge, the only conflict was the plan-eng-review ratio comment intest/helpers/carve-guards.ts: #3434's re-pinned 1.3532 stands, and this PR's sentence on why plan-eng-review keeps its own versions of shared sections is appended to it. The CHANGELOG merged clean, and its released part is byte-identical to main. The office-hours context-budget row is 19,139 on the merged tree (was 20,792 before the dedupe). This PR's own diff is the same 10 files, changed since the last review only in CHANGELOG wording and that context-budget row, so there is no new review pass (rule 23: 3 of 3, last clean). Remote free tier at tree d3e1949478ea: 20,029 tests, 0 failed ($0.11; a first attempt waited 10 minutes for Ubicloud capacity and never started, $0.10). It stays paired behind #3434.Issues
Refs #3425
Refs #3434
Refs #3451
Refs #3453
Refs #3433
Refs #3472