@sensigo/realm 0.33.0 → 0.34.0
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/engine/execution-loop.d.ts +22 -1
- package/dist/engine/execution-loop.d.ts.map +1 -1
- package/dist/engine/execution-loop.js +345 -6
- package/dist/engine/execution-loop.js.map +1 -1
- package/dist/engine/gate-timing.d.ts +17 -0
- package/dist/engine/gate-timing.d.ts.map +1 -0
- package/dist/engine/gate-timing.js +19 -0
- package/dist/engine/gate-timing.js.map +1 -0
- package/dist/engine/reclaim-step.d.ts +8 -0
- package/dist/engine/reclaim-step.d.ts.map +1 -1
- package/dist/engine/reclaim-step.js +48 -3
- package/dist/engine/reclaim-step.js.map +1 -1
- package/dist/engine/run-health.d.ts +1 -1
- package/dist/engine/run-health.d.ts.map +1 -1
- package/dist/engine/run-health.js +39 -2
- package/dist/engine/run-health.js.map +1 -1
- package/dist/engine/settlement.d.ts +52 -14
- package/dist/engine/settlement.d.ts.map +1 -1
- package/dist/engine/settlement.js +258 -16
- package/dist/engine/settlement.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/types/response-envelope.d.ts +16 -0
- package/dist/types/response-envelope.d.ts.map +1 -1
- package/dist/types/run-record.d.ts +106 -0
- package/dist/types/run-record.d.ts.map +1 -1
- package/dist/types/settlement.d.ts +31 -2
- package/dist/types/settlement.d.ts.map +1 -1
- package/dist/types/workflow-definition.d.ts +113 -32
- package/dist/types/workflow-definition.d.ts.map +1 -1
- package/dist/types/workflow-definition.js +20 -0
- package/dist/types/workflow-definition.js.map +1 -1
- package/dist/workflow/diagnostics.d.ts +1 -1
- package/dist/workflow/diagnostics.d.ts.map +1 -1
- package/dist/workflow/diagnostics.js +3 -0
- package/dist/workflow/diagnostics.js.map +1 -1
- package/dist/workflow/structured-output-eligibility.d.ts +81 -0
- package/dist/workflow/structured-output-eligibility.d.ts.map +1 -0
- package/dist/workflow/structured-output-eligibility.js +359 -0
- package/dist/workflow/structured-output-eligibility.js.map +1 -0
- package/dist/workflow/yaml-loader.d.ts.map +1 -1
- package/dist/workflow/yaml-loader.js +145 -2
- package/dist/workflow/yaml-loader.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PendingGate } from '../types/run-record.js';
|
|
2
|
+
/**
|
|
3
|
+
* Read-time due/overdue state for a live gate. `overdue_ms` is present iff `expired`.
|
|
4
|
+
* `next_reminder_due_at` is present iff the gate carries a frozen `reminder_seconds` — the
|
|
5
|
+
* next-undelivered occurrence's scheduled instant (`opened_at + n·reminder_seconds`), computed
|
|
6
|
+
* PURELY from the schedule (no surface here has any record of which reminders were actually
|
|
7
|
+
* delivered — Slack posting is a side effect these read-only surfaces never observe — so this is
|
|
8
|
+
* honestly a SCHEDULE projection, not a delivery-confirmed fact; deliberately no "overdue"
|
|
9
|
+
* boolean on the reminder side for that reason — see the report's design-questions section).
|
|
10
|
+
*/
|
|
11
|
+
export interface GateDueState {
|
|
12
|
+
expired: boolean;
|
|
13
|
+
overdue_ms?: number;
|
|
14
|
+
next_reminder_due_at?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function computeGateDueState(gate: PendingGate, now: Date): GateDueState;
|
|
17
|
+
//# sourceMappingURL=gate-timing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-timing.d.ts","sourceRoot":"","sources":["../../src/engine/gate-timing.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,GAAG,YAAY,CAoB9E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function computeGateDueState(gate, now) {
|
|
2
|
+
const nowMs = now.getTime();
|
|
3
|
+
const expiresAtMs = gate.expires_at !== undefined ? new Date(gate.expires_at).getTime() : undefined;
|
|
4
|
+
const expired = expiresAtMs !== undefined && nowMs >= expiresAtMs;
|
|
5
|
+
let nextReminderDueAt;
|
|
6
|
+
if (gate.reminder_seconds !== undefined) {
|
|
7
|
+
const openedAtMs = new Date(gate.opened_at).getTime();
|
|
8
|
+
const reminderMs = gate.reminder_seconds * 1000;
|
|
9
|
+
const elapsedMs = Math.max(0, nowMs - openedAtMs);
|
|
10
|
+
const n = Math.floor(elapsedMs / reminderMs) + 1; // next-undelivered occurrence number
|
|
11
|
+
nextReminderDueAt = new Date(openedAtMs + n * reminderMs).toISOString();
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
expired,
|
|
15
|
+
...(expired ? { overdue_ms: nowMs - expiresAtMs } : {}),
|
|
16
|
+
...(nextReminderDueAt !== undefined ? { next_reminder_due_at: nextReminderDueAt } : {}),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=gate-timing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-timing.js","sourceRoot":"","sources":["../../src/engine/gate-timing.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,mBAAmB,CAAC,IAAiB,EAAE,GAAS;IAC9D,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5B,MAAM,WAAW,GACf,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS,IAAI,KAAK,IAAI,WAAW,CAAC;IAElE,IAAI,iBAAqC,CAAC;IAC1C,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,qCAAqC;QACvF,iBAAiB,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1E,CAAC;IAED,OAAO;QACL,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,GAAG,WAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxF,CAAC;AACJ,CAAC"}
|
|
@@ -33,6 +33,14 @@ export interface ReclaimResult {
|
|
|
33
33
|
/** The claim state observed at the initial read (for the caller's warning/audit output). */
|
|
34
34
|
priorState: ClaimState;
|
|
35
35
|
priorDeadline: string | null;
|
|
36
|
+
/**
|
|
37
|
+
* Issue #291 ([F7]: "reclaim = defer-to-drain WITH advisory — no new plumbing"). Present only
|
|
38
|
+
* when this run ALSO carries an expired, enactable gate (on a DIFFERENT step — the gate's own
|
|
39
|
+
* step is refused above and never reaches here) at the time this result was produced.
|
|
40
|
+
* `reclaimStep` never enacts it itself (no settlement write added to this verb); the advisory
|
|
41
|
+
* points the operator at `realm run drain --expired`, the guaranteed-reachable enactment lever.
|
|
42
|
+
*/
|
|
43
|
+
gateAdvisory?: string;
|
|
36
44
|
}
|
|
37
45
|
export interface ReclaimStepOptions {
|
|
38
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reclaim-step.d.ts","sourceRoot":"","sources":["../../src/engine/reclaim-step.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIvE,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,MAAM,cAAc;AACxB,6FAA6F;AAC3F,WAAW;AACb,4FAA4F;GAC1F,iBAAiB;AACnB,oGAAoG;GAClG,YAAY;AACd;;;;;;;GAOG;GACD,iBAAiB,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,CAAC;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,sBAAsB,GAAG,oBAAoB,CAAC;IACvD,4FAA4F;IAC5F,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"reclaim-step.d.ts","sourceRoot":"","sources":["../../src/engine/reclaim-step.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIvE,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,MAAM,cAAc;AACxB,6FAA6F;AAC3F,WAAW;AACb,4FAA4F;GAC1F,iBAAiB;AACnB,oGAAoG;GAClG,YAAY;AACd;;;;;;;GAOG;GACD,iBAAiB,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,CAAC;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,sBAAsB,GAAG,oBAAoB,CAAC;IACvD,4FAA4F;IAC5F,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA0DD,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,0EAA0E;IAC1E,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAsPD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAmMxB"}
|
|
@@ -2,6 +2,23 @@ import { storeDeclaresSeal } from '../store/trace-buffer-store.js';
|
|
|
2
2
|
import { WorkflowError } from '../types/workflow-error.js';
|
|
3
3
|
import { captureEvidence } from '../evidence/snapshot.js';
|
|
4
4
|
import { classifyClaim, omitClaim } from './claim-liveness.js';
|
|
5
|
+
/**
|
|
6
|
+
* Issue #291 ([F7] reclaim advisory): builds the defer-to-drain advisory string when `record`
|
|
7
|
+
* carries an expired, enactable gate — undefined otherwise (a finding-only or non-expired gate,
|
|
8
|
+
* or no gate at all, produces no advisory). Pure, read-only; never used to decide reclaim's OWN
|
|
9
|
+
* outcome — purely informational.
|
|
10
|
+
*/
|
|
11
|
+
function buildGateExpiryAdvisory(record, now) {
|
|
12
|
+
const gate = record.pending_gate;
|
|
13
|
+
if (gate === undefined ||
|
|
14
|
+
gate.expires_at === undefined ||
|
|
15
|
+
gate.on_expiry === undefined ||
|
|
16
|
+
now.getTime() < new Date(gate.expires_at).getTime()) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return (`this run's gate '${gate.step_name}' has also expired (on_expiry: ${gate.on_expiry}) and is ` +
|
|
20
|
+
`awaiting enactment — 'realm run drain --expired' will enact it.`);
|
|
21
|
+
}
|
|
5
22
|
/**
|
|
6
23
|
* issue #221, B2-corrected discriminator: distinguishes a genuinely-settled step from a step with
|
|
7
24
|
* no active claim that was never provably settled — reused at BOTH membership sites (the direct
|
|
@@ -265,6 +282,7 @@ export async function reclaimStep(store, runId, stepName, options) {
|
|
|
265
282
|
// Guard — membership: not in_progress → discriminate settled vs no-active-claim (issue #221, B2).
|
|
266
283
|
if (!run.in_progress_steps.includes(stepName)) {
|
|
267
284
|
const { outcome, detail } = classifyNoActiveClaim(run, stepName);
|
|
285
|
+
const gateAdvisory = buildGateExpiryAdvisory(run, now);
|
|
268
286
|
return {
|
|
269
287
|
run,
|
|
270
288
|
step: stepName,
|
|
@@ -272,6 +290,7 @@ export async function reclaimStep(store, runId, stepName, options) {
|
|
|
272
290
|
...(detail !== undefined ? { detail } : {}),
|
|
273
291
|
priorState,
|
|
274
292
|
priorDeadline,
|
|
293
|
+
...(gateAdvisory !== undefined ? { gateAdvisory } : {}),
|
|
275
294
|
};
|
|
276
295
|
}
|
|
277
296
|
// issue #207 PR-2: a declaring store's clear moves BEFORE the un-claiming update, version-fenced
|
|
@@ -300,7 +319,15 @@ export async function reclaimStep(store, runId, stepName, options) {
|
|
|
300
319
|
if (!fenced) {
|
|
301
320
|
await clearStaleWal(traceBufferStore, runId, stepName);
|
|
302
321
|
}
|
|
303
|
-
|
|
322
|
+
const gateAdvisory = buildGateExpiryAdvisory(updated, now);
|
|
323
|
+
return {
|
|
324
|
+
run: updated,
|
|
325
|
+
step: stepName,
|
|
326
|
+
outcome: 'reclaimed',
|
|
327
|
+
priorState,
|
|
328
|
+
priorDeadline,
|
|
329
|
+
...(gateAdvisory !== undefined ? { gateAdvisory } : {}),
|
|
330
|
+
};
|
|
304
331
|
}
|
|
305
332
|
catch (err) {
|
|
306
333
|
if (!(err instanceof WorkflowError) || err.code !== 'STATE_SNAPSHOT_MISMATCH')
|
|
@@ -317,6 +344,7 @@ export async function reclaimStep(store, runId, stepName, options) {
|
|
|
317
344
|
// NOW, after the concurrent write that caused this CAS mismatch, not at the stale decision
|
|
318
345
|
// read).
|
|
319
346
|
const { outcome, detail } = classifyNoActiveClaim(reloaded, stepName);
|
|
347
|
+
const gateAdvisory = buildGateExpiryAdvisory(reloaded, now);
|
|
320
348
|
return {
|
|
321
349
|
run: reloaded,
|
|
322
350
|
step: stepName,
|
|
@@ -324,11 +352,20 @@ export async function reclaimStep(store, runId, stepName, options) {
|
|
|
324
352
|
...(detail !== undefined ? { detail } : {}),
|
|
325
353
|
priorState,
|
|
326
354
|
priorDeadline,
|
|
355
|
+
...(gateAdvisory !== undefined ? { gateAdvisory } : {}),
|
|
327
356
|
};
|
|
328
357
|
}
|
|
329
358
|
if (classifyClaim(reloaded.claims?.[stepName], now) === 'healthy') {
|
|
330
359
|
// Re-claimed FRESH (a future deadline) → a live driver took over. Never stomp live work.
|
|
331
|
-
|
|
360
|
+
const gateAdvisory = buildGateExpiryAdvisory(reloaded, now);
|
|
361
|
+
return {
|
|
362
|
+
run: reloaded,
|
|
363
|
+
step: stepName,
|
|
364
|
+
outcome: 'taken_over',
|
|
365
|
+
priorState,
|
|
366
|
+
priorDeadline,
|
|
367
|
+
...(gateAdvisory !== undefined ? { gateAdvisory } : {}),
|
|
368
|
+
};
|
|
332
369
|
}
|
|
333
370
|
// Still a stale / unknown-age wedge after the concurrent write → re-apply ONCE on the fresh
|
|
334
371
|
// record. A second mismatch propagates (reclaim loses, abandon-style — no retry loop).
|
|
@@ -347,7 +384,15 @@ export async function reclaimStep(store, runId, stepName, options) {
|
|
|
347
384
|
if (!fenced) {
|
|
348
385
|
await clearStaleWal(traceBufferStore, runId, stepName);
|
|
349
386
|
}
|
|
350
|
-
|
|
387
|
+
const gateAdvisory = buildGateExpiryAdvisory(updated, now);
|
|
388
|
+
return {
|
|
389
|
+
run: updated,
|
|
390
|
+
step: stepName,
|
|
391
|
+
outcome: 'reclaimed',
|
|
392
|
+
priorState,
|
|
393
|
+
priorDeadline,
|
|
394
|
+
...(gateAdvisory !== undefined ? { gateAdvisory } : {}),
|
|
395
|
+
};
|
|
351
396
|
}
|
|
352
397
|
}
|
|
353
398
|
//# sourceMappingURL=reclaim-step.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reclaim-step.js","sourceRoot":"","sources":["../../src/engine/reclaim-step.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reclaim-step.js","sourceRoot":"","sources":["../../src/engine/reclaim-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export declare const DEFAULT_IDLE_THRESHOLD_MS: number;
|
|
|
13
13
|
* renders from.
|
|
14
14
|
*/
|
|
15
15
|
export interface RunHealthFinding {
|
|
16
|
-
kind: 'never_claimed_idle' | 'stale_claim' | 'wedged_gate_sibling' | 'capability_block' | 'terminal_pending_finalizer' | 'terminal_with_stale_gate' | 'gate_corruption' | 'resolved_gate_with_eligible_guard';
|
|
16
|
+
kind: 'never_claimed_idle' | 'stale_claim' | 'wedged_gate_sibling' | 'capability_block' | 'terminal_pending_finalizer' | 'terminal_with_stale_gate' | 'gate_corruption' | 'resolved_gate_with_eligible_guard' | 'completed_with_failed_steps' | 'gate_expired_awaiting_drive';
|
|
17
17
|
/** The affected step, when the finding is step-scoped. Absent for `never_claimed_idle` — a
|
|
18
18
|
* run-level observation (no step is claimed at all). */
|
|
19
19
|
step?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-health.d.ts","sourceRoot":"","sources":["../../src/engine/run-health.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-health.d.ts","sourceRoot":"","sources":["../../src/engine/run-health.ts"],"names":[],"mappings":"AAuFA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAK1E;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,QAAsB,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EACA,oBAAoB,GACpB,aAAa,GACb,qBAAqB,GACrB,kBAAkB,GAClB,4BAA4B,GAE5B,0BAA0B,GAC1B,iBAAiB,GACjB,mCAAmC,GAGnC,6BAA6B,GAM7B,6BAA6B,CAAC;IAClC;6DACyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;yCAEqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf;;;;4DAIwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;kDAC8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;mEAG+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AA+BD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,SAAS,EACd,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAC/E,gBAAgB,EAAE,CAyJpB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { classifyInProgressClaims } from './claim-liveness.js';
|
|
2
2
|
import { findCapabilityBlockedSteps } from './capability.js';
|
|
3
|
-
import { findEligibleSteps, findEligibleGuardSteps } from './eligibility.js';
|
|
3
|
+
import { findEligibleSteps, findEligibleGuardSteps, deriveRunPhase } from './eligibility.js';
|
|
4
4
|
/**
|
|
5
5
|
* Default age threshold for the `never_claimed_idle` finding (issue #221) — 24 hours. Engine-
|
|
6
6
|
* minted so detection never REQUIRES an operator-supplied threshold; callers (surfaces) may
|
|
@@ -82,9 +82,22 @@ export function classifyRunHealth(run, opts) {
|
|
|
82
82
|
const terminalGateCorruption = findGateCorruption(run);
|
|
83
83
|
if (terminalGateCorruption !== undefined)
|
|
84
84
|
pendingFindings.push(terminalGateCorruption);
|
|
85
|
+
// issue #302 (disclosure gaps, item 6 above): a completed seal that still carries failed_steps
|
|
86
|
+
// — designed recovery behavior, informational only. Keyed on the DERIVED phase (never the
|
|
87
|
+
// persisted run_phase field, never the byte-equivalent direct terminal_reason check).
|
|
88
|
+
if (deriveRunPhase(run) === 'completed' && run.failed_steps.length > 0) {
|
|
89
|
+
pendingFindings.push({
|
|
90
|
+
kind: 'completed_with_failed_steps',
|
|
91
|
+
reason: `completed with ${run.failed_steps.length} failed step(s): ${run.failed_steps.join(', ')} ` +
|
|
92
|
+
`— failure-triggered finalizers do not run on a completed seal`,
|
|
93
|
+
evidence: { failed_steps: run.failed_steps },
|
|
94
|
+
});
|
|
95
|
+
}
|
|
85
96
|
if (pendingFindings.length > 0)
|
|
86
97
|
return pendingFindings;
|
|
87
|
-
|
|
98
|
+
// terminal ∧ no pending ledger entries ∧ not completed-with-failed-steps ⇒ [] (byte-identical
|
|
99
|
+
// to pre-#279 behavior for every OTHER class of terminal record).
|
|
100
|
+
return [];
|
|
88
101
|
}
|
|
89
102
|
const idleThresholdMs = opts?.idleThresholdMs ?? DEFAULT_IDLE_THRESHOLD_MS;
|
|
90
103
|
const findings = [];
|
|
@@ -117,6 +130,30 @@ export function classifyRunHealth(run, opts) {
|
|
|
117
130
|
const gateCorruption = findGateCorruption(run);
|
|
118
131
|
if (gateCorruption !== undefined)
|
|
119
132
|
findings.push(gateCorruption);
|
|
133
|
+
// issue #291: gate_expired_awaiting_drive — record-fields-only (never the definition), fires
|
|
134
|
+
// for BOTH an enactable gate AND a finding-only one (expires_at present, on_expiry absent) —
|
|
135
|
+
// the finding-only payload names its own disposition as 'finding_only' rather than omitting
|
|
136
|
+
// the finding entirely (a finding-only gate is STILL awaiting a human drive; the operator
|
|
137
|
+
// should still see it). Unreachable on a terminal record by construction (the terminal branch,
|
|
138
|
+
// above, returns before this line is ever reached).
|
|
139
|
+
if (run.pending_gate !== undefined &&
|
|
140
|
+
run.pending_gate.expires_at !== undefined &&
|
|
141
|
+
now.getTime() >= new Date(run.pending_gate.expires_at).getTime()) {
|
|
142
|
+
const overdueMs = now.getTime() - new Date(run.pending_gate.expires_at).getTime();
|
|
143
|
+
findings.push({
|
|
144
|
+
kind: 'gate_expired_awaiting_drive',
|
|
145
|
+
step: run.pending_gate.step_name,
|
|
146
|
+
reason: run.pending_gate.on_expiry !== undefined
|
|
147
|
+
? `gate expired — awaiting enactment of the declared ${run.pending_gate.on_expiry}`
|
|
148
|
+
: 'gate expired — finding-only (no on_expiry declared), awaiting a human response',
|
|
149
|
+
evidence: {
|
|
150
|
+
gate_id: run.pending_gate.gate_id,
|
|
151
|
+
expires_at: run.pending_gate.expires_at,
|
|
152
|
+
overdue_ms: overdueMs,
|
|
153
|
+
disposition: run.pending_gate.on_expiry ?? 'finding_only',
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
}
|
|
120
157
|
// issue #279 (increment 2, PR-D, design record §9, N8's surface): resolved-gate-with-eligible-
|
|
121
158
|
// guard. findEligibleGuardSteps ALREADY self-filters both a terminal run and an open gate
|
|
122
159
|
// (eligibility.ts), so no extra gating is needed beyond requiring a definition.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-health.js","sourceRoot":"","sources":["../../src/engine/run-health.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-health.js","sourceRoot":"","sources":["../../src/engine/run-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,48 @@
|
|
|
1
1
|
import type { RunRecord } from '../types/run-record.js';
|
|
2
|
-
import type { WorkflowDefinition } from '../types/workflow-definition.js';
|
|
2
|
+
import type { WorkflowDefinition, FinalizerTrigger } from '../types/workflow-definition.js';
|
|
3
3
|
import type { SettlementDelta, SettlementResult, SettleStepOutcome } from '../types/settlement.js';
|
|
4
4
|
/**
|
|
5
|
-
* Selects the finalizer steps that fire for a terminal
|
|
6
|
-
* record §4/§6; extracted from `buildFinalizedSeal`'s selection,
|
|
7
|
-
* Group A (rank precedence) —
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* Selects the finalizer steps that fire for a terminal outcome, in the drain order (design
|
|
6
|
+
* record §4/§6, widened by #302's S2 fold; extracted from `buildFinalizedSeal`'s selection,
|
|
7
|
+
* execution-loop.ts :3117-3126): Group A (rank precedence) — the finalizer's OWN declared
|
|
8
|
+
* `on_outcome` set intersects the EFFECTIVE trigger set non-emptily; Group B — `on_outcome`
|
|
9
|
+
* contains `'always'` but the finalizer missed Group A (a finalizer listing both runs once, in
|
|
10
|
+
* Group A). Each group in `Object.entries` declaration order; Group A then Group B.
|
|
10
11
|
* `settledStepNames` excludes any finalizer already at-most-once settled (resume/re-drive safety)
|
|
11
12
|
* — pass `completed_steps ∪ failed_steps`, NEVER the `RunRecord.settled` map (a different,
|
|
12
13
|
* per-step-outcome-keyed structure this selection does not consult).
|
|
14
|
+
*
|
|
15
|
+
* `outcome` accepts EITHER shape (issue #302, S2 — `selectFinalizers` is a PUBLIC export,
|
|
16
|
+
* `index.ts`, so widening the param rather than replacing it is an API-compat requirement, not a
|
|
17
|
+
* style choice):
|
|
18
|
+
* - a bare `SettleStepOutcome` string — every pre-#302 caller's shape, normalized internally to
|
|
19
|
+
* a singleton set; BYTE-IDENTICAL selection to the pre-widening behavior (pinned by the
|
|
20
|
+
* string-form compat test) and supported INDEFINITELY — this is not a deprecated compat shim.
|
|
21
|
+
* - a pre-derived `ReadonlySet<FinalizerTrigger>` (via {@link deriveEffectiveTriggers}) — the
|
|
22
|
+
* #302 call shape both engine chokepoints (`mintFresh`, `buildFinalizedSeal`) now use, letting
|
|
23
|
+
* a seal satisfy more than one trigger at once (e.g. `{'complete', 'completed_with_failed_steps'}`).
|
|
24
|
+
* Semver: additive or (minor) — no existing call site's behavior changes.
|
|
25
|
+
*/
|
|
26
|
+
export declare function selectFinalizers(definition: WorkflowDefinition, settledStepNames: ReadonlySet<string>, outcome: SettleStepOutcome | ReadonlySet<FinalizerTrigger>): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Derives the full set of finalizer triggers a terminal `outcome` satisfies for `record` (issue
|
|
29
|
+
* #302, design record §Mechanics-1): `{outcome}` — always — plus `'completed_with_failed_steps'`
|
|
30
|
+
* when `outcome === 'complete' ∧ record.failed_steps.length > 0` (a "mixed complete" seal — the
|
|
31
|
+
* SAME class #304's `completed_with_failed_steps` run-health finding already surfaces at read
|
|
32
|
+
* time; this is the mint-time trigger, sharing that one predicate).
|
|
33
|
+
*
|
|
34
|
+
* Uniform across epochs (design record M1, deliberate): a second-epoch complete seal whose ONLY
|
|
35
|
+
* `failed_steps` scar is a PRIOR epoch's finalizer self-failure (unresumable, so it never leaves
|
|
36
|
+
* `failed_steps`) still fires this trigger — no exclusion of finalizer-declared step names. The
|
|
37
|
+
* alternative (excluding finalizer names from the predicate) buys mint-time purity at the cost of
|
|
38
|
+
* diverging from the read-time #304 finding's own uniform predicate; this design keeps ONE
|
|
39
|
+
* predicate for both surfaces, deliberately.
|
|
40
|
+
*
|
|
41
|
+
* Pure; this ONE function is the seam a future authorable tolerance threshold (SFN-style: fire
|
|
42
|
+
* only when `failed_steps.length` exceeds some declared N) would extend — banked, not built
|
|
43
|
+
* (design record R2).
|
|
13
44
|
*/
|
|
14
|
-
export declare function
|
|
45
|
+
export declare function deriveEffectiveTriggers(outcome: SettleStepOutcome, record: Pick<RunRecord, 'failed_steps'>): ReadonlySet<FinalizerTrigger>;
|
|
15
46
|
/**
|
|
16
47
|
* Applies one {@link SettlementDelta} against `fresh` — pure, synchronous, no I/O, no registry
|
|
17
48
|
* (design record §7 CS-purity: `options` carries VALUES only). `definition` is passed per call
|
|
@@ -27,12 +58,19 @@ export declare function applySettlement(fresh: RunRecord, delta: SettlementDelta
|
|
|
27
58
|
/**
|
|
28
59
|
* Named constant (issue #279, increment 2, PR-C; design record §4.3) tying reclaim-step.ts's own
|
|
29
60
|
* open-gate refusal (`reclaimStep`, ~line 389: "the claim is legitimately pinned by a human gate")
|
|
30
|
-
* to this design's "unfenced-release soundness rests on reclaim" premise
|
|
31
|
-
* cancel-gate write
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
61
|
+
* to this design's "unfenced-release soundness rests on reclaim" premise. **Reworded (issue #291,
|
|
62
|
+
* [F6]):** the ORIGINAL text claimed `applyAbortEdge`'s cancel-gate write was "the ONLY path that
|
|
63
|
+
* may release an open gate's claim" — issue #291's `applyExpireGate` (both dispositions) ALSO
|
|
64
|
+
* releases it now, making that literal claim false. The invariant this constant actually protects
|
|
65
|
+
* — `reclaimStep`/`isAutoReclaimable` must NEVER release an open gate's claim, or a concurrent
|
|
66
|
+
* release could race and double-release the same claim — still holds exactly; the closed set of
|
|
67
|
+
* paths that MAY release it is now: `settle_step` abort's cancel-gate write (another step's
|
|
68
|
+
* handler-abort), and `expire_gate`'s settle_default/abort dispositions (the gate's OWN step,
|
|
69
|
+
* enforce-clock-driven) — all three live inside `applySettlement`, under the SAME store lock,
|
|
70
|
+
* which is exactly WHY they can never race `reclaimStep`'s own (separate) CAS write. Referenced
|
|
71
|
+
* (not asserted via) by this invariant's two existing pinning tests (`reclaim-step.test.ts` +
|
|
72
|
+
* the CLI's `reclaim.test.ts`) so a future reader can grep this name to find both, and
|
|
73
|
+
* reclaim-step.ts's own SOURCE stays untouched by this PR.
|
|
36
74
|
*/
|
|
37
|
-
export declare const RECLAIM_REFUSES_GATE_STEP
|
|
75
|
+
export declare const RECLAIM_REFUSES_GATE_STEP: string;
|
|
38
76
|
//# sourceMappingURL=settlement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../../src/engine/settlement.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../../src/engine/settlement.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAEhB,iBAAiB,EAQlB,MAAM,wBAAwB,CAAC;AA4GhC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,kBAAkB,EAC9B,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,EACrC,OAAO,EAAE,iBAAiB,GAAG,WAAW,CAAC,gBAAgB,CAAC,GACzD,MAAM,EAAE,CAoBV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,GACtC,WAAW,CAAC,gBAAgB,CAAC,CAM/B;AA8/BD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,kBAAkB,EAC9B,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,GACvB,gBAAgB,CAoBlB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,yBAAyB,QAIE,CAAC"}
|