From 76004f5eb30858b9089eb07db34efa0bc10ef78d Mon Sep 17 00:00:00 2001 From: aphrody-dev Date: Tue, 13 Oct 2026 22:50:04 +0200 Subject: [PATCH] fix: identify changed product inputs during qualification --- docs/PRODUCT-SERVER.md | 6 ++++++ packages/bun-app-host/src/verify.ts | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/PRODUCT-SERVER.md b/docs/PRODUCT-SERVER.md index 5cf5aaa1..d9c267ed 100644 --- a/docs/PRODUCT-SERVER.md +++ b/docs/PRODUCT-SERVER.md @@ -107,3 +107,9 @@ the installed binary retains the earlier runtime An earlier review also rejected service activation. Neither this candidate qualification nor the source portal's HTTPS readiness proves that the product service or its public proxy routes have been activated. + +A later invocation through `bun-os server verify` correctly refused this +candidate after the concurrent canonical owner changed +`packages/bun-workspace/src/process.ts`. The eleven passing gates above remain +evidence for the recorded source snapshot; they do not qualify the subsequent +working source. Rebuilding against the final committed owner inputs is required. diff --git a/packages/bun-app-host/src/verify.ts b/packages/bun-app-host/src/verify.ts index b0ac5c79..3cfec3f3 100644 --- a/packages/bun-app-host/src/verify.ts +++ b/packages/bun-app-host/src/verify.ts @@ -151,7 +151,7 @@ export async function verifyProduct( (await command(["git", "hash-object", "--path=" + gitPath, path])) !== input.gitBlob || (await hashFile(path, { signal: deadline.signal })) !== input.sha256 ) - throw new Error("Product input differs from its committed source proof."); + throw new Error("Product input differs from its committed source proof: " + gitPath); } if (generated !== 1) throw new Error("Product receipt requires exactly one generated entry proof."); for (const path of [