From c01e0bab5766ca588618446729a82bbb1e3a7c84 Mon Sep 17 00:00:00 2001 From: anandgupta42 Date: Tue, 9 Jun 2026 17:08:06 -0700 Subject: [PATCH] fix: pin release-v0.8.5 gate to constant version (was breaking on every later release) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "docs point at the action patch" test derived `version` from the CHANGELOG's top entry and asserted it equals "0.8.5". After 0.8.6 shipped, the top entry moved to 0.8.6, so the assertion permanently failed — broken on main, blocking every PR (seen on #918, #854). Only the 0.8.5 gate had this pattern. This gate is specific to the 0.8.5 release (docs reference the patched @v0.8.5, not the broken @v0.8.4). Pin to the constant "0.8.5" and assert that changelog entry EXISTS rather than that it is the latest. Docs assertions unchanged (and passing). Closes 922 Co-Authored-By: Claude Opus 4.8 (1M context) --- .../test/skill/release-v0.8.5-adversarial.test.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/opencode/test/skill/release-v0.8.5-adversarial.test.ts b/packages/opencode/test/skill/release-v0.8.5-adversarial.test.ts index 76ff57f8e..00b1ee172 100644 --- a/packages/opencode/test/skill/release-v0.8.5-adversarial.test.ts +++ b/packages/opencode/test/skill/release-v0.8.5-adversarial.test.ts @@ -228,10 +228,15 @@ describe("v0.8.5 adversarial - composite action", () => { }) test("docs point at the action patch, not the already-published broken tag", async () => { + // This is the 0.8.5 release gate: it asserts the 0.8.5 docs reference the + // patched action tag (@v0.8.5) and NOT the already-published broken @v0.8.4. + // It must stay pinned to the constant "0.8.5" — earlier this derived `version` + // from the changelog's TOP entry, which later releases (0.8.6+) move, breaking + // the gate on every subsequent release. Assert the 0.8.5 entry EXISTS in the + // changelog rather than that it is the latest. + const version = "0.8.5" const changelog = await fs.readFile(path.join(repoRoot, "CHANGELOG.md"), "utf8") - // Match whether the entry is still "Unreleased" or has been date-stamped at release. - const version = changelog.match(/^## \[(\d+\.\d+\.\d+)\] - (?:Unreleased|\d{4}-\d{2}-\d{2})$/m)?.[1] - expect(version).toBe("0.8.5") + expect(changelog).toContain(`## [${version}]`) for (const relative of ["docs/docs/usage/dbt-pr-review.md", "github/review/examples/altimate-ingestion.yml"]) { const content = await fs.readFile(path.join(repoRoot, relative), "utf8")