From 557e5c4c5f0b8c341dd836d4acf191bdc1168882 Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 2 Nov 2026 12:38:23 +0000 Subject: [PATCH] fix: merge follow-ups for main 3d99c22: origin/* stays qualified in diff-scope's twin step, retro skeleton back under its cap, combined no-loss pin GST-508+R51+GST-911 --- bin/gstack-diff-scope | 1 + retro/SKILL.md | 2 +- retro/SKILL.md.tmpl | 2 +- test/review-packets-removed.test.ts | 5 +++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bin/gstack-diff-scope b/bin/gstack-diff-scope index 813d857a1..4f0fb7d04 100755 --- a/bin/gstack-diff-scope +++ b/bin/gstack-diff-scope @@ -63,6 +63,7 @@ if [ -n "$HEAD_REF" ] && [ "${4:-}" = "--merged" ]; then MERGED_HEAD=true; fi # the scope (#3650). A remote-qualified name is taken as given. _NOT_BRANCH='^[0-9a-f]{7,64}$|[~^]|@\{|^[A-Z_]*HEAD$|^refs/' _QUALIFIED=false +case "$BASE" in origin/*) _QUALIFIED=true ;; esac for _remote in $(git remote 2>/dev/null); do case "$BASE" in "$_remote"/*) _QUALIFIED=true ;; esac done diff --git a/retro/SKILL.md b/retro/SKILL.md index 98c53bdd0..c475c1377 100644 --- a/retro/SKILL.md +++ b/retro/SKILL.md @@ -311,7 +311,7 @@ Also check `RETRO_REF`: if it is not `origin/` (local-only repo, missin **Optional inputs** (Read each file the script marks `present`): - `RETRO_CONTEXT: present` → Read the path it prints. It is user-authored and may contain meeting notes, calendar events, decisions, and other context that doesn't appear in git history. Incorporate it into the retro narrative where relevant. -- `REVIEW_BOT_HISTORY` / `GREPTILE_HISTORY: present` → Read each printed path (column 6: the bot; old rows are Greptile's). Filter to the window. Per bot, count `fix`, `fp`, `already-fixed`; signal = `(fix + already-fixed) / (fix + already-fixed + fp)`. Skip unparseable lines; with none in the window, skip the row. +- `REVIEW_BOT_HISTORY` / `GREPTILE_HISTORY: present` → Read each printed path (column 6: bot; old rows Greptile's). Filter to the window. Per bot, count `fix`, `fp`, `already-fixed`; signal = `(fix + already-fixed) / (fix + already-fixed + fp)`. Skip unparseable lines; with none in the window, skip the row. - `TODOS_FILE: present` → Read `TODOS.md`. Compute: total open TODOs (exclude the `## Completed` section), P0/P1 count, P2 count, items completed this period (Completed entries dated within the window), items added this period (cross-reference `COMMIT:` lines that touched TODOS.md). - `SKILL_USAGE_LOG: present` → Read the path it prints. Filter to the window by `ts`. Separate skill activations (no `event` field) from hook fires (`event: "hook_fire"`). Aggregate by skill name. - `EUREKA_LOG: present` → Read the path it prints. Filter to the window by `ts`. For each eureka moment note the skill that flagged it, the branch, and a one-line summary of the insight. diff --git a/retro/SKILL.md.tmpl b/retro/SKILL.md.tmpl index 60c5946a7..5db2f220c 100644 --- a/retro/SKILL.md.tmpl +++ b/retro/SKILL.md.tmpl @@ -156,7 +156,7 @@ Also check `RETRO_REF`: if it is not `origin/` (local-only repo, missin **Optional inputs** (Read each file the script marks `present`): - `RETRO_CONTEXT: present` → Read the path it prints. It is user-authored and may contain meeting notes, calendar events, decisions, and other context that doesn't appear in git history. Incorporate it into the retro narrative where relevant. -- `REVIEW_BOT_HISTORY` / `GREPTILE_HISTORY: present` → Read each printed path (column 6: the bot; old rows are Greptile's). Filter to the window. Per bot, count `fix`, `fp`, `already-fixed`; signal = `(fix + already-fixed) / (fix + already-fixed + fp)`. Skip unparseable lines; with none in the window, skip the row. +- `REVIEW_BOT_HISTORY` / `GREPTILE_HISTORY: present` → Read each printed path (column 6: bot; old rows Greptile's). Filter to the window. Per bot, count `fix`, `fp`, `already-fixed`; signal = `(fix + already-fixed) / (fix + already-fixed + fp)`. Skip unparseable lines; with none in the window, skip the row. - `TODOS_FILE: present` → Read `TODOS.md`. Compute: total open TODOs (exclude the `## Completed` section), P0/P1 count, P2 count, items completed this period (Completed entries dated within the window), items added this period (cross-reference `COMMIT:` lines that touched TODOS.md). - `SKILL_USAGE_LOG: present` → Read the path it prints. Filter to the window by `ts`. Separate skill activations (no `event` field) from hook fires (`event: "hook_fire"`). Aggregate by skill name. - `EUREKA_LOG: present` → Read the path it prints. Filter to the window by `ts`. For each eureka moment note the skill that flagged it, the branch, and a one-line summary of the insight. diff --git a/test/review-packets-removed.test.ts b/test/review-packets-removed.test.ts index dbd44965a..18b3125a2 100644 --- a/test/review-packets-removed.test.ts +++ b/test/review-packets-removed.test.ts @@ -67,6 +67,7 @@ const NO_LOSS_REPLAYS = { 'GST-508+GST-464': "wave review-53cfb5bfe011 merge of #3744 into main: ship/sections/review-army.md and adversarial.md carry the GST-508 no-loss-replayed exclude pathspec placeholders inside the brief bodies (handoffs/GSTA-202/noloss-results.md) and the GST-464 lead-instruction edits outside the cut spans, which its brief-identity no-loss check admitted", 'GST-911-redos': "GST-911 ReDoS fix verdict-identity no-loss check (wave review-e7b551ebd865): SVG_REFUSED's url() entry, rewritten to run in linear time, refuses exactly the strings #3838's pattern refused (test/review-risk-redos.test.ts: 60,000 seeded strings and the hand-picked edges, and every SVG blob in the repository's history, with zero differences); SVG_MARKUP now refuses a DOCTYPE naming any document but W3C's SVG DTD (test/review-planner-misreads.test.ts), which only keeps more SVGs code and so drops no reviewer; GST-911's no-loss replay holds unchanged; reviewer text is unchanged", 'GST-911': "GST-911 no-loss replay (GSTA-249/13): the planner over the last 100 first-parent main commits to f5cb6ec1e, origin/main's code against this branch, gate scan fixed at 0, changes no commit's depth, class, risk classes, targeted classes or SCOPE_AUTH; the three misreads (a drawing-only SVG, a session-named data file, a bare base) are proven on fixtures (test/review-planner-misreads.test.ts), where every SVG that can run script stays code with the security class; reviewer text is unchanged", + 'GST-508+R51+GST-911': "wave review-53cfb5bfe011 merge of main 3d99c2249 (#3848) into #3852: lib/review-depth.ts keeps GST-508's review_exclude_paths (no-loss replay, GStack Minder drive handoffs/GSTA-202/noloss-results.md), R51 with GST-850's dispatch-superset no-loss check, and GST-911's SVG drawings with GST-911-redos (no-loss replay: 0 of 100 main commits changed, reports/GSTA-249-911-decisions.tsv; test/review-planner-misreads.test.ts, test/review-risk-redos.test.ts); lib/review-risk.ts is main's GST-911 bytes. Merged-head checks (handoffs/GSTA-202/merge-3d99c22-checks.md): Arm P on unit 3593 differs only in the exclude pathspec and the disclosure line, the same brief diff as before the merge, and GST-911 panel unit f5cb6ec1e plans, dispatches and renders byte-identical briefs under 3d99c2249 and the merged head", 'GST-898': "GST-898 verdict-identity no-loss check: the linear rm rule, and the rmSync rule (which also raises security on any call with more than 500 characters before its closing parenthesis), give the same verdict as R51's on every changed line of the last 100 main commits (69,023 lines, a563f47 back 100 first-parent commits) and on 60,000 seeded lines per rule (test/review-risk-redos.test.ts), and no commit changes depth, class or risk class, so every diff dispatches main's reviewers unchanged; reviewer text is unchanged", } as const; type Replay = keyof typeof NO_LOSS_REPLAYS; @@ -89,8 +90,8 @@ const REVIEWER_BRIEFS: Record = { 'review/specialists/testing.md': { sha: 'd6cc2bef7be562387d0c0a22fefe646dff9c295f1d34d8453a6cb496584150e4', replay: '#3638' }, 'review/specialists/targeted.md': { sha: '7f92a0d0a8319c3c0e076fb3b1a4689c45120b2be2c14dfc7d4cb03aafa9d6a5', replay: 'GST-257' }, 'scripts/resolvers/fix-check.ts': { sha: '712bf5b0c439e96bac32f19cbe25394dabb4c94aa66600100bfde9b100e15a08', replay: '#3638' }, - 'lib/review-depth.ts': { sha: '166dd7b1148a272b345dd9d2ceccd14348cc59c52ef9c88109436f6f61cf6b69', replay: 'GST-911-redos' }, - 'lib/review-risk.ts': { sha: '126eff0f1de6982e03dc24d8017c67e6807c91dfa518b18d2db3aa910aac911f', replay: 'GST-911' }, + 'lib/review-depth.ts': { sha: '2b55401a42755b77db4f4003f23153e66504602885ab8419e17a195c750f5891', replay: 'GST-508+R51+GST-911' }, + 'lib/review-risk.ts': { sha: '126eff0f1de6982e03dc24d8017c67e6807c91dfa518b18d2db3aa910aac911f', replay: 'GST-508+R51+GST-911' }, }; /**