Repository navigation
v1.91.275.0 fix(ship-policy): DOCS_CAPS_KEY_VERSION is 1.91.270.0; key versions move through stamp_paths at the slot stamp - #3511
Merged
Conversation
…ove through stamp_paths at the slot stamp #3487 was written naming 1.91.258.0 for docs.caps and main stamped that number for another PR first; the slot call cannot edit anything beyond the four stamp files, so the constant shipped stale. lib/ship-policy.ts now sits in .gstack/ship-policy.json stamp_paths with the _KEY_VERSION = '{version}' template, so a new key written as a tentative future version is moved by gstack-restamp's stamp_paths stage at the slot (read from the base policy, so live from the next PR on). test/gstack-ship-policy.test.ts gains the check the incident lacked: a released key's version must be a heading whose entry names the key. Dry-run proof: a tentative 1.91.272.0 on a branch line moved to the allocated 1.91.271.0 with --policy-from head. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
|
😎 This pull request was merged. |
…he receipt accepts the move only at the base version until #3512 Pass-1 review notes: the next patch above the fork point is the number main takes first, so the convention names the next minor; and the tree receipt's stamp-only check (lib/tree-receipt.ts stampOnlyHunks, with stampOnlyText and stampFreeTree) rewrites only base VERSION -> new VERSION, so a tentative move passes the train only when the tentative value equals the base version at the slot. Filed as #3512 (outside this diff, deferred under the frozen scope). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…er; say plainly that a new-key PR cannot clear the train until #3512 Pass-2 Red Team: CHANGELOG.md is past spawnSync's default 1 MiB maxBuffer, so both CHANGELOG-reading tests dropped origin/main's file silently and the incident shape passed at the pin. With the buffer the released-key test sees main's headings on a full clone. The comment and CHANGELOG now state the practical consequence of the receipt limit. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…ts under stamp_paths Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…y versions move through stamp_paths at the slot stamp (#3511) 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.
Follow-up to #3487 (v1.91.270.0).
DOCS_CAPS_KEY_VERSIONwas written as 1.91.258.0 and main stamped that number for another PR first; a slot stamp cannot edit anything beyond the four stamp files, so the constant shipped naming a release that never readdocs. This PR corrects the value and makes the constant a stamp path so the next key does not repeat it.Refs #3487
Refs #3512
Summary
lib/ship-policy.ts:DOCS_CAPS_KEY_VERSION = '1.91.270.0', the release that shippeddocs.caps. The comment states the convention: a newPOLICY_KEY_INTRODUCEDconstant is written as a tentative future version (the next minor) in the_KEY_VERSION = '<version>'form, and the slot stamp moves it to the version actually released..gstack/ship-policy.json:stamp_paths: ["lib/ship-policy.ts"]withstamp_patterns: ["_KEY_VERSION = '{version}'"], sogstack-restamp's stamp_paths stage moves a tentative key version at the slot. The stage reads the base branch's policy, so it is live from the next PR on; this PR's own slot stamps with the default--policy-from baseand its constant is already the released value.test/gstack-ship-policy.test.ts: a released key's version must be a CHANGELOG heading whose entry names the key at a word boundary (keys that predatereview_scopeare exempt); a tentative value no stamp moved fails. Negative control: the old 1.91.258.0 value fails it, 1.91.270.0 passes. The test readsorigin/main:CHANGELOG.mdwith a 64 MiBmaxBuffer; at the default 1 MiB the 2 MB file ended ENOBUFS and the origin/main branch of the check was silently skipped.docs/ship-policy.md: the "gstack's own files" excerpt of.gstack/ship-policy.jsonnow shows the two new keys.Deferred findings
lib/tree-receipt.ts:53stampOnlyHunks,lib/ship-receipt.ts:178stampOnlyTextandscripts/train-gate.ts:143stampFreeTreeaccept astamp_pathsmove only when the old value equals the base VERSION. Under the next-minor convention the tentative value never equals the base version at the slot, so until Deferred review finding: lib/tree-receipt.ts:53 — stampOnlyHunks accepts a removed/added pair only as rewriteStamps(remo #3512 lands a PR that adds a key cannot clear the train's stamp-only receipt; the comment and the CHANGELOG entry say so. A second consequence, recorded on the issue: oncelib/ship-policy.tsis a stamp path,train-backstopfinds no covering record for main after the train that merges this PR and dispatches one redundant full gate (self-limiting once main moves past 1.91.270.0).Review notes
Four passes under the frozen scope (pass 4 is the owner-granted re-read of the docs commit alone). Below the floor, left as notes:
--policy-from headrestamp of this PR would move the just-corrected constant to the allocated version (the equal-base rule); the queue stamps with the base policy, so the path is unreachable through the train.<key>.<x>or<key>:token, so an unrelated entry mentioning such a token could satisfy it for a wrong heading; no present CHANGELOG section does.base.status === 0fallback still skips the origin/main branch silently on a checkout without that ref (shallow or remote-less clones), by design; a full clone now runs it.stamp_patternstemplate_KEY_VERSION = '{version}'is a new template surface in gstack's own policy; its matcher is the existing restamp stage, unchanged here.Documentation
Status: current — every audited doc agrees with the diff; the first attempt's blocker (the gstack's own files excerpt in docs/ship-policy.md showing
stamp_paths: []) is repaired by bad9f53 and now matches.gstack/ship-policy.jsonbyte for byte.Scope. Base f27a760 → head bad9f53:
.gstack/ship-policy.json,CHANGELOG.md,docs/ship-policy.md,lib/ship-policy.ts,test/gstack-ship-policy.test.ts; no staged, unstaged or untracked content. Audited docs/ship-policy.md (in full), docs/pregate.md, docs/troubleshooting.md, docs/review-policy.md, docs/releases.md, docs/CHANGELOG_STYLE.md and README.md against the diff. Banned terms: none (no list on main).Documentation health: docs/ship-policy.md current (excerpt lines 88-89 name
lib/ship-policy.tsunderstamp_pathswith the_KEY_VERSION = '{version}'template; schema rows, restamp stage 4, tree receipt and carry rule agree with the diff); docs/pregate.md, docs/troubleshooting.md, docs/review-policy.md, docs/releases.md, docs/CHANGELOG_STYLE.md and README.md current; CHANGELOG.md[Unreleased]over VERSION 1.91.270.0 is the accepted stamp-at-merge shape.Documentation debt. The tentative next-minor convention for a new
*_KEY_VERSIONconstant, and the interim rule that a key-adding PR cannot clear the train until #3512, are explained only in thelib/ship-policy.tscomment and the CHANGELOG entry, not in docs/ship-policy.md (an explanation paragraph under the gstack's own files section would fill it). The released-key CHANGELOG test is named in the CHANGELOG entry only. Diagram drift: none.Test plan
bun run typecheckclean;typecheck:testnone new (9f1a6b3, 2bb3f58)bun test test/gstack-ship-policy.test.ts test/spawnsync-timeout-tripwire.test.ts test/changelog-merge-damage.test.ts25 pass 0 fail at 2bb3f58; the 8-file focused set 319 pass at 9f1a6b3;test/compare-pr-version.test.ts test/ship-queue-train-logic.test.ts(the two tests naming docs/ship-policy.md) 49 pass at bad9f53--policy-from head: a tentative1.91.272.0on a branch-added line moved to the allocated1.91.271.0; with the default--policy-from basethe stage reportsskipped (no stamp_paths in policy)gstack-pregate verifyok