diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json
index 53c5ca90..0a28a4c1 100644
--- a/.claude-plugin/plugin.json
+++ b/.claude-plugin/plugin.json
@@ -1,7 +1,7 @@
{
"name": "commitlore",
"displayName": "CommitLore",
- "version": "1.2.5",
+ "version": "1.2.6",
"description": "Recorded decisions from git history, delivered to the agent before it edits. Constraints, alternatives already ruled out, and warnings left by whoever was here last.",
"author": {
"name": "MongLong0214",
diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json
index 268d8063..4f72e395 100644
--- a/.codex-plugin/plugin.json
+++ b/.codex-plugin/plugin.json
@@ -1,6 +1,6 @@
{
"name": "commitlore",
- "version": "1.2.5",
+ "version": "1.2.6",
"description": "Decision memory from Git history, with verified capture for coding sessions.",
"author": {
"name": "MongLong0214",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e668d61e..46294571 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,85 @@ Release notes for 1.0.0, 1.0.1 and 1.0.2 are on the
[GitHub releases page](https://github.com/MongLong0214/commitlore/releases); they
were not written here.
+## 1.2.6
+
+A long session killed the process outright, and an upgrade nobody could see had
+already happened.
+
+**`capture` died with a fatal V8 error on a large transcript (#884).** On a
+74,173,844-byte session it exited 133 having written no JSON at all:
+
+```
+# Fatal error in , line 0
+# Fatal JavaScript invalid size error 134217728
+```
+
+Not a graceful refusal — an engine abort. `capture` reports outcomes
+structurally so a caller can branch on `staged` / `empty` / `rejected` rather
+than on the exit code, and this escaped that contract entirely: a wrapper that
+had been careful to read the outcome had nothing to read. Reproduced on 1.2.3 as
+well, so it was a standing limit rather than a regression the last release
+introduced.
+
+1.2.3 bounded the *prompt* (#873). It did not bound the guard beside it.
+`prepareCaptureContext` handed the whole transcript to the guard advisory on one
+line and took a 256 KiB window of it on the next. The guard normalises its
+proposal through the anti-injection normaliser, whose `\p{Script=Latin}\p{M}*`
+global replace collects one match per letter into a single array; past roughly
+69 MB that array crosses V8's 2^27 `FixedArray` ceiling and the process dies
+inside `Runtime_RegExpExecMultiple`.
+
+**The guard now reads the same window the prompt carries.** That is a narrowing,
+and it is also the more honest alignment: the advisory is shown beside the
+prompt, so an advisory computed over a whole session could warn about a decision
+the prompt does not contain. Measured on a 74,450,108-byte transcript: exit 0,
+`outcome: staged`, 0.7 s end to end, where before the process aborted.
+
+**It says when it did so.** A truncated scan must never read as a complete one,
+so the advisory carries a `proposal-windowed` gap whenever the window dropped
+part of the session — an empty `matches` array is then silence about the window,
+not a clean scan of the transcript.
+
+A note on what is *not* fixed: verification still reads the whole transcript on
+purpose, so a quote from outside the window still verifies, and its scan builds
+per-character structures over the whole file. That survives 74 MB and would fail
+somewhere past ~134 M characters. Bounding it would break the guarantee that a
+locator names a line of the file it is checked against.
+
+**`doctor`'s runtime-mismatch row named versions and stopped (#885).** It
+reported three distinct live CommitLore runtimes answering MCP while every
+registration on the machine was correct — the old runtimes were live processes
+that outlived an upgrade, because a host resolves the launcher once at session
+start and holds that runtime for the life of the session. Agent sessions there
+ran for days.
+
+Those runtimes write. Records captured by a session started two days earlier
+come from the build that session started on, and nothing on the commit says
+which. The row gave an operator no way to tell whether that was cosmetic, and
+the scan already knew the process ids and discarded them, so the reporter had to
+run `ps` themselves to find the five processes behind the three names.
+
+The row now names every pid, says plainly that each runtime keeps writing
+records with the build it started on, and offers an action: restart the host
+sessions that own those pids, because an upgrade cannot reach a process that is
+already running. It deliberately does not label any runtime the stale one — a
+copied or stale install can report the same version as a current one.
+
+**`upgrade` reported a release older than the binary printing it (#885, not
+separately filed).** On a machine running 1.2.5 it said `latest v1.2.3` and
+"this is the newest release". The lookup was fine; the answer is cached for a
+day in `~/.cache/commitlore/latest-release.json` and only `upgrade` acting
+clears it, so a release installed any other way — `install.sh`, the plugin
+marketplace, a manual checkout — leaves yesterday's answer standing. A `latest`
+older than the version already running cannot be the latest, and that case now
+re-asks. Equality still serves from the cache, or the cache would never serve
+the case it exists for.
+
+Not addressed, and left for its own decision: #885 also asks that the producing
+runtime be recorded on the record itself. `CommitLore-Version:` is not that
+field — SPEC §8 defines it as the protocol version a record targets — so this
+needs a new trailer and a wider decision than a patch release should make.
+
## 1.2.5
Two flags on `capture` did nothing and said nothing; a third refusal knew the
diff --git a/README.ja.md b/README.ja.md
index 1977f407..bc6d10d1 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -47,18 +47,18 @@
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh -s v1.2.5
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh -s v1.2.6
```
先にインストーラーを読みたいですか?
```bash
-curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh
-sh install.sh v1.2.5
+curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh
+sh install.sh v1.2.6
# あるいはスクリプトを使わずに。スクリプトが作るチェックアウトは自分でも作れます。
-git clone --depth 1 --branch v1.2.5 https://github.com/MongLong0214/commitlore
+git clone --depth 1 --branch v1.2.6 https://github.com/MongLong0214/commitlore
node commitlore/dist/commitlore.mjs --version
```
@@ -107,13 +107,13 @@ CommitLore はその判断をコードのそばに残します。
macOS と Linux:
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh -s v1.2.5
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh -s v1.2.6
```
Windows:
```powershell
-& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.ps1))) v1.2.5
+& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.ps1))) v1.2.6
```
Node.js 22.23.2+ と Git が必要です。スクリプトは何かを書き込む前に両方を確認します。
diff --git a/README.ko.md b/README.ko.md
index 6b39adb0..95a6dcc5 100644
--- a/README.ko.md
+++ b/README.ko.md
@@ -47,18 +47,18 @@
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh -s v1.2.5
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh -s v1.2.6
```
먼저 설치기를 읽어 보고 싶나요?
```bash
-curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh
-sh install.sh v1.2.5
+curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh
+sh install.sh v1.2.6
# 또는 스크립트를 건너뜁니다. 스크립트가 만드는 체크아웃은 직접 만들 수 있습니다.
-git clone --depth 1 --branch v1.2.5 https://github.com/MongLong0214/commitlore
+git clone --depth 1 --branch v1.2.6 https://github.com/MongLong0214/commitlore
node commitlore/dist/commitlore.mjs --version
```
@@ -107,13 +107,13 @@ CommitLore는 그 판단을 코드 곁에 보관합니다.
macOS와 Linux:
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh -s v1.2.5
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh -s v1.2.6
```
Windows:
```powershell
-& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.ps1))) v1.2.5
+& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.ps1))) v1.2.6
```
Node.js 22.23.2+와 Git이 필요합니다. 스크립트는 무엇이든 쓰기 전에 둘을 확인합니다.
diff --git a/README.md b/README.md
index 3a242739..326c7468 100644
--- a/README.md
+++ b/README.md
@@ -48,18 +48,18 @@
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh -s v1.2.5
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh -s v1.2.6
```
Prefer to read the installer first?
```bash
-curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh
-sh install.sh v1.2.5
+curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh
+sh install.sh v1.2.6
# Or skip the script: the checkout it makes is one you can make yourself.
-git clone --depth 1 --branch v1.2.5 https://github.com/MongLong0214/commitlore
+git clone --depth 1 --branch v1.2.6 https://github.com/MongLong0214/commitlore
node commitlore/dist/commitlore.mjs --version
```
@@ -109,13 +109,13 @@ preserve, not for narrating every change.
macOS and Linux:
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh -s v1.2.5
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh -s v1.2.6
```
Windows:
```powershell
-& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.ps1))) v1.2.5
+& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.ps1))) v1.2.6
```
Requires Node.js 22.23.2+ and Git. The script checks both before it writes anything.
diff --git a/README.zh-CN.md b/README.zh-CN.md
index df475c1a..052bc311 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -47,18 +47,18 @@
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh -s v1.2.5
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh -s v1.2.6
```
想先阅读安装器吗?
```bash
-curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh
-sh install.sh v1.2.5
+curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh
+sh install.sh v1.2.6
# 或者跳过脚本:它创建的检出,你自己也能创建。
-git clone --depth 1 --branch v1.2.5 https://github.com/MongLong0214/commitlore
+git clone --depth 1 --branch v1.2.6 https://github.com/MongLong0214/commitlore
node commitlore/dist/commitlore.mjs --version
```
@@ -105,13 +105,13 @@ CommitLore 把那份判断留在代码旁边。
macOS 和 Linux:
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh -s v1.2.5
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh -s v1.2.6
```
Windows:
```powershell
-& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.ps1))) v1.2.5
+& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.ps1))) v1.2.6
```
需要 Node.js 22.23.2+ 和 Git。脚本会在写入任何内容前检查两者。
diff --git a/dist/commands/doctor/checks/delivery-mcp-runtime-identity.js b/dist/commands/doctor/checks/delivery-mcp-runtime-identity.js
index e8df13a2..08bf7967 100644
--- a/dist/commands/doctor/checks/delivery-mcp-runtime-identity.js
+++ b/dist/commands/doctor/checks/delivery-mcp-runtime-identity.js
@@ -17,6 +17,27 @@ import { check } from '../model.js';
* information (#750).
*/
const identityOf = (runtime) => `${runtime.entrypointRealpath} (root ${runtime.packageRoot})`;
+/**
+ * Group the scan by identity, keeping every pid rather than the first (#885).
+ *
+ * The scan already knows each process id and this row used to drop all of them
+ * on the way to a deduplicated identity string. That left an operator told three
+ * runtimes were answering and given nothing to act on — the reporter had to run
+ * `ps` themselves to find the five processes behind those three names.
+ */
+const pidsByIdentity = (runtimes) => {
+ const grouped = new Map();
+ for (const runtime of runtimes) {
+ const key = identityOf(runtime);
+ const pids = grouped.get(key);
+ if (pids === undefined)
+ grouped.set(key, [runtime.pid]);
+ else
+ pids.push(runtime.pid);
+ }
+ return grouped;
+};
+const withPids = (identity, pids) => `${identity} pid ${pids.join(', ')}`;
const missingAssets = (runtime) => [
...(runtime.bundlePresent ? [] : ['dist/commitlore.mjs']),
...(runtime.specPresent ? [] : ['spec/SPEC.md']),
@@ -59,8 +80,23 @@ export const checkMcpRuntimeIdentity = (ctx) => {
}
const identities = [...new Map(scan.runtimes.map((runtime) => [identityOf(runtime), runtime])).values()];
if (identities.length > 1) {
+ const grouped = pidsByIdentity(scan.runtimes);
+ const allPids = scan.runtimes.map((runtime) => runtime.pid);
return check(id, category, title, 'warn', `${identities.length} distinct live CommitLore runtimes are answering MCP — runtime mismatch: ` +
- identities.map(identityOf).join('; '), null, false,
+ identities
+ .map((runtime) => withPids(identityOf(runtime), grouped.get(identityOf(runtime)) ?? []))
+ .join('; ') +
+ // #885: the row named versions and stopped, so an operator could not tell
+ // whether it was cosmetic. These runtimes write. Each answers with the
+ // build it started on, so records committed in one repository on one day
+ // can come from more than one of them, and nothing on the commit says
+ // which. Deliberately does not name one of them as the stale one:
+ // r-liveruntime660 ruled that out, because a copied or stale install can
+ // report the same version as a current one.
+ '. Each keeps writing records with the build it started on, so this' +
+ ' repository can receive records from more than one of them', 'restart the host sessions that own these pids so every session answers from one install' +
+ ` (${allPids.join(', ')}) — a host resolves the launcher once at session start and holds` +
+ ' that runtime until the session ends, so an upgrade does not reach a session already running', false,
// Machine state, not this repository's -- see the note above.
false, {
evidence: {
@@ -68,6 +104,7 @@ export const checkMcpRuntimeIdentity = (ctx) => {
runtime_count: String(scan.runtimes.length),
distinct_identities: String(identities.length),
package_roots: identities.map((runtime) => runtime.packageRoot).join(', '),
+ pids: allPids.join(', '),
},
});
}
diff --git a/dist/commands/doctor/checks/delivery-mcp-runtime-identity.js.map b/dist/commands/doctor/checks/delivery-mcp-runtime-identity.js.map
index 30a66dc6..be438f89 100644
--- a/dist/commands/doctor/checks/delivery-mcp-runtime-identity.js.map
+++ b/dist/commands/doctor/checks/delivery-mcp-runtime-identity.js.map
@@ -1 +1 @@
-{"version":3,"file":"delivery-mcp-runtime-identity.js","sourceRoot":"","sources":["../../../../src/commands/doctor/checks/delivery-mcp-runtime-identity.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"delivery-mcp-runtime-identity.js","sourceRoot":"","sources":["../../../../src/commands/doctor/checks/delivery-mcp-runtime-identity.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/commands/update.js b/dist/commands/update.js
index 1379a0dc..a5bee61b 100644
--- a/dist/commands/update.js
+++ b/dist/commands/update.js
@@ -28,7 +28,7 @@ import { spawnSync } from 'node:child_process';
import { readFileSync, realpathSync } from 'node:fs';
import { homedir } from 'node:os';
import { join } from 'node:path';
-import { latestRelease, sourceUrl } from '../core/latest-release.js';
+import { forgetCachedRelease, latestRelease, sourceUrl, } from '../core/latest-release.js';
import { packageVersion, readInstalledFile } from '../core/paths.js';
import { isNewerRelease } from '../core/release-version.js';
/**
@@ -68,7 +68,23 @@ const describe = (outcome) => {
};
export const buildReport = async (env = process.env) => {
const current = packageVersion();
- const { outcome, checkedAt } = await latestRelease({ env });
+ let result = await latestRelease({ env });
+ // A "latest" older than the version already running cannot be the latest
+ // (#885). The answer is cached for a day and only `upgrade` acting clears it,
+ // so a release installed any other way -- install.sh, the plugin marketplace,
+ // a manual checkout -- leaves the previous answer standing, and `upgrade`
+ // then reports an older tag as `latest` and says "this is the newest
+ // release". Reported against 1.2.5 while the cache still held v1.2.3.
+ //
+ // Only strictly-older re-asks. Equal is the ordinary up-to-date answer and
+ // must stay cached, or the cache would never serve the case it exists for.
+ if (result.cached &&
+ result.outcome.kind === 'resolved' &&
+ isNewerRelease(`v${current}`, result.outcome.tag)) {
+ forgetCachedRelease(env['HOME']);
+ result = await latestRelease({ env });
+ }
+ const { outcome, checkedAt } = result;
const latest = outcome.kind === 'resolved' ? outcome.tag : null;
const unknown = describe(outcome);
return {
diff --git a/dist/commands/update.js.map b/dist/commands/update.js.map
index 251fd146..909133d5 100644
--- a/dist/commands/update.js.map
+++ b/dist/commands/update.js.map
@@ -1 +1 @@
-{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/commitlore.mjs b/dist/commitlore.mjs
index dbc2b9e7..c858977e 100755
--- a/dist/commitlore.mjs
+++ b/dist/commitlore.mjs
@@ -12274,10 +12274,10 @@ var buildHarvestContract = () => {
""
].join("\n");
};
-var buildHarvestPromptWithWindow = (input) => {
+var buildHarvestPromptWithWindow = (input, precomputed) => {
const entries = loadVocabulary().filter((entry) => entry.key !== "Verified");
const diff = input.diff.trim() === "" ? "(no diff)" : input.diff.replace(/\n+$/, "");
- const { text, window } = windowTranscript(input.transcript);
+ const { text, window } = precomputed ?? windowTranscript(input.transcript);
const prompt = [
"# CommitLore harvest",
"",
@@ -16973,15 +16973,17 @@ var computeGuardAdvisory = (opts) => {
...opts.requireSignedDirective === true ? { requireSignedDirective: true } : {},
...opts.trustedSignerFingerprints === void 0 ? {} : { trustedSignerFingerprints: opts.trustedSignerFingerprints }
});
+ const gaps = deriveGuardGaps(result);
+ if (opts.proposalTruncated) gaps.push("proposal-windowed");
return {
matches: result.matches.map(renderGuardMatch),
- gaps: deriveGuardGaps(result),
+ gaps,
disclosure: GUARD_DISCLOSURE
};
} catch {
return {
matches: [],
- gaps: ["history-unavailable"],
+ gaps: opts.proposalTruncated ? ["history-unavailable", "proposal-windowed"] : ["history-unavailable"],
disclosure: GUARD_DISCLOSURE
};
}
@@ -17026,8 +17028,10 @@ var prepareValues = (opts) => {
);
}
const diffPaths = extractPathsFromDiff(diff);
+ const windowed = windowTranscript(transcript);
const advisory = opts.skipGuard === true ? null : computeGuardAdvisory({
- proposal: transcript,
+ proposal: windowed.text,
+ proposalTruncated: windowed.window.truncated,
paths: diffPaths,
cwd,
...opts.readOnly ? { readOnly: true } : {},
@@ -17035,7 +17039,7 @@ var prepareValues = (opts) => {
...opts.requireSignedDirective === true ? { requireSignedDirective: true } : {},
...opts.trustedSignerFingerprints === void 0 ? {} : { trustedSignerFingerprints: opts.trustedSignerFingerprints }
});
- const harvest2 = buildHarvestPromptWithWindow({ transcript, diff });
+ const harvest2 = buildHarvestPromptWithWindow({ transcript, diff }, windowed);
return {
base_head: baseHead,
staged_diff_hash: stagedDiffHash,
@@ -21269,6 +21273,17 @@ var checkMcpLifecycle = (ctx) => {
// src/commands/doctor/checks/delivery-mcp-runtime-identity.ts
var identityOf2 = (runtime) => `${runtime.entrypointRealpath} (root ${runtime.packageRoot})`;
+var pidsByIdentity = (runtimes) => {
+ const grouped = /* @__PURE__ */ new Map();
+ for (const runtime of runtimes) {
+ const key = identityOf2(runtime);
+ const pids = grouped.get(key);
+ if (pids === void 0) grouped.set(key, [runtime.pid]);
+ else pids.push(runtime.pid);
+ }
+ return grouped;
+};
+var withPids = (identity, pids) => `${identity} pid ${pids.join(", ")}`;
var missingAssets = (runtime) => [
...runtime.bundlePresent ? [] : ["dist/commitlore.mjs"],
...runtime.specPresent ? [] : ["spec/SPEC.md"]
@@ -21316,13 +21331,22 @@ var checkMcpRuntimeIdentity = (ctx) => {
}
const identities = [...new Map(scan2.runtimes.map((runtime) => [identityOf2(runtime), runtime])).values()];
if (identities.length > 1) {
+ const grouped = pidsByIdentity(scan2.runtimes);
+ const allPids = scan2.runtimes.map((runtime) => runtime.pid);
return check(
id2,
category2,
title2,
"warn",
- `${identities.length} distinct live CommitLore runtimes are answering MCP \u2014 runtime mismatch: ` + identities.map(identityOf2).join("; "),
- null,
+ `${identities.length} distinct live CommitLore runtimes are answering MCP \u2014 runtime mismatch: ` + identities.map((runtime) => withPids(identityOf2(runtime), grouped.get(identityOf2(runtime)) ?? [])).join("; ") + // #885: the row named versions and stopped, so an operator could not tell
+ // whether it was cosmetic. These runtimes write. Each answers with the
+ // build it started on, so records committed in one repository on one day
+ // can come from more than one of them, and nothing on the commit says
+ // which. Deliberately does not name one of them as the stale one:
+ // r-liveruntime660 ruled that out, because a copied or stale install can
+ // report the same version as a current one.
+ ". Each keeps writing records with the build it started on, so this repository can receive records from more than one of them",
+ `restart the host sessions that own these pids so every session answers from one install (${allPids.join(", ")}) \u2014 a host resolves the launcher once at session start and holds that runtime until the session ends, so an upgrade does not reach a session already running`,
false,
// Machine state, not this repository's -- see the note above.
false,
@@ -21331,7 +21355,8 @@ var checkMcpRuntimeIdentity = (ctx) => {
discovery: scan2.detail,
runtime_count: String(scan2.runtimes.length),
distinct_identities: String(identities.length),
- package_roots: identities.map((runtime) => runtime.packageRoot).join(", ")
+ package_roots: identities.map((runtime) => runtime.packageRoot).join(", "),
+ pids: allPids.join(", ")
}
}
);
@@ -22292,6 +22317,12 @@ var latestRelease = async (opts = {}) => {
}
return { outcome, cached: false, checkedAt };
};
+var forgetCachedRelease = (home) => {
+ try {
+ rmSync3(cachePath(home), { force: true });
+ } catch {
+ }
+};
var latestReleaseSync = (opts = {}) => {
const env = opts.env ?? process.env;
const now = opts.now ?? Date.now;
@@ -23883,7 +23914,12 @@ var describe = (outcome) => {
};
var buildReport2 = async (env = process.env) => {
const current = packageVersion();
- const { outcome, checkedAt } = await latestRelease({ env });
+ let result = await latestRelease({ env });
+ if (result.cached && result.outcome.kind === "resolved" && isNewerRelease(`v${current}`, result.outcome.tag)) {
+ forgetCachedRelease(env["HOME"]);
+ result = await latestRelease({ env });
+ }
+ const { outcome, checkedAt } = result;
const latest2 = outcome.kind === "resolved" ? outcome.tag : null;
const unknown2 = describe(outcome);
return {
diff --git a/dist/core/capture-prepare.js b/dist/core/capture-prepare.js
index 64361834..3587a408 100644
--- a/dist/core/capture-prepare.js
+++ b/dist/core/capture-prepare.js
@@ -9,7 +9,7 @@ import { createHash, randomBytes } from 'node:crypto';
import { markCaptureError } from './capture-outcome.js';
import { execGitOrThrow } from './git.js';
import { guard, renderGuardMatch } from './guard.js';
-import { buildHarvestPromptWithWindow } from './harvest.js';
+import { windowTranscript, buildHarvestPromptWithWindow } from './harvest.js';
import { policySourceLabel, resolvePolicy } from './capture-policy.js';
import { createPending, makePreparedPending, } from './pending.js';
import { isFullObjectId } from './types.js';
@@ -49,6 +49,20 @@ const deriveGuardGaps = (result) => {
/**
* Compute the guard advisory for a capture. Never throws — any error becomes
* a recorded gap. The capture must always succeed regardless of guard outcome.
+ *
+ * "Never throws" was not enough (#884). This was handed the *whole* transcript
+ * while the prompt beside it was already windowed, and `guard` normalises its
+ * proposal through `normalizeForMatch` — whose `\p{Script=Latin}\p{M}*` global
+ * replace collects one match per letter. On a 74 MB session that array passed
+ * V8's 2^27 FixedArray ceiling and the process died inside
+ * `Runtime_RegExpExecMultiple` with `invalid size error 134217728`, exit 133,
+ * before a byte of JSON was written. A fatal engine abort is not catchable, so
+ * the try/catch below could not honour its own contract; the input had to stop
+ * being unbounded instead.
+ *
+ * `proposalTruncated` records that the advisory saw the window rather than the
+ * session, so an empty `matches` array is never mistaken for a clean scan of
+ * the whole transcript.
*/
const computeGuardAdvisory = (opts) => {
try {
@@ -63,9 +77,12 @@ const computeGuardAdvisory = (opts) => {
? {}
: { trustedSignerFingerprints: opts.trustedSignerFingerprints }),
});
+ const gaps = deriveGuardGaps(result);
+ if (opts.proposalTruncated)
+ gaps.push('proposal-windowed');
return {
matches: result.matches.map(renderGuardMatch),
- gaps: deriveGuardGaps(result),
+ gaps,
disclosure: GUARD_DISCLOSURE,
};
}
@@ -73,7 +90,9 @@ const computeGuardAdvisory = (opts) => {
// Guard failure degrades to a recorded gap — never a capture failure
return {
matches: [],
- gaps: ['history-unavailable'],
+ gaps: opts.proposalTruncated
+ ? ['history-unavailable', 'proposal-windowed']
+ : ['history-unavailable'],
disclosure: GUARD_DISCLOSURE,
};
}
@@ -114,10 +133,16 @@ const prepareValues = (opts) => {
throw markCaptureError(new Error(`unattended capture is off for this repository (${policySourceLabel(policy)}: "unattended": true with mode "auto" opts in) — nothing was prepared`), 'rejected');
}
const diffPaths = extractPathsFromDiff(diff);
+ // Windowed once, then used for both the advisory and the prompt. The guard
+ // reads the same bytes the model is shown: an advisory computed over the
+ // whole session could warn about a decision that is not in the prompt at all,
+ // and reading the whole session is what killed the process in #884.
+ const windowed = windowTranscript(transcript);
const advisory = opts.skipGuard === true
? null
: computeGuardAdvisory({
- proposal: transcript,
+ proposal: windowed.text,
+ proposalTruncated: windowed.window.truncated,
paths: diffPaths,
cwd,
...(opts.readOnly ? { readOnly: true } : {}),
@@ -127,7 +152,7 @@ const prepareValues = (opts) => {
? {}
: { trustedSignerFingerprints: opts.trustedSignerFingerprints }),
});
- const harvest = buildHarvestPromptWithWindow({ transcript, diff });
+ const harvest = buildHarvestPromptWithWindow({ transcript, diff }, windowed);
return {
base_head: baseHead,
staged_diff_hash: stagedDiffHash,
diff --git a/dist/core/capture-prepare.js.map b/dist/core/capture-prepare.js.map
index 5a5db6e6..9a116688 100644
--- a/dist/core/capture-prepare.js.map
+++ b/dist/core/capture-prepare.js.map
@@ -1 +1 @@
-{"version":3,"file":"capture-prepare.js","sourceRoot":"","sources":["../../src/core/capture-prepare.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"capture-prepare.js","sourceRoot":"","sources":["../../src/core/capture-prepare.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/core/harvest.d.ts b/dist/core/harvest.d.ts
index 0e7df6af..487ee0fc 100644
--- a/dist/core/harvest.d.ts
+++ b/dist/core/harvest.d.ts
@@ -136,7 +136,17 @@ export declare const buildHarvestContract: () => string;
* randomness, no model — so the same transcript, diff and budget always produce
* the same bytes.
*/
-export declare const buildHarvestPromptWithWindow: (input: HarvestInput) => {
+export declare const buildHarvestPromptWithWindow: (input: HarvestInput,
+/**
+ * A window the caller already computed. `windowTranscript` splits the whole
+ * transcript to find its tail, so a caller that needs the window for its own
+ * reasons — capture hands the same bytes to the guard (#884) — passes it back
+ * rather than paying for a second split of a session that can be tens of MB.
+ */
+precomputed?: {
+ text: string;
+ window: TranscriptWindow;
+}) => {
prompt: string;
window: TranscriptWindow;
};
diff --git a/dist/core/harvest.js b/dist/core/harvest.js
index eb3fdb13..9275b48e 100644
--- a/dist/core/harvest.js
+++ b/dist/core/harvest.js
@@ -420,10 +420,17 @@ export const buildHarvestContract = () => {
* randomness, no model — so the same transcript, diff and budget always produce
* the same bytes.
*/
-export const buildHarvestPromptWithWindow = (input) => {
+export const buildHarvestPromptWithWindow = (input,
+/**
+ * A window the caller already computed. `windowTranscript` splits the whole
+ * transcript to find its tail, so a caller that needs the window for its own
+ * reasons — capture hands the same bytes to the guard (#884) — passes it back
+ * rather than paying for a second split of a session that can be tens of MB.
+ */
+precomputed) => {
const entries = loadVocabulary().filter((entry) => entry.key !== 'Verified');
const diff = input.diff.trim() === '' ? '(no diff)' : input.diff.replace(/\n+$/, '');
- const { text, window } = windowTranscript(input.transcript);
+ const { text, window } = precomputed ?? windowTranscript(input.transcript);
const prompt = [
'# CommitLore harvest',
'',
diff --git a/dist/core/harvest.js.map b/dist/core/harvest.js.map
index 5ddbf8b0..f0d93a36 100644
--- a/dist/core/harvest.js.map
+++ b/dist/core/harvest.js.map
@@ -1 +1 @@
-{"version":3,"file":"harvest.js","sourceRoot":"","sources":["../../src/core/harvest.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"harvest.js","sourceRoot":"","sources":["../../src/core/harvest.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/core/pending.d.ts b/dist/core/pending.d.ts
index 9e3061cb..deb2d49c 100644
--- a/dist/core/pending.d.ts
+++ b/dist/core/pending.d.ts
@@ -8,8 +8,14 @@
* it does not make a read-modify-write exclusive.
*/
import type { RenderedGuardMatch } from './guard.js';
-/** The three verification gaps, in canonical order (T-1024's closed vocabulary). */
-export type GuardGap = 'history-unavailable' | 'shallow-history' | 'notes-unfetched';
+/**
+ * The verification gaps, in canonical order (T-1024's closed vocabulary).
+ *
+ * `proposal-windowed` (#884) says the advisory read the same bounded window the
+ * prompt carries rather than the whole session, so an empty `matches` array is
+ * silence about the window and not about the transcript.
+ */
+export type GuardGap = 'history-unavailable' | 'shallow-history' | 'notes-unfetched' | 'proposal-windowed';
export interface GuardAdvisory {
matches: RenderedGuardMatch[];
gaps: GuardGap[];
diff --git a/dist/core/pending.js.map b/dist/core/pending.js.map
index 42bc6b49..9fbb73f8 100644
--- a/dist/core/pending.js.map
+++ b/dist/core/pending.js.map
@@ -1 +1 @@
-{"version":3,"file":"pending.js","sourceRoot":"","sources":["../../src/core/pending.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"pending.js","sourceRoot":"","sources":["../../src/core/pending.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/install.ps1 b/install.ps1
index 7d38ee6f..6adf1d27 100644
--- a/install.ps1
+++ b/install.ps1
@@ -1,8 +1,8 @@
<#
Installs commitlore from source on Windows, for any agent that is not Claude Code.
- irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.ps1 | iex
- & ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.ps1))) v1.2.5
+ irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.ps1 | iex
+ & ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.ps1))) v1.2.6
Claude Code users do not need this script. The repository is itself a plugin
marketplace (ADR-0011), so two /plugin commands register the MCP server, the
diff --git a/install.sh b/install.sh
index c1d78dce..b2949f8a 100755
--- a/install.sh
+++ b/install.sh
@@ -1,8 +1,8 @@
#!/bin/sh
# Installs commitlore from source, for any agent that is not Claude Code.
#
-# curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh
-# curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh -s v1.2.5
+# curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh
+# curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh -s v1.2.6
#
# **Claude Code users do not need this script.** The repository is itself a
# plugin marketplace (ADR-0011), so two `/plugin` commands register the MCP
diff --git a/installer/canonical-artifact.json b/installer/canonical-artifact.json
index ac428bdc..33a3b505 100644
--- a/installer/canonical-artifact.json
+++ b/installer/canonical-artifact.json
@@ -15,10 +15,10 @@
"tsconfig.json",
"src"
],
- "sha256": "a9983e1d679fb5ac209c43b7b3e67c5c14fa540d7153a40421194cae60e96310"
+ "sha256": "c59faab78dff7c40886adfe086d62f6f558f8187ba66675fe3e4f492330465ed"
},
"artifact": {
- "sha256": "33af8c43e7d90253bcdfecee3baede439188ef1a57ff179f0e0268ccaa933d81",
+ "sha256": "097bf2a837cf30f59bad6bbeb0727e005803f9233e256881b2996b00411ba682",
"files": [
{
"path": "dist/cli.d.ts",
@@ -206,11 +206,11 @@
},
{
"path": "dist/commands/doctor/checks/delivery-mcp-runtime-identity.js",
- "sha256": "6038899e6b1e95ef69c6768d84f2696d0eb7543b3ce4f314f3ea990699d71d25"
+ "sha256": "4333840dcd848966df31297dbfdc93afb0237b7d2797cec814e54ca667a3b23f"
},
{
"path": "dist/commands/doctor/checks/delivery-mcp-runtime-identity.js.map",
- "sha256": "b611a531784f09d7e88553d51d68253cb6e74efa10b161d3a77f5c5143dd030a"
+ "sha256": "64c663124806428166cd109054021ec9cc58eff885b273fe6fb51cd89ab5f434"
},
{
"path": "dist/commands/doctor/checks/history-history-depth.d.ts",
@@ -602,11 +602,11 @@
},
{
"path": "dist/commands/update.js",
- "sha256": "ccb26bd71499b36d27ef8e94f358896e593bb21ee111d8021528b0eff97266b1"
+ "sha256": "738f9bb29dd9fd86b57fa0f672d01307b83c17adf4670bbc0f2ffcbc00e69b61"
},
{
"path": "dist/commands/update.js.map",
- "sha256": "753c3619e3cc58cbc01415a6931a6f8415d4d06affa5de97ded2c054477ae860"
+ "sha256": "658910611ceed64bdbcadc16c10d94f321b94170eb4a796ebacf760c2b20c3b8"
},
{
"path": "dist/commands/validate.d.ts",
@@ -622,7 +622,7 @@
},
{
"path": "dist/commitlore.mjs",
- "sha256": "e5c54a1bcada00b43660db4b1de9e30c08b475f013eb6de34b2225e1777625ba"
+ "sha256": "a6f7cd5532fd0c0967637a176b1217cb09a3136090e2bcb38d5ff29e2131274b"
},
{
"path": "dist/core/agent-configs.d.ts",
@@ -702,11 +702,11 @@
},
{
"path": "dist/core/capture-prepare.js",
- "sha256": "dbfd507ae6b20f19d6aab3edc776f815279e2f2d631c4c37a866be2ca7b94297"
+ "sha256": "3e52098c3f2b1525d0a6df264a358dc8a21759ac0b18654109e2bef7d45da637"
},
{
"path": "dist/core/capture-prepare.js.map",
- "sha256": "9e3ba12b2a7dceea12de96c417235a95e3409febaeb7d3cd606724ca35379ad1"
+ "sha256": "58580a32c31fd4a28b0f0bc6a175995e2f18bde25287e736f6082f3ea7ad3924"
},
{
"path": "dist/core/capture-shadow.d.ts",
@@ -806,15 +806,15 @@
},
{
"path": "dist/core/harvest.d.ts",
- "sha256": "3acccd3fd069dcd81636aa8262c9c425604731fab47eaf9e75b817d57916823c"
+ "sha256": "0dc07b9032e3fb831f849d56f86a02bbc931f1a73730bd8a2db6284bc90b88fc"
},
{
"path": "dist/core/harvest.js",
- "sha256": "47dd78f3dfe82757b7d71d2c2e96a3d8fef69d42a49e6611a6463352b139baea"
+ "sha256": "3b26739f987ee5af1d1c6a0299db60b2b640297de2cde365a87597a1a4362e2c"
},
{
"path": "dist/core/harvest.js.map",
- "sha256": "27166b15d3c43f9949ec5650d490286f68c34e753845e928189c2b809917957c"
+ "sha256": "1c82a6d89ed5215144cc6009b71edf13bff6f3f32282d13d824a8d859d7f570f"
},
{
"path": "dist/core/hermes-config.d.ts",
@@ -950,7 +950,7 @@
},
{
"path": "dist/core/pending.d.ts",
- "sha256": "e59a5ef0a1f371f5db10bf07f0abc61a23982e82694918012e2b84e9d9ba6a06"
+ "sha256": "9c3ec73fd052c96f1ba85ac167f27ce4571d8c098405b80c5e1e14b5ecf8bfcf"
},
{
"path": "dist/core/pending.js",
@@ -958,7 +958,7 @@
},
{
"path": "dist/core/pending.js.map",
- "sha256": "ea9effb2e216cc6da4c7b9b019eac47f1e41150ab838fbafbd9cd70db30052e0"
+ "sha256": "ed2ba9bbbdbe4116f0415c3eb79892f6c6e2caa91f970c2c835e7c90340d5fa1"
},
{
"path": "dist/core/query.d.ts",
diff --git a/package-lock.json b/package-lock.json
index afc2d547..8ad5d222 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "commitlore",
- "version": "1.2.5",
+ "version": "1.2.6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "commitlore",
- "version": "1.2.5",
+ "version": "1.2.6",
"license": "MIT",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.30.0",
diff --git a/package.json b/package.json
index aaccc9ff..4725b8b1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "commitlore",
- "version": "1.2.5",
+ "version": "1.2.6",
"description": "Git-native, lifecycle-aware decision memory for coding agents",
"license": "MIT",
"private": true,
diff --git a/server.json b/server.json
index 19048891..8582477b 100644
--- a/server.json
+++ b/server.json
@@ -8,7 +8,7 @@
"source": "github"
},
"websiteUrl": "https://github.com/MongLong0214/commitlore#readme",
- "version": "1.2.5",
+ "version": "1.2.6",
"_meta": {
"io.modelcontextprotocol.registry/publisher-provided": {
"registryFit": "Distribution is a tagged git checkout plus a Claude Code plugin marketplace (ADR-0011 registry-free git distribution, ADR-0026 no compiled executables and no uploaded release asset), so no official package type applies and this record relies on websiteUrl plus publisher metadata.",
@@ -18,8 +18,8 @@
"/plugin marketplace add MongLong0214/commitlore",
"/plugin install commitlore@commitlore"
],
- "installer": "curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.5/install.sh | sh -s v1.2.5",
- "release": "https://github.com/MongLong0214/commitlore/releases/tag/v1.2.5"
+ "installer": "curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.6/install.sh | sh -s v1.2.6",
+ "release": "https://github.com/MongLong0214/commitlore/releases/tag/v1.2.6"
},
"runtime": {
"transport": "stdio",
diff --git a/src/commands/doctor/checks/delivery-mcp-runtime-identity.ts b/src/commands/doctor/checks/delivery-mcp-runtime-identity.ts
index 81800c3c..ed43c4b2 100644
--- a/src/commands/doctor/checks/delivery-mcp-runtime-identity.ts
+++ b/src/commands/doctor/checks/delivery-mcp-runtime-identity.ts
@@ -22,6 +22,28 @@ import { check, type Category, type DoctorCheck, type DoctorContext } from '../m
const identityOf = (runtime: LiveMcpRuntime): string =>
`${runtime.entrypointRealpath} (root ${runtime.packageRoot})`;
+/**
+ * Group the scan by identity, keeping every pid rather than the first (#885).
+ *
+ * The scan already knows each process id and this row used to drop all of them
+ * on the way to a deduplicated identity string. That left an operator told three
+ * runtimes were answering and given nothing to act on — the reporter had to run
+ * `ps` themselves to find the five processes behind those three names.
+ */
+const pidsByIdentity = (runtimes: readonly LiveMcpRuntime[]): Map => {
+ const grouped = new Map();
+ for (const runtime of runtimes) {
+ const key = identityOf(runtime);
+ const pids = grouped.get(key);
+ if (pids === undefined) grouped.set(key, [runtime.pid]);
+ else pids.push(runtime.pid);
+ }
+ return grouped;
+};
+
+const withPids = (identity: string, pids: readonly number[]): string =>
+ `${identity} pid ${pids.join(', ')}`;
+
const missingAssets = (runtime: LiveMcpRuntime): string[] => [
...(runtime.bundlePresent ? [] : ['dist/commitlore.mjs']),
...(runtime.specPresent ? [] : ['spec/SPEC.md']),
@@ -86,14 +108,29 @@ export const checkMcpRuntimeIdentity = (ctx: DoctorContext): DoctorCheck => {
const identities = [...new Map(scan.runtimes.map((runtime) => [identityOf(runtime), runtime])).values()];
if (identities.length > 1) {
+ const grouped = pidsByIdentity(scan.runtimes);
+ const allPids = scan.runtimes.map((runtime) => runtime.pid);
return check(
id,
category,
title,
'warn',
`${identities.length} distinct live CommitLore runtimes are answering MCP — runtime mismatch: ` +
- identities.map(identityOf).join('; '),
- null,
+ identities
+ .map((runtime) => withPids(identityOf(runtime), grouped.get(identityOf(runtime)) ?? []))
+ .join('; ') +
+ // #885: the row named versions and stopped, so an operator could not tell
+ // whether it was cosmetic. These runtimes write. Each answers with the
+ // build it started on, so records committed in one repository on one day
+ // can come from more than one of them, and nothing on the commit says
+ // which. Deliberately does not name one of them as the stale one:
+ // r-liveruntime660 ruled that out, because a copied or stale install can
+ // report the same version as a current one.
+ '. Each keeps writing records with the build it started on, so this' +
+ ' repository can receive records from more than one of them',
+ 'restart the host sessions that own these pids so every session answers from one install' +
+ ` (${allPids.join(', ')}) — a host resolves the launcher once at session start and holds` +
+ ' that runtime until the session ends, so an upgrade does not reach a session already running',
false,
// Machine state, not this repository's -- see the note above.
false,
@@ -103,6 +140,7 @@ export const checkMcpRuntimeIdentity = (ctx: DoctorContext): DoctorCheck => {
runtime_count: String(scan.runtimes.length),
distinct_identities: String(identities.length),
package_roots: identities.map((runtime) => runtime.packageRoot).join(', '),
+ pids: allPids.join(', '),
},
},
);
diff --git a/src/commands/update.ts b/src/commands/update.ts
index f3fee887..a914addb 100644
--- a/src/commands/update.ts
+++ b/src/commands/update.ts
@@ -32,7 +32,12 @@ import { join } from 'node:path';
import type { Command } from 'commander';
-import { latestRelease, sourceUrl, type CheckOutcome } from '../core/latest-release.js';
+import {
+ forgetCachedRelease,
+ latestRelease,
+ sourceUrl,
+ type CheckOutcome,
+} from '../core/latest-release.js';
import { packageVersion, readInstalledFile } from '../core/paths.js';
import { isNewerRelease } from '../core/release-version.js';
@@ -87,7 +92,25 @@ export const buildReport = async (
env: NodeJS.ProcessEnv = process.env,
): Promise => {
const current = packageVersion();
- const { outcome, checkedAt } = await latestRelease({ env });
+ let result = await latestRelease({ env });
+ // A "latest" older than the version already running cannot be the latest
+ // (#885). The answer is cached for a day and only `upgrade` acting clears it,
+ // so a release installed any other way -- install.sh, the plugin marketplace,
+ // a manual checkout -- leaves the previous answer standing, and `upgrade`
+ // then reports an older tag as `latest` and says "this is the newest
+ // release". Reported against 1.2.5 while the cache still held v1.2.3.
+ //
+ // Only strictly-older re-asks. Equal is the ordinary up-to-date answer and
+ // must stay cached, or the cache would never serve the case it exists for.
+ if (
+ result.cached &&
+ result.outcome.kind === 'resolved' &&
+ isNewerRelease(`v${current}`, result.outcome.tag)
+ ) {
+ forgetCachedRelease(env['HOME']);
+ result = await latestRelease({ env });
+ }
+ const { outcome, checkedAt } = result;
const latest = outcome.kind === 'resolved' ? outcome.tag : null;
const unknown = describe(outcome);
return {
diff --git a/src/core/capture-prepare.ts b/src/core/capture-prepare.ts
index 6045de63..32e4f9ef 100644
--- a/src/core/capture-prepare.ts
+++ b/src/core/capture-prepare.ts
@@ -10,7 +10,7 @@ import { createHash, randomBytes } from 'node:crypto';
import { markCaptureError } from './capture-outcome.js';
import { execGitOrThrow } from './git.js';
import { guard, renderGuardMatch, type GuardResult } from './guard.js';
-import { buildHarvestPromptWithWindow, type TranscriptWindow } from './harvest.js';
+import { windowTranscript, buildHarvestPromptWithWindow, type TranscriptWindow } from './harvest.js';
import { policySourceLabel, resolvePolicy } from './capture-policy.js';
import {
createPending,
@@ -59,9 +59,24 @@ const deriveGuardGaps = (result: GuardResult): GuardGap[] => {
/**
* Compute the guard advisory for a capture. Never throws — any error becomes
* a recorded gap. The capture must always succeed regardless of guard outcome.
+ *
+ * "Never throws" was not enough (#884). This was handed the *whole* transcript
+ * while the prompt beside it was already windowed, and `guard` normalises its
+ * proposal through `normalizeForMatch` — whose `\p{Script=Latin}\p{M}*` global
+ * replace collects one match per letter. On a 74 MB session that array passed
+ * V8's 2^27 FixedArray ceiling and the process died inside
+ * `Runtime_RegExpExecMultiple` with `invalid size error 134217728`, exit 133,
+ * before a byte of JSON was written. A fatal engine abort is not catchable, so
+ * the try/catch below could not honour its own contract; the input had to stop
+ * being unbounded instead.
+ *
+ * `proposalTruncated` records that the advisory saw the window rather than the
+ * session, so an empty `matches` array is never mistaken for a clean scan of
+ * the whole transcript.
*/
const computeGuardAdvisory = (opts: {
proposal: string;
+ proposalTruncated: boolean;
paths: readonly string[];
cwd: string;
readOnly?: boolean;
@@ -81,16 +96,20 @@ const computeGuardAdvisory = (opts: {
? {}
: { trustedSignerFingerprints: opts.trustedSignerFingerprints }),
});
+ const gaps = deriveGuardGaps(result);
+ if (opts.proposalTruncated) gaps.push('proposal-windowed');
return {
matches: result.matches.map(renderGuardMatch),
- gaps: deriveGuardGaps(result),
+ gaps,
disclosure: GUARD_DISCLOSURE,
};
} catch {
// Guard failure degrades to a recorded gap — never a capture failure
return {
matches: [],
- gaps: ['history-unavailable'],
+ gaps: opts.proposalTruncated
+ ? ['history-unavailable', 'proposal-windowed']
+ : ['history-unavailable'],
disclosure: GUARD_DISCLOSURE,
};
}
@@ -242,10 +261,16 @@ const prepareValues = (opts: {
}
const diffPaths = extractPathsFromDiff(diff);
+ // Windowed once, then used for both the advisory and the prompt. The guard
+ // reads the same bytes the model is shown: an advisory computed over the
+ // whole session could warn about a decision that is not in the prompt at all,
+ // and reading the whole session is what killed the process in #884.
+ const windowed = windowTranscript(transcript);
const advisory = opts.skipGuard === true
? null
: computeGuardAdvisory({
- proposal: transcript,
+ proposal: windowed.text,
+ proposalTruncated: windowed.window.truncated,
paths: diffPaths,
cwd,
...(opts.readOnly ? { readOnly: true } : {}),
@@ -256,7 +281,7 @@ const prepareValues = (opts: {
: { trustedSignerFingerprints: opts.trustedSignerFingerprints }),
});
- const harvest = buildHarvestPromptWithWindow({ transcript, diff });
+ const harvest = buildHarvestPromptWithWindow({ transcript, diff }, windowed);
return {
base_head: baseHead,
diff --git a/src/core/harvest.ts b/src/core/harvest.ts
index b07552d6..d23b1a06 100644
--- a/src/core/harvest.ts
+++ b/src/core/harvest.ts
@@ -565,10 +565,17 @@ export const buildHarvestContract = (): string => {
*/
export const buildHarvestPromptWithWindow = (
input: HarvestInput,
+ /**
+ * A window the caller already computed. `windowTranscript` splits the whole
+ * transcript to find its tail, so a caller that needs the window for its own
+ * reasons — capture hands the same bytes to the guard (#884) — passes it back
+ * rather than paying for a second split of a session that can be tens of MB.
+ */
+ precomputed?: { text: string; window: TranscriptWindow },
): { prompt: string; window: TranscriptWindow } => {
const entries = loadVocabulary().filter((entry) => entry.key !== 'Verified');
const diff = input.diff.trim() === '' ? '(no diff)' : input.diff.replace(/\n+$/, '');
- const { text, window } = windowTranscript(input.transcript);
+ const { text, window } = precomputed ?? windowTranscript(input.transcript);
const prompt = [
'# CommitLore harvest',
diff --git a/src/core/pending.ts b/src/core/pending.ts
index 0d6b0be0..bb5a0d57 100644
--- a/src/core/pending.ts
+++ b/src/core/pending.ts
@@ -20,8 +20,18 @@ import { isFullObjectId } from './types.js';
// Types
// ---------------------------------------------------------------------------
-/** The three verification gaps, in canonical order (T-1024's closed vocabulary). */
-export type GuardGap = 'history-unavailable' | 'shallow-history' | 'notes-unfetched';
+/**
+ * The verification gaps, in canonical order (T-1024's closed vocabulary).
+ *
+ * `proposal-windowed` (#884) says the advisory read the same bounded window the
+ * prompt carries rather than the whole session, so an empty `matches` array is
+ * silence about the window and not about the transcript.
+ */
+export type GuardGap =
+ | 'history-unavailable'
+ | 'shallow-history'
+ | 'notes-unfetched'
+ | 'proposal-windowed';
export interface GuardAdvisory {
matches: RenderedGuardMatch[];
diff --git a/test/capture-prompt-budget.test.ts b/test/capture-prompt-budget.test.ts
index 87c69d50..167bd042 100644
--- a/test/capture-prompt-budget.test.ts
+++ b/test/capture-prompt-budget.test.ts
@@ -228,3 +228,110 @@ describe('#873 capture returns a prompt a model can read, and says what it is',
expect(verified.accepted).toHaveLength(1);
});
});
+
+/**
+ * #884: the prompt was bounded and the guard beside it was not.
+ *
+ * `prepareValues` handed `computeGuardAdvisory` the *whole* transcript while
+ * `buildHarvestPromptWithWindow` on the next line took a 256 KiB window of it.
+ * `guard` normalises its proposal through `normalizeForMatch`, whose
+ * `\p{Script=Latin}\p{M}*` global replace collects one match per letter into a
+ * single array; on a 74,173,844-byte session that array crossed V8's 2^27
+ * FixedArray ceiling and the process aborted with
+ * `Fatal JavaScript invalid size error 134217728`, exit 133, before a byte of
+ * JSON was written. Measured on both 1.2.5 and 1.2.3, so it was a standing
+ * limit rather than a regression, and the native stack named
+ * `Runtime_RegExpExecMultiple` as the frame that died.
+ *
+ * `computeGuardAdvisory` documents that it never throws and degrades to a gap.
+ * A fatal engine abort is not catchable, so that contract could not hold while
+ * the input was unbounded — the input had to stop being unbounded.
+ *
+ * The two properties below are what hold it:
+ *
+ * 1. The guard reads the window, not the session. Asserted by where a reviving
+ * phrase sits rather than by any size, because a test that only counted
+ * bytes would pass against the old code too.
+ * 2. It says so. Silence about a window must not read as a clean scan of the
+ * whole transcript.
+ */
+describe('#884 the guard advisory reads the same window the prompt carries', () => {
+ const RULED_OUT = 'Use shared Redis cache for sessions';
+ const REVIVES = 'We should use a shared Redis cache for sessions to share state across replicas.';
+
+ /** A repo whose history rules out an alternative the transcript can revive. */
+ const makeRepoWithRuledOut = (): string => {
+ const dir = mkdtempSync(join(tmpdir(), 'capture-guard-window-'));
+ scratch.push(dir);
+ execSync('git init --quiet --initial-branch=main', { cwd: dir });
+ execSync('git config user.name "Test"', { cwd: dir });
+ execSync('git config user.email "test@test.com"', { cwd: dir });
+ execSync('git config commit.gpgsign false', { cwd: dir });
+ writeFileSync(join(dir, 'a.txt'), 'hello\n');
+ execSync('git add a.txt', { cwd: dir });
+ execSync(
+ `git commit -m "feat: sessions\n\nRuled-out: ${RULED_OUT} | race condition under failover\nRecord-Id: r-window884" --no-verify --quiet`,
+ { cwd: dir },
+ );
+ writeFileSync(join(dir, 'a.txt'), 'hello\nworld\n');
+ execSync('git add a.txt', { cwd: dir });
+ return dir;
+ };
+
+ const withBudget = (bytes: string, body: () => T): T => {
+ const previous = process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'];
+ process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'] = bytes;
+ try {
+ return body();
+ } finally {
+ if (previous === undefined) delete process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'];
+ else process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'] = previous;
+ }
+ };
+
+ it('does not match a ruled-out alternative that only appears outside the window', () => {
+ const cwd = makeRepoWithRuledOut();
+ // The reviving sentence is line 1, and the window keeps only the tail.
+ const transcript = `${REVIVES}\n${transcriptOf(4000)}`;
+
+ const prepared = withBudget('2048', () => prepareCaptureContext({ cwd, transcript }));
+
+ expect(prepared.transcript_window.truncated).toBe(true);
+ expect(prepared.transcript_window.first_line).toBeGreaterThan(1);
+ // Reading the whole transcript is what this used to do, and it is what
+ // killed the process. Matching here means the guard saw line 1.
+ expect(prepared.guard_advisory!.matches).toHaveLength(0);
+ });
+
+ it('still matches the same alternative when it appears inside the window', () => {
+ const cwd = makeRepoWithRuledOut();
+ // Same repo, same phrase, same budget — only its position changes. Without
+ // this the fix could be "the guard never matches anything" and pass above.
+ const transcript = `${transcriptOf(4000)}\n${REVIVES}`;
+
+ const prepared = withBudget('2048', () => prepareCaptureContext({ cwd, transcript }));
+
+ expect(prepared.transcript_window.truncated).toBe(true);
+ expect(prepared.guard_advisory!.matches.length).toBeGreaterThanOrEqual(1);
+ });
+
+ it('records proposal-windowed so an empty match list is not read as a clean scan', () => {
+ const cwd = makeRepoWithRuledOut();
+ const transcript = `${REVIVES}\n${transcriptOf(4000)}`;
+
+ const prepared = withBudget('2048', () => prepareCaptureContext({ cwd, transcript }));
+
+ expect(prepared.guard_advisory!.gaps).toContain('proposal-windowed');
+ });
+
+ it('does not claim a gap when the whole session fitted', () => {
+ const cwd = makeRepoWithRuledOut();
+
+ const prepared = prepareCaptureContext({ cwd, transcript: REVIVES });
+
+ expect(prepared.transcript_window.truncated).toBe(false);
+ expect(prepared.guard_advisory!.gaps).not.toContain('proposal-windowed');
+ // And the advisory still works on the unwindowed path.
+ expect(prepared.guard_advisory!.matches.length).toBeGreaterThanOrEqual(1);
+ });
+});
diff --git a/test/runtime-identity-action.test.ts b/test/runtime-identity-action.test.ts
new file mode 100644
index 00000000..73e8b099
--- /dev/null
+++ b/test/runtime-identity-action.test.ts
@@ -0,0 +1,118 @@
+/**
+ * #885: the row named versions and stopped there.
+ *
+ * `doctor` reported three distinct live runtimes answering MCP. It was right,
+ * and every registration on the machine was correct — the old runtimes were
+ * live processes that outlived the upgrade, because a host resolves the
+ * launcher once at session start and holds that runtime for as long as the
+ * session lives. Agent sessions there ran for days.
+ *
+ * What made it costly is that these runtimes *write*. Records captured by a
+ * session started two days earlier are produced by the build that session
+ * started on, while the operator believes the repository is on the release they
+ * installed, and nothing on the commit says which runtime produced it. The row
+ * named three versions, offered no action, and gave an operator no way to tell
+ * whether that was cosmetic or whether half their records came from old code.
+ *
+ * The scan already knew the pids and dropped them on the way to a deduplicated
+ * identity string, so the reporter had to run `ps` themselves to find the five
+ * processes behind the three names.
+ *
+ * What this must NOT do: name one runtime as the stale one. r-liveruntime660
+ * ruled that out — a copied or stale install can report the same version as a
+ * current one, so a version comparison here proves nothing about identity.
+ */
+
+import { describe, expect, it } from 'vitest';
+
+import { checkMcpRuntimeIdentity } from '../src/commands/doctor/checks/delivery-mcp-runtime-identity.js';
+import type { DoctorContext } from '../src/commands/doctor/model.js';
+import type { LiveMcpRuntime, LiveMcpScan } from '../src/core/mcp-probe.js';
+
+const runtime = (root: string, pid: number): LiveMcpRuntime => ({
+ pid,
+ entrypointRealpath: `${root}/dist/commitlore.mjs`,
+ packageRoot: root,
+ bundlePresent: true,
+ specPresent: true,
+});
+
+const contextWith = (scan: LiveMcpScan): DoctorContext =>
+ ({ liveMcpRuntimes: () => scan }) as unknown as DoctorContext;
+
+/** The reporter's machine: five processes, three distinct runtimes. */
+const reported = (): LiveMcpScan => ({
+ available: true,
+ detail: 'process list',
+ runtimes: [
+ runtime('/data/v1.2.5', 13359),
+ runtime('/data/v1.2.3', 19075),
+ runtime('/data/v1.2.3', 23251),
+ runtime('/data/v1.2.0', 47396),
+ runtime('/data/v1.2.0', 4869),
+ ],
+});
+
+describe('#885 the runtime-mismatch row carries the pids and an action', () => {
+ it('names every pid, including two processes sharing one identity', () => {
+ const row = checkMcpRuntimeIdentity(contextWith(reported()));
+
+ expect(row.status).toBe('warn');
+ for (const pid of [13359, 19075, 23251, 47396, 4869]) {
+ expect(row.detail, `pid ${pid} is not in the row`).toContain(String(pid));
+ }
+ // Three identities behind five processes -- the count must still describe
+ // distinct runtimes, not the process total, or "3 distinct" becomes a lie.
+ expect(row.detail).toMatch(/^3 distinct live CommitLore runtimes/);
+ });
+
+ it('says plainly that the older runtimes are still writing records', () => {
+ const row = checkMcpRuntimeIdentity(contextWith(reported()));
+
+ // The operator's actual question was whether this is cosmetic.
+ expect(row.detail).toMatch(/writing records/);
+ });
+
+ it('offers an action naming the pids to restart', () => {
+ const row = checkMcpRuntimeIdentity(contextWith(reported()));
+
+ expect(row.fix, 'the row offered no action at all').not.toBeNull();
+ expect(row.fix).toContain('13359');
+ // Why restarting is the action and reinstalling is not: the upgrade already
+ // happened, and it cannot reach a process that is already running.
+ expect(row.fix).toMatch(/session/);
+ });
+
+ it('puts the pids in evidence, where a machine reader can use them', () => {
+ const row = checkMcpRuntimeIdentity(contextWith(reported()));
+
+ expect(row.evidence['pids']).toBe('13359, 19075, 23251, 47396, 4869');
+ expect(row.evidence['distinct_identities']).toBe('3');
+ expect(row.evidence['runtime_count']).toBe('5');
+ });
+
+ it('does not declare which runtime is the stale one', () => {
+ const row = checkMcpRuntimeIdentity(contextWith(reported()));
+
+ // r-liveruntime660: a copied or stale install can report the same version
+ // as a current one. The row reports what is running; it does not rank them.
+ expect(`${row.detail} ${row.fix ?? ''}`).not.toMatch(/\b(stale|outdated|obsolete)\b/i);
+ });
+
+ it('still does not claim attention — this is the machine, not the checkout', () => {
+ const row = checkMcpRuntimeIdentity(contextWith(reported()));
+
+ // #750: `init` treats a check needing attention as a step that did not
+ // complete, and a leftover server on a developer's machine is not that.
+ expect(row.needsAttention).toBe(false);
+ });
+
+ it('says nothing about pids or restarting when one runtime answers', () => {
+ const row = checkMcpRuntimeIdentity(
+ contextWith({ available: true, detail: 'process list', runtimes: [runtime('/data/v1.2.5', 13359)] }),
+ );
+
+ expect(row.status).toBe('ok');
+ expect(row.fix).toBeNull();
+ });
+});
diff --git a/test/update-command.test.ts b/test/update-command.test.ts
index 2b75e2bf..70240808 100644
--- a/test/update-command.test.ts
+++ b/test/update-command.test.ts
@@ -16,6 +16,7 @@ import { fileURLToPath } from 'node:url';
import { describe, expect, it } from 'vitest';
import { buildReport, installCommand } from '../src/commands/update.js';
+import { packageVersion } from '../src/core/paths.js';
const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..');
const scratch = (label: string): string => mkdtempSync(join(tmpdir(), `cl-upgrade-${label}-`));
@@ -147,3 +148,61 @@ describe('T-1603 ADR-0037 is enforced, not described', () => {
for (const call of calls) expect(call.startsWith('ls-remote')).toBe(true);
});
});
+
+/**
+ * #885 (incidental): `upgrade` reported `latest v1.2.3` on a machine running
+ * 1.2.5, and added "this is the newest release".
+ *
+ * The answer is cached in `~/.cache/commitlore/latest-release.json` for a day,
+ * and only `upgrade` acting calls `forgetCachedRelease`. A release installed any
+ * other way — `install.sh`, the plugin marketplace, a manual checkout — leaves
+ * yesterday's answer standing, and the command then reports a tag older than the
+ * binary printing it. Nothing was wrong with the lookup; the cache had simply
+ * outlived the fact.
+ *
+ * A `latest` older than the version already running cannot be the latest, and
+ * that is the whole rule. Equality still serves from the cache, or the cache
+ * would never serve the case it exists for.
+ */
+describe('#885 a cached latest older than the running version is re-asked', () => {
+ it('re-asks rather than reporting a tag older than the binary printing it', async () => {
+ const home = scratch('home-stale');
+
+ // Yesterday: the newest tag really was older than what is installed now.
+ const primed = await buildReport({
+ COMMITLORE_INSTALL_SOURCE: remoteWithTags(['v0.0.1']),
+ HOME: home,
+ });
+ expect(primed.latest, 'the cache was not primed').toBe('v0.0.1');
+
+ // Today: a newer release exists, and the day-long cache still holds v0.0.1.
+ const report = await buildReport({
+ COMMITLORE_INSTALL_SOURCE: remoteWithTags(['v0.0.1', 'v99.0.0']),
+ HOME: home,
+ });
+
+ expect(report.latest).toBe('v99.0.0');
+ expect(report.updateAvailable).toBe(true);
+ });
+
+ it('still serves the cache when it agrees with the running version', async () => {
+ const home = scratch('home-current');
+ const current = `v${packageVersion()}`;
+
+ const primed = await buildReport({
+ COMMITLORE_INSTALL_SOURCE: remoteWithTags([current]),
+ HOME: home,
+ });
+ expect(primed.latest).toBe(current);
+
+ // The remote has moved, but "up to date" is exactly the answer the cache
+ // exists to hold. Re-asking here would make the cache decorative.
+ const report = await buildReport({
+ COMMITLORE_INSTALL_SOURCE: remoteWithTags([current, 'v99.0.0']),
+ HOME: home,
+ });
+
+ expect(report.latest).toBe(current);
+ expect(report.updateAvailable).toBe(false);
+ });
+});