From 2865cfcb3f43a19e17e7e59dbde05e7d4cb4f415 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Sat, 10 Oct 2026 22:52:27 -0700 Subject: [PATCH] v1.91.82.0 fix(plan-reality): name the review input and the PLAN_REALITY line in the reality-rows prose (#3126) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 4 ++++ VERSION | 2 +- agents-digest/gstack-AGENTS.md | 2 +- autoplan/SKILL.md | 2 +- autoplan/sections/ceo-phase.md | 2 +- autoplan/sections/eng-phase.md | 2 +- package.json | 2 +- plan-ceo-review/SKILL.md | 2 +- plan-eng-review/sections/review-sections.md | 2 +- scripts/resolvers/plan-reality.ts | 6 +++--- 10 files changed, 15 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f538a6c66..2821f471e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [1.91.82.0] - 2026-10-11 + +**Plan-review reality rows name their inputs.** The `{{PLAN_REALITY_ROWS}}` prose in plan-eng-review, plan-ceo-review and the autoplan CEO/Eng phases wrote `gstack-plan-reality check --phase

` without saying what `` is, and the completion summary cited a `PLAN_REALITY` line no step produced. The check now reads `` (the review you wrote, or stdin) and says it prints the `PLAN_REALITY:` line the summary cites. Found by the plan-eng-review workflow judge on an unrelated PR (clarity 3 / actionability 3 median, both citing these two references). + ## [1.91.80.0] - 2026-10-11 **`/eval-plan` prices its default arms out of the box.** `lib/pricing.ts` gains verified rows for `claude-opus-5-5` ($4 / $20 per MTok, cache reads $0.20; Anthropic list prices effective 2026-10-07) and `gpt-6.1-sol` ($2 / $10 per MTok, cached input $0.10; OpenAI model page, standard tier), the two models `gstack-models resolve --role eval-arms` returns under the default `smart` implementation tier. `gstack-eval-plan arms` previously exited `EVAL_PRICE_MISSING` for both; the fail-closed rule is unchanged, only the data was missing. diff --git a/VERSION b/VERSION index c7199351f..309d3fc72 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.91.80.0 +1.91.82.0 diff --git a/agents-digest/gstack-AGENTS.md b/agents-digest/gstack-AGENTS.md index 6018ba410..0277a610a 100644 --- a/agents-digest/gstack-AGENTS.md +++ b/agents-digest/gstack-AGENTS.md @@ -1,4 +1,4 @@ -# gstack digest v1.91.80.0 — regenerate/re-copy after upgrading gstack +# gstack digest v1.91.82.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/autoplan/SKILL.md b/autoplan/SKILL.md index eaf9b03c2..a61f41b5a 100644 --- a/autoplan/SKILL.md +++ b/autoplan/SKILL.md @@ -875,7 +875,7 @@ Produce missing outputs before the gate; after at most 2 repair attempts, warn there with each incomplete item. Reality rows: each phase's `PLAN_REALITY: … verdict=complete` from -`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase `. A missing applicable row is `incomplete` +`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase `. A missing applicable row is `incomplete` in an unattended run, never a warning; interactive runs follow the repair rule above. --- diff --git a/autoplan/sections/ceo-phase.md b/autoplan/sections/ceo-phase.md index e517cb61e..6636d153b 100644 --- a/autoplan/sections/ceo-phase.md +++ b/autoplan/sections/ceo-phase.md @@ -176,7 +176,7 @@ Sections 1-11 — for EACH section, run the evaluation criteria from the loaded **Mandatory outputs from Phase 1:** - Reality rows: the loaded skill's `REALITY:` lines, one per applicable row; - `~/.claude/skills/gstack/bin/gstack-plan-reality check --phase ceo ` prints `verdict=complete` before the phase closes + `~/.claude/skills/gstack/bin/gstack-plan-reality check --phase ceo ` prints `PLAN_REALITY: … verdict=complete` before the phase closes (unattended: `incomplete` keeps it open). - "NOT in scope" section with deferred items and rationale - "What already exists" section mapping sub-problems to existing code diff --git a/autoplan/sections/eng-phase.md b/autoplan/sections/eng-phase.md index 118514059..09fecd624 100644 --- a/autoplan/sections/eng-phase.md +++ b/autoplan/sections/eng-phase.md @@ -105,7 +105,7 @@ Retain the historical review-log skill ID; add `"host":"claude","outside_provide 1. Step 0 (Scope Challenge): Read actual code referenced by the plan. Map each sub-problem to existing code. Run the complexity check. Produce concrete findings. Reality rows: the loaded skill's `REALITY:` lines, one per applicable row; - `~/.claude/skills/gstack/bin/gstack-plan-reality check --phase eng ` prints `verdict=complete` before the phase closes + `~/.claude/skills/gstack/bin/gstack-plan-reality check --phase eng ` prints `PLAN_REALITY: … verdict=complete` before the phase closes (unattended: `incomplete` keeps it open). 2. Step 0.5 (Dual Voices): Present the completed calls above under Codex SAYS diff --git a/package.json b/package.json index 476b09ae9..bf5c06e3c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "1.91.80", + "version": "1.91.82", "description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.", "license": "MIT", "type": "module", diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index 29d5f7bb5..6373e7540 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -847,7 +847,7 @@ the existing path is worse. row it prints (tier 1 always: premise-table, already-done, surface-check, binding-decisions, numbers, deferred-asks, pr-count; tier 2 by detected scope, `--scope `). Every row cites a file:line receipt; the premise table counts `unverified=`. End with one line per row, `REALITY: pass|finding|n/a

`, then run -`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase ceo `: a missing applicable row is `incomplete` +`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase ceo ` (it prints the `PLAN_REALITY:` line): a missing row is `incomplete` unattended; interactive runs repair twice, then warn at the gate. ### 0C. Dream State Mapping diff --git a/plan-eng-review/sections/review-sections.md b/plan-eng-review/sections/review-sections.md index ce465d8a9..cd7d5c511 100644 --- a/plan-eng-review/sections/review-sections.md +++ b/plan-eng-review/sections/review-sections.md @@ -427,7 +427,7 @@ changes or write findings into the plan yet. row it prints (tier 1 always: premise-table, already-done, surface-check, binding-decisions, numbers, deferred-asks, pr-count; tier 2 by detected scope, `--scope `). Every row cites a file:line receipt; the premise table counts `unverified=`. End with one line per row, `REALITY: pass|finding|n/a `, then run -`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase eng `: a missing applicable row is `incomplete` +`~/.claude/skills/gstack/bin/gstack-plan-reality check --phase eng ` (it prints the `PLAN_REALITY:` line): a missing row is `incomplete` unattended; interactive runs repair twice, then warn at the gate. ### B. Resolve complexity selectors diff --git a/scripts/resolvers/plan-reality.ts b/scripts/resolvers/plan-reality.ts index 3eaed14e9..0ac767d20 100644 --- a/scripts/resolvers/plan-reality.ts +++ b/scripts/resolvers/plan-reality.ts @@ -47,12 +47,12 @@ ${renderIncidentTable(REALITY_ROWS)}`; if (mode === 'summary') return `- Reality rows: ___/___ applicable rows emitted (\`PLAN_REALITY\` line), ___ unverified premises`; if (mode === 'pregate') { return `Reality rows: each phase's \`PLAN_REALITY: … verdict=complete\` from -\`${BIN} check --phase \`. A missing applicable row is \`incomplete\` +\`${BIN} check --phase \`. A missing applicable row is \`incomplete\` in an unattended run, never a warning; interactive runs follow the repair rule above.`; } if (mode === 'autoplan') { return `Reality rows: the loaded skill's \`REALITY:\` lines, one per applicable row; - \`${BIN} check --phase ${args?.[1] ?? 'ceo'} \` prints \`verdict=complete\` before the phase closes + \`${BIN} check --phase ${args?.[1] ?? 'ceo'} \` prints \`PLAN_REALITY: … verdict=complete\` before the phase closes (unattended: \`incomplete\` keeps it open).`; } const phase = phaseFor(ctx, mode); @@ -60,6 +60,6 @@ in an unattended run, never a warning; interactive runs follow the repair rule a row it prints (tier 1 always: ${TIER1_ROW_IDS.join(', ')}; tier 2 by detected scope, \`--scope \`). Every row cites a file:line receipt; the premise table counts \`unverified=\`. End with one line per row, \`${REALITY_LINE_SHAPE}\`, then run -\`${BIN} check --phase ${phase} \`: a missing applicable row is \`incomplete\` +\`${BIN} check --phase ${phase} \` (it prints the \`PLAN_REALITY:\` line): a missing row is \`incomplete\` unattended; interactive runs repair twice, then warn at the gate.`; }