instar 1.3.747 → 1.3.749
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +136 -2
- package/dist/commands/server.js.map +1 -1
- package/dist/core/HttpLeaseTransport.d.ts +22 -0
- package/dist/core/HttpLeaseTransport.d.ts.map +1 -1
- package/dist/core/HttpLeaseTransport.js +37 -3
- package/dist/core/HttpLeaseTransport.js.map +1 -1
- package/dist/core/LeaseCoordinator.d.ts +22 -0
- package/dist/core/LeaseCoordinator.d.ts.map +1 -1
- package/dist/core/LeaseCoordinator.js +11 -0
- package/dist/core/LeaseCoordinator.js.map +1 -1
- package/dist/core/MachinePoolRegistry.d.ts +11 -0
- package/dist/core/MachinePoolRegistry.d.ts.map +1 -1
- package/dist/core/MachinePoolRegistry.js +29 -1
- package/dist/core/MachinePoolRegistry.js.map +1 -1
- package/dist/core/PeerPresencePuller.d.ts +26 -1
- package/dist/core/PeerPresencePuller.d.ts.map +1 -1
- package/dist/core/PeerPresencePuller.js +15 -1
- package/dist/core/PeerPresencePuller.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +16 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +80 -5
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +16 -0
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/conversationBindGate.d.ts +62 -0
- package/dist/core/conversationBindGate.d.ts.map +1 -0
- package/dist/core/conversationBindGate.js +83 -0
- package/dist/core/conversationBindGate.js.map +1 -0
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +12 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/machineCoherenceAdvert.d.ts +108 -0
- package/dist/core/machineCoherenceAdvert.d.ts.map +1 -0
- package/dist/core/machineCoherenceAdvert.js +160 -0
- package/dist/core/machineCoherenceAdvert.js.map +1 -0
- package/dist/core/machineCoherenceManifest.d.ts +133 -0
- package/dist/core/machineCoherenceManifest.d.ts.map +1 -0
- package/dist/core/machineCoherenceManifest.js +293 -0
- package/dist/core/machineCoherenceManifest.js.map +1 -0
- package/dist/core/types.d.ts +21 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/CommitmentTracker.d.ts.map +1 -1
- package/dist/monitoring/CommitmentTracker.js +4 -1
- package/dist/monitoring/CommitmentTracker.js.map +1 -1
- package/dist/monitoring/MachineCoherenceSentinel.d.ts +240 -0
- package/dist/monitoring/MachineCoherenceSentinel.d.ts.map +1 -0
- package/dist/monitoring/MachineCoherenceSentinel.js +336 -0
- package/dist/monitoring/MachineCoherenceSentinel.js.map +1 -0
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +25 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/monitoring/machineCoherenceEpisode.d.ts +152 -0
- package/dist/monitoring/machineCoherenceEpisode.d.ts.map +1 -0
- package/dist/monitoring/machineCoherenceEpisode.js +92 -0
- package/dist/monitoring/machineCoherenceEpisode.js.map +1 -0
- package/dist/monitoring/machineCoherenceEpisodeManager.d.ts +210 -0
- package/dist/monitoring/machineCoherenceEpisodeManager.d.ts.map +1 -0
- package/dist/monitoring/machineCoherenceEpisodeManager.js +724 -0
- package/dist/monitoring/machineCoherenceEpisodeManager.js.map +1 -0
- package/dist/monitoring/machineCoherenceEvaluate.d.ts +129 -0
- package/dist/monitoring/machineCoherenceEvaluate.d.ts.map +1 -0
- package/dist/monitoring/machineCoherenceEvaluate.js +183 -0
- package/dist/monitoring/machineCoherenceEvaluate.js.map +1 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +7 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +1 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +1 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts +2 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +141 -88
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +65 -65
- package/src/scaffold/templates.ts +7 -1
- package/upgrades/{1.3.747.md → 1.3.748.md} +16 -0
- package/upgrades/1.3.749.md +35 -0
- package/upgrades/side-effects/action-claim-dryrun-audit-mkdir-fix.md +45 -0
- package/upgrades/side-effects/machine-coherence-guard.md +229 -0
- package/upgrades/side-effects/slack-followthrough-generalization.md +49 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* conversationBindGate — the ONE shared implementation of the
|
|
3
|
+
* durable-conversation-identity §7 bind-time authority (B7/R3-M5/R4-M3).
|
|
4
|
+
*
|
|
5
|
+
* A durable-state open on a conversation id is scoped to the session's OWN
|
|
6
|
+
* authenticated bootstrap context, enforced through the per-session bind token
|
|
7
|
+
* (delivered ONLY via the spawn env — never over a route). The server verifies
|
|
8
|
+
* the MAC and reads the bootstrap set FROM the token; it NEVER trusts a
|
|
9
|
+
* caller-supplied session name.
|
|
10
|
+
*
|
|
11
|
+
* This is factored out of the `POST /commitments` route so that
|
|
12
|
+
* `POST /action-claim/observe` (slack-followthrough-generalization §4.3) runs
|
|
13
|
+
* the SAME verification — a second copy would be exactly the drift the §7 golden
|
|
14
|
+
* test forbids. Both routes call `verifyConversationBind` and act on its typed
|
|
15
|
+
* verdict.
|
|
16
|
+
*
|
|
17
|
+
* The helper never writes an HTTP response — the caller owns status codes. On a
|
|
18
|
+
* refusal (or the R7-minor-2 tokenless-straggler backstop) it raises the SAME
|
|
19
|
+
* deduped attention item the route used to raise inline (fail-closed for a
|
|
20
|
+
* minted id; fail-open for a legacy token-less positive id).
|
|
21
|
+
*/
|
|
22
|
+
import type { ConversationBindAuth } from './conversationBindToken.js';
|
|
23
|
+
/** The minimal attention surface the gate needs (TelegramAdapter.createAttentionItem).
|
|
24
|
+
* `priority` mirrors AttentionItem's union so TelegramAdapter is assignable here
|
|
25
|
+
* under strict function types. */
|
|
26
|
+
export interface BindGateAttentionSink {
|
|
27
|
+
createAttentionItem: (item: {
|
|
28
|
+
id: string;
|
|
29
|
+
title: string;
|
|
30
|
+
summary: string;
|
|
31
|
+
category: string;
|
|
32
|
+
priority: 'URGENT' | 'HIGH' | 'NORMAL' | 'LOW';
|
|
33
|
+
sourceContext: string;
|
|
34
|
+
}) => unknown;
|
|
35
|
+
}
|
|
36
|
+
export type ConversationBindVerdict = {
|
|
37
|
+
ok: true;
|
|
38
|
+
boundBy?: string;
|
|
39
|
+
} | {
|
|
40
|
+
ok: false;
|
|
41
|
+
detail: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Verify the caller's authority to open durable state on `numericTopicId`.
|
|
45
|
+
*
|
|
46
|
+
* - `bindAuth` absent OR `numericTopicId` undefined → `{ ok: true }` (no gate;
|
|
47
|
+
* the in-process / no-topic path is unchanged).
|
|
48
|
+
* - NEGATIVE (minted) id → HARD-GATED, fail-closed: requires a valid token whose
|
|
49
|
+
* bootstrap set includes the id; else `{ ok:false }` + the deduped refusal item.
|
|
50
|
+
* - POSITIVE id WITH a token → validated against the token's bootstrap set
|
|
51
|
+
* (R6-minor-4); a bad token refuses.
|
|
52
|
+
* - POSITIVE id WITHOUT a token → legacy fail-OPEN `{ ok:true }`; past the
|
|
53
|
+
* deploy-stamp grace window the R7-minor-2 straggler backstop raises ONE
|
|
54
|
+
* deduped LOW item (the bind still succeeds).
|
|
55
|
+
*/
|
|
56
|
+
export declare function verifyConversationBind(params: {
|
|
57
|
+
bindAuth: ConversationBindAuth | null | undefined;
|
|
58
|
+
numericTopicId: number | undefined;
|
|
59
|
+
rawToken: string | undefined;
|
|
60
|
+
attention?: BindGateAttentionSink | null;
|
|
61
|
+
}): ConversationBindVerdict;
|
|
62
|
+
//# sourceMappingURL=conversationBindGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversationBindGate.d.ts","sourceRoot":"","sources":["../../src/core/conversationBindGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE;;mCAEmC;AACnC,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,EAAE,CAAC,IAAI,EAAE;QAC1B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;QAC/C,aAAa,EAAE,MAAM,CAAC;KACvB,KAAK,OAAO,CAAC;CACf;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC1C,GAAG,uBAAuB,CAqE1B"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { TOKENLESS_BIND_GRACE_DAYS } from './conversationBindToken.js';
|
|
2
|
+
/**
|
|
3
|
+
* Verify the caller's authority to open durable state on `numericTopicId`.
|
|
4
|
+
*
|
|
5
|
+
* - `bindAuth` absent OR `numericTopicId` undefined → `{ ok: true }` (no gate;
|
|
6
|
+
* the in-process / no-topic path is unchanged).
|
|
7
|
+
* - NEGATIVE (minted) id → HARD-GATED, fail-closed: requires a valid token whose
|
|
8
|
+
* bootstrap set includes the id; else `{ ok:false }` + the deduped refusal item.
|
|
9
|
+
* - POSITIVE id WITH a token → validated against the token's bootstrap set
|
|
10
|
+
* (R6-minor-4); a bad token refuses.
|
|
11
|
+
* - POSITIVE id WITHOUT a token → legacy fail-OPEN `{ ok:true }`; past the
|
|
12
|
+
* deploy-stamp grace window the R7-minor-2 straggler backstop raises ONE
|
|
13
|
+
* deduped LOW item (the bind still succeeds).
|
|
14
|
+
*/
|
|
15
|
+
export function verifyConversationBind(params) {
|
|
16
|
+
const { bindAuth, numericTopicId, rawToken, attention } = params;
|
|
17
|
+
if (!bindAuth || numericTopicId === undefined) {
|
|
18
|
+
return { ok: true };
|
|
19
|
+
}
|
|
20
|
+
const refuse = (detail) => {
|
|
21
|
+
try {
|
|
22
|
+
void attention?.createAttentionItem({
|
|
23
|
+
id: `conversation-bind-refused:${numericTopicId}`,
|
|
24
|
+
title: 'A durable bind on a conversation id was refused',
|
|
25
|
+
summary: `A durable-state open targeting topicId ${numericTopicId} was refused: ${detail} (durable-conversation-identity §7 — never silently delivered into a foreign conversation).`,
|
|
26
|
+
category: 'conversation-identity',
|
|
27
|
+
priority: 'NORMAL',
|
|
28
|
+
sourceContext: 'conversation-identity',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
/* attention is observability */
|
|
33
|
+
}
|
|
34
|
+
return { ok: false, detail };
|
|
35
|
+
};
|
|
36
|
+
if (numericTopicId < 0) {
|
|
37
|
+
// Minted-id bind: hard-gated, fail-closed.
|
|
38
|
+
if (!rawToken) {
|
|
39
|
+
return refuse('minted-id bind requires the session bind token (missing X-Instar-Bind-Token)');
|
|
40
|
+
}
|
|
41
|
+
const payload = bindAuth.verify(rawToken);
|
|
42
|
+
if (!payload) {
|
|
43
|
+
return refuse('bind token missing/invalid (MAC verification failed)');
|
|
44
|
+
}
|
|
45
|
+
if (!payload.bootstrapConversationIds.includes(numericTopicId)) {
|
|
46
|
+
return refuse(`conversation ${numericTopicId} is not in the session's authenticated bootstrap context`);
|
|
47
|
+
}
|
|
48
|
+
return { ok: true, boundBy: `session:${payload.sessionName}` };
|
|
49
|
+
}
|
|
50
|
+
if (rawToken) {
|
|
51
|
+
// R6-minor-4: a TOKEN-BEARING session's positive-id bind validates against
|
|
52
|
+
// the token's bootstrap set.
|
|
53
|
+
const payload = bindAuth.verify(rawToken);
|
|
54
|
+
if (!payload) {
|
|
55
|
+
return refuse('bind token invalid (MAC verification failed)');
|
|
56
|
+
}
|
|
57
|
+
if (!payload.bootstrapConversationIds.includes(numericTopicId)) {
|
|
58
|
+
return refuse(`topic ${numericTopicId} is not in the session's authenticated bootstrap context`);
|
|
59
|
+
}
|
|
60
|
+
return { ok: true, boundBy: `session:${payload.sessionName}` };
|
|
61
|
+
}
|
|
62
|
+
// Token-less LEGACY positive-id bind: keeps today's ungated fail-OPEN behavior.
|
|
63
|
+
// Past the deploy-stamp grace window, the straggler backstop raises ONE deduped
|
|
64
|
+
// item so a long-lived ungated session is a visible operator decision (R7-minor-2).
|
|
65
|
+
const ageDays = bindAuth.deployStampAgeDays();
|
|
66
|
+
if (ageDays !== null && ageDays >= TOKENLESS_BIND_GRACE_DAYS) {
|
|
67
|
+
try {
|
|
68
|
+
void attention?.createAttentionItem({
|
|
69
|
+
id: 'conversation-bind-tokenless-straggler',
|
|
70
|
+
title: 'A token-less session is still opening durable state',
|
|
71
|
+
summary: `A durable-state open (topicId ${numericTopicId}) arrived without a bind token ${ageDays} days after the bind-token increment deployed (grace ${TOKENLESS_BIND_GRACE_DAYS}d). The bind SUCCEEDED (legacy behavior); respawn long-lived sessions to close the window (durable-conversation-identity §7 R7-minor-2).`,
|
|
72
|
+
category: 'conversation-identity',
|
|
73
|
+
priority: 'LOW',
|
|
74
|
+
sourceContext: 'conversation-identity',
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
/* attention is observability */
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { ok: true };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=conversationBindGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversationBindGate.js","sourceRoot":"","sources":["../../src/core/conversationBindGate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAoe/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EA2JnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E"}
|
|
@@ -156,6 +156,12 @@ export const DEV_GATED_FEATURES = [
|
|
|
156
156
|
description: 'Durable conversation identity — the §5 deliverToConversation funnel\'s minted-id (id<0) DELIVERY arm (durable-conversation-identity §9). The registry/journal/eager-mint FOUNDATION is always-on and NOT gated here; only delivery rides this gate.',
|
|
157
157
|
justification: 'Delivery is externally visible, so the block ships dryRun:true even live-on-dev: the id<0 arm returns typed §5.1 non-deliveries + would-deliver audit lines (never success-shaped) until a deliberate dryRun:false flip for the live proof. Zero consumers ride the funnel in increment 1, so enabling is inert until the §6.1 proof-consumer increment; no spend, no destructive action, no egress while dry.',
|
|
158
158
|
},
|
|
159
|
+
{
|
|
160
|
+
name: 'actionClaimSlack',
|
|
161
|
+
configPath: 'messaging.actionClaim.slack.enabled',
|
|
162
|
+
description: 'Slack follow-through generalization — the /action-claim/observe registration lane for NEGATIVE (minted Slack) conversation ids (spec: slack-followthrough-generalization §8.1). Registration only; follow-through DELIVERY rides the separate conversationIdentity.followThrough gate.',
|
|
163
|
+
justification: 'SIGNAL-ONLY: registration fires AFTER the Slack reply already went out (the Stop hook runs at turn end) — it can never block/delay/rewrite a message. Ships messaging.actionClaim.slack.dryRun:true even live-on-dev: the observe route runs the full classify + §7 bind-verify + would-register decision and appends a logs/action-claim-observe.jsonl audit line, but performs NO record() until a deliberate dryRun:false for the live proof. A minted-id write is §7 fail-closed (a foreign/unauthenticated caller is refused); the shared per-topic cap + 6h expiry bound the durable surface. The master messaging.actionClaim.enabled must be on for the Stop hook to POST at all. No spend, no destructive action, no egress while dry. Same dogfooding posture as conversationFollowThrough.',
|
|
164
|
+
},
|
|
159
165
|
{
|
|
160
166
|
name: 'prHandLease',
|
|
161
167
|
configPath: 'monitoring.prHandLease.enabled',
|
|
@@ -312,6 +318,12 @@ export const DEV_GATED_FEATURES = [
|
|
|
312
318
|
description: 'Stranded-inbound detector (stranded-inbound-self-heal) — surfaces a Telegram/Slack topic whose owner machine is online-by-heartbeat but unable to serve (quota-walled or adapter-disconnected) while a healthy machine holds the lease, so inbound is silently dead for that topic. Raises ONE aggregated attention item per (owner-machine, stranding window).',
|
|
313
319
|
justification: 'PURE SIGNAL — its sole output is an advisory attention item; it MUTATES NOTHING (no ownership CAS, no pin write, no session kill, no direct user message). Lease-holder is the sole actor and a single-machine agent is a strict no-op, so across machines exactly one raises the item (no duplicate-voice). Synchronous + LLM-free + acquires NO spawn-cap slot (asserted by test); reads only the in-memory ownership cache + the replicated heartbeat pool view, with an explicit fail-closed staleness bound (every uncertainty — missing field, stale beat, underivable scope, pool view unavailable — routes to SKIP, never manufactures a strand). It can only ever ADD an attention item, already bounded by the existing AttentionTopicGuard flood ceiling. No egress beyond the operator-facing item, no spend, no destructive action. Runs live (no destructive write warrants a dry-run) on dev / dark on fleet. Auto-failover is a tracked v2 with named prerequisites.',
|
|
314
320
|
},
|
|
321
|
+
{
|
|
322
|
+
name: 'machineCoherence',
|
|
323
|
+
configPath: 'monitoring.machineCoherence.enabled',
|
|
324
|
+
description: 'Machine-coherence guard (machine-coherence-guard, roadmap 4.1 F4/P0-1) \u2014 the pool-wide version/flag/protocol/manifest skew EVALUATOR + episode/alarm machinery. Detects the F4 class (a dev-gated mesh feature resolving LIVE on one of the agent\u2019s machines and DARK on another silently halves a cross-machine guarantee) and raises ONE deduped episode-scoped attention item from exactly ONE elected machine. NOTE: only the evaluator/alarm ride this gate \u2014 the \u00a73.2 advert EMISSION ships live unconditionally (M3).',
|
|
325
|
+
justification: 'SIGNAL-ONLY \u2014 it never blocks, equalizes, or restarts anything; its sole output is one episode-scoped attention item (and the \u00a74.2.1 fix is operator-approval-gated per episode, never autonomous). Fully deterministic (Tier 0, no LLM call, no spend), no egress beyond the existing signed mesh reads, fails toward silence on evaluator error. Ships dryRun:true even on dev (dry-run FIRST: counters record would-raise, NO item) with the D7 soak criterion gating each rollout rung; single-machine agents are a strict no-op at every layer.',
|
|
326
|
+
},
|
|
315
327
|
{
|
|
316
328
|
name: 'yieldSafety',
|
|
317
329
|
configPath: 'monitoring.yieldSafety.enabled',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devGatedFeatures.js","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAoBH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD;QACE,IAAI,EAAE,yBAAyB;QAC/B,UAAU,EAAE,6CAA6C;QACzD,WAAW,EAAE,+MAA+M;QAC5N,aAAa,EAAE,ikBAAikB;KACjlB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,iCAAiC;QAC7C,WAAW,EAAE,sPAAsP;QACnQ,aAAa,EAAE,uhBAAuhB;KACviB;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,wCAAwC;QACpD,WAAW,EAAE,gNAAgN;QAC7N,aAAa,EAAE,wSAAwS;KACxT;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,UAAU,EAAE,uCAAuC;QACnD,WAAW,EAAE,uQAAuQ;QACpR,aAAa,EAAE,i8BAAi8B;KACj9B;IACD;QACE,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,kCAAkC;QAC9C,WAAW,EAAE,mDAAmD;QAChE,aAAa,EAAE,uGAAuG;KACvH;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,uCAAuC;QACnD,WAAW,EAAE,kCAAkC;QAC/C,aAAa,EAAE,yGAAyG;KACzH;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,UAAU,EAAE,iDAAiD;QAC7D,WAAW,EAAE,qVAAqV;QAClW,aAAa,EAAE,0sBAA0sB;KAC1tB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,+BAA+B;QAC3C,WAAW,EAAE,8UAA8U;QAC3V,aAAa,EAAE,24BAA24B;KAC35B;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,UAAU,EAAE,mCAAmC;QAC/C,WAAW,EAAE,gDAAgD;QAC7D,aAAa,EAAE,sGAAsG;KACtH;IACD;QACE,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,iCAAiC;QAC7C,WAAW,EAAE,2CAA2C;QACxD,aAAa,EAAE,wGAAwG;KACxH;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,6CAA6C;QACzD,WAAW,EAAE,gCAAgC;QAC7C,aAAa,EAAE,sGAAsG;KACtH;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,sCAAsC;QAClD,WAAW,EAAE,mDAAmD;QAChE,aAAa,EAAE,8FAA8F;KAC9G;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,UAAU,EAAE,sCAAsC;QAClD,WAAW,EAAE,gDAAgD;QAC7D,aAAa,EAAE,yGAAyG;KACzH;IACD;QACE,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,sBAAsB;QAClC,WAAW,EAAE,iEAAiE;QAC9E,aAAa,EAAE,sDAAsD;KACtE;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,UAAU,EAAE,uCAAuC;QACnD,WAAW,EAAE,oEAAoE;QACjF,aAAa,EAAE,yDAAyD;KACzE;IACD;QACE,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,kCAAkC;QAC9C,WAAW,EAAE,8EAA8E;QAC3F,aAAa,EAAE,qNAAqN;KACrO;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,uDAAuD;QACnE,WAAW,EAAE,wPAAwP;QACrQ,aAAa,EAAE,srBAAsrB;KACtsB;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,sDAAsD;QAClE,WAAW,EAAE,sMAAsM;QACnN,aAAa,EAAE,2hBAA2hB;KAC3iB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,uBAAuB;QACnC,WAAW,EAAE,+EAA+E;QAC5F,aAAa,EAAE,yNAAyN;KACzO;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,+CAA+C;QAC3D,WAAW,EAAE,uLAAuL;QACpM,aAAa,EAAE,otBAAotB;KACpuB;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,UAAU,EAAE,4BAA4B;QACxC,WAAW,EAAE,mEAAmE;QAChF,aAAa,EAAE,mOAAmO;KACnP;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,UAAU,EAAE,4CAA4C;QACxD,WAAW,EAAE,qPAAqP;QAClQ,aAAa,EAAE,gZAAgZ;KACha;IACD;QACE,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,gCAAgC;QAC5C,WAAW,EAAE,wJAAwJ;QACrK,aAAa,EAAE,wnBAAwnB;KACxoB;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,+CAA+C;QAC3D,WAAW,EAAE,+MAA+M;QAC5N,aAAa,EAAE,69BAA69B;KAC7+B;IACD,gFAAgF;IAChF,+EAA+E;IAC/E,8EAA8E;IAC9E,gFAAgF;IAChF,0EAA0E;IAC1E,kFAAkF;IAClF,mFAAmF;IACnF,oFAAoF;IACpF,oFAAoF;IACpF,qFAAqF;IACrF,6EAA6E;IAC7E,+EAA+E;IAC/E,iFAAiF;IACjF,+EAA+E;IAC/E,2EAA2E;IAC3E,gFAAgF;IAChF,iFAAiF;IACjF,+EAA+E;IAC/E;QACE,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,uCAAuC;QACnD,WAAW,EAAE,+IAA+I;QAC5J,aAAa,EAAE,8YAA8Y;KAC9Z;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,UAAU,EAAE,qCAAqC;QACjD,WAAW,EAAE,6OAA6O;QAC1P,aAAa,EAAE,gdAAgd;KAChe;IACD;QACE,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,yCAAyC;QACrD,WAAW,EAAE,8JAA8J;QAC3K,aAAa,EAAE,0aAA0a;KAC1b;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,4CAA4C;QACxD,WAAW,EAAE,4RAA4R;QACzS,aAAa,EAAE,+uBAA+uB;KAC/vB;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,UAAU,EAAE,0CAA0C;QACtD,WAAW,EAAE,2MAA2M;QACxN,aAAa,EAAE,gcAAgc;KAChd;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,UAAU,EAAE,sCAAsC;QAClD,WAAW,EAAE,wMAAwM;QACrN,aAAa,EAAE,muBAAmuB;KACnvB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,yCAAyC;QACrD,WAAW,EAAE,0OAA0O;QACvP,aAAa,EAAE,mcAAmc;KACnd;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,4CAA4C;QACxD,WAAW,EAAE,kPAAkP;QAC/P,aAAa,EAAE,+oBAA+oB;KAC/pB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,yCAAyC;QACrD,WAAW,EAAE,wGAAwG;QACrH,aAAa,EAAE,qRAAqR;KACrS;IACD;QACE,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,yCAAyC;QACrD,WAAW,EAAE,2UAA2U;QACxV,aAAa,EAAE,qTAAqT;KACrU;IACD;QACE,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,iCAAiC;QAC7C,WAAW,EAAE,gNAAgN;QAC7N,aAAa,EAAE,gpBAAgpB;KAChqB;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,UAAU,EAAE,mCAAmC;QAC/C,WAAW,EAAE,2ZAA2Z;QACxa,aAAa,EAAE,+lBAA+lB;KAC/mB;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,uCAAuC;QACnD,WAAW,EAAE,0RAA0R;QACvS,aAAa,EAAE,ynBAAynB;KACzoB;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,UAAU,EAAE,uCAAuC;QACnD,WAAW,EAAE,+TAA+T;QAC5U,aAAa,EAAE,o3BAAo3B;KACp4B;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,2CAA2C;QACvD,WAAW,EACT,+bAA+b;QACjc,aAAa,EACX,6rBAA6rB;KAChsB;IACD;QACE,IAAI,EAAE,wCAAwC;QAC9C,UAAU,EAAE,4DAA4D;QACxE,WAAW,EACT,2KAA2K;QAC7K,aAAa,EACX,2OAA2O;KAC9O;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,UAAU,EAAE,8CAA8C;QAC1D,WAAW,EACT,6IAA6I;QAC/I,aAAa,EACX,uKAAuK;KAC1K;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,UAAU,EAAE,qCAAqC;QACjD,WAAW,EACT,0IAA0I;QAC5I,aAAa,EACX,ieAAie;KACpe;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,yCAAyC;QACrD,WAAW,EACT,6HAA6H;QAC/H,aAAa,EACX,8UAA8U;KACjV;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,UAAU,EAAE,oDAAoD;QAChE,WAAW,EACT,mYAAmY;QACrY,aAAa,EACX,myBAAmyB;KACtyB;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,0CAA0C;QACtD,WAAW,EACT,iWAAiW;QACnW,aAAa,EACX,s7BAAs7B;KACz7B;IACD;QACE,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,gCAAgC;QAC5C,WAAW,EACT,kKAAkK;QACpK,aAAa,EACX,wiBAAwiB;KAC3iB;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,0CAA0C;QACtD,WAAW,EACT,2OAA2O;QAC7O,aAAa,EACX,gqBAAgqB;KACnqB;IACD,gFAAgF;IAChF,iFAAiF;IACjF,yEAAyE;IACzE,gFAAgF;IAChF;QACE,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,yCAAyC;QACrD,WAAW,EAAE,qFAAqF;QAClG,aAAa,EAAE,mOAAmO;KACnP;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,UAAU,EAAE,iDAAiD;QAC7D,WAAW,EAAE,mKAAmK;QAChL,aAAa,EAAE,4fAA4f;KAC5gB;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,wCAAwC;QACpD,WAAW,EAAE,2LAA2L;QACxM,aAAa,EAAE,8wBAA8wB;KAC9xB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,UAAU,EAAE,oCAAoC;QAChD,WAAW,EAAE,mFAAmF;QAChG,aAAa,EAAE,uWAAuW;KACvX;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,qCAAqC;QACjD,WAAW,EAAE,yEAAyE;QACtF,aAAa,EAAE,6cAA6c;KAC7d;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,qCAAqC;QACjD,WAAW,EAAE,+EAA+E;QAC5F,aAAa,EAAE,4MAA4M;KAC5N;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,2CAA2C;QACvD,WAAW,EAAE,2JAA2J;QACxK,aAAa,EAAE,0VAA0V;KAC1W;IACD,kFAAkF;IAClF,kFAAkF;IAClF,0EAA0E;IAC1E,oFAAoF;IACpF,qFAAqF;IACrF,sFAAsF;IACtF,8EAA8E;IAC9E,6EAA6E;IAC7E,sFAAsF;IACtF,qFAAqF;IACrF,qFAAqF;IACrF,oFAAoF;IACpF,kEAAkE;IAClE,gFAAgF;IAChF,mFAAmF;IACnF,oDAAoD;IACpD;QACE,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,4CAA4C;QACxD,WAAW,EAAE,yFAAyF;QACtG,aAAa,EAAE,6WAA6W;KAC7X;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,8CAA8C;QAC1D,WAAW,EAAE,+GAA+G;QAC5H,aAAa,EAAE,waAAwa;KACxb;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,UAAU,EAAE,0CAA0C;QACtD,WAAW,EAAE,uHAAuH;QACpI,aAAa,EAAE,6UAA6U;KAC7V;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,UAAU,EAAE,0CAA0C;QACtD,WAAW,EAAE,4HAA4H;QACzI,aAAa,EAAE,qVAAqV;KACrW;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,UAAU,EAAE,iDAAiD;QAC7D,WAAW,EAAE,qIAAqI;QAClJ,aAAa,EAAE,2bAA2b;KAC3c;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,6CAA6C;QACzD,WAAW,EAAE,kHAAkH;QAC/H,aAAa,EAAE,0aAA0a;KAC1b;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,8CAA8C;QAC1D,WAAW,EAAE,kHAAkH;QAC/H,aAAa,EAAE,kjBAAkjB;KAClkB;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,UAAU,EAAE,gDAAgD;QAC5D,WAAW,EAAE,+QAA+Q;QAC5R,aAAa,EAAE,2hBAA2hB;KAC3iB;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,UAAU,EAAE,oDAAoD;QAChE,WAAW,EAAE,8VAA8V;QAC3W,aAAa,EAAE,wkBAAwkB;KACxlB;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,8CAA8C;QAC1D,WAAW,EAAE,2dAA2d;QACxe,aAAa,EAAE,2oBAA2oB;KAC3pB;IACD,gFAAgF;IAChF,sFAAsF;IACtF,qFAAqF;IACrF,uFAAuF;IACvF,8DAA8D;IAC9D;QACE,IAAI,EAAE,4BAA4B;QAClC,UAAU,EAAE,gDAAgD;QAC5D,WAAW,EAAE,wMAAwM;QACrN,aAAa,EAAE,skBAAskB;KACtlB;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,UAAU,EAAE,kDAAkD;QAC9D,WAAW,EAAE,2NAA2N;QACxO,aAAa,EAAE,mgBAAmgB;KACnhB;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,UAAU,EAAE,sCAAsC;QAClD,WAAW,EAAE,iPAAiP;QAC9P,aAAa,EAAE,4nBAA4nB;KAC5oB;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,UAAU,EAAE,yCAAyC;QACrD,WAAW,EAAE,wfAAwf;QACrgB,aAAa,EAAE,8nBAA8nB;KAC9oB;CACF,CAAC;AA0CF,MAAM,CAAC,MAAM,oBAAoB,GAAwB;IACvD,+EAA+E;IAC/E;QACE,UAAU,EAAE,kCAAkC;QAC9C,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,+CAA+C;KACxD;IACD;QACE,UAAU,EAAE,wCAAwC;QACpD,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,iDAAiD;KAC1D;IACD;QACE,UAAU,EAAE,qCAAqC;QACjD,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,+CAA+C;KACxD;IACD,gFAAgF;IAChF,+EAA+E;IAC/E,oFAAoF;IACpF,6DAA6D;IAC7D,wEAAwE;IACxE;QACE,UAAU,EAAE,8BAA8B;QAC1C,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,mDAAmD;KAC5D;IACD;QACE,UAAU,EAAE,gCAAgC;QAC5C,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,iIAAiI;KAC1I;IACD;QACE,UAAU,EAAE,qCAAqC;QACjD,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,gGAAgG;KACzG;IACD,uFAAuF;IACvF;QACE,UAAU,EAAE,qDAAqD;QACjE,QAAQ,EAAE,iBAAiB;QAC3B,MAAM,EAAE,kCAAkC;KAC3C;IACD;QACE,UAAU,EAAE,2CAA2C;QACvD,QAAQ,EAAE,iBAAiB;QAC3B,MAAM,EAAE,kCAAkC;KAC3C;IACD;QACE,UAAU,EAAE,+BAA+B;QAC3C,QAAQ,EAAE,iBAAiB;QAC3B,MAAM,EAAE,qDAAqD;KAC9D;IACD;QACE,UAAU,EAAE,6BAA6B;QACzC,QAAQ,EAAE,iBAAiB;QAC3B,MAAM,EAAE,oZAAoZ;KAC7Z;IACD,qDAAqD;IACrD;QACE,UAAU,EAAE,kCAAkC;QAC9C,QAAQ,EAAE,sBAAsB;QAChC,MAAM,EAAE,8CAA8C;KACvD;IACD;QACE,UAAU,EAAE,+CAA+C;QAC3D,QAAQ,EAAE,sBAAsB;QAChC,MAAM,EAAE,kGAAkG;KAC3G;IACD;QACE,UAAU,EAAE,mDAAmD;QAC/D,QAAQ,EAAE,sBAAsB;QAChC,MAAM,EAAE,+FAA+F;KACxG;IACD;QACE,UAAU,EAAE,wDAAwD;QACpE,QAAQ,EAAE,sBAAsB;QAChC,MAAM,EAAE,kPAAkP;KAC3P;IACD,8EAA8E;IAC9E,kFAAkF;IAClF,iFAAiF;IACjF,gFAAgF;IAChF,mFAAmF;IACnF,6EAA6E;IAC7E,oFAAoF;IACpF,sFAAsF;IACtF,8EAA8E;IAC9E,+EAA+E;IAC/E,6EAA6E;IAC7E,iFAAiF;IACjF;QACE,UAAU,EAAE,qCAAqC;QACjD,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,4RAA4R;KACrS;IACD;QACE,UAAU,EAAE,wDAAwD;QACpE,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,4dAA4d;KACre;IACD;QACE,UAAU,EAAE,4DAA4D;QACxE,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,scAAsc;KAC/c;IACD;QACE,UAAU,EAAE,oDAAoD;QAChE,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,inBAAinB;KAC1nB;IACD;QACE,UAAU,EAAE,6DAA6D;QACzE,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EACJ,irBAAirB;KACprB;IACD;QACE,UAAU,EAAE,+BAA+B;QAC3C,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,uMAAuM;KAChN;IACD;QACE,UAAU,EAAE,kDAAkD;QAC9D,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,ymBAAymB;KAClnB;IACD;QACE,UAAU,EAAE,2CAA2C;QACvD,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,gXAAgX;KACzX;IACD;QACE,UAAU,EAAE,6CAA6C;QACzD,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,uVAAuV;KAChW;IACD,sDAAsD;IACtD;QACE,UAAU,EAAE,uCAAuC;QACnD,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,wXAAwX;KACjY;IACD,gFAAgF;IAChF,uFAAuF;IACvF;QACE,UAAU,EAAE,gBAAgB;QAC5B,QAAQ,EAAE,sBAAsB;QAChC,MAAM,EAAE,8NAA8N;KACvO;IACD;QACE,UAAU,EAAE,gBAAgB;QAC5B,QAAQ,EAAE,sBAAsB;QAChC,MAAM,EAAE,gQAAgQ;KACzQ;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe,EAAE,UAAkB;IACjE,IAAI,GAAG,GAAY,MAAM,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC7D,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"devGatedFeatures.js","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Machine-coherence advert — build + receive-clamp (machine-coherence-guard §3.2).
|
|
3
|
+
*
|
|
4
|
+
* The advert is ONE bounded, self-describing block riding the existing 30s
|
|
5
|
+
* capacity-heartbeat / presence-pull machinery (no new channel). Emission is
|
|
6
|
+
* UNCONDITIONAL (spec M3, normative): every machine running a version that
|
|
7
|
+
* carries this code emits the advert regardless of the sentinel's dev-gate /
|
|
8
|
+
* enabled / dryRun state — only the EVALUATOR + alarm are dev-gated (§7).
|
|
9
|
+
* Rationale (pinned against the founding F4 incident): a gated advert would
|
|
10
|
+
* leave the dark side of an asymmetric pair advert-less, and the live side
|
|
11
|
+
* would misclassify the exact F4 topology as "peer predates the guard".
|
|
12
|
+
*
|
|
13
|
+
* The receive clamp (spec M4, R5-N3) is NEW build work: peers' adverts are
|
|
14
|
+
* type-clamped AND format-clamped on receive in the puller's narrowing step —
|
|
15
|
+
* every rendered peer string is restricted to a safe alphabet (the L2 exposure
|
|
16
|
+
* invariant forbids peer free text in operator-facing surfaces). A clamp-
|
|
17
|
+
* REJECTED advert is stored as an explicit rejection marker that REPLACES the
|
|
18
|
+
* peer's stored advert for evaluation (rejected ≠ absent, by construction —
|
|
19
|
+
* persistent malformation surfaces LOUDLY as `advert-rejected`, never silence).
|
|
20
|
+
*/
|
|
21
|
+
import { type CoherenceConfigView } from './machineCoherenceManifest.js';
|
|
22
|
+
/** The guard's own resolved posture on a machine (spec §3.2 N2; feeds the §3.4 election). */
|
|
23
|
+
export type CoherenceGuardPosture = 'live' | 'dry-run' | 'dark';
|
|
24
|
+
/**
|
|
25
|
+
* The alarm marker (spec §3.2, R2-M1/M2): present on a machine's advert iff
|
|
26
|
+
* that machine currently holds an OPEN local machine-coherence attention item
|
|
27
|
+
* it SUCCESSFULLY RAISED (the `itemRaisedAt` stamp — item-RAISED, never mere
|
|
28
|
+
* episode-open, R4-M1). Content-free: per-row truncated hashes over N1
|
|
29
|
+
* row-identity keys — never free text.
|
|
30
|
+
*/
|
|
31
|
+
export interface CoherenceAlarmMarker {
|
|
32
|
+
/** The holder's own local episode id — N4 format, clamped /^mc-\d{1,29}$/ (R3-N9). */
|
|
33
|
+
episodeId: string;
|
|
34
|
+
/**
|
|
35
|
+
* PER-ROW truncated hashes (16 lowercase hex each) of the item's CURRENTLY-
|
|
36
|
+
* CONFIRMED §3.3 row identities, sorted, ≤ 72 entries. A LIST deliberately:
|
|
37
|
+
* coverage checks are INTERSECTION tests (R3-M4/N2) — an UNLISTED row is NOT
|
|
38
|
+
* covered, everywhere (overflow fails toward RAISING).
|
|
39
|
+
*/
|
|
40
|
+
rowIdentityHashes: string[];
|
|
41
|
+
/** Receive-clamp honesty ONLY — structurally unreachable for a legal manifest; NEVER grants coverage (R3-M4). */
|
|
42
|
+
rowsTruncated?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** The §3.2 advert block — sibling to `seamlessnessFlags` on the capacity heartbeat. */
|
|
45
|
+
export interface CoherenceAdvert {
|
|
46
|
+
/** ProcessIntegrity.runningVersion — executing code, not disk. */
|
|
47
|
+
instarVersion: string;
|
|
48
|
+
/** SEAMLESSNESS_PROTOCOL_VERSION. */
|
|
49
|
+
protocolVersion: number;
|
|
50
|
+
/** sha256 over sorted manifest entries (key+resolution+readSource) — M7. */
|
|
51
|
+
manifestHash: string;
|
|
52
|
+
/** The guard's OWN resolved posture on this machine (N2; feeds the §3.4 election). */
|
|
53
|
+
guard: CoherenceGuardPosture;
|
|
54
|
+
/** Sender-side monotonic advert generation (M5; FORENSIC-ONLY — resets on restart, NEVER a freshness check; R2-L1). */
|
|
55
|
+
beatSeq: number;
|
|
56
|
+
/** Manifest-resolved effective values, clamped scalars. */
|
|
57
|
+
flags: Record<string, string>;
|
|
58
|
+
/** Present iff THIS machine holds an OPEN, successfully-RAISED local machine-coherence item (R2-M1/M2, R4-M1). */
|
|
59
|
+
alarm?: CoherenceAlarmMarker;
|
|
60
|
+
}
|
|
61
|
+
/** A stored clamp-rejection marker — REPLACES the peer's advert for evaluation (M4: rejected ≠ absent). */
|
|
62
|
+
export interface CoherenceAdvertRejection {
|
|
63
|
+
atMs: number;
|
|
64
|
+
reason: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Resolve the guard's OWN posture from config (the same resolution the
|
|
68
|
+
* manifest's `monitoring.machineCoherence` row uses): 'live' | 'dry-run' |
|
|
69
|
+
* 'dark'. The manifest row resolves to 'live'/'dry-run'/'off' — 'off' maps to
|
|
70
|
+
* the advert's 'dark'.
|
|
71
|
+
*/
|
|
72
|
+
export declare function resolveSelfGuardPosture(view: CoherenceConfigView): CoherenceGuardPosture;
|
|
73
|
+
/**
|
|
74
|
+
* Build this machine's advert for one heartbeat. Pure given its inputs;
|
|
75
|
+
* recomputed each beat (a boot-read entry re-advertises within one beat of the
|
|
76
|
+
* restart that applied it; a live-read entry within one beat of the PATCH).
|
|
77
|
+
* The caller owns `beatSeq` increment and the alarm marker (episode state).
|
|
78
|
+
*/
|
|
79
|
+
export declare function buildCoherenceAdvert(view: CoherenceConfigView, opts: {
|
|
80
|
+
/** ProcessIntegrity.runningVersion; pass 'unknown' only when genuinely unavailable. */
|
|
81
|
+
instarVersion: string;
|
|
82
|
+
beatSeq: number;
|
|
83
|
+
alarm?: CoherenceAlarmMarker;
|
|
84
|
+
}): CoherenceAdvert;
|
|
85
|
+
/** Result of the receive clamp: a clean (rebuilt) advert, or a named rejection. */
|
|
86
|
+
export type ClampAdvertResult = {
|
|
87
|
+
ok: true;
|
|
88
|
+
advert: CoherenceAdvert;
|
|
89
|
+
markerDropReason?: string;
|
|
90
|
+
} | {
|
|
91
|
+
ok: false;
|
|
92
|
+
reason: string;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* The M4 receive-side clamp, applied in the puller's narrowing step. Every
|
|
96
|
+
* field is validated and the advert REBUILT from validated values (never a
|
|
97
|
+
* pass-through of the raw peer object). Failure directions per spec §3.2:
|
|
98
|
+
* - a malformed ADVERT → `{ ok: false, reason }` — the caller stores a
|
|
99
|
+
* rejection marker replacing the peer's advert (classification
|
|
100
|
+
* `advert-rejected`, surfaced loudly — never silence);
|
|
101
|
+
* - a malformed alarm MARKER (bad episodeId format / bad row hash) → the
|
|
102
|
+
* MARKER is dropped with a named reason, the advert's other fields STAND
|
|
103
|
+
* (R3-N9 — appends render only clamp-passed ids);
|
|
104
|
+
* - `rowIdentityHashes` longer than the 72-row bound → truncated + flagged
|
|
105
|
+
* `rowsTruncated` (receive-clamp honesty; truncation NEVER grants coverage).
|
|
106
|
+
*/
|
|
107
|
+
export declare function clampCoherenceAdvert(raw: unknown): ClampAdvertResult;
|
|
108
|
+
//# sourceMappingURL=machineCoherenceAdvert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machineCoherenceAdvert.d.ts","sourceRoot":"","sources":["../../src/core/machineCoherenceAdvert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAgBL,KAAK,mBAAmB,EACzB,MAAM,+BAA+B,CAAC;AAEvC,6FAA6F;AAC7F,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iHAAiH;IACjH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wFAAwF;AACxF,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,KAAK,EAAE,qBAAqB,CAAC;IAC7B,uHAAuH;IACvH,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,kHAAkH;IAClH,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC9B;AAED,2GAA2G;AAC3G,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,CAKxF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,mBAAmB,EACzB,IAAI,EAAE;IACJ,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC9B,GACA,eAAe,CAUjB;AAED,mFAAmF;AACnF,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,eAAe,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAMlC;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAwFpE"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Machine-coherence advert — build + receive-clamp (machine-coherence-guard §3.2).
|
|
3
|
+
*
|
|
4
|
+
* The advert is ONE bounded, self-describing block riding the existing 30s
|
|
5
|
+
* capacity-heartbeat / presence-pull machinery (no new channel). Emission is
|
|
6
|
+
* UNCONDITIONAL (spec M3, normative): every machine running a version that
|
|
7
|
+
* carries this code emits the advert regardless of the sentinel's dev-gate /
|
|
8
|
+
* enabled / dryRun state — only the EVALUATOR + alarm are dev-gated (§7).
|
|
9
|
+
* Rationale (pinned against the founding F4 incident): a gated advert would
|
|
10
|
+
* leave the dark side of an asymmetric pair advert-less, and the live side
|
|
11
|
+
* would misclassify the exact F4 topology as "peer predates the guard".
|
|
12
|
+
*
|
|
13
|
+
* The receive clamp (spec M4, R5-N3) is NEW build work: peers' adverts are
|
|
14
|
+
* type-clamped AND format-clamped on receive in the puller's narrowing step —
|
|
15
|
+
* every rendered peer string is restricted to a safe alphabet (the L2 exposure
|
|
16
|
+
* invariant forbids peer free text in operator-facing surfaces). A clamp-
|
|
17
|
+
* REJECTED advert is stored as an explicit rejection marker that REPLACES the
|
|
18
|
+
* peer's stored advert for evaluation (rejected ≠ absent, by construction —
|
|
19
|
+
* persistent malformation surfaces LOUDLY as `advert-rejected`, never silence).
|
|
20
|
+
*/
|
|
21
|
+
import { buildCoherenceFlags, selfManifestHash, selfProtocolVersion, resolveFlagValue, COHERENCE_CRITICAL_FLAGS, MC_MAX_ENTRIES, MC_KEY_MAX, MC_VALUE_ALPHABET, MC_VERSION_ALPHABET, MC_MANIFEST_HASH_RE, MC_EPISODE_ID_RE, MC_MARKER_ROWS_MAX, MC_FLAGS_BYTES_MAX, MC_MARKER_BYTES_MAX, MC_BLOCK_BYTES_MAX, } from './machineCoherenceManifest.js';
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the guard's OWN posture from config (the same resolution the
|
|
24
|
+
* manifest's `monitoring.machineCoherence` row uses): 'live' | 'dry-run' |
|
|
25
|
+
* 'dark'. The manifest row resolves to 'live'/'dry-run'/'off' — 'off' maps to
|
|
26
|
+
* the advert's 'dark'.
|
|
27
|
+
*/
|
|
28
|
+
export function resolveSelfGuardPosture(view) {
|
|
29
|
+
const entry = COHERENCE_CRITICAL_FLAGS.find((f) => f.key === 'monitoring.machineCoherence');
|
|
30
|
+
if (!entry)
|
|
31
|
+
return 'dark';
|
|
32
|
+
const v = resolveFlagValue(entry, view);
|
|
33
|
+
return v === 'live' ? 'live' : v === 'dry-run' ? 'dry-run' : 'dark';
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Build this machine's advert for one heartbeat. Pure given its inputs;
|
|
37
|
+
* recomputed each beat (a boot-read entry re-advertises within one beat of the
|
|
38
|
+
* restart that applied it; a live-read entry within one beat of the PATCH).
|
|
39
|
+
* The caller owns `beatSeq` increment and the alarm marker (episode state).
|
|
40
|
+
*/
|
|
41
|
+
export function buildCoherenceAdvert(view, opts) {
|
|
42
|
+
return {
|
|
43
|
+
instarVersion: opts.instarVersion,
|
|
44
|
+
protocolVersion: selfProtocolVersion(),
|
|
45
|
+
manifestHash: selfManifestHash(),
|
|
46
|
+
guard: resolveSelfGuardPosture(view),
|
|
47
|
+
beatSeq: opts.beatSeq,
|
|
48
|
+
flags: buildCoherenceFlags(view),
|
|
49
|
+
...(opts.alarm ? { alarm: opts.alarm } : {}),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const GUARD_POSTURES = ['live', 'dry-run', 'dark'];
|
|
53
|
+
const KEY_ALPHABET = /^[A-Za-z0-9._-]{1,64}$/;
|
|
54
|
+
const ROW_HASH_RE = /^[0-9a-f]{16}$/;
|
|
55
|
+
/**
|
|
56
|
+
* The M4 receive-side clamp, applied in the puller's narrowing step. Every
|
|
57
|
+
* field is validated and the advert REBUILT from validated values (never a
|
|
58
|
+
* pass-through of the raw peer object). Failure directions per spec §3.2:
|
|
59
|
+
* - a malformed ADVERT → `{ ok: false, reason }` — the caller stores a
|
|
60
|
+
* rejection marker replacing the peer's advert (classification
|
|
61
|
+
* `advert-rejected`, surfaced loudly — never silence);
|
|
62
|
+
* - a malformed alarm MARKER (bad episodeId format / bad row hash) → the
|
|
63
|
+
* MARKER is dropped with a named reason, the advert's other fields STAND
|
|
64
|
+
* (R3-N9 — appends render only clamp-passed ids);
|
|
65
|
+
* - `rowIdentityHashes` longer than the 72-row bound → truncated + flagged
|
|
66
|
+
* `rowsTruncated` (receive-clamp honesty; truncation NEVER grants coverage).
|
|
67
|
+
*/
|
|
68
|
+
export function clampCoherenceAdvert(raw) {
|
|
69
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
70
|
+
return { ok: false, reason: 'not-an-object' };
|
|
71
|
+
}
|
|
72
|
+
const a = raw;
|
|
73
|
+
const instarVersion = a.instarVersion;
|
|
74
|
+
if (typeof instarVersion !== 'string' || !MC_VERSION_ALPHABET.test(instarVersion)) {
|
|
75
|
+
return { ok: false, reason: 'instar-version-format' };
|
|
76
|
+
}
|
|
77
|
+
const protocolVersion = a.protocolVersion;
|
|
78
|
+
if (typeof protocolVersion !== 'number' || !Number.isFinite(protocolVersion)) {
|
|
79
|
+
return { ok: false, reason: 'protocol-version-not-numeric' };
|
|
80
|
+
}
|
|
81
|
+
const manifestHash = a.manifestHash;
|
|
82
|
+
if (typeof manifestHash !== 'string' || !MC_MANIFEST_HASH_RE.test(manifestHash)) {
|
|
83
|
+
return { ok: false, reason: 'manifest-hash-format' };
|
|
84
|
+
}
|
|
85
|
+
const guard = a.guard;
|
|
86
|
+
if (typeof guard !== 'string' || !GUARD_POSTURES.includes(guard)) {
|
|
87
|
+
return { ok: false, reason: 'guard-posture-format' };
|
|
88
|
+
}
|
|
89
|
+
const beatSeq = a.beatSeq;
|
|
90
|
+
if (typeof beatSeq !== 'number' || !Number.isFinite(beatSeq) || beatSeq < 0) {
|
|
91
|
+
return { ok: false, reason: 'beat-seq-not-numeric' };
|
|
92
|
+
}
|
|
93
|
+
const rawFlags = a.flags;
|
|
94
|
+
if (!rawFlags || typeof rawFlags !== 'object' || Array.isArray(rawFlags)) {
|
|
95
|
+
return { ok: false, reason: 'flags-not-an-object' };
|
|
96
|
+
}
|
|
97
|
+
const flagEntries = Object.entries(rawFlags);
|
|
98
|
+
if (flagEntries.length > MC_MAX_ENTRIES) {
|
|
99
|
+
return { ok: false, reason: 'flags-entry-count' };
|
|
100
|
+
}
|
|
101
|
+
const flags = {};
|
|
102
|
+
for (const [k, v] of flagEntries) {
|
|
103
|
+
if (!KEY_ALPHABET.test(k) || k.length > MC_KEY_MAX)
|
|
104
|
+
return { ok: false, reason: 'flag-key-format' };
|
|
105
|
+
if (typeof v !== 'string' || !MC_VALUE_ALPHABET.test(v))
|
|
106
|
+
return { ok: false, reason: 'flag-value-format' };
|
|
107
|
+
flags[k] = v;
|
|
108
|
+
}
|
|
109
|
+
// Byte budgets are measured on the REBUILT serialization (structural join
|
|
110
|
+
// bytes inside the measurement — R4-L4).
|
|
111
|
+
const base = { instarVersion, protocolVersion, manifestHash, guard: guard, beatSeq, flags };
|
|
112
|
+
if (Buffer.byteLength(JSON.stringify(base), 'utf8') > MC_FLAGS_BYTES_MAX) {
|
|
113
|
+
return { ok: false, reason: 'advert-oversize' };
|
|
114
|
+
}
|
|
115
|
+
// Alarm marker: validated separately — a bad marker drops the MARKER, never
|
|
116
|
+
// the advert (the advert's other fields stand; R3-N9).
|
|
117
|
+
let markerDropReason;
|
|
118
|
+
let alarm;
|
|
119
|
+
if (a.alarm !== undefined) {
|
|
120
|
+
const m = a.alarm;
|
|
121
|
+
if (!m || typeof m !== 'object' || Array.isArray(m)) {
|
|
122
|
+
markerDropReason = 'marker-not-an-object';
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const mo = m;
|
|
126
|
+
const episodeId = mo.episodeId;
|
|
127
|
+
const rawRows = mo.rowIdentityHashes;
|
|
128
|
+
if (typeof episodeId !== 'string' || !MC_EPISODE_ID_RE.test(episodeId)) {
|
|
129
|
+
markerDropReason = 'episode-id-format';
|
|
130
|
+
}
|
|
131
|
+
else if (!Array.isArray(rawRows)) {
|
|
132
|
+
markerDropReason = 'row-hashes-not-a-list';
|
|
133
|
+
}
|
|
134
|
+
else if (rawRows.some((h) => typeof h !== 'string' || !ROW_HASH_RE.test(h))) {
|
|
135
|
+
markerDropReason = 'row-hash-format';
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
const truncated = rawRows.length > MC_MARKER_ROWS_MAX;
|
|
139
|
+
const rows = rawRows.slice(0, MC_MARKER_ROWS_MAX);
|
|
140
|
+
const candidate = {
|
|
141
|
+
episodeId,
|
|
142
|
+
rowIdentityHashes: rows,
|
|
143
|
+
...(truncated || mo.rowsTruncated === true ? { rowsTruncated: true } : {}),
|
|
144
|
+
};
|
|
145
|
+
if (Buffer.byteLength(JSON.stringify(candidate), 'utf8') > MC_MARKER_BYTES_MAX) {
|
|
146
|
+
markerDropReason = 'marker-oversize';
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
alarm = candidate;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
const advert = { ...base, ...(alarm ? { alarm } : {}) };
|
|
155
|
+
if (Buffer.byteLength(JSON.stringify(advert), 'utf8') > MC_BLOCK_BYTES_MAX) {
|
|
156
|
+
return { ok: false, reason: 'block-oversize' };
|
|
157
|
+
}
|
|
158
|
+
return { ok: true, advert, ...(markerDropReason ? { markerDropReason } : {}) };
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=machineCoherenceAdvert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machineCoherenceAdvert.js","sourceRoot":"","sources":["../../src/core/machineCoherenceAdvert.ts"],"names":[],"mappings":"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"}
|