Repository navigation
v1.91.279.0 eval:select exemptions and ETHOS.md registration (#3499), below-floor review rulings (#3504, #3485), Windows curation, GSTA-121 follow-ups - #3515
Merged
Conversation
…ow-ups Release metadata (NOTICE.md, LICENSE, licenses/**) no longer restores the full paid gate and ETHOS.md is registered under the two prompts that read it (#3499). docs/review-policy.md records the six finding classes #3485 and #3504 ruled below the floor and the review army's lead judgment applies the table; the floor itself is unchanged. The Windows curation moves test/pregate-remote-stamp-only.test.ts to KNOWN_WINDOWS_INCOMPATIBLE (#3485). From GSTA-121: Blast radius in docs/skills.md and the merge-ask template, the 11-digit run-id exemption from pii.phone.e164 after a run word, relative string literals as import-graph edges, and a ubi-runner pack that never tars the live .git. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Red Team pass 1 (all below the floor): an 11-digit span with a leading 1 after a run word is a US or Chinese national number, not a run id, and reports again; ubi-runner pack removes its temporary repository when it fails and replays branch.* with remote.* so a branch's upstream resolves on the VM; the conservative-refusal example in docs/review-policy.md reads in the refusing direction; the touchfiles header names why ETHOS.md sits only under the two prompts that quote it. Step 6's selection found captain/templates/merge-ask.md as the one unknown dependency of this PR and registered captain/templates/** in FREE_ONLY_PR_FILES (#3499). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
The cmd_pack EXIT trap bakes the temp path in: a set -e failure unwinds the function before the trap runs and a local $tmp is unset there, so the old form leaked the snapshot. The leak test creates TMPDIR where the pack reads it and asserts the failure is the missing index. CHANGELOG examples no longer spell a full national number. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
The pack snapshot carries the index's staged blobs as a pack of their own, so a VM write-tree (gstack-wtree) can read a staged file the way the old .git tar allowed; git init runs with --template= and gc.auto=0 and a valueless remote/branch key replays as true. scripts/harness-version.json re-pins scripts/test-pr-profile.ts after the captain/templates/** entry. The run-id exemption reads the same way in the scanner and gstack-post: an 11-digit span after a run word is a run id (the leading-1 exclusion from the Red Team pass contradicted gstack-post's tested contract and the ruling that a run id is not a phone number), with the residual named in the comment, the docs and the CHANGELOG. The #3499 pins move to their own test so the boundary test stays under its default budget. Docs audit: TESTING_INTERNALS names RELEASE_METADATA_FILES and captain/templates/**, docs/captain.md names Blast radius. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
The pack's staged-blob list comes from the copied index, holds only blobs staged against HEAD (not every tracked blob), skips gitlinks whose commit the superproject lacks, and dies with its own message when pack-objects fails. The live-checkout test covers a gitlink entry and a valueless remote key replayed as true. CHANGELOG names the staged-blob carry. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
The pack's blob list is the copied index's blobs that HEAD's tree lacks, so an intent-to-add entry's empty blob and the stages of an unmerged entry travel too (the HEAD-only diff list dropped both); gitlinks still skip. The live-checkout test adds an intent-to-add entry, which the VM fsck assertion covers. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
|
😎 This pull request was merged. |
Resolves CHANGELOG.md (both entries kept, Unreleased on top), test/helpers/touchfiles-data.ts (main's GSTA-96 entries kept, with ETHOS.md added to the plan-ceo-review entries main left without it) and test/paid-free-boundary.test.ts (LICENSE and NOTICE.md are no longer full-fallback examples: this branch exempts them). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ps; stamp v1.91.279.0 FILES: CHANGELOG.md VERSION agents-digest/gstack-AGENTS.md package.json MERGE_CONDITION: sha=64684de144e5c5b8934408514b44434559487b18 NEW_VERSION=1.91.279.0 Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This was referenced Oct 27, 2026
garrytan
added a commit
that referenced
this pull request
Oct 27, 2026
…erged tree The review-army small-diff clause (+5 union bytes) lands on a main that sat 4 bytes under the ship cap after #3515 and #3517: 328,932 -> 328,937 / 187,706 = 1.7524 both ways at four places, so the pin moves one in the last place. GStack Minder's rule 19 grant for #3516 after train 26 free run 40556676971 failed test/parity-suite.test.ts. Before/after and the reason are in the CHANGELOG entry. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
10 tasks done
capy-ai Bot
added a commit
that referenced
this pull request
Oct 27, 2026
…loor focus picker and the judged review/plan-review prose (GSTA-128) (#3516) * fix(flaky): repair the five paid gate detectors and the judged review/plan-review prose (GSTA-128) Daily flaky pass over the 2026-10-27 Open ledger entries, paid cases first. - ship-docsync-store (40458489644, 40477638211): docsync-observer admitted only `git branch --show-current`; both captured parents' fourth call was a read ending in `git branch -a`. Operand-free branch listings are now part of the read grammar. - ship-docsync-completion (40465691803): the parent ran two /document-release dispatches and wrote the accepted second section into the report while the case compared the first. The contract now follows the last foreground dispatch. - ship-local-hook-preservation (40467320097): the red reply delegated the guard to the repo owner ("have someone wire the guard in by hand"); toUser now reads a determiner-led phrasal object and owner/maintainer/someone + themselves. - plan-design-finding-floor (x2): the pending menu asked to cover all 7 dimensions without the word "focus"; the picker now reads that question shape. - Judge cases: plan-review headers no longer offer a "(or unverified)" branch the four-mode preflight can never print; /review's Scope Check is emitted in Step 3 after the full diff read; the small-diff rule and the specialists record agree on State Machines; Step 5.8.2 names which post-fix rerun rule governs. Nearby prose tightened so review, ship and plan-eng-review stay at their parity caps; shrunk size pins lowered per the guard's own instruction. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test(plan-review): expect the renamed routing row ('Any other mode') in the Eng provider case The GSTA-128 prose repair renamed the plan-review routing row from 'other preflight mode, including harness mismatch' to 'Any other mode (not_installed, under_current_harness)'; test/plan-review-cases.test.ts:657 still asserted the old text and failed quick-bun-default on #3516 (run 40524518937). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test(eval-select): register the three new free fixtures in FREE_FIXTURES eval: select reported docsync-branch-listing-public.json, docsync-two-attempts-public.json and design-floor-focus-cover-all.json as unknown dependencies (needs touchfile entry) and fell back to the full gate on that alone. Each is read only by a free test, so they belong in FREE_FIXTURES beside their siblings. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(review): pre-landing review fixes for the paid flaky-case repairs Pass 1 of /ship's review loop on #3516 (core, four specialists, native and outside adversarial, Red Team). Fixed in the diff: - test/skill-e2e-ship-docsync.test.ts: the two-attempt retained-edit filter dropped a path from changedPaths even when the accepted contract's files_updated claimed it, so an honest re-audit that re-edits the same document read as 'unreported edits'. acceptedChangedPaths() in test/helpers/docsync-contract.ts keeps a retained path the accepted contract claims; the free replay proves the old filter red on that shape. - test/helpers/ship-hook-actor.ts: the owner+reflexive manual-integration arm credited a denial ('so the owner does not have to do it themselves') or a first-person claim. ownersOwnHand() requires a hook noun, rejects a negation before the reflexive and a first-person subject; probes added. - scripts/resolvers/plan-gates.ts + review/sections/manifest.json: the no-plan path still said 'Emit Step 1.5's Scope Check once' and the STOP trigger 'finishing Step 1.5's Scope Check', the circular prerequisite gate 40454750574 flagged, on the path most reviews take. Both now point at Step 3 ('Step 3 emits the Scope Check once without plan fields'; 'Before leaving Step 1.5'). - review/SKILL.md.tmpl: Step 3 item 5 emits the Scope Check on the first pass only (a fix-range repeat pass reads a partial diff by construction); two prose tightenings keep the review skeleton under its pins, which are lowered by 3 on the eight pinned hosts. - test/helpers/docsync-interface.ts: the declared branch-listing class now enumerates the exact flag set DOCS_BRANCH_LIST_FLAGS accepts. Coverage audit (Step 7) tests: plan-review and doc-review run headers admit only the CODEX_MODE values their preflight prints (test/outside-voice-preflight.test.ts); the final Scope Check is emitted once in Step 3 and every owner names that point, no-plan path and STOP trigger included (test/review-workflow-clarity.test.ts). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(ship-hook-actor): read the owner's denial in the owner's own clause Review pass 2 on #3516 (State Machines, with the same site flagged by every other reviewer): the pass-1 negation guard in ownersOwnHand() scanned the whole sentence prefix before the reflexive, so an honest request after a negated subordinate clause ("Since the installer did not run, the repo owner needs to add the guard to the existing hooks themselves") was refused, a recall regression against ee73419 that would red the paid ship-local-hook-preservation case. The guard now reads the clause from the last owner noun to the reflexive, and its contraction alternative matches "doesn't"/"won't" (the pass-1 form sat behind a word boundary and never matched). Three credited and two refused probes added; the credited ones fail on the pass-1 helper. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(changelog): [Unreleased] entry for the GSTA-128 paid flaky-case repairs Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(changelog): count the four repaired gate detectors, not five Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test(parity): re-pin ship maxSizeRatio 1.7524 -> 1.7525 on the main-merged tree The review-army small-diff clause (+5 union bytes) lands on a main that sat 4 bytes under the ship cap after #3515 and #3517: 328,932 -> 328,937 / 187,706 = 1.7524 both ways at four places, so the pin moves one in the last place. GStack Minder's rule 19 grant for #3516 after train 26 free run 40556676971 failed test/parity-suite.test.ts. Before/after and the reason are in the CHANGELOG entry. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * RESTAMP: 1.91.280.0 -> 1.91.281.0 (stamped; queue_mode=stamp-at-merge base=origin/main@703b004 policy=base origin/main@703b0049ebbe:.gstack/ship-policy.json) ship, next in queue at 1.91.281.0 STAMP_VERSION: 1.91.281.0 claims: ignored (stamp-at-merge) stage version: done (wrote 1.91.281.0) stage release_tool: done (bun scripts/gen-agents-digest.ts) stage changelog: done (Unreleased -> 1.91.281.0) stage stamp_paths: skipped (no tentative mention newer than the fork version 1.91.276.0 and none of base 1.91.280.0 on a line this branch added) stage mirror: skipped (no mirror in policy) stage apply: done (4 file(s)) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d8184d..4363f3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [1.91.281.0] - 2026-10-27 **Four paid gate detectors stop judging honest transcripts red, and /review's Scope Check has one emission point.** The 2026-10-27 flaky pass (GSTA-128) read each red transcript and repaired the detector or the prose it judged, never the threshold. diff --git a/VERSION b/VERSION index 3d95d39..12d5f1c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.91.280.0 +1.91.281.0 diff --git a/agents-digest/gstack-AGENTS.md b/agents-digest/gstack-AGENTS.md index 15ac5e1..2b81219 100644 --- a/agents-digest/gstack-AGENTS.md +++ b/agents-digest/gstack-AGENTS.md @@ -1,4 +1,4 @@ -# gstack digest v1.91.280.0 — regenerate/re-copy after upgrading gstack +# gstack digest v1.91.281.0 — regenerate/re-copy after upgrading gstack Behavioral rules from gstack (https://github.com/garrytan/gstack), compressed for agent hosts without a full skill install. The full skills add workflows, diff --git a/node_modules b/node_modules new file mode 120000 index 000000000..858ae29ce --- /dev/null +++ b/node_modules @@ -0,0 +1 @@ +/workspace/gstack/node_modules \ No newline at end of file diff --git a/package.json b/package.json index d0c1012..4a7a5d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "1.91.280", + "version": "1.91.281", "description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.", "license": "MIT", "type": "module", FILES: CHANGELOG.md VERSION agents-digest/gstack-AGENTS.md package.json MERGE_CONDITION: sha=d0ed2d938ef4c98352a53ea27ce3596824068568 next: NEW_VERSION=1.91.281.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 d0ed2d9 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> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
7 tasks done
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.
What changed
A licence line, a notice entry or a crew template planned the whole paid gate (113 cases, 24 judges); now they plan none, and an ETHOS.md edit plans the three cases and one judge that read it (#3499).
Before/after as text: the PR eval selection, one changed file at a time
The remote free gate packed the live
.gitwith tar and lost the race against a reviewer's git; the snapshot now goes through git's own transport.Before/after as text: ubi-runner pack under concurrent git
Why
"A licence line or a changelog entry costs a full gate screen (about $30 planned for a docs PR) without any paid case reading the changed bytes" (#3499, filed from #3493's ship), and "the same classes of finding reached the owners again on every ship after being judged below the floor once" (#3504, #3485). A notice, licence or crew-template edit now plans no paid case, an ETHOS.md edit plans the four checks that read it, and a finding in one of the six ruled classes is a note from pass 1 on, with the floor itself unchanged. GSTA-121's three gaps close with it. The merge-ask template and
docs/skills.mdcarry the Blast radius item the PR body already had, an approval record can citescreen 40477638211 GREENwithout the scanner reading the run id as a phone number, and a review subagent'sgit diffcan no longer fail the remote gate's tar.Blast radius
Four surfaces beyond the files named are touched. First, every PR's paid selection (narrower only for
NOTICE.md,LICENSE,licenses/**,captain/templates/**andETHOS.md; every other unmapped file still restores the full gate, pinned intest/paid-free-boundary.test.ts), every scanner that readspii.phone.e164(an 11-digit span right after a run word is a run id ingstack-approvals,gstack-decision-trail, the pregate secrets check andgstack-postalike; a national number written without its+afterfailedorrunis the accepted residual of the ruling that a run id is not a phone number), the generated review SKILL.md on five hosts (byte-for-byte at its pins; the size guard and the parity suite are green), and everyubi-runner packconsumer (the snapshot carries the index's blobs that HEAD lacks, replaysremote.*andbranch.*, skips gitlinks, and leaves no temp repository on failure; submodule repositories and a split index enabled withoutcore.splitIndexare the known gaps, both older than this change). Evidence rung: the remote free gate ran the whole free tier on the final tree through the new pack (19,401 tests, 0 failed), and CI at the pin is green (48 passed, 0 failed, 11 skipped).Approvals
Source: gstack-approvals record for eval-select-review-floor-followups (display only; not an approval citation).
Summary
RELEASE_METADATA_FILES(NOTICE.md,LICENSE,licenses/**) andcaptain/templates/**inFREE_ONLY_PR_FILESinscripts/test-pr-profile.ts;ETHOS.mdregistered under the/office-hoursand/plan-ceo-reviewcases and judge intest/helpers/touchfiles-data.ts;SECURITY.mdreplaces it as the unregistered example intest/pr-dependencies.test.ts,test/paid-pr-profile.test.ts,test/exercised-map.test.ts;scripts/harness-version.jsonre-pinned non-behaviorally. The two prompt notes in eval selection: NOTICE.md/CHANGELOG.md/licenses should never widen the PR gate; register ETHOS.md's consumers (plus two prompt notes from #3493) #3499 (plan-tune and eval-plan wording) are not in this PR.docs/review-policy.md#rulings-below-the-floor(six classes); the On record ground inscripts/resolvers/review-army.ts, rendered intoreview/sections/review-army.mdandship/sections/review-army.mdwith the other grounds tightened so the pins hold. The floor text is unchanged.test/pregate-remote-stamp-only.test.tsisKNOWN_WINDOWS_INCOMPATIBLEinscripts/lib/windows-curation.ts; the how-to indocs/TESTING_INTERNALS.md.captain/templates/merge-ask.md,docs/skills.md("The PR body"),docs/captain.md,capy/skill/gstack/captain.md,bin/gstack-pr-shots(caption),ship/sections/capy-pr.mdand.tmpl(heading).CI_RUN_WORD_BEFOREandisCiRunIdentifierinlib/redact-patterns.ts;lib/gstack-post.tsimports the shared regex;docs/troubleshooting.mdanddocs/pregate.md.scripts/ubicloud/ubi-runner.shcmd_pack.lib/pregate/import-graph.ts, sotest/ship-publication-gates.test.tsis selected when the pr-body template changes.test/paid-free-boundary.test.ts,test/redact-context-exemptions.test.ts,test/approval-record.test.ts,test/pregate-allowlist.test.ts,test/gstack-post.test.ts,test/ubicloud-runner.test.ts,test/pregate-import-graph-paths.test.ts. Release notes:CHANGELOG.mdUnreleased entry.Tests
CHANGELOG.md(both entries kept),test/helpers/touchfiles-data.ts(GSTA-96's entries kept,ETHOS.mdadded to the plan-ceo-review entries main left without it) andtest/paid-free-boundary.test.ts(LICENSEandNOTICE.mdare no longer full-fallback examples) resolved; selection tests, redaction, pack, parity and size-guard suites green on the merged tree.bun run typecheckclean;typecheck:test819 known, none new;gen:skill-docsfresh; parity suite and SKILL.md size guard green;gstack-prose-lint CHANGELOG.md --unreleased --gateok.bun run test:quickon this 4-core Capy machine: 21,173 pass, 5 fail in files this PR does not touch:test/gstack-retro-metrics.test.ts(2, this machine forces the git author through/etc/capy/git-identity.conf),test/cso-witness.test.ts(2, "Build CSO first: bun run build:cso"),test/gstack-gbrain-mcp-verify.test.ts(1, green on its one rerun alone; rule 16). All five pass on the remote gate.Pre-Landing Review
Six passes under frozen scope, 0 blocking. Pass 1 (full diff): six specialists and the core checklist NO FINDINGS; Red Team 5 INFORMATIONAL (4 fixed, 1 noted). Pass 2 (fix range): state machines found the pass-1 EXIT trap read a local after unwinding and its test was vacuous; both fixed. Pass 3: clean. Pass 4 (after the adversarial fixes): 4 INFORMATIONAL (gitlink abort, valueless-key test, CHANGELOG wording, blob-list size), all fixed. Pass 5 and 6: clean, converged at the cycle cap.
Gate edits: none detected (4 listed, 2 read; patterns: RH-1,RH-3,RH-4,RH-12,RH-13,RH-14,RH-15,RH-16; unlisted idioms: none).
Outside review: Codex not installed on this machine; outside coverage unavailable. Native adversarial (Claude): four passes; the first found two floor-level defects the specialists missed (a stale
scripts/harness-version.jsonpin that failstest/harness-version.test.ts, and staged blobs missing from the pack snapshot so a VMgstack-wtreecould not read a staged file), both fixed; the fourth pass at the final tree: no FIXABLE, two INVESTIGATE notes below.Review notes
Below the blocking floor (advisory, informational, test-gap or wording items); recorded here and not fixed in this PR.
test/helpers/touchfiles-data.ts:162ETHOS.md is registered only under the two prompts that quote it; the tier>=3 preamble names it as a read-on-demand pointer that no paid case asserts on (noted in the touchfiles header).lib/redact-patterns.ts:348a national number written without+right after a run word (failed 14155551234) reads as a run id: the accepted residual of the ruling that a run id is not a phone number, in the scanner and ingstack-postalike (gstack-posthas read it that way since GSTA-121).scripts/ubicloud/ubi-runner.shcmd_pack:ls-tree -r HEADreads the live HEAD a few milliseconds after the refs fetch (a commit landing in that window would subtract blobs the snapshot lacks; fails loud on the VM, not a regression); resolve-undo blobs of a resolved conflict are not packed; a split index enabled bygit update-index --split-indexwithoutcore.splitIndexis not detected (pre-existing).Exploratory QA
CLI surface, Full mode, 5 probes (
~/.capy/work/GSTA-127/qa/functional/evidence.json):gstack-approvals addrecords words citingscreen 40477638211 GREEN(exit 0, mirror written) and still refuses words carrying an E.164 number (exit 3, APPROVAL_RECORD_SECRET);gstack-redactflags a barethe id is <run id>and notscreen 40477638211 GREENon the same input;ubi-runner.sh packunder six concurrent git writers unpacks with the same HEAD,origin/main, remote URL and 31 status lines as the source (probe 4 superseded: wrong argument shape).Design Review
No frontend files changed — design review skipped.
Eval Results
Selection on this diff: profile pr (dependents); the global touchfiles (
scripts/test-pr-profile.ts,test/helpers/touchfiles-data.ts,lib/gstack-post.ts,lib/pregate/import-graph.ts,scripts/harness-version.json,scripts/lib/windows-curation.ts,bin/gstack-pr-shots) select every dependent gate case, so the PR screen is the pr-summary job on this PR;captain/templates/merge-ask.mdwas this PR's own unknown dependency before it was registered. No local paid run.Greptile Review
Greptile: not run (no PR existed during the review); runs on the PR now that it exists.
Scope Drift
Scope Check: DRIFT DETECTED (in kind). Intent: the Captain brief (#3499 selection exemption and ETHOS.md registration, #3504/#3485 rulings with the floor unchanged, #3485's Windows one-liner, GSTA-121's Blast radius docs, run-id false positive, pregate-remote tar race and file selection). Delivered: all of it, plus
captain/templates/**inFREE_ONLY_PR_FILES(found by this PR's own selection, #3499's class) and the pack hardening the reviews asked for. Not delivered: #3499's two prompt notes (plan-tune and eval-plan wording; prompt edits with their own paid cases).Plan Completion
Plan completion audit: not run (no plan is bound to this branch and no docs/designs/ file matches). Fix: add "Plan: " to the PR body, or run /autoplan.
Issues
Refs #3499
Refs #3504
Refs #3485
TODOS
No TODO items completed in this PR.
Documentation
Status: updated (first audit at f1635d0), then current (read-only re-audit at 8c12f8d).
Scope:
a1934a1498ec..8c12f8d(6 commits, 32 files; the later merge of origin/main@6ff98c66 touched no doc beyond CHANGELOG.md), covering the test-pr-profile lists, the redact run-id exemption, the ubi-runner pack snapshot, the review-policy rulings, the PR body docs, the merge-ask Blast radius section and the Windows curation entry. The banned-terms check returned none.Documentation health:
captain/templates/**andRELEASE_METADATA_FILES; the Windows curation how-to)Coverage debt: the
ubi-runner.sh packsnapshot details (staged, intent-to-add and unmerged blobs travel, gitlinks skip,init --template=withgc.auto=0, valueless config keys replay as true) live only in the script header;RELEASE_METADATA_FILEShas one reference line. Diagram drift: none found.Test plan
gstack-pregate --stage tests --remote --spend-cap 2 --timeout 2700 --allow-repo-commands: PREGATE_REMOTE tree=db28ddaf67c4 tests=19401 failed=0 spent=0.15 (and tree=31401568d0c2 tests=19214 failed=0 spent=0.08 before the merge of main)bun teston the 13 focused files: 302 pass, 0 failbun run typecheck,bun run typecheck:test,bun run gen:skill-docs --dry-run,bun test test/parity-suite.test.ts test/skill-md-size-guard.test.ts: clean, none new, fresh, 4 passbun run test:quick: 21,173 pass; 5 environment-only or load-flake fails named above🤖 Generated with Claude Code