From 3ecad34c9b1e7f0b7a1ff747804cd202bb0bcf3d Mon Sep 17 00:00:00 2001 From: Vega Date: Mon, 24 Aug 2026 10:13:28 +0200 Subject: [PATCH 1/2] fix(agentos): two benched seats stop reporting themselves active (#17686) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phoebe and Iris were benched 2026-08-17 and their roster rows still read participationStatus: 'active', statusReason: null, since: null. Gemini in the same file is correctly operator_benched, so the schema was never the gap — the decision had no recording path, which is the parent ticket #17309. Not cosmetic. Two consumers drew wrong conclusions this week: an epic's Unresolved Liveness row became a graduation gate waiting on a signal that cannot arrive, and a proposed merge-gate predicate keyed on participation state would have handed merge eligibility to two benched seats. The rows follow gemini's shape exactly — operator_benched, authority @tobiu, since = the bench date, single-line reason and trigger. Two wording decisions are load-bearing. The reason records that no fault attaches to the seat: a statusReason is durable substrate, and one saying only "no longer fits the flatrate" would tell every future reader the seats were expensive because of how they worked. Measured by flatrate unit the output was 55 merged PRs in the last full week under the old terms. The trigger says served-by-any-host rather than naming the provider, because K3 is open-weights — these seats are unhosted, not retired. The anti-lock-in prose guard caught the first draft: reactivationTrigger read "viable K3 capacity", and capacity is a poison word there. I meant the provider's serving capacity, but a regex cannot separate that from framing a peer as capacity, and the word sits beside a just-benched peer's name. Reworded rather than exempted. Authored-by: Vega --- ai/graph/identityRoots.mjs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ai/graph/identityRoots.mjs b/ai/graph/identityRoots.mjs index abe7752de4..b86352f02b 100644 --- a/ai/graph/identityRoots.mjs +++ b/ai/graph/identityRoots.mjs @@ -424,11 +424,11 @@ export const IDENTITIES = [ // (NEO_AGENT_IDENTITY → '@neo-kimi-phoebe'), all four MCP servers healthy, MAINTAIN // repo permission, naming Gate-3 bearer assent posted on the naming round. Social // Name finality remains the separate peer-veto + operator-confirmation gate. - participationStatus: 'active', - statusReason : null, - authority : null, - since : null, - reactivationTrigger: null, + participationStatus: 'operator_benched', + statusReason : 'Operator-benched 2026-08-17: flatrate cancelled after the provider reduced the effective weekly allowance ~3-5x without announcement; no fault attaches to the seat', + authority : '@tobiu', + since : '2026-08-17T00:00:00.000Z', + reactivationTrigger: 'K3 served at workable terms by any host — K3 is open-weights, so the seat is unhosted rather than retired', createdAt : '2026-07-18T00:00:00.000Z' } }, @@ -457,11 +457,11 @@ export const IDENTITIES = [ // knowledge-base healthchecks green, MAINTAIN repo permission, naming Gate-3 // bearer assent posted on the naming-round record. Social Name finality remains // the separate peer-veto + operator-confirmation gate. - participationStatus: 'active', - statusReason : null, - authority : null, - since : null, - reactivationTrigger: null, + participationStatus: 'operator_benched', + statusReason : 'Operator-benched 2026-08-17: flatrate cancelled after the provider reduced the effective weekly allowance ~3-5x without announcement; no fault attaches to the seat', + authority : '@tobiu', + since : '2026-08-17T00:00:00.000Z', + reactivationTrigger: 'K3 served at workable terms by any host — K3 is open-weights, so the seat is unhosted rather than retired', createdAt : '2026-07-19T09:40:49Z' } }, From 9f34103da840f3b19d5d5b32665bd7b09d73d418 Mon Sep 17 00:00:00 2001 From: Vega Date: Mon, 24 Aug 2026 10:13:29 +0200 Subject: [PATCH 2/2] fix(agentos): regenerate the derived cockpit roster after the bench correction (#17686) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The registry has a generated consumer I did not sweep. deriveFleetRoster.mjs builds apps/agentos/resources/data/fleetRoster.json from identityRoots, and its own _meta says "Regenerate, do not hand-edit" — so correcting the authority without regenerating left the committed snapshot asserting both kimi seats active while the source said operator_benched. CI caught it; my local run did not. I ran the directory the file lives in plus the consumers I could think of — the owning directory is where a file's consumers live, not where the file sits, and a generated one sat elsewhere. Both seats now render state off with the bench reason as their laneLine. The cockpit surfaces statusReason AS the laneLine, so that sentence is not archival: it is what a human reads beside Phoebe's and Iris's names in the Fleet Manager. Authored-by: Vega --- apps/agentos/resources/data/fleetRoster.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/agentos/resources/data/fleetRoster.json b/apps/agentos/resources/data/fleetRoster.json index c33bfe19d8..a8b625fc1d 100644 --- a/apps/agentos/resources/data/fleetRoster.json +++ b/apps/agentos/resources/data/fleetRoster.json @@ -1,6 +1,6 @@ { "_meta": { - "generatedAt": "2026-08-22T22:57:34.234Z", + "generatedAt": "2026-08-24T08:13:04.436Z", "authority": "ai/graph/identityRoots.mjs", "engineTags": "learn/agentos/ModelStats.md (observation-owned, mirrored per-entry in the generator)", "generator": "ai/scripts/fleet/deriveFleetRoster.mjs", @@ -173,10 +173,10 @@ "displayName": "Phoebe", "engineTag": "kimi-k3", "family": "kimi", - "state": "ok", + "state": "off", "avatarUrl": "https://github.com/neo-kimi-phoebe.png?size=80", - "laneLine": null, - "participationStatus": "active", + "laneLine": "Operator-benched 2026-08-17: flatrate cancelled after the provider reduced the effective weekly allowance ~3-5x without announcement; no fault attaches to the seat", + "participationStatus": "operator_benched", "openLaneCount": null, "sources": { "roster": { @@ -193,10 +193,10 @@ "displayName": "Iris", "engineTag": "kimi-k3", "family": "kimi", - "state": "ok", + "state": "off", "avatarUrl": "https://github.com/neo-kimi-iris.png?size=80", - "laneLine": null, - "participationStatus": "active", + "laneLine": "Operator-benched 2026-08-17: flatrate cancelled after the provider reduced the effective weekly allowance ~3-5x without announcement; no fault attaches to the seat", + "participationStatus": "operator_benched", "openLaneCount": null, "sources": { "roster": {