agent-coord-mcp 0.26.21 → 0.26.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capabilities.js +250 -2
- package/dist/capabilities.js.map +1 -1
- package/dist/closing-line.js +83 -0
- package/dist/closing-line.js.map +1 -0
- package/dist/commit-cite.js +55 -0
- package/dist/commit-cite.js.map +1 -0
- package/dist/gated-head.js +67 -20
- package/dist/gated-head.js.map +1 -1
- package/dist/server-spread.js +195 -0
- package/dist/server-spread.js.map +1 -0
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/store.js +32 -0
- package/dist/store.js.map +1 -1
- package/dist/tools/away.js +67 -7
- package/dist/tools/away.js.map +1 -1
- package/dist/tools/board-ref.js +44 -4
- package/dist/tools/board-ref.js.map +1 -1
- package/dist/tools/event-kinds.js +5 -1
- package/dist/tools/event-kinds.js.map +1 -1
- package/dist/tools/events.js +31 -2
- package/dist/tools/events.js.map +1 -1
- package/dist/tools/messaging.js +64 -6
- package/dist/tools/messaging.js.map +1 -1
- package/dist/tools/record-events.js +85 -5
- package/dist/tools/record-events.js.map +1 -1
- package/dist/tools/records.js +231 -38
- package/dist/tools/records.js.map +1 -1
- package/dist/tools/registry.js +52 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/seat-build.js +173 -0
- package/dist/tools/seat-build.js.map +1 -0
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/stall.js +1095 -18
- package/dist/tools/stall.js.map +1 -1
- package/dist/tools/transport.js +21 -2
- package/dist/tools/transport.js.map +1 -1
- package/dist/tools/worktrees.js +14 -0
- package/dist/tools/worktrees.js.map +1 -1
- package/package.json +1 -1
- package/scripts/coord-attention-clock.mjs +2 -0
- package/scripts/coord-stall-clock.mjs +52 -11
- package/src/capabilities.ts +264 -2
- package/src/closing-line.ts +85 -0
- package/src/commit-cite.ts +58 -0
- package/src/gated-head.ts +128 -26
- package/src/server-spread.ts +233 -0
- package/src/server.ts +2 -2
- package/src/store.ts +32 -0
- package/src/tools/away.ts +82 -9
- package/src/tools/board-ref.ts +70 -3
- package/src/tools/event-kinds.ts +17 -1
- package/src/tools/events.ts +33 -2
- package/src/tools/messaging.ts +63 -6
- package/src/tools/record-events.ts +78 -5
- package/src/tools/records.ts +248 -38
- package/src/tools/registry.ts +54 -3
- package/src/tools/seat-build.ts +194 -0
- package/src/tools/shared.ts +22 -0
- package/src/tools/stall.ts +1266 -23
- package/src/tools/transport.ts +21 -2
- package/src/tools/worktrees.ts +13 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktrees.js","sourceRoot":"","sources":["../../src/tools/worktrees.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worktrees.js","sourceRoot":"","sources":["../../src/tools/worktrees.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-coord-mcp",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.22",
|
|
4
4
|
"description": "File-backed MCP server for coordinating multiple AI coding agents (Claude Code, Cursor, Cline, etc.). Local stdio or networked over Streamable HTTP.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -101,9 +101,11 @@ if (to) {
|
|
|
101
101
|
}
|
|
102
102
|
commitEvaluation(next);
|
|
103
103
|
if (fresh.length) {
|
|
104
|
+
// ⟨q-138f4b78⟩ — an agent→agent DM past the typed-record cutover must carry a record, or nothing is written.
|
|
104
105
|
await sendMessageTool({
|
|
105
106
|
from,
|
|
106
107
|
to,
|
|
108
|
+
record: { type: "action", payload: { summary: `${fresh.length} PR(s) mergeable and unattended: ${fresh.map((u) => u.pr ?? u.ref ?? u.why).join(", ").slice(0, 200)}` } },
|
|
107
109
|
text:
|
|
108
110
|
`AGENT_ACTION: ${fresh.length} PR(s) MERGEABLE AND UNATTENDED.\n` +
|
|
109
111
|
fresh.map((u) => `- ${u.why}`).join("\n") +
|
|
@@ -72,10 +72,15 @@ if (argv.install) {
|
|
|
72
72
|
|
|
73
73
|
const repo = String(argv.repo ?? process.cwd());
|
|
74
74
|
const duty = argv.duty ? String(argv.duty) : null;
|
|
75
|
+
// ⟨q-7e3b10c9⟩ — bookkeeping hits go to the BOARD OWNER, not the duty officer
|
|
76
|
+
// and never the lane's agent. From --board-owner, else the board's own Rooms
|
|
77
|
+
// table (`boardOwnerOf`), else the duty officer with a line saying so.
|
|
78
|
+
const boardOwnerFlag = argv["board-owner"] ? String(argv["board-owner"]) : null;
|
|
75
79
|
const from = String(argv.from ?? "coord-stall-clock");
|
|
76
80
|
const stallMinutes = argv["stall-minutes"] ? Number(argv["stall-minutes"]) : undefined;
|
|
77
81
|
|
|
78
|
-
const { stallCheckTool, markRunFailure } = await import(path.join(dist, "tools/stall.js"));
|
|
82
|
+
const { stallCheckTool, markRunFailure, boardOwnerOf } = await import(path.join(dist, "tools/stall.js"));
|
|
83
|
+
const { readFileSync: readFs, existsSync: existsFs } = await import("node:fs");
|
|
79
84
|
const { sendMessageTool } = await import(path.join(dist, "tools/messaging.js"));
|
|
80
85
|
|
|
81
86
|
try {
|
|
@@ -90,25 +95,61 @@ try {
|
|
|
90
95
|
process.exit(1);
|
|
91
96
|
}
|
|
92
97
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
// ⟨q-7e3b10c9⟩ — RENDER EACH KIND AS WHAT IT IS. A stale-row used to print
|
|
99
|
+
// "no commits on <branch> for undefined m": a finished lane described as a
|
|
100
|
+
// stall, in a DM to a seat that had done nothing wrong.
|
|
101
|
+
const line = (h) => {
|
|
102
|
+
switch (h.kind) {
|
|
103
|
+
case "no-heartbeat": return `- ${h.agentId}: no heartbeat for ${h.minutes}m (${h.stream})`;
|
|
104
|
+
case "no-vcs-activity": return `- ${h.agentId}: no commits on ${h.branch} for ${h.minutes}m`;
|
|
105
|
+
case "in-review-too-long": return `- ${h.agentId}: in review for ${h.minutes}m since ${h.since} (${h.stream})`;
|
|
106
|
+
case "unverdicted-pr": return h.why === "reported-unscribed"
|
|
107
|
+
? `- ${h.agentId}: #${h.pr} — ${h.claimedBy} reported ${h.claimedResult} at head ${String(h.head).slice(0, 7)} (${h.claimedAt}) and NO gate-runner scribed a verdict for it — the report is unrecorded, not late`
|
|
108
|
+
: `- ${h.agentId}: #${h.pr} open ${h.minutes}m with no verdict at its head ${String(h.head).slice(0, 7)} — nobody gated it`;
|
|
109
|
+
case "unproposed-branch": return `- ${h.agentId}: ${h.branch} pushed ${h.minutes}m ago, ${h.ahead} ahead of main, no PR — ${h.note ?? ""}`;
|
|
110
|
+
case "stale-row": return `- ${h.agentId}'s row points at ${h.branch}, which has LANDED — a STALE ROW, not a stall: update the row (board upkeep)`;
|
|
111
|
+
case "routed-without-row": return `- ⟨${h.itemId}⟩ routed by ${h.routedBy} ${h.minutes}m ago has no board row — write it (claim does)`;
|
|
112
|
+
case "unverdicted-merge": return `- #${h.pr} merged at ${String(h.head).slice(0, 7)} ${h.minutes}m ago with no verdict comment on the PR`;
|
|
113
|
+
case "unpushed-claim": return `- ${h.agentId}: "${h.stream}" claimed ${h.minutes}m ago (since ${h.since}) and nothing from ${h.branch} has reached origin — push, or say what is holding the slice`;
|
|
114
|
+
case "lane-left-population": return `- ${h.agentId}: "${h.stream}" LEFT the scored population since the last run with no closing state — its row is gone; close it through a state (✅/⏸/⛔), never by deletion`;
|
|
115
|
+
case "unread-delete-claim": return `- ${h.agentId}: closing line for ${h.pr === null ? "a merge" : `#${h.pr}`} ${h.minutes}m ago asserts a branch deletion it did not show it read — say \`remote ref read: 0 refs at <ts>\` or \`delete requested\``;
|
|
116
|
+
case "merge-window-write": return `- ${String(h.sha).slice(0, 7)} (${h.author}) wrote a record document ${h.secondsIntoWindow}s into MERGE WINDOW #${h.pr} — hold queue/board/DONE writes between the window's open and close`;
|
|
117
|
+
default: return `- ${JSON.stringify(h)}`;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
const byAudience = { duty: r.hits.filter((h) => h.audience === "duty"), "board-owner": r.hits.filter((h) => h.audience !== "duty") };
|
|
121
|
+
let boardOwner = boardOwnerFlag;
|
|
122
|
+
if (!boardOwner) {
|
|
123
|
+
const bp = path.join(repo, "docs/WORKSTREAMS.md");
|
|
124
|
+
boardOwner = existsFs(bp) ? boardOwnerOf(readFs(bp, "utf8")) : null;
|
|
125
|
+
}
|
|
126
|
+
const trailer = `\n\nThis is a scheduled check (${LABEL}), not a person watching. Verify before acting, and DM the seat concerned, not this clock.`;
|
|
127
|
+
if (byAudience.duty.length && duty) {
|
|
128
|
+
// ⟨q-138f4b78⟩ — an agent→agent DM past the typed-record cutover MUST carry a record, or nothing is written and the HIT reaches nobody.
|
|
99
129
|
await sendMessageTool({
|
|
100
|
-
from,
|
|
101
|
-
|
|
102
|
-
|
|
130
|
+
from, to: duty,
|
|
131
|
+
text: `AGENT_ACTION: stall_check HIT — ${byAudience.duty.length} of ${r.checked} scored lane(s) need a look (audience: duty).\n${byAudience.duty.map(line).join("\n")}${trailer}`,
|
|
132
|
+
record: { type: "action", payload: { summary: `stall_check HIT — ${byAudience.duty.length} of ${r.checked} scored lane(s) need a look: ${byAudience.duty.map((h) => h.agentId ?? h.kind).join(", ")}` } },
|
|
103
133
|
});
|
|
104
134
|
}
|
|
135
|
+
if (byAudience["board-owner"].length) {
|
|
136
|
+
const to = boardOwner ?? duty;
|
|
137
|
+
if (to) {
|
|
138
|
+
const fallback = boardOwner ? "" : "\n(no board owner set and none named in the board's Rooms table — sent to the duty officer instead; pass --board-owner)";
|
|
139
|
+
await sendMessageTool({
|
|
140
|
+
from, to,
|
|
141
|
+
record: { type: "action", payload: { summary: `stall_check — ${byAudience["board-owner"].length} bookkeeping finding(s) for the board owner: ${byAudience["board-owner"].map((h) => h.kind).join(", ")}` } },
|
|
142
|
+
text: `AGENT_ACTION: stall_check — ${byAudience["board-owner"].length} BOOKKEEPING finding(s) (audience: board-owner). Not stalls; the lanes' seats did nothing wrong.\n${byAudience["board-owner"].map(line).join("\n")}${fallback}${trailer}`,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
105
146
|
|
|
106
147
|
// Null result to stdout every run: the log is the record a human reads, and a
|
|
107
148
|
// trigger that only speaks when it fires cannot be told from a broken one.
|
|
108
149
|
const um = r.unmeasurable?.length ? `, ${r.unmeasurable.length} unmeasurable` : "";
|
|
109
150
|
console.log(
|
|
110
151
|
r.hits.length
|
|
111
|
-
? `[stall-clock] HIT ${r.hits.length}/${r.checked}${um}${duty ? `
|
|
152
|
+
? `[stall-clock] HIT ${r.hits.length}/${r.checked}${um} — duty:${byAudience.duty.length}${duty ? ` → ${duty}` : " (NO DUTY OFFICER SET, no DM)"} · board-owner:${byAudience["board-owner"].length}${byAudience["board-owner"].length ? ` → ${boardOwner ?? (duty ? `${duty} (fallback)` : "nobody")}` : ""}`
|
|
112
153
|
: `[stall-clock] MISS 0/${r.checked}${um} — no DM, run recorded`,
|
|
113
154
|
);
|
|
114
155
|
} catch (e) {
|
package/src/capabilities.ts
CHANGED
|
@@ -47,6 +47,9 @@ import {
|
|
|
47
47
|
type TransportKind,
|
|
48
48
|
} from "./transports/index.js";
|
|
49
49
|
import { readAllTransportMarkers } from "./tools/registry.js";
|
|
50
|
+
import { queueWriteSchema } from "./tools/queue-write.js";
|
|
51
|
+
import { treeProvenance } from "./tools/tree-provenance.js";
|
|
52
|
+
import { detectSpread } from "./server-spread.js";
|
|
50
53
|
|
|
51
54
|
export type ProbeResult = {
|
|
52
55
|
id: string;
|
|
@@ -59,6 +62,69 @@ export type ProbeResult = {
|
|
|
59
62
|
|
|
60
63
|
type Probe = { id: string; since: string; run: () => { present: boolean; evidence: string } };
|
|
61
64
|
|
|
65
|
+
/**
|
|
66
|
+
* ⛔⛆⛆ THE PROBE DECISIONS ARE EXPORTED AS PURE PREDICATES, AND THE MUTATION
|
|
67
|
+
* MATRIX IS WHY.
|
|
68
|
+
*
|
|
69
|
+
* Their first form computed `present` inline and built an evidence string from
|
|
70
|
+
* the same raw values. Deleting a conjunct from `present` reddened NOTHING: the
|
|
71
|
+
* tests asserted the EVIDENCE TEXT, which the mutation did not touch, and the
|
|
72
|
+
* probe's own fixed input could not produce the rejected case. ⭐⭐ ***A
|
|
73
|
+
* predicate that cannot be handed the input it is supposed to reject is not
|
|
74
|
+
* guarded — it is decorative, which is the defect one row over and the same
|
|
75
|
+
* shape this row is about.***
|
|
76
|
+
*
|
|
77
|
+
* Exported so a control can pass the failing shape directly.
|
|
78
|
+
*/
|
|
79
|
+
export function retagAccepted(parse: (v: string) => boolean): boolean {
|
|
80
|
+
// BOTH halves matter: the new member must parse AND a pre-existing one must
|
|
81
|
+
// still parse. Without the control a schema that accepted ANY string would pass.
|
|
82
|
+
return parse("retag") === true && parse("reprioritise") === true;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* `#283`'s load-bearing property, and it is NOT "it answered": an unfetchable
|
|
87
|
+
* tree must report `"unknown"` and NEVER `0`. A distance of `0` from an
|
|
88
|
+
* unfetched ref and from a fetched one are byte-identical and mean opposite
|
|
89
|
+
* things — so a numeric `behind` on a tree that was never fetched is the exact
|
|
90
|
+
* failure the verb exists to prevent.
|
|
91
|
+
*/
|
|
92
|
+
export function treeProvenanceRefusesZero(r: { behind: number | "unknown"; fetched: boolean; stale: boolean }): boolean {
|
|
93
|
+
return r.behind === "unknown" && r.fetched === false && r.stale === false;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* `#293`'s load-bearing property (0.26.22): a seat that publishes NO module path
|
|
98
|
+
* makes the fleet `CANNOT_COMPARE` — it is never dropped from the population so
|
|
99
|
+
* the readable rest can answer `AGREED`. ⛔ BOTH CONTROLS ARE CONJUNCTS ON
|
|
100
|
+
* PURPOSE: readable seats on one side of the install must still `AGREED` and on
|
|
101
|
+
* two sides must still `DIVERGED`, or a detector that answered
|
|
102
|
+
* `CANNOT_COMPARE` for everything would pass this probe while detecting nothing.
|
|
103
|
+
*
|
|
104
|
+
* ⭐ AND THIS PROBE EXISTS BECAUSE THE GATE ONE ROW OVER FIRED ON ITS OWN PR:
|
|
105
|
+
* `#293` bumped `0.26.22` with behaviour and no probe, `main` moved under
|
|
106
|
+
* `#292`, and qa measured `probedThrough 0.26.21 < running 0.26.22 → ok:false`.
|
|
107
|
+
* The remedy is the probe, not a softer comparison — softening it would turn
|
|
108
|
+
* the verb back into the label read ⟨q-1c8e35f9⟩ exists to end.
|
|
109
|
+
*/
|
|
110
|
+
/**
|
|
111
|
+
* ⟨q-8a3f1c05⟩ / #303 — IN-FLIGHT IS DERIVED FROM THE SEAM, NOT MATCHED ON A GLYPH.
|
|
112
|
+
* A 0.26.21 server read `⛔ Blocked — was 🚧 until the base went red` as IN FLIGHT
|
|
113
|
+
* (the regex `/🚧|🔍/` matched the mention); the seam's `workStateOf` reads the
|
|
114
|
+
* LEADING glyph and answers blocked. All three conjuncts matter: the old answer
|
|
115
|
+
* for the blocked row must be refused AND the two genuine in-flight states must
|
|
116
|
+
* still read in flight, or a predicate that answers false to everything passes.
|
|
117
|
+
* The version label did not move for #303 (still 0.26.22), so `check-probe-coverage`
|
|
118
|
+
* could not see the behaviour arrive — this probe is what sees it.
|
|
119
|
+
*/
|
|
120
|
+
export function inFlightDerivedFromSeam(inFlight: (status: string) => boolean): boolean {
|
|
121
|
+
return inFlight("⛔ Blocked — was 🚧 until the base went red") === false && inFlight("🔍 In Review") === true && inFlight("🚧 In Progress") === true;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export function spreadPoisonedByUnreadableSeat(states: { unreadable: string; agreed: string; diverged: string }): boolean {
|
|
125
|
+
return states.unreadable === "CANNOT_COMPARE" && states.agreed === "AGREED" && states.diverged === "DIVERGED";
|
|
126
|
+
}
|
|
127
|
+
|
|
62
128
|
/**
|
|
63
129
|
* Each probe calls a behaviour that did not exist before its release and
|
|
64
130
|
* reports what it observed. A probe that could pass without the code being
|
|
@@ -124,6 +190,86 @@ const PROBES: Probe[] = [
|
|
|
124
190
|
};
|
|
125
191
|
},
|
|
126
192
|
},
|
|
193
|
+
/**
|
|
194
|
+
* ⛔⛆⛆ THE PROBES BELOW CLOSE THE WINDOW ⟨q-1c8e35f9⟩ MEASURED.
|
|
195
|
+
*
|
|
196
|
+
* Before them the newest `since` was `0.26.15`, so `capabilities` answered
|
|
197
|
+
* `ok · missing: []` identically on every version from `0.26.16` to `0.26.21`
|
|
198
|
+
* — the whole set the fleet was about to install.
|
|
199
|
+
*
|
|
200
|
+
* ⚠ AND THE TRAP THE ROW NAMES IS THE ONE TO AVOID WHILE WRITING THESE:
|
|
201
|
+
* `away-means-david-away` EXISTS, its NAME matches the changed area, and its
|
|
202
|
+
* ASSERTION predates the change — it tests `0.26.13`'s refusal list, not
|
|
203
|
+
* `#216`'s query mode. ⭐⭐ ***A probe whose name matches while its assertion
|
|
204
|
+
* predates reads as coverage and is not. So each probe below asserts a
|
|
205
|
+
* behaviour that DID NOT EXIST before its own `since`, and would throw or
|
|
206
|
+
* return `false` on the release before it.***
|
|
207
|
+
*/
|
|
208
|
+
{
|
|
209
|
+
// #284 — `queue_write` gained `op: "retag"`. On 0.26.20 the enum has three
|
|
210
|
+
// members and parsing `"retag"` throws, which is the probe's whole point.
|
|
211
|
+
id: "queue-write-retag",
|
|
212
|
+
since: "0.26.21",
|
|
213
|
+
run: () => {
|
|
214
|
+
const parse = (v: string) => queueWriteSchema.op.safeParse(v).success === true;
|
|
215
|
+
const present = retagAccepted(parse);
|
|
216
|
+
return {
|
|
217
|
+
present,
|
|
218
|
+
evidence: `queue_write op accepts "retag": ${parse("retag")} (control "reprioritise": ${parse("reprioritise")}) -> present=${present}`,
|
|
219
|
+
};
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
// #283 — every `repo`-taking verb reports the tree it read. The load-bearing
|
|
224
|
+
// property is NOT that it answers, it is that an unfetchable tree yields
|
|
225
|
+
// `"unknown"` and NEVER `0`: a distance of 0 from an unfetched ref and from a
|
|
226
|
+
// fetched one are byte-identical and mean opposite things.
|
|
227
|
+
id: "tree-provenance-unknown-not-zero",
|
|
228
|
+
since: "0.26.21",
|
|
229
|
+
run: () => {
|
|
230
|
+
const r = treeProvenance("/nonexistent-path-for-capability-probe");
|
|
231
|
+
const present = treeProvenanceRefusesZero(r);
|
|
232
|
+
return {
|
|
233
|
+
present,
|
|
234
|
+
evidence: `unreachable tree -> behind=${JSON.stringify(r.behind)} fetched=${r.fetched} stale=${r.stale} -> present=${present}`,
|
|
235
|
+
};
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
// #293 — `detectSpread` did not exist before 0.26.22. The property is not
|
|
240
|
+
// "it answers": an UNREADABLE seat must poison the verdict rather than be
|
|
241
|
+
// dropped, while readable seats still resolve to AGREED / DIVERGED.
|
|
242
|
+
id: "server-spread-unreadable-poisons",
|
|
243
|
+
since: "0.26.22",
|
|
244
|
+
run: () => {
|
|
245
|
+
const installed = { mtime: 1_000, module: "/installed-for-capability-probe" };
|
|
246
|
+
const a = { agentId: "a", serverStartedAt: 2_000, serverModule: installed.module };
|
|
247
|
+
const b = { agentId: "b", serverStartedAt: 3_000, serverModule: installed.module };
|
|
248
|
+
const older = { agentId: "older", serverStartedAt: 500, serverModule: installed.module };
|
|
249
|
+
const mute = { agentId: "mute" };
|
|
250
|
+
const states = {
|
|
251
|
+
unreadable: detectSpread([a, mute], installed).state,
|
|
252
|
+
agreed: detectSpread([a, b], installed).state,
|
|
253
|
+
diverged: detectSpread([a, older], installed).state,
|
|
254
|
+
};
|
|
255
|
+
const present = spreadPoisonedByUnreadableSeat(states);
|
|
256
|
+
return {
|
|
257
|
+
present,
|
|
258
|
+
evidence: `unreadable seat -> ${states.unreadable} · same side -> ${states.agreed} · two sides -> ${states.diverged} -> present=${present}`,
|
|
259
|
+
};
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
// #303 (shipped under 0.26.22, no bump) — `isInFlightStatus` derives from the seam.
|
|
264
|
+
id: "in-flight-derives-from-seam",
|
|
265
|
+
since: "0.26.22",
|
|
266
|
+
run: () => {
|
|
267
|
+
const blocked = isInFlightStatus("⛔ Blocked — was 🚧 until the base went red");
|
|
268
|
+
const review = isInFlightStatus("🔍 In Review");
|
|
269
|
+
const present = inFlightDerivedFromSeam(isInFlightStatus);
|
|
270
|
+
return { present, evidence: `"⛔ Blocked — was 🚧 …" in flight: ${blocked} (0.26.21 said true) · "🔍 In Review": ${review} -> present=${present}` };
|
|
271
|
+
},
|
|
272
|
+
},
|
|
127
273
|
{
|
|
128
274
|
id: "record-authority",
|
|
129
275
|
since: "0.24.0",
|
|
@@ -184,13 +330,82 @@ export type CapabilityReport = {
|
|
|
184
330
|
*/
|
|
185
331
|
answeredBy: { pid: number; startedAtIso: string; module: string; versionLabel: string };
|
|
186
332
|
probes: ProbeResult[];
|
|
333
|
+
/** Whether the probes reach the version this process claims to be. */
|
|
334
|
+
coverage: {
|
|
335
|
+
probedThrough: string | null;
|
|
336
|
+
running: string;
|
|
337
|
+
covered: boolean;
|
|
338
|
+
verdict: string;
|
|
339
|
+
};
|
|
187
340
|
missing: string[];
|
|
341
|
+
/** Every probe passed AND the probes reach the running version. */
|
|
188
342
|
ok: boolean;
|
|
189
343
|
/** Absent only if the probe itself threw — see `probeTransport`. */
|
|
190
344
|
transport?: TransportCapability;
|
|
191
345
|
note: string;
|
|
192
346
|
};
|
|
193
347
|
|
|
348
|
+
/**
|
|
349
|
+
* ⛔⛆⛆ `missing: []` MEANS TWO DIFFERENT THINGS AND THIS SEPARATES THEM.
|
|
350
|
+
*
|
|
351
|
+
* "Nothing is missing" and "nothing was tested" produce the SAME answer today.
|
|
352
|
+
* ⭐⭐ ***Measured 2026-09-14: `capabilities` answered `ok · missing: []`
|
|
353
|
+
* IDENTICALLY on `0.26.20` and `0.26.21` — the probe set stops at `since
|
|
354
|
+
* 0.26.15`, so every version the fleet was about to install was unprobed, and
|
|
355
|
+
* the verb the fleet reaches for to prove a restart took could not see the three
|
|
356
|
+
* changes it would have been asked to certify.***
|
|
357
|
+
*
|
|
358
|
+
* That is `0`-vs-`unknown` inside the instrument the six delivery states END on:
|
|
359
|
+
* while this is blind, `observed` is unmeasurable BY CONSTRUCTION and every
|
|
360
|
+
* "delivered" claim in the fleet rests on a version LABEL.
|
|
361
|
+
*
|
|
362
|
+
* ⚠ THE COMPARISON IS AGAINST THE LABEL, WHICH IS NOT EVIDENCE — and that is
|
|
363
|
+
* deliberate rather than sloppy. The label is the only statement of intent
|
|
364
|
+
* available about what this process is SUPPOSED to be; the probes are the only
|
|
365
|
+
* evidence about what it IS. Comparing them is precisely how a divergence
|
|
366
|
+
* becomes visible, and this function says which side is which rather than
|
|
367
|
+
* blending them.
|
|
368
|
+
*/
|
|
369
|
+
function coverageOf(probes: ProbeResult[], versionLabel: string) {
|
|
370
|
+
const cmp = (a: string, b: string) => {
|
|
371
|
+
const pa = a.split(".").map((n) => Number.parseInt(n, 10));
|
|
372
|
+
const pb = b.split(".").map((n) => Number.parseInt(n, 10));
|
|
373
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i += 1) {
|
|
374
|
+
const x = Number.isFinite(pa[i]) ? pa[i] : 0;
|
|
375
|
+
const y = Number.isFinite(pb[i]) ? pb[i] : 0;
|
|
376
|
+
if (x !== y) return x < y ? -1 : 1;
|
|
377
|
+
}
|
|
378
|
+
return 0;
|
|
379
|
+
};
|
|
380
|
+
const sinces = probes.map((p) => p.since).filter((v) => /^\d+(\.\d+)*$/.test(v));
|
|
381
|
+
const probedThrough = sinces.length ? sinces.reduce((hi, v) => (cmp(v, hi) > 0 ? v : hi)) : null;
|
|
382
|
+
const labelUsable = /^\d+(\.\d+)*$/.test(versionLabel);
|
|
383
|
+
|
|
384
|
+
if (!probedThrough || !labelUsable) {
|
|
385
|
+
return {
|
|
386
|
+
probedThrough,
|
|
387
|
+
running: versionLabel,
|
|
388
|
+
covered: false as const,
|
|
389
|
+
verdict:
|
|
390
|
+
`COVERAGE UNKNOWN — ${!probedThrough ? "no probe declares a numeric `since`" : "the version label is not numeric"}. ` +
|
|
391
|
+
`Unknown is not covered: this cannot be read as "nothing is missing".`,
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
const covered = cmp(probedThrough, versionLabel) >= 0;
|
|
395
|
+
return {
|
|
396
|
+
probedThrough,
|
|
397
|
+
running: versionLabel,
|
|
398
|
+
covered,
|
|
399
|
+
verdict: covered
|
|
400
|
+
? `PROBES REACH THE RUNNING VERSION — newest probe \`since ${probedThrough}\`, label \`${versionLabel}\`. ` +
|
|
401
|
+
`So \`missing: []\` here means TESTED-AND-PRESENT rather than untested.`
|
|
402
|
+
: `UNPROBED WINDOW \`${probedThrough}\` → \`${versionLabel}\` — every behaviour introduced after ` +
|
|
403
|
+
`\`${probedThrough}\` is UNTESTED by this verb. \`missing: []\` below therefore does NOT mean "nothing is ` +
|
|
404
|
+
`missing"; it means "nothing in that window was looked at". A restart certified on this answer certifies the ` +
|
|
405
|
+
`versions it can see and is silent about the ones it cannot.`,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
|
|
194
409
|
export function probeCapabilities(context: { module: string; versionLabel: string }): CapabilityReport {
|
|
195
410
|
const probes: ProbeResult[] = PROBES.map((p) => {
|
|
196
411
|
try {
|
|
@@ -205,7 +420,9 @@ export function probeCapabilities(context: { module: string; versionLabel: strin
|
|
|
205
420
|
}
|
|
206
421
|
});
|
|
207
422
|
const missing = probes.filter((p) => !p.present).map((p) => p.id);
|
|
423
|
+
const coverage = coverageOf(probes, context.versionLabel);
|
|
208
424
|
return {
|
|
425
|
+
coverage,
|
|
209
426
|
answeredBy: {
|
|
210
427
|
pid: process.pid,
|
|
211
428
|
startedAtIso: new Date(Date.now() - Math.round(process.uptime() * 1000)).toISOString(),
|
|
@@ -214,7 +431,14 @@ export function probeCapabilities(context: { module: string; versionLabel: strin
|
|
|
214
431
|
},
|
|
215
432
|
probes,
|
|
216
433
|
missing,
|
|
217
|
-
|
|
434
|
+
/**
|
|
435
|
+
* ⛔ `ok` NOW REQUIRES COVERAGE AS WELL AS PRESENCE. It previously meant
|
|
436
|
+
* "no probe failed", which on an unprobed version is "no probe ran" — the
|
|
437
|
+
* reading this row exists to stop. A reader asking "is this server good?"
|
|
438
|
+
* gets `false` when the honest answer is "I cannot tell", and `coverage`
|
|
439
|
+
* says which of the two it is.
|
|
440
|
+
*/
|
|
441
|
+
ok: missing.length === 0 && coverage.covered,
|
|
218
442
|
note:
|
|
219
443
|
"Every line above was produced by CALLING the code in this process. `versionLabel` is a label someone typed " +
|
|
220
444
|
"into package.json and is context, never evidence — a published tarball has already been observed carrying a " +
|
|
@@ -227,6 +451,8 @@ export function probeCapabilities(context: { module: string; versionLabel: strin
|
|
|
227
451
|
/* ── the verb ──────────────────────────────────────────────────────────────── */
|
|
228
452
|
|
|
229
453
|
import { resolveServerIdentity } from "./server-identity.js";
|
|
454
|
+
import { seatBuildOf, installedFrom, psReader, type SeatBuild } from "./tools/seat-build.js";
|
|
455
|
+
import { isInFlightStatus } from "./tools/stall.js";
|
|
230
456
|
|
|
231
457
|
export const capabilitiesSchema = {} as const;
|
|
232
458
|
|
|
@@ -274,11 +500,47 @@ export async function probeTransport(): Promise<TransportCapability> {
|
|
|
274
500
|
};
|
|
275
501
|
}
|
|
276
502
|
|
|
503
|
+
/**
|
|
504
|
+
* ⟨q-8a3f1c05⟩ — EVERY LIVE SEAT'S BUILD STATE, STATED. The restart operation read
|
|
505
|
+
* `capabilities` to certify a stage and it could not see a pusher; this is that verb
|
|
506
|
+
* answering the question it was asked. `seats[]` carries each live seat's PUSHER half
|
|
507
|
+
* (keyed by the `--agent` on its own command line, against the installed hook's mtime);
|
|
508
|
+
* `answering` carries the SERVER half of the one process that can know it — this one.
|
|
509
|
+
* Servers carry no `--agent`, so no other seat's server is observable from here, and
|
|
510
|
+
* each seat entry says so rather than borrowing its marker's attach-time stamp.
|
|
511
|
+
*/
|
|
512
|
+
export async function seatBuilds(): Promise<{ installed: { module: string; hookPath: string; hookMtime: string | null; buildMtime: string | null }; answering: SeatBuild["server"]; seats: SeatBuild[]; note: string }> {
|
|
513
|
+
const id = resolveServerIdentity();
|
|
514
|
+
const installed = installedFrom(id.path);
|
|
515
|
+
const startedAt = Date.now() - Math.round(process.uptime() * 1000);
|
|
516
|
+
const answering = seatBuildOf({ agentId: "(answering process)", marker: undefined, installed, ps: psReader, server: { pid: process.pid, startedAt, buildMtime: installed.buildMtime } }).server;
|
|
517
|
+
const seats: SeatBuild[] = [];
|
|
518
|
+
try {
|
|
519
|
+
for (const { marker, live } of await readAllTransportMarkers()) {
|
|
520
|
+
if (!live) continue;
|
|
521
|
+
seats.push(seatBuildOf({ agentId: marker.agentId, marker, installed, ps: psReader, server: null }));
|
|
522
|
+
}
|
|
523
|
+
} catch {
|
|
524
|
+
/* an unreadable transports dir yields no seats — an empty list, not a healthy fleet */
|
|
525
|
+
}
|
|
526
|
+
const toIso = (ms: number | null) => (ms === null ? null : new Date(ms).toISOString());
|
|
527
|
+
return {
|
|
528
|
+
installed: { module: installed.module, hookPath: installed.hookPath, hookMtime: toIso(installed.hookMtime), buildMtime: toIso(installed.buildMtime) },
|
|
529
|
+
answering,
|
|
530
|
+
seats,
|
|
531
|
+
note:
|
|
532
|
+
"seats[] states each live seat's PUSHER against the installed hook's own mtime (hooks/tmux-pusher.mjs, read directly), " +
|
|
533
|
+
"keyed by the --agent on the pusher's command line. The SERVER half is known only for the answering process " +
|
|
534
|
+
"(`answering`): servers carry no --agent, so another seat's server cannot be keyed from ps — ask that seat's own " +
|
|
535
|
+
"`status`, which states both halves for itself. A seat that reads current here and stale in its own status is half-restarted.",
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
|
|
277
539
|
export async function capabilitiesTool() {
|
|
278
540
|
const id = resolveServerIdentity();
|
|
279
541
|
const report = probeCapabilities({ module: id.path, versionLabel: id.version });
|
|
280
542
|
try {
|
|
281
|
-
return { ...report, transport: await probeTransport() };
|
|
543
|
+
return { ...report, transport: await probeTransport(), seats: await seatBuilds() };
|
|
282
544
|
} catch (e) {
|
|
283
545
|
// A THROWN TRANSPORT PROBE IS NOT A BROKEN VERB. An unknown configured value
|
|
284
546
|
// refuses at startup by design, and this verb is exactly what an operator
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ⟨q-fee7239f⟩ — A CLOSING LINE STATES AN ARTEFACT IT HAS NOT READ.
|
|
3
|
+
*
|
|
4
|
+
* Measured 2026-09-14 in one clock: #318 merged 18:12:42Z · "Remote branch
|
|
5
|
+
* deleted" posted 18:12:53.626Z · head_ref_deleted 18:13:27Z — the claim
|
|
6
|
+
* preceded its artefact by 33.4s; #319 by 61.7s. Then qa re-read
|
|
7
|
+
* `git ls-remote --heads origin` after #321 and withdrew the same line for
|
|
8
|
+
* FIVE merges (#309 #311 #315 #317 #321) where the remote was NEVER deleted:
|
|
9
|
+
* `gh --delete-branch` had not deleted the remote when the local delete
|
|
10
|
+
* errored, and the closing line reported THE FLAG IT PASSED rather than the
|
|
11
|
+
* remote it never read. A closing line already verifies the squash by content;
|
|
12
|
+
* the ref gets the same rule. The grammar admits exactly two forms for a
|
|
13
|
+
* deletion: a post-delete observation — `remote ref read: 0 refs at <ts>` —
|
|
14
|
+
* or the weaker `delete requested`, which claims no state. A closing that
|
|
15
|
+
* asserts deletion in any other wording is refused at the send, by the same
|
|
16
|
+
* check that requires a DONE to cite its PR, naming both forms.
|
|
17
|
+
*
|
|
18
|
+
* Dated adoption floor: qa's 18:36:30.939Z message — "From here every closing
|
|
19
|
+
* line reads the remote before claiming a delete". Closings at or before it
|
|
20
|
+
* are LISTED, never raised.
|
|
21
|
+
*/
|
|
22
|
+
export const CLOSING_GRAMMAR_ADOPTED_MS = 1789410990939; // 2026-09-14T18:36:30.939Z
|
|
23
|
+
|
|
24
|
+
/** A merge-closing line: a `done` whose text says MERGED. */
|
|
25
|
+
export const isMergeClosing = (text: string): boolean => /\bMERGED\b/.test(text);
|
|
26
|
+
/**
|
|
27
|
+
* A deletion CLAIM is a statement, read by POSITION: the wording at the start
|
|
28
|
+
* of a sentence. The same words quoted mid-sentence — qa's own correction says
|
|
29
|
+
* `My "remote branch deleted" lines … were wrong` — are a mention, not a claim.
|
|
30
|
+
*/
|
|
31
|
+
export const DELETE_CLAIM = /(?:^|[.;!]\s+|\n\s*)(?:(?:Remote|Local and remote|Remote and local) (?:branch|ref) deleted|Deleted the remote (?:branch|ref))\b/;
|
|
32
|
+
/** The observation form: what `git ls-remote --heads origin <branch>` returned, and when. */
|
|
33
|
+
export const REMOTE_READ = /remote ref read:\s*(\d+)\s*refs?\s+at\s+(\S+?)(?=[.;,)]?(?:\s|$))/i;
|
|
34
|
+
/** The weaker form: a command was issued; the state is left unclaimed. */
|
|
35
|
+
export const DELETE_REQUESTED = /\bdelete requested\b/i;
|
|
36
|
+
export const ACCEPTED_FORMS = "`remote ref read: 0 refs at <ISO ts>` (an `ls-remote` observation taken AFTER the delete) or `delete requested` (a command issued; state unclaimed)";
|
|
37
|
+
|
|
38
|
+
export type ClosingLine = {
|
|
39
|
+
merged: boolean;
|
|
40
|
+
claimsDelete: boolean;
|
|
41
|
+
form: "read" | "requested" | null;
|
|
42
|
+
read?: { refs: number; at: string };
|
|
43
|
+
};
|
|
44
|
+
export function closingLineOf(text: string): ClosingLine {
|
|
45
|
+
const merged = isMergeClosing(text);
|
|
46
|
+
const claimsDelete = DELETE_CLAIM.test(text);
|
|
47
|
+
const r = REMOTE_READ.exec(text);
|
|
48
|
+
const form: ClosingLine["form"] = r ? "read" : DELETE_REQUESTED.test(text) ? "requested" : null;
|
|
49
|
+
return { merged, claimsDelete, form, ...(r ? { read: { refs: Number(r[1]), at: r[2]! } } : {}) };
|
|
50
|
+
}
|
|
51
|
+
/** The refusal: a merge closing that asserts deletion without either accepted form. */
|
|
52
|
+
export function checkClosingLine(text: string): { ok: true; closing: ClosingLine } | { ok: false; error: string; closing: ClosingLine } {
|
|
53
|
+
const closing = closingLineOf(text);
|
|
54
|
+
if (closing.merged && closing.claimsDelete && closing.form === null) {
|
|
55
|
+
return {
|
|
56
|
+
ok: false,
|
|
57
|
+
closing,
|
|
58
|
+
error:
|
|
59
|
+
`a merge-closing line asserts a branch deletion it has not shown it read — "Remote branch deleted" reports a flag passed, not a remote observed (2 of 2 measured were premature, 5 of 7 were false). ` +
|
|
60
|
+
`State the deletion in one of the two accepted forms: ${ACCEPTED_FORMS}.`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return { ok: true, closing };
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export type Closing = { pr: number | null; from: string; ts: number; claimsDelete: boolean; form: ClosingLine["form"]; beforeAdoption: boolean };
|
|
67
|
+
/** Every merge closing in a log, judged; `beforeAdoption` for those at or before the floor. */
|
|
68
|
+
export function closingsIn(logText: string, floorMs: number = CLOSING_GRAMMAR_ADOPTED_MS): Closing[] {
|
|
69
|
+
const out: Closing[] = [];
|
|
70
|
+
for (const l of logText.split("\n")) {
|
|
71
|
+
if (!l.trim()) continue;
|
|
72
|
+
let o: { ts?: number; from?: string; text?: string; record?: { type?: string; cites?: { ref?: string }[] } };
|
|
73
|
+
try { o = JSON.parse(l); } catch { continue; }
|
|
74
|
+
if (o.record?.type !== "done") continue;
|
|
75
|
+
const text = String(o.text ?? "");
|
|
76
|
+
const c = closingLineOf(text);
|
|
77
|
+
if (!c.merged) continue;
|
|
78
|
+
const cited = (o.record.cites ?? []).map((x) => (String(x?.ref ?? "").match(/#(\d+)/) ?? [])[1]).find(Boolean);
|
|
79
|
+
const inText = (text.match(/MERGED[^\n]*?#(\d+)/) ?? [])[1];
|
|
80
|
+
const pr = cited ?? inText;
|
|
81
|
+
const ts = Number(o.ts ?? 0);
|
|
82
|
+
out.push({ pr: pr ? Number(pr) : null, from: String(o.from ?? ""), ts, claimsDelete: c.claimsDelete, form: c.form, beforeAdoption: ts <= floorMs });
|
|
83
|
+
}
|
|
84
|
+
return out.sort((a, b) => a.ts - b.ts);
|
|
85
|
+
}
|