From 48507e927bce96389c043897e21ac0c9b79df97c Mon Sep 17 00:00:00 2001 From: Joe Slitzker Date: Fri, 26 Jun 2026 17:07:36 -0500 Subject: [PATCH] test(#1477): exclude .gsd-source from golden parity manifest The claude-global install now provisions .gsd-source (#1477), whose content is the install-time absolute path to the package commands/gsd source tree. That path is the checkout/CI workspace root, not the temp HOME, so it is never normalized to and its hash varies by environment. Exclude it from the parity manifest as a volatile metadata file, same rationale as gsd-install-state.json. --- tests/golden-install-parity.test.cjs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/golden-install-parity.test.cjs b/tests/golden-install-parity.test.cjs index f70458669..32eef28d1 100644 --- a/tests/golden-install-parity.test.cjs +++ b/tests/golden-install-parity.test.cjs @@ -11,10 +11,11 @@ * * After replacing every occurrence of the temp root path with the literal * '' in file contents, the install output is byte-identical run-to-run - * for ALL files EXCEPT exactly two volatile metadata files that are EXCLUDED + * for ALL files EXCEPT the volatile metadata files that are EXCLUDED * from the parity manifest: * - gsd-file-manifest.json (timestamp + install-time absolute paths) * - gsd-install-state.json (install-time absolute paths) + * - .gsd-source (#1477, claude-global: install-time source path) * * Everything else (≈545–616 files per runtime) is deterministic. * @@ -48,7 +49,11 @@ const UPDATE = process.env.UPDATE_GOLDEN === '1'; const FIXTURE_DIR = path.join(__dirname, 'fixtures', 'golden-install-parity'); // Volatile metadata files always excluded from the parity manifest. -const VOLATILE_FILES = new Set(['gsd-file-manifest.json', 'gsd-install-state.json']); +// .gsd-source (#1477, claude-global only) records the install-time absolute path +// to the package's commands/gsd source tree, which is the checkout/CI workspace +// path — NOT the temp HOME root, so it is never normalized to '' and its +// hash varies by environment. Excluded for the same reason as gsd-install-state.json. +const VOLATILE_FILES = new Set(['gsd-file-manifest.json', 'gsd-install-state.json', '.gsd-source']); // Hook-registration config files excluded from the parity manifest. These are // written by the hook/permission install path (applySettingsJsonHooks /