@principles/core 1.134.0 → 1.136.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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js +8 -0
- package/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/chain-integrity-real-path.test.js +20 -3
- package/dist/runtime-v2/__tests__/chain-integrity-real-path.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/dreamer-runner-vslice.test.js +12 -0
- package/dist/runtime-v2/__tests__/dreamer-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/dreamer-runner.test.js +7 -2
- package/dist/runtime-v2/__tests__/dreamer-runner.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js +20 -0
- package/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/internalization-consumer-product-path.test.js +4 -0
- package/dist/runtime-v2/__tests__/internalization-consumer-product-path.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/internalization-integrity-remediation.test.js +84 -2
- package/dist/runtime-v2/__tests__/internalization-integrity-remediation.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/philosopher-runner-vslice.test.js +4 -0
- package/dist/runtime-v2/__tests__/philosopher-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/rollout-reviewer-runner-vslice.test.js +8 -0
- package/dist/runtime-v2/__tests__/rollout-reviewer-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js +4 -0
- package/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/__tests__/trainer-runner-vslice.test.js +8 -0
- package/dist/runtime-v2/__tests__/trainer-runner-vslice.test.js.map +1 -1
- package/dist/runtime-v2/index.d.ts +2 -2
- package/dist/runtime-v2/index.d.ts.map +1 -1
- package/dist/runtime-v2/index.js +1 -1
- package/dist/runtime-v2/index.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +3 -0
- package/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.js +4 -0
- package/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js +4 -0
- package/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js +4 -0
- package/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js.map +1 -1
- package/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.js +4 -0
- package/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.js.map +1 -1
- package/dist/runtime-v2/internalization-integrity-remediation.d.ts +20 -0
- package/dist/runtime-v2/internalization-integrity-remediation.d.ts.map +1 -1
- package/dist/runtime-v2/internalization-integrity-remediation.js +122 -0
- package/dist/runtime-v2/internalization-integrity-remediation.js.map +1 -1
- package/dist/runtime-v2/recovery-sweep-service.d.ts +18 -0
- package/dist/runtime-v2/recovery-sweep-service.d.ts.map +1 -1
- package/dist/runtime-v2/recovery-sweep-service.js +46 -0
- package/dist/runtime-v2/recovery-sweep-service.js.map +1 -1
- package/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js +9 -0
- package/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js.map +1 -1
- package/dist/runtime-v2/runner/base-peer-runner.d.ts +1 -0
- package/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
- package/dist/runtime-v2/runner/base-peer-runner.js +34 -4
- package/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
- package/dist/runtime-v2/store/concurrent-lease.test.js +13 -13
- package/dist/runtime-v2/store/concurrent-lease.test.js.map +1 -1
- package/dist/runtime-v2/store/lifecycle/lease-manager.d.ts.map +1 -1
- package/dist/runtime-v2/store/lifecycle/lease-manager.js +5 -0
- package/dist/runtime-v2/store/lifecycle/lease-manager.js.map +1 -1
- package/dist/runtime-v2/store/run/memory-run-store.d.ts +2 -1
- package/dist/runtime-v2/store/run/memory-run-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/run/memory-run-store.js +5 -0
- package/dist/runtime-v2/store/run/memory-run-store.js.map +1 -1
- package/dist/runtime-v2/store/run/run-store.d.ts +27 -0
- package/dist/runtime-v2/store/run/run-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/run/sqlite-run-store.d.ts +26 -2
- package/dist/runtime-v2/store/run/sqlite-run-store.d.ts.map +1 -1
- package/dist/runtime-v2/store/run/sqlite-run-store.js +134 -20
- package/dist/runtime-v2/store/run/sqlite-run-store.js.map +1 -1
- package/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.d.ts +2 -0
- package/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.d.ts.map +1 -0
- package/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.js +160 -0
- package/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.js.map +1 -0
- package/dist/runtime-v2/store/runtime-state-manager.d.ts +22 -1
- package/dist/runtime-v2/store/runtime-state-manager.d.ts.map +1 -1
- package/dist/runtime-v2/store/runtime-state-manager.js +48 -3
- package/dist/runtime-v2/store/runtime-state-manager.js.map +1 -1
- package/dist/runtime-v2/store/sqlite-run-store.test.js +172 -2
- package/dist/runtime-v2/store/sqlite-run-store.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,14 +5,72 @@
|
|
|
5
5
|
* Validates every row read with TypeBox Value.Check().
|
|
6
6
|
*/
|
|
7
7
|
import { Value } from '@sinclair/typebox/value';
|
|
8
|
-
import { RunRecordSchema } from '../../runtime-protocol.js';
|
|
8
|
+
import { RuntimeKindSchema, RunRecordSchema } from '../../runtime-protocol.js';
|
|
9
9
|
import { PDRuntimeError } from '../../error-categories.js';
|
|
10
|
+
// ── Field-level runtime readers (trust boundary for untrusted DB rows) ───────
|
|
11
|
+
//
|
|
12
|
+
// These exist because String()/Number() coercion washes missing/wrong-typed
|
|
13
|
+
// values into legal-looking ones (e.g. String(undefined) → "undefined" passes
|
|
14
|
+
// Type.String()), which hides malformed rows from detection. Each reader is a
|
|
15
|
+
// runtime guard: required fields fail loud, optional fields only accept their
|
|
16
|
+
// declared nullable shape. Enum fields are intentionally NOT coerced here —
|
|
17
|
+
// TypeBox Value.Check is the single authority on enum membership.
|
|
18
|
+
/** Read a required non-empty string. Fails loud on missing/non-string/empty. */
|
|
19
|
+
function readRequiredString(value, fieldName, runIdForError) {
|
|
20
|
+
if (typeof value !== 'string') {
|
|
21
|
+
throw new PDRuntimeError('storage_unavailable', `Run ${runIdForError} has invalid schema: /${fieldName}: expected string, got ${value === null ? 'null' : typeof value}`);
|
|
22
|
+
}
|
|
23
|
+
if (value.length === 0) {
|
|
24
|
+
throw new PDRuntimeError('storage_unavailable', `Run ${runIdForError} has invalid schema: /${fieldName}: expected non-empty string`);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Read a required non-negative integer. Fails loud on missing/non-number/
|
|
30
|
+
* non-integer/negative. NaN is explicitly rejected (Number(undefined)===NaN
|
|
31
|
+
* must not silently become 0).
|
|
32
|
+
*/
|
|
33
|
+
function readRequiredInt(value, fieldName, runIdForError) {
|
|
34
|
+
if (typeof value !== 'number' || !Number.isInteger(value)) {
|
|
35
|
+
throw new PDRuntimeError('storage_unavailable', `Run ${runIdForError} has invalid schema: /${fieldName}: expected integer, got ${value === null ? 'null' : typeof value}`);
|
|
36
|
+
}
|
|
37
|
+
if (value < 0) {
|
|
38
|
+
throw new PDRuntimeError('storage_unavailable', `Run ${runIdForError} has invalid schema: /${fieldName}: expected non-negative integer, got ${value}`);
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Read an optional string. Only string | null | undefined are acceptable.
|
|
44
|
+
* A non-string truthy value (number, object, etc.) is a malformed row and
|
|
45
|
+
* fails loud rather than being coerced. null/undefined → undefined.
|
|
46
|
+
*/
|
|
47
|
+
function readOptionalString(value, fieldName, runIdForError) {
|
|
48
|
+
if (value === null || value === undefined)
|
|
49
|
+
return undefined;
|
|
50
|
+
if (typeof value !== 'string') {
|
|
51
|
+
throw new PDRuntimeError('storage_unavailable', `Run ${runIdForError} has invalid schema: /${fieldName}: expected string|null, got ${typeof value}`);
|
|
52
|
+
}
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
export class MalformedRunError extends PDRuntimeError {
|
|
56
|
+
validRuns;
|
|
57
|
+
degradedRuns;
|
|
58
|
+
constructor(message, validRuns, degradedRuns) {
|
|
59
|
+
super('storage_unavailable', message);
|
|
60
|
+
this.validRuns = validRuns;
|
|
61
|
+
this.degradedRuns = degradedRuns;
|
|
62
|
+
this.name = 'MalformedRunError';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
10
65
|
export class SqliteRunStore {
|
|
11
66
|
connection;
|
|
12
67
|
constructor(connection) {
|
|
13
68
|
this.connection = connection;
|
|
14
69
|
}
|
|
15
70
|
async createRun(record) {
|
|
71
|
+
if (!Value.Check(RuntimeKindSchema, record.runtimeKind)) {
|
|
72
|
+
throw new PDRuntimeError('input_invalid', `Invalid runtime kind: ${record.runtimeKind}`);
|
|
73
|
+
}
|
|
16
74
|
const db = this.connection.getDb();
|
|
17
75
|
const now = new Date().toISOString();
|
|
18
76
|
db.prepare(`
|
|
@@ -28,7 +86,13 @@ export class SqliteRunStore {
|
|
|
28
86
|
.get(runId);
|
|
29
87
|
if (!row)
|
|
30
88
|
return null;
|
|
31
|
-
|
|
89
|
+
try {
|
|
90
|
+
return SqliteRunStore.rowToRecord(row);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
94
|
+
throw new MalformedRunError(`Run ${runId} has invalid schema`, [], [{ runId, error: msg, rawRow: row }]);
|
|
95
|
+
}
|
|
32
96
|
}
|
|
33
97
|
async updateRun(runId, patch) {
|
|
34
98
|
const db = this.connection.getDb();
|
|
@@ -69,38 +133,88 @@ export class SqliteRunStore {
|
|
|
69
133
|
return (await this.getRun(runId));
|
|
70
134
|
}
|
|
71
135
|
async listRunsByTask(taskId) {
|
|
136
|
+
const { runs, degradedRuns } = await this.listValidRunsByTaskTolerant(taskId);
|
|
137
|
+
if (degradedRuns.length > 0) {
|
|
138
|
+
throw new MalformedRunError(`Task ${taskId} has ${degradedRuns.length} malformed run(s)`, runs, degradedRuns);
|
|
139
|
+
}
|
|
140
|
+
return runs;
|
|
141
|
+
}
|
|
142
|
+
async listValidRunsByTaskTolerant(taskId) {
|
|
72
143
|
const db = this.connection.getDb();
|
|
73
144
|
const rows = db
|
|
74
145
|
.prepare('SELECT * FROM runs WHERE task_id = ? ORDER BY started_at ASC')
|
|
75
146
|
.all(taskId);
|
|
76
|
-
|
|
147
|
+
const runs = [];
|
|
148
|
+
const degradedRuns = [];
|
|
149
|
+
for (const row of rows) {
|
|
150
|
+
try {
|
|
151
|
+
const record = SqliteRunStore.rowToRecord(row);
|
|
152
|
+
runs.push(record);
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
const runId = row.run_id ? String(row.run_id) : 'unknown';
|
|
156
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
157
|
+
degradedRuns.push({
|
|
158
|
+
runId,
|
|
159
|
+
error: msg,
|
|
160
|
+
rawRow: row,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return { runs, degradedRuns };
|
|
77
165
|
}
|
|
78
166
|
async deleteRun(runId) {
|
|
79
167
|
const db = this.connection.getDb();
|
|
80
168
|
const result = db.prepare('DELETE FROM runs WHERE run_id = ?').run(runId);
|
|
81
169
|
return result.changes > 0;
|
|
82
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Convert a raw DB row into a validated RunRecord.
|
|
173
|
+
*
|
|
174
|
+
* Public so the integrity-repair detection pass can reuse the EXACT same
|
|
175
|
+
* validation logic as the production read path (EP-01: no duplicated
|
|
176
|
+
* schema validation that can drift from the real one).
|
|
177
|
+
*
|
|
178
|
+
* Trust boundary (ERR-001, ERR-005): the row is UNTRUSTED data. We must NOT
|
|
179
|
+
* use String()/Number() coercion — that washes missing fields into legal
|
|
180
|
+
* strings/numbers (e.g. `String(undefined)` → `"undefined"` passes Type.String()),
|
|
181
|
+
* hiding malformed rows from detection. Instead each field is read with a
|
|
182
|
+
* runtime guard; required fields fail loud, optional fields only accept their
|
|
183
|
+
* declared nullable shape, and enum fields are passed through as-is so TypeBox
|
|
184
|
+
* is the single authority on enum validity.
|
|
185
|
+
*
|
|
186
|
+
* @throws PDRuntimeError{storage_unavailable} if the row fails schema validation.
|
|
187
|
+
*/
|
|
83
188
|
static rowToRecord(row) {
|
|
84
|
-
|
|
189
|
+
// runId is extracted first (best-effort) so error messages can name the row,
|
|
190
|
+
// but it is still validated below — do not trust this value for logic.
|
|
191
|
+
const runIdForError = typeof row.run_id === 'string' && row.run_id.length > 0
|
|
192
|
+
? row.run_id
|
|
193
|
+
: '<missing run_id>';
|
|
85
194
|
const record = {
|
|
86
|
-
runId,
|
|
87
|
-
taskId:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
195
|
+
runId: readRequiredString(row.run_id, 'run_id', runIdForError),
|
|
196
|
+
taskId: readRequiredString(row.task_id, 'task_id', runIdForError),
|
|
197
|
+
// Enums: read the raw value without coercion. TypeBox Value.Check below is
|
|
198
|
+
// the single authority on whether it is a valid enum member.
|
|
199
|
+
runtimeKind: row.runtime_kind,
|
|
200
|
+
executionStatus: row.execution_status,
|
|
201
|
+
startedAt: readRequiredString(row.started_at, 'started_at', runIdForError),
|
|
202
|
+
attemptNumber: readRequiredInt(row.attempt_number, 'attempt_number', runIdForError),
|
|
203
|
+
createdAt: readRequiredString(row.created_at, 'created_at', runIdForError),
|
|
204
|
+
updatedAt: readRequiredString(row.updated_at, 'updated_at', runIdForError),
|
|
205
|
+
// Optional strings: only string | null | undefined are acceptable shapes.
|
|
206
|
+
endedAt: readOptionalString(row.ended_at, 'ended_at', runIdForError),
|
|
207
|
+
reason: readOptionalString(row.reason, 'reason', runIdForError),
|
|
208
|
+
outputRef: readOptionalString(row.output_ref, 'output_ref', runIdForError),
|
|
209
|
+
inputPayload: readOptionalString(row.input_payload, 'input_payload', runIdForError),
|
|
210
|
+
outputPayload: readOptionalString(row.output_payload, 'output_payload', runIdForError),
|
|
211
|
+
// Optional enum: pass through as-is; TypeBox validates enum membership.
|
|
212
|
+
errorCategory: (row.error_category ?? undefined),
|
|
101
213
|
};
|
|
102
214
|
if (!Value.Check(RunRecordSchema, record)) {
|
|
103
|
-
|
|
215
|
+
const errors = [...Value.Errors(RunRecordSchema, record)];
|
|
216
|
+
const details = errors.map(e => `${e.path}: ${e.message}`).join(', ');
|
|
217
|
+
throw new PDRuntimeError('storage_unavailable', `Run ${runIdForError} has invalid schema: ${details}`);
|
|
104
218
|
}
|
|
105
219
|
return record;
|
|
106
220
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-run-store.js","sourceRoot":"","sources":["../../../../src/runtime-v2/store/run/sqlite-run-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,eAAe,EAA2C,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite-run-store.js","sourceRoot":"","sources":["../../../../src/runtime-v2/store/run/sqlite-run-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-state-manager-malformed-run-tolerance.test.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
+
/**
|
|
3
|
+
* RuntimeStateManager + BasePeerRunner malformed-run tolerance (PRI-392 follow-up).
|
|
4
|
+
*
|
|
5
|
+
* Verifies the execution/completion path no longer throws when a task has
|
|
6
|
+
* historical schema-malformed run rows, as long as a valid run exists
|
|
7
|
+
* (the one created by acquireLease). This exercises the REAL production
|
|
8
|
+
* path against a real state.db (ERR-025): no mocked helpers.
|
|
9
|
+
*
|
|
10
|
+
* Covers:
|
|
11
|
+
* - getValidRunsByTaskTolerant returns valid + degraded without throwing
|
|
12
|
+
* - markTaskSucceeded tolerates malformed historical runs
|
|
13
|
+
* - markTaskFailed tolerates malformed historical runs
|
|
14
|
+
* - markTaskRetryWait tolerates malformed historical runs
|
|
15
|
+
* - a degradation_triggered telemetry event is emitted (ERR-002: observable)
|
|
16
|
+
*/
|
|
17
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
18
|
+
import * as fs from 'fs';
|
|
19
|
+
import * as path from 'path';
|
|
20
|
+
import * as os from 'os';
|
|
21
|
+
import { RuntimeStateManager } from './runtime-state-manager.js';
|
|
22
|
+
import { StoreEventEmitter } from './event-emitter.js';
|
|
23
|
+
function makeTaskInput(taskId) {
|
|
24
|
+
return {
|
|
25
|
+
taskId,
|
|
26
|
+
taskKind: 'diagnostician',
|
|
27
|
+
status: 'pending',
|
|
28
|
+
attemptCount: 0,
|
|
29
|
+
maxAttempts: 3,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Insert a schema-malformed run row via raw SQL. Invalid runtime_kind 'config'
|
|
34
|
+
* fails TypeBox Value.Check(RunRecordSchema) the same way production
|
|
35
|
+
* malformed rows do (matches the fixture in sqlite-run-store.test.ts).
|
|
36
|
+
*/
|
|
37
|
+
function insertMalformedRun(mgr, opts) {
|
|
38
|
+
const now = new Date().toISOString();
|
|
39
|
+
mgr.connection.getDb().prepare(`INSERT INTO runs (run_id, task_id, runtime_kind, started_at, attempt_number, execution_status, created_at, updated_at)
|
|
40
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(opts.runId, opts.taskId, 'config', now, opts.attemptNumber, 'failed', now, now);
|
|
41
|
+
}
|
|
42
|
+
describe('RuntimeStateManager malformed-run tolerance', () => {
|
|
43
|
+
let testDir;
|
|
44
|
+
let mgr;
|
|
45
|
+
let emitter;
|
|
46
|
+
let events;
|
|
47
|
+
beforeEach(async () => {
|
|
48
|
+
testDir = path.join(os.tmpdir(), `pd-malformed-tol-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
49
|
+
fs.mkdirSync(testDir, { recursive: true });
|
|
50
|
+
// Use a fresh emitter (not the singleton) so listeners don't leak across tests.
|
|
51
|
+
emitter = new StoreEventEmitter();
|
|
52
|
+
events = [];
|
|
53
|
+
emitter.onTelemetry((ev) => events.push(ev));
|
|
54
|
+
mgr = new RuntimeStateManager({ workspaceDir: testDir, emitter });
|
|
55
|
+
await mgr.initialize();
|
|
56
|
+
});
|
|
57
|
+
afterEach(async () => {
|
|
58
|
+
await mgr.close();
|
|
59
|
+
try {
|
|
60
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// ignore Windows cleanup errors
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
function degradationEventsFor(_taskId) {
|
|
67
|
+
return events.filter((e) => e.eventType === 'degradation_triggered'
|
|
68
|
+
&& e.payload?.trigger === 'malformed_historical_run_rows');
|
|
69
|
+
}
|
|
70
|
+
/** Runtime-guarded field read from a telemetry payload (no `as` cast on untrusted shape). */
|
|
71
|
+
function payloadField(ev, field) {
|
|
72
|
+
const { payload } = ev;
|
|
73
|
+
if (typeof payload !== 'object' || payload === null) {
|
|
74
|
+
throw new Error(`payload is not an object for event ${ev.traceId}`);
|
|
75
|
+
}
|
|
76
|
+
return payload[field];
|
|
77
|
+
}
|
|
78
|
+
// ── getValidRunsByTaskTolerant ──────────────────────────────────────────────
|
|
79
|
+
it('getValidRunsByTaskTolerant returns valid + degraded without throwing', async () => {
|
|
80
|
+
await mgr.createTask(makeTaskInput('task-tol'));
|
|
81
|
+
// malformed historical run
|
|
82
|
+
insertMalformedRun(mgr, { runId: 'run_bad_1', taskId: 'task-tol', attemptNumber: 1 });
|
|
83
|
+
// fresh valid run (as acquireLease would create)
|
|
84
|
+
await mgr.runStore.createRun({
|
|
85
|
+
runId: 'run_good_2',
|
|
86
|
+
taskId: 'task-tol',
|
|
87
|
+
runtimeKind: 'openclaw',
|
|
88
|
+
executionStatus: 'running',
|
|
89
|
+
startedAt: new Date().toISOString(),
|
|
90
|
+
attemptNumber: 2,
|
|
91
|
+
});
|
|
92
|
+
const result = await mgr.getValidRunsByTaskTolerant('task-tol');
|
|
93
|
+
expect(result.runs.map((r) => r.runId)).toEqual(['run_good_2']);
|
|
94
|
+
expect(result.degradedRuns.map((r) => r.runId)).toEqual(['run_bad_1']);
|
|
95
|
+
});
|
|
96
|
+
// ── markTaskSucceeded tolerates malformed historical runs ───────────────────
|
|
97
|
+
it('markTaskSucceeded does NOT throw on malformed historical runs and updates the latest valid run', async () => {
|
|
98
|
+
const taskId = 'task-succ-tol';
|
|
99
|
+
await mgr.createTask(makeTaskInput(taskId));
|
|
100
|
+
insertMalformedRun(mgr, { runId: 'run_bad_succ', taskId, attemptNumber: 1 });
|
|
101
|
+
// acquireLease creates a valid running run (attempt 2)
|
|
102
|
+
await mgr.acquireLease({ taskId, owner: 'agent-1', runtimeKind: 'openclaw' });
|
|
103
|
+
// This used to throw MalformedRunError inside markTaskSucceeded.
|
|
104
|
+
const updated = await mgr.markTaskSucceeded(taskId, 'result-ref-1');
|
|
105
|
+
expect(updated.status).toBe('succeeded');
|
|
106
|
+
// The latest VALID run must be updated to succeeded (not the malformed one).
|
|
107
|
+
// Read via the tolerant accessor since the malformed row makes listRunsByTask throw.
|
|
108
|
+
const { runs } = await mgr.getValidRunsByTaskTolerant(taskId);
|
|
109
|
+
const latest = runs[runs.length - 1];
|
|
110
|
+
expect(latest).toBeDefined();
|
|
111
|
+
expect(latest.executionStatus).toBe('succeeded');
|
|
112
|
+
expect(latest.outputRef).toBe('result-ref-1');
|
|
113
|
+
// ERR-002: degradation must be observable, not silent.
|
|
114
|
+
const degradations = degradationEventsFor(taskId);
|
|
115
|
+
expect(degradations.length).toBeGreaterThanOrEqual(1);
|
|
116
|
+
const ev = degradations[0];
|
|
117
|
+
const caller = payloadField(ev, 'caller');
|
|
118
|
+
expect(caller).toBe('markTaskSucceeded');
|
|
119
|
+
const degradedCount = payloadField(ev, 'degradedCount');
|
|
120
|
+
expect(degradedCount).toBe(1);
|
|
121
|
+
const runIds = payloadField(ev, 'runIds');
|
|
122
|
+
expect(runIds).toEqual(['run_bad_succ']);
|
|
123
|
+
});
|
|
124
|
+
// ── markTaskFailed tolerates malformed historical runs ──────────────────────
|
|
125
|
+
it('markTaskFailed does NOT throw on malformed historical runs and updates the latest valid run', async () => {
|
|
126
|
+
const taskId = 'task-fail-tol';
|
|
127
|
+
await mgr.createTask(makeTaskInput(taskId));
|
|
128
|
+
insertMalformedRun(mgr, { runId: 'run_bad_fail', taskId, attemptNumber: 1 });
|
|
129
|
+
await mgr.acquireLease({ taskId, owner: 'agent-1', runtimeKind: 'openclaw' });
|
|
130
|
+
const updated = await mgr.markTaskFailed(taskId, 'execution_failed', 'model crashed');
|
|
131
|
+
expect(updated.status).toBe('failed');
|
|
132
|
+
const { runs: failRuns } = await mgr.getValidRunsByTaskTolerant(taskId);
|
|
133
|
+
const latest = failRuns[failRuns.length - 1];
|
|
134
|
+
expect(latest).toBeDefined();
|
|
135
|
+
expect(latest.executionStatus).toBe('failed');
|
|
136
|
+
expect(latest.errorCategory).toBe('execution_failed');
|
|
137
|
+
expect(latest.reason).toBe('model crashed');
|
|
138
|
+
const degradations = degradationEventsFor(taskId);
|
|
139
|
+
expect(degradations.length).toBeGreaterThanOrEqual(1);
|
|
140
|
+
expect(payloadField(degradations[0], 'caller')).toBe('markTaskFailed');
|
|
141
|
+
});
|
|
142
|
+
// ── markTaskRetryWait tolerates malformed historical runs ───────────────────
|
|
143
|
+
it('markTaskRetryWait does NOT throw on malformed historical runs and updates the latest valid run', async () => {
|
|
144
|
+
const taskId = 'task-retry-tol';
|
|
145
|
+
await mgr.createTask(makeTaskInput(taskId));
|
|
146
|
+
insertMalformedRun(mgr, { runId: 'run_bad_retry', taskId, attemptNumber: 1 });
|
|
147
|
+
await mgr.acquireLease({ taskId, owner: 'agent-1', runtimeKind: 'openclaw' });
|
|
148
|
+
const updated = await mgr.markTaskRetryWait(taskId, 'execution_failed', 'transient');
|
|
149
|
+
expect(updated.status).toBe('retry_wait');
|
|
150
|
+
const { runs: retryRuns } = await mgr.getValidRunsByTaskTolerant(taskId);
|
|
151
|
+
const latest = retryRuns[retryRuns.length - 1];
|
|
152
|
+
expect(latest).toBeDefined();
|
|
153
|
+
expect(latest.executionStatus).toBe('failed');
|
|
154
|
+
expect(latest.errorCategory).toBe('execution_failed');
|
|
155
|
+
const degradations = degradationEventsFor(taskId);
|
|
156
|
+
expect(degradations.length).toBeGreaterThanOrEqual(1);
|
|
157
|
+
expect(payloadField(degradations[0], 'caller')).toBe('markTaskRetryWait');
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=runtime-state-manager-malformed-run-tolerance.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-state-manager-malformed-run-tolerance.test.js","sourceRoot":"","sources":["../../../src/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import type { SqliteConnection } from './sqlite-connection.js';
|
|
21
21
|
import type { TaskStore, TaskStoreFilter, TaskStoreUpdatePatch } from './task/task-store.js';
|
|
22
|
-
import type { RunStore, RunRecord } from './run/run-store.js';
|
|
22
|
+
import type { RunStore, RunRecord, TolerantRunListResult } from './run/run-store.js';
|
|
23
23
|
import type { AcquireLeaseOptions } from './lifecycle/lease-manager.js';
|
|
24
24
|
import type { RetryPolicy, RetryPolicyConfig } from './lifecycle/retry-policy.js';
|
|
25
25
|
import type { RecoveryResult } from './lifecycle/recovery-sweep.js';
|
|
@@ -76,6 +76,16 @@ export declare class RuntimeStateManager {
|
|
|
76
76
|
updateTask(taskId: string, patch: TaskStoreUpdatePatch): Promise<TaskRecord>;
|
|
77
77
|
deleteTask(taskId: string): Promise<boolean>;
|
|
78
78
|
getRunsByTask(taskId: string): Promise<RunRecord[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Tolerant variant of getRunsByTask: returns valid runs AND any
|
|
81
|
+
* schema-degraded historical rows instead of throwing MalformedRunError.
|
|
82
|
+
*
|
|
83
|
+
* Used by the runner execution/completion path so a malformed historical
|
|
84
|
+
* run row does not block recovery of a task that still has a valid run
|
|
85
|
+
* (the one created by acquireLease). Callers MUST surface a non-empty
|
|
86
|
+
* degradedRuns list via telemetry/notes — silent swallowing is a bug (ERR-002).
|
|
87
|
+
*/
|
|
88
|
+
getValidRunsByTaskTolerant(taskId: string): Promise<TolerantRunListResult>;
|
|
79
89
|
getRun(runId: string): Promise<RunRecord | null>;
|
|
80
90
|
acquireLease(options: AcquireLeaseOptions): Promise<TaskRecord>;
|
|
81
91
|
releaseLease(taskId: string, owner: string): Promise<TaskRecord>;
|
|
@@ -95,6 +105,17 @@ export declare class RuntimeStateManager {
|
|
|
95
105
|
* Per D-04: DiagnosticianOutputV1 JSON serialized into RunRecord.outputPayload.
|
|
96
106
|
*/
|
|
97
107
|
updateRunOutput(runId: string, outputPayload: string): Promise<RunRecord>;
|
|
108
|
+
/**
|
|
109
|
+
* Observe malformed historical run rows without blocking the caller.
|
|
110
|
+
*
|
|
111
|
+
* The execution/completion path tolerates schema-invalid historical run
|
|
112
|
+
* rows (they must not block recovery of a task that has a valid run from
|
|
113
|
+
* acquireLease). But tolerance MUST be observable — silently swallowing
|
|
114
|
+
* degraded rows is a bug (ERR-002). This emits a structured
|
|
115
|
+
* degradation_triggered event naming the affected runIds so operators can
|
|
116
|
+
* find and quarantine them via `pd runtime internalization integrity-repair`.
|
|
117
|
+
*/
|
|
118
|
+
private observeMalformedRuns;
|
|
98
119
|
runRecoverySweep(): Promise<{
|
|
99
120
|
recovered: number;
|
|
100
121
|
errors: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-state-manager.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/store/runtime-state-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-state-manager.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/store/runtime-state-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -113,6 +113,19 @@ export class RuntimeStateManager {
|
|
|
113
113
|
this.assertInitialized();
|
|
114
114
|
return this._runStore.listRunsByTask(taskId);
|
|
115
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Tolerant variant of getRunsByTask: returns valid runs AND any
|
|
118
|
+
* schema-degraded historical rows instead of throwing MalformedRunError.
|
|
119
|
+
*
|
|
120
|
+
* Used by the runner execution/completion path so a malformed historical
|
|
121
|
+
* run row does not block recovery of a task that still has a valid run
|
|
122
|
+
* (the one created by acquireLease). Callers MUST surface a non-empty
|
|
123
|
+
* degradedRuns list via telemetry/notes — silent swallowing is a bug (ERR-002).
|
|
124
|
+
*/
|
|
125
|
+
async getValidRunsByTaskTolerant(taskId) {
|
|
126
|
+
this.assertInitialized();
|
|
127
|
+
return this._runStore.listValidRunsByTaskTolerant(taskId);
|
|
128
|
+
}
|
|
116
129
|
async getRun(runId) {
|
|
117
130
|
this.assertInitialized();
|
|
118
131
|
return this._runStore.getRun(runId);
|
|
@@ -150,7 +163,8 @@ export class RuntimeStateManager {
|
|
|
150
163
|
resultRef: resultRef ?? null,
|
|
151
164
|
});
|
|
152
165
|
// Update the latest run to terminal 'succeeded' state
|
|
153
|
-
const runs = await this._runStore.
|
|
166
|
+
const { runs, degradedRuns } = await this._runStore.listValidRunsByTaskTolerant(taskId);
|
|
167
|
+
this.observeMalformedRuns(taskId, degradedRuns, 'markTaskSucceeded');
|
|
154
168
|
const latestRun = runs[runs.length - 1];
|
|
155
169
|
if (latestRun) {
|
|
156
170
|
await this._runStore.updateRun(latestRun.runId, {
|
|
@@ -180,7 +194,8 @@ export class RuntimeStateManager {
|
|
|
180
194
|
lastError,
|
|
181
195
|
});
|
|
182
196
|
// Update the latest run to terminal 'failed' state
|
|
183
|
-
const runs = await this._runStore.
|
|
197
|
+
const { runs, degradedRuns } = await this._runStore.listValidRunsByTaskTolerant(taskId);
|
|
198
|
+
this.observeMalformedRuns(taskId, degradedRuns, 'markTaskFailed');
|
|
184
199
|
const latestRun = runs[runs.length - 1];
|
|
185
200
|
if (latestRun) {
|
|
186
201
|
await this._runStore.updateRun(latestRun.runId, {
|
|
@@ -217,7 +232,8 @@ export class RuntimeStateManager {
|
|
|
217
232
|
lastError: errorCategory,
|
|
218
233
|
});
|
|
219
234
|
// Update the latest run to 'failed' state with error category
|
|
220
|
-
const runs = await this._runStore.
|
|
235
|
+
const { runs, degradedRuns } = await this._runStore.listValidRunsByTaskTolerant(taskId);
|
|
236
|
+
this.observeMalformedRuns(taskId, degradedRuns, 'markTaskRetryWait');
|
|
221
237
|
const latestRun = runs[runs.length - 1];
|
|
222
238
|
if (latestRun) {
|
|
223
239
|
await this._runStore.updateRun(latestRun.runId, {
|
|
@@ -258,6 +274,35 @@ export class RuntimeStateManager {
|
|
|
258
274
|
});
|
|
259
275
|
return updated;
|
|
260
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* Observe malformed historical run rows without blocking the caller.
|
|
279
|
+
*
|
|
280
|
+
* The execution/completion path tolerates schema-invalid historical run
|
|
281
|
+
* rows (they must not block recovery of a task that has a valid run from
|
|
282
|
+
* acquireLease). But tolerance MUST be observable — silently swallowing
|
|
283
|
+
* degraded rows is a bug (ERR-002). This emits a structured
|
|
284
|
+
* degradation_triggered event naming the affected runIds so operators can
|
|
285
|
+
* find and quarantine them via `pd runtime internalization integrity-repair`.
|
|
286
|
+
*/
|
|
287
|
+
observeMalformedRuns(taskId, degradedRuns, caller) {
|
|
288
|
+
if (degradedRuns.length === 0)
|
|
289
|
+
return;
|
|
290
|
+
this.emitter.emitTelemetry({
|
|
291
|
+
eventType: 'degradation_triggered',
|
|
292
|
+
traceId: taskId,
|
|
293
|
+
timestamp: new Date().toISOString(),
|
|
294
|
+
sessionId: 'runtime-state-manager',
|
|
295
|
+
payload: {
|
|
296
|
+
component: 'RuntimeStateManager',
|
|
297
|
+
caller,
|
|
298
|
+
trigger: 'malformed_historical_run_rows',
|
|
299
|
+
degradedCount: degradedRuns.length,
|
|
300
|
+
runIds: degradedRuns.map((r) => r.runId),
|
|
301
|
+
errors: degradedRuns.map((r) => r.error),
|
|
302
|
+
nextAction: 'Quarantine malformed run rows: pd runtime internalization integrity-repair --confirm',
|
|
303
|
+
},
|
|
304
|
+
});
|
|
305
|
+
}
|
|
261
306
|
// ── Retry/Recovery operations ─────────────────────────────────────────────
|
|
262
307
|
async runRecoverySweep() {
|
|
263
308
|
this.assertInitialized();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-state-manager.js","sourceRoot":"","sources":["../../../src/runtime-v2/store/runtime-state-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime-state-manager.js","sourceRoot":"","sources":["../../../src/runtime-v2/store/runtime-state-manager.ts"],"names":[],"mappings":"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"}
|