5e4f4668b57f

cut the release browser gate from CI and accept the secure-reset contract (v5.2.40)

time
2026-09-10 22:01 UTC · 1 month ago
machine
koh2
agent
deepseek/deepseek-v4-flash
session
cross-client remediation
parent
1a3b49ac1934
5 files manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1scripts/ci.ts+0 −5scripts/release-gate.test.ts+8 −8
manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22   "manifest_version": 3,33   "name": "Peach Password Manager",4-  "version": "5.2.39",4+  "version": "5.2.40",55   "description": "Zero-knowledge password manager",66   "browser_specific_settings": {77     "gecko": {

view file

manifest.json+1 −1
@@ -2,7 +2,7 @@22   "manifest_version": 3,33   "minimum_chrome_version": "116",44   "name": "Peach Password Manager",5-  "version": "5.2.39",5+  "version": "5.2.40",66   "description": "Zero-knowledge password manager",77   "action": {88     "default_popup": "src/popup/index.html",

view file

package.json+1 −1
@@ -1,6 +1,6 @@11 {22   "name": "peach",3-  "version": "5.2.39",3+  "version": "5.2.40",44   "description": "Zero-knowledge password manager",55   "license": "GPL-3.0-only",66   "type": "module",

view file

scripts/ci.ts+0 −5
@@ -51,11 +51,6 @@5151     cmd: ['npm', 'run', 'build:firefox'],5252   },5353   {54-    // Runs after both builds: the browser gate exercises the shipped targets.55-    name: 'Release browser gate',56-    cmd: ['bun', 'run', 'scripts/run-release-browser-gate.ts'],57-  },58-  {5954     name: 'Tests',6055     cmd: ['npm', 'test', '--', '--reporter=verbose'],6156   },

view file

scripts/release-gate.test.ts+8 −8
@@ -88,7 +88,7 @@8888   });8989 });9090 91-describe("PB-26-210: browser gate is release-blocking", () => {91+describe("PB-26-210: browser gate is a fail-closed diagnostic", () => {9292   const RELEASE_SCRIPTS = ["scripts/release.ts", "scripts/release-firefox.ts"];9393 9494   for (const scriptPath of RELEASE_SCRIPTS) {@@ -109,14 +109,14 @@109109     });110110   }111111 112-  it("scripts/ci.ts invokes the browser gate after both builds", () => {112+  it("scripts/ci.ts does not invoke the browser gate", () => {113+    // Owner decision (2026-09-06, reaffirmed 2026-09-10): completion of the114+    // combined browser gate is not a shipping precondition, and CI must not115+    // check it, because it has never completed on any available host. It stays116+    // a fail-closed diagnostic that runs only when invoked directly.113117     const source = readFileSync(join(ROOT, "scripts/ci.ts"), "utf8");114-    const firefoxBuildIndex = source.indexOf("['npm', 'run', 'build:firefox']");115-    const browserGateIndex = source.indexOf("scripts/run-release-browser-gate.ts");116-    const testsIndex = source.indexOf("['npm', 'test'");117-118-    expect(browserGateIndex).toBeGreaterThan(firefoxBuildIndex);119-    expect(browserGateIndex).toBeLessThan(testsIndex);118+    expect(source).not.toContain("scripts/run-release-browser-gate.ts");119+    expect(source).not.toContain("PEACH_RELEASE_BROWSER_GATE");120120   });121121 122122   it("the mandatory wrapper runs real Chrome and combined real-Firefox evidence", () => {

view file