diff --git a/dist/commitlore.mjs b/dist/commitlore.mjs index b1b72bd5..95f89164 100755 --- a/dist/commitlore.mjs +++ b/dist/commitlore.mjs @@ -11477,7 +11477,7 @@ var notesAvailability = (opts = {}) => { }; // src/core/backfill.ts -import { spawnSync as spawnSync2 } from "node:child_process"; +import { spawnSync as spawnSync3 } from "node:child_process"; import { readFileSync as readFileSync2 } from "node:fs"; // src/core/schema.ts @@ -12376,6 +12376,73 @@ var buildRepairFeedback = (rejected) => { import { existsSync as existsSync3, mkdirSync, rmSync } from "node:fs"; import { createRequire } from "node:module"; import { dirname as dirname2, resolve as resolve2 } from "node:path"; + +// src/core/trusted-authors.ts +import { spawnSync as spawnSync2 } from "node:child_process"; +import { createHash } from "node:crypto"; +var TRUSTED_AUTHOR_KEY = "commitlore.trustedAuthor"; +var REQUIRE_SIGNED_DIRECTIVE_KEY = "commitlore.requireSignedDirective"; +var TRUSTED_SIGNER_KEY = "commitlore.trustedSigner"; +var configuredTrustedAuthors = (cwd) => { + const result = execGit(["config", "--local", "--get-all", TRUSTED_AUTHOR_KEY], { cwd }); + if (result.code !== 0) return []; + return result.stdout.split("\n").map((line2) => line2.trim()).filter((line2) => line2 !== ""); +}; +var configuredTrustedSignerFingerprints = (cwd) => { + const result = execGit(["config", "--local", "--get-all", TRUSTED_SIGNER_KEY], { cwd }); + if (result.code !== 0) return []; + return result.stdout.split("\n").map((line2) => line2.trim()).filter((line2) => line2 !== ""); +}; +var configuredDirectiveTrustSetting = (cwd, git2 = execGit) => { + const raw = git2(["config", "--local", "--get", REQUIRE_SIGNED_DIRECTIVE_KEY], { cwd }); + if (raw.code !== 0 || raw.stdout.trim() === "") return "author-string"; + const parsed = git2(["config", "--local", "--bool", "--get", REQUIRE_SIGNED_DIRECTIVE_KEY], { + cwd + }); + if (parsed.code !== 0) return "malformed"; + return parsed.stdout.trim() === "true" ? "signature-required" : "author-string"; +}; +var configuredSignedDirectivesRequired = (cwd, git2 = execGit) => configuredDirectiveTrustSetting(cwd, git2) !== "author-string"; +var signatureVerifierGeneration = (cwd, git2 = execGit) => { + if (!configuredSignedDirectivesRequired(cwd, git2)) return null; + const configured = git2(["config", "--get", "gpg.program"], { cwd }); + const program3 = configured.code === 0 && configured.stdout.trim() !== "" ? configured.stdout.trim() : "gpg"; + const listing = spawnSync2(program3, ["--batch", "--with-colons", "--list-keys"], { + encoding: "utf8", + windowsHide: true + }); + const material = listing.error === void 0 && listing.status === 0 ? listing.stdout : `unavailable:${String(listing.status ?? listing.error?.message ?? "spawn-failed")}`; + return createHash("sha256").update(`${process.env["GNUPGHOME"] ?? ""}\0${program3}\0${material}`).digest("hex").slice(0, 16); +}; +var seedTrustedAuthor = (cwd) => { + const existing = configuredTrustedAuthors(cwd); + if (existing.length > 0) { + return { + recorded: false, + author: existing[0] ?? null, + reason: `already configures ${String(existing.length)} directive author string(s) \u2014 left unchanged` + }; + } + const email2 = execGit(["config", "--get", "user.email"], { cwd }).stdout.trim(); + if (email2 === "") { + return { + recorded: false, + author: null, + reason: "no git user.email on this machine, so records stay [claim] until an author is set" + }; + } + const written = execGit(["config", "--local", "--add", TRUSTED_AUTHOR_KEY, email2], { cwd }); + if (written.code !== 0) { + return { recorded: false, author: null, reason: `could not write ${TRUSTED_AUTHOR_KEY}` }; + } + return { + recorded: true, + author: email2, + reason: `records matching your configured author string can now render [directive]` + }; +}; + +// src/core/index-db.ts var cachedCtor = null; var loadDatabaseCtor = () => { if (cachedCtor !== null) return cachedCtor; @@ -12737,6 +12804,7 @@ var writeMeta = (db, key, value) => { ); }; var UNREAD_COMMITS_META = "unread_commits"; +var SIGNATURE_VERIFIER_META = "signature_verifier_generation"; var persistUnread = (db, unread) => { writeMeta(db, UNREAD_COMMITS_META, unread > 0 ? String(unread) : null); }; @@ -12786,7 +12854,7 @@ var syncFts = (db, requested, writable) => { } return true; }; -var healthProblem = (db) => { +var healthProblem = (db, verifierGeneration) => { try { if (!tableExists(db, "meta")) return "index has no meta table"; const version2 = readMeta(db, "schema_version"); @@ -12794,6 +12862,12 @@ var healthProblem = (db) => { if (version2 !== String(SCHEMA_VERSION)) { return `index was built by schema v${version2}, this build expects v${SCHEMA_VERSION}`; } + if (verifierGeneration !== null) { + const recorded = readMeta(db, SIGNATURE_VERIFIER_META); + if (recorded !== verifierGeneration) { + return `index cached signature verdicts under verifier ${recorded ?? "unrecorded"}, this reader is ${verifierGeneration}`; + } + } for (const table of REQUIRED_TABLES) { if (!tableExists(db, table)) return `index is missing the ${table} table`; } @@ -12978,6 +13052,7 @@ var rebuildIndex = (handle, opts = {}) => { stats.pathsIndexed += noteCounts.paths; writeMeta(handle.db, "last_indexed_sha", head); writeMeta(handle.db, "notes_ref_sha", notesRef); + writeMeta(handle.db, SIGNATURE_VERIFIER_META, signatureVerifierGeneration(handle.cwd)); persistUnread(handle.db, unread); }); applyExclusions(stats, excluded); @@ -13013,7 +13088,7 @@ var updateIndex = (handle, opts = {}) => { handle.discardedReason = null; return rebuildOrRefuse(discarded); } - const problem = healthProblem(handle.db); + const problem = healthProblem(handle.db, signatureVerifierGeneration(handle.cwd)); if (problem !== null) { if (!allowRebuild) throw new Error(problem); resetIndexFile(handle); @@ -13267,7 +13342,7 @@ var resolveCommit = (cwd, sha) => { return resolved === "" ? null : resolved; }; var GH_MAX_BUFFER = 8 * 1024 * 1024; -var runGh = (args, cwd) => spawnSync2("gh", args, { +var runGh = (args, cwd) => spawnSync3("gh", args, { shell: false, encoding: "utf8", cwd: cwd ?? process.cwd(), @@ -13836,7 +13911,7 @@ var register = (program3) => { }; // src/core/capture-policy.ts -import { createHash } from "node:crypto"; +import { createHash as createHash2 } from "node:crypto"; import { existsSync as existsSync4, readFileSync as readFileSync3, writeFileSync } from "node:fs"; import { join as join2 } from "node:path"; var CAPTURE_MODES = ["auto", "suggest", "off"]; @@ -13857,7 +13932,7 @@ var POLICY_KEYS = [ "require_verified_evidence" ]; var POLICY_FILE_NAME = ".commitlore-policy.json"; -var sha256 = (input) => createHash("sha256").update(input).digest("hex"); +var sha256 = (input) => createHash2("sha256").update(input).digest("hex"); var computePolicyIdentityHash = (policy = POLICY_DEFAULTS) => sha256( JSON.stringify({ mode: policy.mode, @@ -14190,7 +14265,7 @@ var register2 = (program3) => { import { readFileSync as readFileSync6, writeFileSync as writeFileSync3 } from "node:fs"; // src/core/capture-prepare.ts -import { createHash as createHash2, randomBytes as randomBytes2 } from "node:crypto"; +import { createHash as createHash3, randomBytes as randomBytes2 } from "node:crypto"; // src/core/capture-outcome.ts var CAPTURE_KIND = "commitloreCaptureKind"; @@ -16340,7 +16415,7 @@ var prepareValues = (opts) => { ); } const diff = snapshot?.staged_diff ?? execGitOrThrow(["diff", "--cached"], { cwd }); - const stagedDiffHash = createHash2("sha256").update(diff).digest("hex"); + const stagedDiffHash = createHash3("sha256").update(diff).digest("hex"); const stagedTreeOid = snapshot?.staged_tree_oid ?? execGitOrThrow(["write-tree"], { cwd }).trim(); if (!isFullObjectId(stagedTreeOid)) { throw markCaptureError( @@ -16349,7 +16424,7 @@ var prepareValues = (opts) => { ); } const sourceHashes = { - transcript: createHash2("sha256").update(transcript).digest("hex"), + transcript: createHash3("sha256").update(transcript).digest("hex"), diff: stagedDiffHash }; const policy = resolvePolicy(cwd); @@ -16442,9 +16517,9 @@ var prepareCaptureContextReadOnly = (opts) => { }; // src/core/capture-verify.ts -import { createHash as createHash3 } from "node:crypto"; +import { createHash as createHash4 } from "node:crypto"; var PROVENANCE_KEY3 = "Provenance"; -var sha2562 = (input) => createHash3("sha256").update(input).digest("hex"); +var sha2562 = (input) => createHash4("sha256").update(input).digest("hex"); var recordIdOf = (record2) => record2.trailers.find((t) => t.key === "Record-Id")?.value; var recordIdSeed = (record2) => record2.trailers.filter((trailer) => trailer.key !== "Record-Id").map((trailer) => JSON.stringify([trailer.key, trailer.value])).sort().join("\n"); var MINTED_ID_CHARS = 12; @@ -16725,7 +16800,7 @@ var storeVerificationResult = (nonce, cwd, result) => { }; // src/core/capture-stage.ts -import { createHash as createHash4 } from "node:crypto"; +import { createHash as createHash5 } from "node:crypto"; var stageCaptureRecord = (opts) => { const { nonce, cwd, expiryMinutes } = opts; const record2 = readPending(nonce, { cwd }); @@ -16752,7 +16827,7 @@ var stageCaptureRecord = (opts) => { ); } const currentDiff = execGitOrThrow(["diff", "--cached"], { cwd }); - const currentDiffHash = createHash4("sha256").update(currentDiff).digest("hex"); + const currentDiffHash = createHash5("sha256").update(currentDiff).digest("hex"); if (currentDiffHash !== record2.staged_diff_hash) { throw markCaptureError( new Error("Staging rejected: staged diff changed since prepare"), @@ -17259,58 +17334,6 @@ var runCaptureShadow = (opts) => { }; }; -// src/core/trusted-authors.ts -var TRUSTED_AUTHOR_KEY = "commitlore.trustedAuthor"; -var REQUIRE_SIGNED_DIRECTIVE_KEY = "commitlore.requireSignedDirective"; -var TRUSTED_SIGNER_KEY = "commitlore.trustedSigner"; -var configuredTrustedAuthors = (cwd) => { - const result = execGit(["config", "--local", "--get-all", TRUSTED_AUTHOR_KEY], { cwd }); - if (result.code !== 0) return []; - return result.stdout.split("\n").map((line2) => line2.trim()).filter((line2) => line2 !== ""); -}; -var configuredTrustedSignerFingerprints = (cwd) => { - const result = execGit(["config", "--local", "--get-all", TRUSTED_SIGNER_KEY], { cwd }); - if (result.code !== 0) return []; - return result.stdout.split("\n").map((line2) => line2.trim()).filter((line2) => line2 !== ""); -}; -var configuredDirectiveTrustSetting = (cwd, git2 = execGit) => { - const raw = git2(["config", "--local", "--get", REQUIRE_SIGNED_DIRECTIVE_KEY], { cwd }); - if (raw.code !== 0 || raw.stdout.trim() === "") return "author-string"; - const parsed = git2(["config", "--local", "--bool", "--get", REQUIRE_SIGNED_DIRECTIVE_KEY], { - cwd - }); - if (parsed.code !== 0) return "malformed"; - return parsed.stdout.trim() === "true" ? "signature-required" : "author-string"; -}; -var configuredSignedDirectivesRequired = (cwd, git2 = execGit) => configuredDirectiveTrustSetting(cwd, git2) !== "author-string"; -var seedTrustedAuthor = (cwd) => { - const existing = configuredTrustedAuthors(cwd); - if (existing.length > 0) { - return { - recorded: false, - author: existing[0] ?? null, - reason: `already configures ${String(existing.length)} directive author string(s) \u2014 left unchanged` - }; - } - const email2 = execGit(["config", "--get", "user.email"], { cwd }).stdout.trim(); - if (email2 === "") { - return { - recorded: false, - author: null, - reason: "no git user.email on this machine, so records stay [claim] until an author is set" - }; - } - const written = execGit(["config", "--local", "--add", TRUSTED_AUTHOR_KEY, email2], { cwd }); - if (written.code !== 0) { - return { recorded: false, author: null, reason: `could not write ${TRUSTED_AUTHOR_KEY}` }; - } - return { - recorded: true, - author: email2, - reason: `records matching your configured author string can now render [directive]` - }; -}; - // src/core/pending-gc.ts import { existsSync as existsSync5, readdirSync as readdirSync2, readFileSync as readFileSync5, unlinkSync as unlinkSync2 } from "node:fs"; import { resolve as resolve4 } from "node:path"; @@ -18046,7 +18069,7 @@ var claudeHookStatus = (input) => { }; // src/commands/doctor/model.ts -import { spawnSync as spawnSync3 } from "node:child_process"; +import { spawnSync as spawnSync4 } from "node:child_process"; var PROBE_MESSAGE = "commitlore doctor probe\n\nLimit: probe\nBlast: local\n"; var gitOptions2 = (opts) => opts.cwd === void 0 ? {} : { cwd: opts.cwd }; var boundedExcerpt = (output) => { @@ -18105,7 +18128,7 @@ var defaultDoctorContext = (opts = {}) => ({ now: process.hrtime.bigint, memo: /* @__PURE__ */ new Map(), git: execGit, - spawn: spawnSync3, + spawn: spawnSync4, env: process.env, openIndex }); @@ -21367,7 +21390,7 @@ import { import { join as join11, resolve as resolve15 } from "node:path"; // src/hooks/post-commit.ts -import { createHash as createHash5, randomBytes as randomBytes5 } from "node:crypto"; +import { createHash as createHash6, randomBytes as randomBytes5 } from "node:crypto"; import { chmodSync, existsSync as existsSync14, mkdirSync as mkdirSync5, readFileSync as readFileSync14, readdirSync as readdirSync3, renameSync as renameSync4, writeFileSync as writeFileSync8 } from "node:fs"; import { resolve as resolve12 } from "node:path"; @@ -21507,7 +21530,7 @@ var runPostCommitFinaliser = (cwd) => { if (pending.staged_tree_oid !== committedTree) continue; if (!allRecordIdsPresent(commitMessage, pending.records)) continue; const canonicalBlock = buildCanonicalTrailerBlock(pending.records); - const expectedHash = createHash5("sha256").update(canonicalBlock).digest("hex"); + const expectedHash = createHash6("sha256").update(canonicalBlock).digest("hex"); if (pending.applied_record_hash !== expectedHash) continue; try { consumePending(pending.nonce, headSha2, { cwd }); @@ -21696,7 +21719,7 @@ var register7 = (program3) => { }; // src/hooks/prepare-commit-msg.ts -import { createHash as createHash6, randomBytes as randomBytes7 } from "node:crypto"; +import { createHash as createHash7, randomBytes as randomBytes7 } from "node:crypto"; import { chmodSync as chmodSync3, existsSync as existsSync16, mkdirSync as mkdirSync7, readFileSync as readFileSync16, readdirSync as readdirSync4, renameSync as renameSync6, writeFileSync as writeFileSync10 } from "node:fs"; import { resolve as resolve14 } from "node:path"; var PREPARE_COMMIT_MSG_HOOK_MARKER = "# commitlore:prepare-commit-msg:v1"; @@ -21868,7 +21891,7 @@ var applyCaptureRecord = (messageFile, cwd) => { const currentHead = headResult.stdout.trim(); const diffResult = execGit(["diff", "--cached"], { cwd }); if (diffResult.code !== 0) return; - const currentDiffHash = createHash6("sha256").update(diffResult.stdout).digest("hex"); + const currentDiffHash = createHash7("sha256").update(diffResult.stdout).digest("hex"); const currentPolicyHash = resolvePolicy(cwd).identityHash; const now = Date.now(); let currentMessage; @@ -21902,7 +21925,7 @@ var applyCaptureRecord = (messageFile, cwd) => { if (!trailerBlock) return; const separator = currentMessage.endsWith("\n\n") ? "" : currentMessage.endsWith("\n") ? "\n" : "\n\n"; writeFileSync10(messageFile, `${currentMessage}${separator}${trailerBlock}`); - const recordHash = createHash6("sha256").update(trailerBlock).digest("hex"); + const recordHash = createHash7("sha256").update(trailerBlock).digest("hex"); try { markApplied(pending.nonce, recordHash, { cwd }); } catch { @@ -23204,7 +23227,7 @@ var register14 = (program3) => { }; // src/commands/hermes.ts -import { spawnSync as spawnSync4 } from "node:child_process"; +import { spawnSync as spawnSync5 } from "node:child_process"; import { copyFileSync, existsSync as existsSync20, mkdirSync as mkdirSync10, readFileSync as readFileSync22, renameSync as renameSync9, statSync as statSync8, writeFileSync as writeFileSync16 } from "node:fs"; import { homedir } from "node:os"; import { basename as basename3, dirname as dirname9, join as join14, resolve as resolve19 } from "node:path"; @@ -23425,7 +23448,7 @@ var removeHermesConfig = (contents, options) => { // src/commands/hermes.ts var commandExists = (command) => { - const result = spawnSync4(command, ["--version"], { encoding: "utf8", timeout: 5e3, stdio: "ignore" }); + const result = spawnSync5(command, ["--version"], { encoding: "utf8", timeout: 5e3, stdio: "ignore" }); return result.error === void 0; }; var backupPathFor = (configPath) => { @@ -23451,7 +23474,7 @@ var runVerification = (report, verified) => { report.push("unverified: Hermes is not on PATH, so start a fresh session to load the configured profile"); return; } - const skills = spawnSync4("hermes", ["skills", "list", "--source", "all"], { + const skills = spawnSync5("hermes", ["skills", "list", "--source", "all"], { encoding: "utf8", timeout: 15e3 }); @@ -23463,7 +23486,7 @@ var runVerification = (report, verified) => { } else { report.push("unverified: Hermes did not list every CommitLore skill; start a fresh session and run `hermes skills list --source all`"); } - const mcp = spawnSync4("hermes", ["mcp", "test", "commitlore"], { + const mcp = spawnSync5("hermes", ["mcp", "test", "commitlore"], { encoding: "utf8", timeout: 15e3 }); @@ -23657,7 +23680,7 @@ import { readFileSync as readFileSync23, realpathSync as realpathSync4 } from "n import { basename as basename4, dirname as dirname10, isAbsolute as isAbsolute2, join as join15, relative as relative3, resolve as resolve20, sep as sep4 } from "node:path"; // src/core/inject.ts -import { createHash as createHash7 } from "node:crypto"; +import { createHash as createHash8 } from "node:crypto"; var NO_ABLATION = { noScope: false, noGrade: false, noLifecycle: false }; var resolveAblation = (flags) => flags === void 0 ? NO_ABLATION : { noScope: flags.noScope === true, @@ -23877,7 +23900,7 @@ var cacheKeyOf = (parts) => { // onto one key rather than two. ...parts.ablation.length === 0 ? [] : [parts.ablation] ]); - return createHash7("sha256").update(canonical2).digest("hex").slice(0, CACHE_KEY_CHARS); + return createHash8("sha256").update(canonical2).digest("hex").slice(0, CACHE_KEY_CHARS); }; var resolveBudget = (budget) => { if (budget === void 0) return DEFAULT_BUDGET_TOKENS; @@ -24222,7 +24245,7 @@ var register17 = (program3) => { import { accessSync, constants, existsSync as existsSync21, mkdirSync as mkdirSync11, renameSync as renameSync10, statSync as statSync9, unlinkSync as unlinkSync6, writeFileSync as writeFileSync17, readFileSync as readFileSync24 } from "node:fs"; import { delimiter, dirname as dirname11, join as join16 } from "node:path"; import { randomUUID } from "node:crypto"; -import { spawn, spawnSync as spawnSync5 } from "node:child_process"; +import { spawn, spawnSync as spawnSync6 } from "node:child_process"; var INSTALLER_HOSTS_SCHEMA = "commitlore_installer_hosts.v1"; var isObject3 = (value) => typeof value === "object" && value !== null && !Array.isArray(value); var ownEntry = (format, entry, wrapper) => { @@ -24431,7 +24454,7 @@ var hasCommand = (command) => (process.env.PATH ?? "").split(delimiter).some((di } }); var commandResult = (command, args) => { - const result = spawnSync5(command, args, { encoding: "utf8", shell: false }); + const result = spawnSync6(command, args, { encoding: "utf8", shell: false }); return { ok: result.status === 0 && result.error === void 0, stdout: result.stdout ?? "" }; }; var cliHost = async (host, wrapper) => { @@ -24471,7 +24494,7 @@ var inspectAndApplyHosts = async (options) => { else notDetected.push(host); } if (hasCommand("hermes") || existsSync21(join16(home, ".hermes"))) { - const result = spawnSync5(options.wrapper, ["hermes", "install", "--config", join16(home, ".hermes", "config.yaml"), "--command", options.wrapper, "--data-root", options.dataRoot, "--verify"], { stdio: "ignore", shell: false, timeout: 3e4 }); + const result = spawnSync6(options.wrapper, ["hermes", "install", "--config", join16(home, ".hermes", "config.yaml"), "--command", options.wrapper, "--data-root", options.dataRoot, "--verify"], { stdio: "ignore", shell: false, timeout: 3e4 }); requested.push(Promise.resolve(result.status === 0 ? { host: "hermes", requested: true, outcome: "installed", healthy: true, detail: "Hermes setup verified" } : { host: "hermes", requested: true, outcome: "failed", healthy: false, detail: "Hermes setup failed" })); } else notDetected.push("hermes"); const hosts = await Promise.all(requested); @@ -33533,7 +33556,7 @@ var register20 = (program3) => { }; // src/core/before-change.ts -import { createHash as createHash8 } from "node:crypto"; +import { createHash as createHash9 } from "node:crypto"; var deriveVerificationGaps = (cwd) => { const gaps = []; const history = historyAvailability(cwd); @@ -33568,12 +33591,12 @@ var resolveHead2 = (cwd) => { }; var buildCacheKey = (head, path2, proposal, at) => { const lifecycleInstant = at.toISOString(); - const pathHash = createHash8("sha256").update(path2).digest("hex").slice(0, 16); + const pathHash = createHash9("sha256").update(path2).digest("hex").slice(0, 16); if (proposal === void 0) { return `ctx:${head}:${lifecycleInstant}:${pathHash}`; } const normalised = proposal.trim().replace(/\s+/g, " "); - const proposalHash = createHash8("sha256").update(normalised).digest("hex").slice(0, 16); + const proposalHash = createHash9("sha256").update(normalised).digest("hex").slice(0, 16); return `full:${head}:${lifecycleInstant}:${pathHash}:${proposalHash}`; }; var beforeChange = (opts) => { @@ -34228,7 +34251,7 @@ var register21 = (program3) => { }; // src/core/codex-plugin.ts -import { spawnSync as spawnSync6 } from "node:child_process"; +import { spawnSync as spawnSync7 } from "node:child_process"; import { existsSync as existsSync22, mkdirSync as mkdirSync12, readFileSync as readFileSync25, rmSync as rmSync5, writeFileSync as writeFileSync18 } from "node:fs"; import { homedir as homedir2 } from "node:os"; import { join as join17 } from "node:path"; @@ -34313,7 +34336,7 @@ var codexSaid = (result) => { return [`codex said: ${said}`]; }; var runCodexCommand = (args) => { - const result = spawnSync6("codex", args, { encoding: "utf8", timeout: 3e4 }); + const result = spawnSync7("codex", args, { encoding: "utf8", timeout: 3e4 }); return { status: result.status, stdout: result.stdout ?? "", @@ -35231,7 +35254,7 @@ var register25 = (program3) => { }; // src/commands/uninstall.ts -import { spawnSync as spawnSync7 } from "node:child_process"; +import { spawnSync as spawnSync8 } from "node:child_process"; import { existsSync as existsSync23, readFileSync as readFileSync28, rmSync as rmSync6, writeFileSync as writeFileSync20 } from "node:fs"; import { homedir as homedir3 } from "node:os"; import { join as join18 } from "node:path"; @@ -35262,7 +35285,7 @@ var withoutTomlBlock = (contents, wrapper) => { return [...lines.slice(0, from), ...lines.slice(end)].join("\n"); }; var listCodexMcp = (command) => { - const listed = spawnSync7(command, ["mcp", "list", "--json"], { encoding: "utf8" }); + const listed = spawnSync8(command, ["mcp", "list", "--json"], { encoding: "utf8" }); if (listed.error?.code === "ENOENT") { return { state: "absent", servers: [] }; } @@ -35376,7 +35399,7 @@ var runUninstall = async (options = {}) => { removed.push(`${path2} (${SERVER_KEY} entry)`); report.push(`${say}: the ${SERVER_KEY} entry through codex mcp remove`); } else { - const removedByCli = spawnSync7(codexCommand, ["mcp", "remove", SERVER_KEY], { encoding: "utf8" }); + const removedByCli = spawnSync8(codexCommand, ["mcp", "remove", SERVER_KEY], { encoding: "utf8" }); if (removedByCli.error === void 0 && removedByCli.status === 0) { removed.push(`${path2} (${SERVER_KEY} entry)`); report.push(`${say}: the ${SERVER_KEY} entry through codex mcp remove`); diff --git a/dist/core/index-db.js b/dist/core/index-db.js index d1dfb8f3..a9f2da49 100644 --- a/dist/core/index-db.js +++ b/dist/core/index-db.js @@ -55,6 +55,7 @@ import { createRequire } from 'node:module'; import { dirname, resolve } from 'node:path'; import { execGit, execGitOrThrow, historyAvailability } from './git.js'; import { parseRecordBlocks } from './trailers.js'; +import { signatureVerifierGeneration } from './trusted-authors.js'; import { canonicalConventionalTrailerKey, isConventionalTrailerKey, isCommitLoreKey, } from './types.js'; /** * Resolved on first use, not at import. @@ -683,6 +684,8 @@ const writeMeta = (db, key, value) => { }; /** How many commits a budgeted rebuild left unread. 0 means the index is whole. */ const UNREAD_COMMITS_META = 'unread_commits'; +/** Which keyring produced the cached `%G?` values, when signature mode is on (#653). */ +const SIGNATURE_VERIFIER_META = 'signature_verifier_generation'; const persistUnread = (db, unread) => { writeMeta(db, UNREAD_COMMITS_META, unread > 0 ? String(unread) : null); }; @@ -781,7 +784,7 @@ const syncFts = (db, requested, writable) => { * reason — the index is derived, so there is no such thing as an unrecoverable * one (ADR-0003). */ -const healthProblem = (db) => { +const healthProblem = (db, verifierGeneration) => { try { if (!tableExists(db, 'meta')) return 'index has no meta table'; @@ -791,6 +794,17 @@ const healthProblem = (db) => { if (version !== String(SCHEMA_VERSION)) { return `index was built by schema v${version}, this build expects v${SCHEMA_VERSION}`; } + // #653: `signature_status` is cached from `%G?`, which is the verifying + // process's verdict rather than anything the repository holds. Outside + // signature mode nothing reads it, so nothing is checked; inside it, a + // verdict recorded under different keys is not an answer about the keys + // this reader has, and a rebuild is what the index is for (ADR-0003). + if (verifierGeneration !== null) { + const recorded = readMeta(db, SIGNATURE_VERIFIER_META); + if (recorded !== verifierGeneration) { + return `index cached signature verdicts under verifier ${recorded ?? 'unrecorded'}, this reader is ${verifierGeneration}`; + } + } for (const table of REQUIRED_TABLES) { if (!tableExists(db, table)) return `index is missing the ${table} table`; @@ -1027,6 +1041,7 @@ export const rebuildIndex = (handle, opts = {}) => { // `unread_commits` is what stops that from reading as a complete index. writeMeta(handle.db, 'last_indexed_sha', head); writeMeta(handle.db, 'notes_ref_sha', notesRef); + writeMeta(handle.db, SIGNATURE_VERIFIER_META, signatureVerifierGeneration(handle.cwd)); persistUnread(handle.db, unread); }); applyExclusions(stats, excluded); @@ -1080,7 +1095,7 @@ export const updateIndex = (handle, opts = {}) => { handle.discardedReason = null; return rebuildOrRefuse(discarded); } - const problem = healthProblem(handle.db); + const problem = healthProblem(handle.db, signatureVerifierGeneration(handle.cwd)); if (problem !== null) { if (!allowRebuild) throw new Error(problem); @@ -1181,7 +1196,7 @@ export const openCurrentIndex = (opts = {}) => { try { if (handle.discardedReason !== null) throw new Error(handle.discardedReason); - const problem = healthProblem(handle.db); + const problem = healthProblem(handle.db, signatureVerifierGeneration(handle.cwd)); if (problem !== null) throw new Error(problem); const head = revParse(handle.cwd, 'HEAD'); diff --git a/dist/core/index-db.js.map b/dist/core/index-db.js.map index 6a9c4234..e55d511f 100644 --- a/dist/core/index-db.js.map +++ b/dist/core/index-db.js.map @@ -1 +1 @@ -{"version":3,"file":"index-db.js","sourceRoot":"","sources":["../../src/core/index-db.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index-db.js","sourceRoot":"","sources":["../../src/core/index-db.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/core/trusted-authors.d.ts b/dist/core/trusted-authors.d.ts index 45b04cc1..daaece07 100644 --- a/dist/core/trusted-authors.d.ts +++ b/dist/core/trusted-authors.d.ts @@ -74,6 +74,21 @@ export declare const configuredDirectiveTrustSetting: (cwd: string, git?: typeof * parse is the strong one. */ export declare const configuredSignedDirectivesRequired: (cwd: string, git?: typeof execGit) => boolean; +/** + * An identifier for the keys this machine can verify with, or `null` outside + * signature mode (#653). + * + * Git's `%G?` is not a property of the repository. It is the verdict of + * whichever process ran `git log`, and it depends on the keys that process + * could reach — so anything that caches it is caching an answer about a + * particular keyring. Binding the cache to this identifier lets a reader tell + * whether the stored verdict is still about the keyring it has now, which is + * the difference between a cache and a stale claim about authority. + * + * Only signature mode pays for it: the setting is opt-in, and this is the one + * place where a `%G?` can decide whether a record directs an agent. + */ +export declare const signatureVerifierGeneration: (cwd: string, git?: typeof execGit) => string | null; export interface TrustSeedResult { readonly recorded: boolean; readonly author: string | null; diff --git a/dist/core/trusted-authors.js b/dist/core/trusted-authors.js index c3089e9c..28d7b546 100644 Binary files a/dist/core/trusted-authors.js and b/dist/core/trusted-authors.js differ diff --git a/dist/core/trusted-authors.js.map b/dist/core/trusted-authors.js.map index 51f5ec85..43a63d87 100644 --- a/dist/core/trusted-authors.js.map +++ b/dist/core/trusted-authors.js.map @@ -1 +1 @@ -{"version":3,"file":"trusted-authors.js","sourceRoot":"","sources":["../../src/core/trusted-authors.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"trusted-authors.js","sourceRoot":"","sources":["../../src/core/trusted-authors.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/installer/canonical-artifact.json b/installer/canonical-artifact.json index a869f7c8..d1565a83 100644 --- a/installer/canonical-artifact.json +++ b/installer/canonical-artifact.json @@ -15,10 +15,10 @@ "tsconfig.json", "src" ], - "sha256": "185de9db7eea580c7346f97cb4489dd670b0c4add00169cad2fc38c6f9dc8045" + "sha256": "803bcc2b0004aa51d7dca8324f0801730ced9cd118f40d74d8c83c866c3698f0" }, "artifact": { - "sha256": "33a26f6196debd51c14d32363a27672bd2ffb3ad4c3c5037dcde026014aba253", + "sha256": "bf41f0ff4f1046e2d312927272d58c3295b3622bf1ebcd1ce6291599d542f927", "files": [ { "path": "dist/cli.d.ts", @@ -574,7 +574,7 @@ }, { "path": "dist/commitlore.mjs", - "sha256": "dc15183ae2ec5279017fe9f4b090500e16a185bd172090383135224ce005fb70" + "sha256": "5af3655c8a7532b09005bcf2baf697659fb59832fb3d6566b269c41f7005721a" }, { "path": "dist/core/agent-configs.d.ts", @@ -798,11 +798,11 @@ }, { "path": "dist/core/index-db.js", - "sha256": "51adc61c497181ccfc31a548d41893fe987a01ec46afc8cc430318182bcbdc62" + "sha256": "dfa1ff5d6b28ffe324dca751c79c754c15a8103a4227e1dae9b69e064c19618c" }, { "path": "dist/core/index-db.js.map", - "sha256": "c4fcd4972838c1bdd22d02479b0a00ae5e284b6095372302134c0e8d4aabe18c" + "sha256": "2d69b63cf5f308d8661b4107400eec954a879d52d01d20bf553cdbced3a74574" }, { "path": "dist/core/inject.d.ts", @@ -974,15 +974,15 @@ }, { "path": "dist/core/trusted-authors.d.ts", - "sha256": "77c318876143bec7329468b0f6e6f2cae7617d08669647fefabb0873018eada3" + "sha256": "7e70c75f3d28a9088cc2fc20e27fe1e2602c5ad9b74fa988b152222649977bcc" }, { "path": "dist/core/trusted-authors.js", - "sha256": "4a3a45b466d94358aa3da660d1fdc4b63fcae0556d1f7f1f09a2b24e875c1f99" + "sha256": "a3eba07927f5ff993226faf078511dc566d1065694e221175065aa4f040c8f23" }, { "path": "dist/core/trusted-authors.js.map", - "sha256": "255ac345bd8785a41162d4f8b6298c7a1d85ada12e51bda5e5e50a9a13bbc1c7" + "sha256": "996ed9c037870d99f922843589a8f32217e05ae15f5bba9bd14dac474651eb9a" }, { "path": "dist/core/types.d.ts", diff --git a/src/core/index-db.ts b/src/core/index-db.ts index 256211d1..2754a858 100644 --- a/src/core/index-db.ts +++ b/src/core/index-db.ts @@ -58,6 +58,7 @@ import type { DatabaseSync } from 'node:sqlite'; import { execGit, execGitOrThrow, historyAvailability } from './git.js'; import { parseRecordBlocks } from './trailers.js'; +import { signatureVerifierGeneration } from './trusted-authors.js'; import { canonicalConventionalTrailerKey, isConventionalTrailerKey, @@ -973,6 +974,9 @@ const writeMeta = (db: IndexDatabase, key: string, value: string | null): void = /** How many commits a budgeted rebuild left unread. 0 means the index is whole. */ const UNREAD_COMMITS_META = 'unread_commits'; +/** Which keyring produced the cached `%G?` values, when signature mode is on (#653). */ +const SIGNATURE_VERIFIER_META = 'signature_verifier_generation'; + const persistUnread = (db: IndexDatabase, unread: number): void => { writeMeta(db, UNREAD_COMMITS_META, unread > 0 ? String(unread) : null); }; @@ -1074,7 +1078,7 @@ const syncFts = (db: IndexDatabase, requested: boolean, writable: boolean): bool * reason — the index is derived, so there is no such thing as an unrecoverable * one (ADR-0003). */ -const healthProblem = (db: IndexDatabase): string | null => { +const healthProblem = (db: IndexDatabase, verifierGeneration: string | null): string | null => { try { if (!tableExists(db, 'meta')) return 'index has no meta table'; const version = readMeta(db, 'schema_version'); @@ -1082,6 +1086,17 @@ const healthProblem = (db: IndexDatabase): string | null => { if (version !== String(SCHEMA_VERSION)) { return `index was built by schema v${version}, this build expects v${SCHEMA_VERSION}`; } + // #653: `signature_status` is cached from `%G?`, which is the verifying + // process's verdict rather than anything the repository holds. Outside + // signature mode nothing reads it, so nothing is checked; inside it, a + // verdict recorded under different keys is not an answer about the keys + // this reader has, and a rebuild is what the index is for (ADR-0003). + if (verifierGeneration !== null) { + const recorded = readMeta(db, SIGNATURE_VERIFIER_META); + if (recorded !== verifierGeneration) { + return `index cached signature verdicts under verifier ${recorded ?? 'unrecorded'}, this reader is ${verifierGeneration}`; + } + } for (const table of REQUIRED_TABLES) { if (!tableExists(db, table)) return `index is missing the ${table} table`; } @@ -1376,6 +1391,7 @@ export const rebuildIndex = ( // `unread_commits` is what stops that from reading as a complete index. writeMeta(handle.db, 'last_indexed_sha', head); writeMeta(handle.db, 'notes_ref_sha', notesRef); + writeMeta(handle.db, SIGNATURE_VERIFIER_META, signatureVerifierGeneration(handle.cwd)); persistUnread(handle.db, unread); }); applyExclusions(stats, excluded); @@ -1434,7 +1450,7 @@ export const updateIndex = ( return rebuildOrRefuse(discarded); } - const problem = healthProblem(handle.db); + const problem = healthProblem(handle.db, signatureVerifierGeneration(handle.cwd)); if (problem !== null) { if (!allowRebuild) throw new Error(problem); resetIndexFile(handle); @@ -1541,7 +1557,7 @@ export const openCurrentIndex = (opts: OpenIndexOptions = {}): IndexHandle => { const handle = openIndex(opts); try { if (handle.discardedReason !== null) throw new Error(handle.discardedReason); - const problem = healthProblem(handle.db); + const problem = healthProblem(handle.db, signatureVerifierGeneration(handle.cwd)); if (problem !== null) throw new Error(problem); const head = revParse(handle.cwd, 'HEAD'); diff --git a/src/core/trusted-authors.ts b/src/core/trusted-authors.ts index 1c3af5f4..84c46c6a 100644 Binary files a/src/core/trusted-authors.ts and b/src/core/trusted-authors.ts differ diff --git a/test/index-signature-generation.test.ts b/test/index-signature-generation.test.ts new file mode 100644 index 00000000..68f17f37 --- /dev/null +++ b/test/index-signature-generation.test.ts @@ -0,0 +1,133 @@ +/** + * #653: the index caches a signature status, and a signature status is not a + * property of the repository. + * + * `%G?` is the verdict of whichever process ran `git log`, and it depends on + * the keys that process could reach. Cache it and the index answers a question + * about a past keyring — ADR-0003 calls the index a derived cache of what git + * already holds, and this value is not derivable from the repository at all. + * + * What this file asserts is the cause, not the symptom. "Two routes disagree" + * would go green for the wrong reason: any change that happens to make them + * agree — including one that stops the scan path from grading at all — would + * satisfy it. The claim under test is narrower and is the thing a fix has to + * deliver: **a cached signature verdict does not survive a change to the + * keyring that produced it.** + */ + +import { execFileSync } from 'node:child_process'; +import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; + +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; + +import { runQuery } from '../src/core/query.js'; +import { createTestRepo } from './git-fixtures.js'; + +const scratch: string[] = []; +const AUTHOR = 'signer@example.invalid'; + +let repo = ''; +let gpgHome = ''; +let emptyGpgHome = ''; +let fingerprint = ''; +let originalGpgHome: string | undefined; + +const git = (args: string[]): string => + execFileSync('git', args, { cwd: repo, env: process.env, encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] }); + +const policy = () => ({ + trustedAuthors: [AUTHOR], + requireSignedDirective: true, + trustedSignerFingerprints: [fingerprint], +}); + +const trustOf = (opts: { readonly noIndex?: boolean }): string | undefined => + runQuery({ cwd: repo, ...(opts.noIndex === true ? { noIndex: true } : {}), ...policy() }).records.find( + (record) => record.recordId === 'r-idxgen653', + )?.trust; + +beforeAll(() => { + repo = createTestRepo({ path: mkdtempSync(join(tmpdir(), 'cl-index-signature-')) }); + gpgHome = mkdtempSync(join(tmpdir(), 'cl-index-signature-gpg-')); + emptyGpgHome = mkdtempSync(join(tmpdir(), 'cl-index-signature-nokeys-')); + scratch.push(repo, gpgHome, emptyGpgHome); + originalGpgHome = process.env.GNUPGHOME; + + execFileSync('chmod', ['700', gpgHome]); + execFileSync('chmod', ['700', emptyGpgHome]); + process.env.GNUPGHOME = gpgHome; + execFileSync( + 'gpg', + ['--batch', '--passphrase', '', '--quick-generate-key', `Signer <${AUTHOR}>`, 'rsa2048', 'sign', '0'], + { env: process.env, stdio: ['ignore', 'pipe', 'pipe'] }, + ); + const listing = execFileSync('gpg', ['--batch', '--with-colons', '--list-secret-keys', AUTHOR], { + env: process.env, + encoding: 'utf8', + }); + fingerprint = listing.split('\n').find((line) => line.startsWith('fpr:'))?.split(':')[9] ?? ''; + if (fingerprint === '') throw new Error('no fingerprint for the throwaway signing key'); + + git(['config', 'user.name', 'Signer']); + git(['config', 'user.email', AUTHOR]); + git(['config', '--local', 'user.signingkey', fingerprint]); + git(['config', '--local', 'commitlore.trustedAuthor', AUTHOR]); + git(['config', '--local', 'commitlore.requireSignedDirective', 'true']); + git(['config', '--local', '--add', 'commitlore.trustedSigner', fingerprint]); + + writeFileSync(join(repo, 'store.ts'), 'export const value = 0;\n'); + git(['add', 'store.ts']); + git([ + '-c', + 'commit.gpgSign=true', + 'commit', + '--quiet', + '--no-verify', + '-m', + [ + 'Keep session state local', + '', + 'Limit: one writer at a time', + 'Blast: local', + 'Undo: easy', + 'Certainty: firm', + 'Provenance: authored', + 'Record-Id: r-idxgen653', + ].join('\n'), + ]); + + // Guard the fixture: git itself must call this signature good and name this + // signer, or every assertion below would be about a broken fixture. + expect(git(['log', '-1', '--format=%G?']).trim()).toBe('G'); + expect(git(['log', '-1', '--format=%GF']).trim()).toBe(fingerprint); +}); + +afterAll(() => { + if (originalGpgHome === undefined) delete process.env.GNUPGHOME; + else process.env.GNUPGHOME = originalGpgHome; + for (const dir of scratch) rmSync(dir, { recursive: true, force: true }); +}); + +describe('#653 a cached signature verdict does not outlive its keyring', () => { + it('recomputes the signature status when the keyring that produced it is gone', () => { + // Warm the index where the signing key cannot be reached. Nothing about the + // repository has changed; only the verifier's reach has. + process.env.GNUPGHOME = emptyGpgHome; + expect(git(['log', '-1', '--format=%G?']).trim()).not.toBe('G'); + expect(trustOf({})).toBe('claim'); + + // The keys are reachable again. + process.env.GNUPGHOME = gpgHome; + + // Guard the guard: with the keyring back, the repository does support a + // directive right now. Without this, an index that answered `claim` for + // some unrelated reason would look like the defect under test. + expect(trustOf({ noIndex: true })).toBe('directive'); + + // The claim: the index must not still be answering from the keyring it had + // when it was warmed. + expect(trustOf({})).toBe('directive'); + }); +});