diff --git a/ship/sections/review-army.md b/ship/sections/review-army.md index 491c6f756..6136fc6a1 100644 --- a/ship/sections/review-army.md +++ b/ship/sections/review-army.md @@ -4,10 +4,10 @@ Set CYCLES to 0 on first entry only, with PASS set to 1, `REVIEW_SINCE=$(date -u +%Y-%m-%dT%H:%M:%SZ)` saved and the `ship: review_scope` -policy line (Step 3) kept. Every entry saves `PASS_HEAD=$(git rev-parse HEAD)` and runs +policy line (Step 3) kept. Every entry saves `PASS_HEAD=$(git rev-parse HEAD)`; from pass 2 on, +`RANGE_BASE` is the previous pass's PASS_HEAD. Every entry also runs `mkdir -p .gstack/tmp && rm -f .gstack/tmp/targeted.json && _EX=$(git rev-parse --git-path info/exclude) && mkdir -p "$(dirname "$_EX")" && { grep -qxF '/.gstack/tmp/' "$_EX" 2>/dev/null || printf '\n/.gstack/tmp/\n' >> "$_EX"; }` -(a pass without the targeted reader leaves no record, and the record never reads as an uncommitted edit); from pass 2 on, -`RANGE_BASE` is the previous pass's PASS_HEAD. Keep existing approvals; changed +(a pass without the targeted reader leaves no record, and the record never reads as an uncommitted edit). Keep existing approvals; changed finding scope needs a new decision. Order: checklist/design, specialists (9.1), Red Team (9.2), QA (9.2.1), dedup (9.3), scope, fixes and logging (9.4). Gated/unsupported specialists skip only their dispatch, never QA or Step 11. diff --git a/ship/sections/review-army.md.tmpl b/ship/sections/review-army.md.tmpl index 6db54bf16..c16c4a17e 100644 --- a/ship/sections/review-army.md.tmpl +++ b/ship/sections/review-army.md.tmpl @@ -2,10 +2,10 @@ Set CYCLES to 0 on first entry only, with PASS set to 1, `REVIEW_SINCE=$(date -u +%Y-%m-%dT%H:%M:%SZ)` saved and the `ship: review_scope` -policy line (Step 3) kept. Every entry saves `PASS_HEAD=$(git rev-parse HEAD)` and runs +policy line (Step 3) kept. Every entry saves `PASS_HEAD=$(git rev-parse HEAD)`; from pass 2 on, +`RANGE_BASE` is the previous pass's PASS_HEAD. Every entry also runs `mkdir -p .gstack/tmp && rm -f .gstack/tmp/targeted.json && _EX=$(git rev-parse --git-path info/exclude) && mkdir -p "$(dirname "$_EX")" && { grep -qxF '/.gstack/tmp/' "$_EX" 2>/dev/null || printf '\n/.gstack/tmp/\n' >> "$_EX"; }` -(a pass without the targeted reader leaves no record, and the record never reads as an uncommitted edit); from pass 2 on, -`RANGE_BASE` is the previous pass's PASS_HEAD. Keep existing approvals; changed +(a pass without the targeted reader leaves no record, and the record never reads as an uncommitted edit). Keep existing approvals; changed finding scope needs a new decision. Order: checklist/design, specialists (9.1), Red Team (9.2), QA (9.2.1), dedup (9.3), scope, fixes and logging (9.4). Gated/unsupported specialists skip only their dispatch, never QA or Step 11. diff --git a/test/review-packets-removed.test.ts b/test/review-packets-removed.test.ts index 0d2be0c9b..06d990349 100644 --- a/test/review-packets-removed.test.ts +++ b/test/review-packets-removed.test.ts @@ -62,7 +62,7 @@ const NO_LOSS_REPLAYS = { } as const; type Replay = keyof typeof NO_LOSS_REPLAYS; const REVIEWER_BRIEFS: Record = { - 'ship/sections/review-army.md': { sha: 'ebda452b2cf8aeb34020c789d0507893c0f041027890bcbd8342e46d4b29f29a', replay: 'GST-464' }, + 'ship/sections/review-army.md': { sha: 'c7edb2a8c19fc8b2c9aa31f443f6c49ebe28528390a0efc47ecc6ac3e3a057be', replay: 'GST-464' }, 'ship/sections/adversarial.md': { sha: 'b70577b6987869acd76cc3865f16eeeed743558c0ea09e5f9933d0d8aec8b91e', replay: 'GST-464' }, 'review/sections/review-army.md': { sha: '78329b64640260cd8831ca81a9189f3f8dcade9c406431631d3f2cd798cd3967', replay: '#3638' }, 'review/sections/adversarial.md': { sha: 'e6962fa25b78f362654f2954f79683e524d2ebd452d1494f8a2b099888e8e255', replay: 'G1' }, diff --git a/test/review-targeted.test.ts b/test/review-targeted.test.ts index 1a1cd126a..d3803b51f 100644 --- a/test/review-targeted.test.ts +++ b/test/review-targeted.test.ts @@ -334,7 +334,7 @@ describe('the /ship commands carry the targeted record to the receipt (GST-464)' expect(optional?.slice(1)).toEqual([recordPath!, `--review-targeted @${recordPath}`]); expect(section('handoff')).toContain(`When Step 11 saved \`${recordPath}\`, add \`--review-targeted @${recordPath}\` to that write.`); expect(fs.readFileSync(path.join(ROOT, 'ship', 'DRIVER.md'), 'utf8')).toContain(`[--review-targeted @${recordPath}]`); - const entry = /Every entry saves `PASS_HEAD=\$\(git rev-parse HEAD\)` and runs\n`([^`]+)`/.exec(section('review-army'))?.[1]; + const entry = /Every entry also runs\n`([^`]+)`/.exec(section('review-army'))?.[1]; expect(entry).toContain(`rm -f ${recordPath}`); const repo = makeFixtureRepo({ prefix: 'targeted-wire-' }); diff --git a/test/size-ledger/ship/gst-464-receipt-targeted-base.json b/test/size-ledger/ship/gst-464-receipt-targeted-base.json index 5040cf235..5643e4602 100644 --- a/test/size-ledger/ship/gst-464-receipt-targeted-base.json +++ b/test/size-ledger/ship/gst-464-receipt-targeted-base.json @@ -1,4 +1,4 @@ { - "bytes": 577, + "bytes": 591, "why": "GST-464: Step 9 creates .gstack/tmp, excludes it and clears the targeted record on every entry" }