From b1daf119fceb29b09ed274ed2605e274d6b6149f Mon Sep 17 00:00:00 2001 From: garrytan Date: Wed, 28 Oct 2026 08:18:16 +0000 Subject: [PATCH] chore: bump version and changelog (v1.91.292.0) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 14 ++++++++++++++ VERSION | 2 +- agents-digest/gstack-AGENTS.md | 2 +- package.json | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a01b6af34..9d3820202 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [1.91.292.0] - 2026-10-28 + +**Deleting or renaming a test no longer fails pregate with PREGATE_NO_LANE.** A PR that removed a test file, or renamed one, failed `lanes` because the removed path had no test lane of its own, so cleanup PRs needed a hand-written `dependencies` entry to pass (#3529). Pregate now accounts for a removed path the way it accounts for an edit. A renamed test runs under its new name, a deleted test runs the remaining tests of the files it exercised, and a deleted JS, TS, Python or Dart file nothing still imports or names is waived. Every waived path is printed on its own line, so the reason is visible in the gate output. + +### Fixed +- **Deleted and renamed tests pass `lanes`**: each removed path that owes no lane prints `removed (no lane owed): — `, and the `lanes` detail counts `N removed path(s)`. A deleted JS, TS, Python, Dart or bats test (or a test renamed to a non-test path) runs its owning suite, the remaining tests that directly exercise the files its merge-base text exercised (`owning suite runs: …`); test helpers and fixtures are not subjects. +- **Lost coverage is named, not hidden**: when a deleted test was the last test of a file, the line says `coverage removed: has no remaining test` and the detail adds `M subject(s) lost their last test`. A modified file whose only test the branch deleted still fails PREGATE_NO_LANE. + +### Changed +- A removal owes what an edit owes. These still fail PREGATE_NO_LANE until a test or a `dependencies` entry covers them. That covers a deleted or renamed manifest, lockfile, config, fixture, golden or workflow (renaming `package.json` into Markdown does not waive it), a file a runner loads by name (`*.config.ts`, `conftest.py`, `sitecustomize.py`, `__init__.py`), a Go, Ruby, shell, Rust or bin file and a deleted or renamed Go or Ruby test (the graph cannot see their importers or shared helpers), a file remaining code still imports, including by a relative, extensionless or dotted import or through a directory it reads (`removed, but still imported by …`), a file whose basename a remaining non-Markdown file mentions (a config's `preload = ["./setup.ts"]`, a computed `path.join(__dirname, 'lib', 'value.js')`), and a deleted test whose merge-base text cannot be read (a symlink, invalid UTF-8, over 1 MiB). A remaining test that reads a deleted file or directory is still selected. + +### Gate integrity +- New `test/pregate-removed-paths.test.ts` (38 cases) covers the waived paths and the fail-closed negative controls; no existing test, threshold or allowlist changed. + ## [1.91.291.0] - 2026-10-28 **/ship and /autoplan size their review to the diff.** A /ship review used to send the same specialist army, Red Team, adversarial pass and outside voice at every diff and repeat the whole army after any fix, up to three passes. Now `gstack-review-plan` classifies the diff (docs, tests, code or gate) and plans the next step through one transition table, so a README edit gets the core checklist and a gate change still gets everything. Measured on two captured diffs across five loop scenarios with measured reviewer output (`scripts/review-dispatch-compare.ts`), estimated review tokens fall to a median 0.26x of before on docs-only diffs and 0.85x on code diffs (0.52x over all ten runs, range 0.23–0.99). Every reviewer that can block a ship stays at full effort on the lane's model; a paid replay showed a medium-effort fix-check miss a fail-open that the full-effort check caught. diff --git a/VERSION b/VERSION index 946d7387f..62f453c77 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.91.291.0 +1.91.292.0 diff --git a/agents-digest/gstack-AGENTS.md b/agents-digest/gstack-AGENTS.md index 8b9d0100e..96e3cd9ce 100644 --- a/agents-digest/gstack-AGENTS.md +++ b/agents-digest/gstack-AGENTS.md @@ -1,4 +1,4 @@ -# gstack digest v1.91.291.0 — regenerate/re-copy after upgrading gstack +# gstack digest v1.91.292.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/package.json b/package.json index d3e84a4b9..ab3a2da79 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "1.91.291", + "version": "1.91.292", "description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.", "license": "MIT", "type": "module",