@sensigo/realm-testing 0.38.0 → 0.39.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/README.md +40 -0
- package/dist/assertions/evidence.d.ts.map +1 -1
- package/dist/assertions/evidence.js +8 -2
- package/dist/assertions/evidence.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/runner/test-runner.d.ts.map +1 -1
- package/dist/runner/test-runner.js +4 -1
- package/dist/runner/test-runner.js.map +1 -1
- package/dist/store/in-memory-store.d.ts +7 -1
- package/dist/store/in-memory-store.d.ts.map +1 -1
- package/dist/store/in-memory-store.js +49 -1
- package/dist/store/in-memory-store.js.map +1 -1
- package/dist/store/run-store-fidelity-contract.d.ts +3 -1
- package/dist/store/run-store-fidelity-contract.d.ts.map +1 -1
- package/dist/store/run-store-fidelity-contract.js +41 -0
- package/dist/store/run-store-fidelity-contract.js.map +1 -1
- package/dist/store/settlement-contract.d.ts +39 -1
- package/dist/store/settlement-contract.d.ts.map +1 -1
- package/dist/store/settlement-contract.js +709 -2
- package/dist/store/settlement-contract.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -10,6 +10,46 @@ npm install --save-dev @sensigo/realm-testing
|
|
|
10
10
|
|
|
11
11
|
Requires `@sensigo/realm` at the same version to be installed in your project.
|
|
12
12
|
|
|
13
|
+
> **Version note (issue #367).** This release grows the published conformance suites, so a custom
|
|
14
|
+
> `RunStore` that passed the previous version can fail this one — by design.
|
|
15
|
+
>
|
|
16
|
+
> A store declaring `settleStep` must now also declare and round-trip `sealed_by` (the recorded
|
|
17
|
+
> seal arm), and must REFUSE five classes of write-integrity violation: an unstamped fresh seal, a
|
|
18
|
+
> resume that keeps the stamp, a terminal rewrite that drops it, an arm outside `SEAL_ARMS`, and an
|
|
19
|
+
> unlawful rewrite of a stored arm. The laws are `SEAL_FRESH_WRITE_REFUSED`, `SEAL_ORPHAN_REFUSED`,
|
|
20
|
+
> `SEAL_ERASE_REFUSED`, `SEAL_UNKNOWN_ARM_REFUSED`, `SEAL_REWRITE_REFUSED` and
|
|
21
|
+
> `SEALED_BY_ROUNDTRIP`. They bind DECLARING stores only — a store that declares neither
|
|
22
|
+
> `settleStep` nor the field passes them vacuously, exactly as before.
|
|
23
|
+
>
|
|
24
|
+
> `SEAL_REWRITE_REFUSED` covers eight directions, not one. A stored arm cannot be rewritten while
|
|
25
|
+
> the run is terminal, with ONE lawful exception: an adjudication write carrying fresh, truthful
|
|
26
|
+
> provenance — who ruled, when, and which arm it replaced. What is refused around that exception:
|
|
27
|
+
> provenance that misnames the arm it overwrote; a same-arm write whose provenance LIES (a truthful
|
|
28
|
+
> same-arm ruling is legal — it is how an operator closes out a record they have examined); a
|
|
29
|
+
> ruling claimed on a live run's first seal; a first stamp claiming a non-null previous arm
|
|
30
|
+
> (`previous_arm: null` is the truthful form there, and only on a record that was already
|
|
31
|
+
> terminal); an arm change riding a PRIOR ruling's provenance rather than a fresh one; and a
|
|
32
|
+
> rewrite that drops a stored ruling.
|
|
33
|
+
>
|
|
34
|
+
> **A ruling supersedes the record's own prose.** A seal carrying one is exempt from the coherence
|
|
35
|
+
> audit permanently — not just on the write that records it — because that audit catches SILENT
|
|
36
|
+
> drift and a ruling is loud, attributed, and erase-proof while terminal. Prose is never rewritten
|
|
37
|
+
> to match. A ruling's identity is judged FIELD-WISE, never by serialisation bytes: a store whose
|
|
38
|
+
> round trip reorders JSON keys must not treat an honest spread as a fresh claim.
|
|
39
|
+
>
|
|
40
|
+
> A store that also declares `stampSeal` (the migration verb behind
|
|
41
|
+
> `realm run migrate --stamp-seals`) must honour six more: `STAMP_PRESERVES_UPDATED_AT`,
|
|
42
|
+
> `STAMP_BUMPS_VERSION_ONCE`, `STAMP_REFUSES_ON_VERSION_MOVE`,
|
|
43
|
+
> `STAMP_RETURNS_NOT_THROWS_PREDICATES`, `STAMP_IDEMPOTENT` and `STAMP_CLASSIFIED_ROUNDTRIP`. In
|
|
44
|
+
> short: the stamp lands and its `classified` provenance marker survives the round trip, `version`
|
|
45
|
+
> bumps so a stale writer loses its compare-and-swap, `updated_at` does NOT move because stamping
|
|
46
|
+
> is not activity, and predicate refusals RETURN rather than throw. Declaring `stampSeal` also
|
|
47
|
+
> means supplying the adapter's `seedLegacyTerminal` hook — without it the laws can only observe
|
|
48
|
+
> refusals, and a store that never writes at all would conform.
|
|
49
|
+
>
|
|
50
|
+
> `assertFinalState` also now DERIVES the run phase instead of reading the persisted `run_phase`,
|
|
51
|
+
> so a test whose fixture carried a stale label may start failing honestly.
|
|
52
|
+
|
|
13
53
|
## Usage — YAML Fixture Tests
|
|
14
54
|
|
|
15
55
|
Fixture tests are the fastest way to test a complete workflow. Each fixture file declares the initial params, mock service responses, agent step outputs, and the expected final state. The `runFixtureTests` runner loads your workflow, drives it to completion using the fixture data, and returns a result for each fixture.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/assertions/evidence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/assertions/evidence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE5E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAUvF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOtF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOnF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAcN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,IAAI,CAWN"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
// Evidence assertion helpers — throw Error on failure (framework-agnostic).
|
|
2
|
+
import { deriveRunPhase } from '@sensigo/realm';
|
|
1
3
|
/**
|
|
2
4
|
* Throws if run.run_phase !== expectedPhase.
|
|
3
5
|
* Use to verify the workflow reached the expected terminal phase.
|
|
4
6
|
*/
|
|
5
7
|
export function assertFinalState(run, expectedPhase) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
// Ride-along (boy-scout, not the reported problem): this published assertion used to read the
|
|
9
|
+
// PERSISTED `run_phase`, which the disposal rule forbids — a persisted phase can be stale, and
|
|
10
|
+
// a test asserting on it can pass while the run's real phase is something else. Derive instead.
|
|
11
|
+
const phase = deriveRunPhase(run);
|
|
12
|
+
if (phase !== expectedPhase) {
|
|
13
|
+
throw new Error(`assertFinalState: expected phase '${expectedPhase}' but run is in phase '${phase}'`);
|
|
8
14
|
}
|
|
9
15
|
}
|
|
10
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/assertions/evidence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/assertions/evidence.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,5 +21,5 @@ export { runFixtureTests } from './runner/test-runner.js';
|
|
|
21
21
|
export type { TestResult, RunFixtureTestsOptions } from './runner/test-runner.js';
|
|
22
22
|
export { startGitHubMockServer } from './servers/github-mock-server.js';
|
|
23
23
|
export type { GitHubMockServerHandle } from './servers/github-mock-server.js';
|
|
24
|
-
export declare const VERSION = "0.
|
|
24
|
+
export declare const VERSION = "0.39.0";
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -21,5 +21,5 @@ export { testAdapter } from './helpers/test-adapter.js';
|
|
|
21
21
|
export { runFixtureTests } from './runner/test-runner.js';
|
|
22
22
|
// Servers
|
|
23
23
|
export { startGitHubMockServer } from './servers/github-mock-server.js';
|
|
24
|
-
export const VERSION = '0.
|
|
24
|
+
export const VERSION = '0.39.0';
|
|
25
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../src/runner/test-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,iBAAiB,EAIjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAGvB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAOtF,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE;QAAE,QAAQ,EAAE,iBAAiB,CAAC;QAAC,QAAQ,EAAE,iBAAiB,CAAA;KAAE,CAAC;CAC3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,GAAG,YAAY,CAAC,GAC/D;IAAE,eAAe,EAAE,iBAAiB,CAAC;IAAC,gBAAgB,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAAE,CA6FzF;
|
|
1
|
+
{"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../src/runner/test-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,iBAAiB,EAIjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAGvB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAOtF,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE;QAAE,QAAQ,EAAE,iBAAiB,CAAC;QAAC,QAAQ,EAAE,iBAAiB,CAAA;KAAE,CAAC;CAC3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,GAAG,YAAY,CAAC,GAC/D;IAAE,eAAe,EAAE,iBAAiB,CAAC;IAAC,gBAAgB,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAAE,CA6FzF;AAoLD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAY5F;AAED,2CAA2C"}
|
|
@@ -179,7 +179,10 @@ async function runSingleFixture(fixture, definition, options) {
|
|
|
179
179
|
if (mockErrors !== undefined && resumesDone < mockErrors.length) {
|
|
180
180
|
stepResumeCount[nextStep] = resumesDone + 1;
|
|
181
181
|
const failedRun = await store.get(runId);
|
|
182
|
-
|
|
182
|
+
// issue #367: `sealed_by` joins the strip — this simulated resume flips the run live
|
|
183
|
+
// again, so the seal fact must leave in the same write (the ORPHANED boundary clause
|
|
184
|
+
// would otherwise refuse the update below).
|
|
185
|
+
const { terminal_reason: _tr, sealed_by: _sb, ...rest } = failedRun;
|
|
183
186
|
const newFailedSteps = rest.failed_steps.filter((s) => s !== nextStep);
|
|
184
187
|
// Recompute skipped_steps: the old skips were derived with nextStep in
|
|
185
188
|
// failed_steps. Re-derive from scratch so steps that were only skipped
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../src/runner/test-runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../src/runner/test-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type RunStore, type RunRecord, type CreateRunOptions, type WorkflowDefinition, type LoadBearingRunRecordField, type SettlementDelta, type SettlementResult } from '@sensigo/realm';
|
|
1
|
+
import { type RunStore, type SealedBy, type StampSealResult, type RunRecord, type CreateRunOptions, type WorkflowDefinition, type LoadBearingRunRecordField, type SettlementDelta, type SettlementResult } from '@sensigo/realm';
|
|
2
2
|
/** In-memory implementation of RunStore. Uses a Map keyed by run ID. No I/O, no locking. */
|
|
3
3
|
export declare class InMemoryStore implements RunStore {
|
|
4
4
|
private readonly runs;
|
|
@@ -30,6 +30,12 @@ export declare class InMemoryStore implements RunStore {
|
|
|
30
30
|
settleStep(runId: string, delta: SettlementDelta, definition: WorkflowDefinition, options?: {
|
|
31
31
|
now?: Date;
|
|
32
32
|
}): Promise<SettlementResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Issue #367 (part 3): the stamp verb — see `RunStore.stampSeal` for the contract. Same shape as
|
|
35
|
+
* JsonFileStore's, including the one thing that makes this verb exist: `updated_at` is carried
|
|
36
|
+
* through byte-for-byte, because stamping is not activity.
|
|
37
|
+
*/
|
|
38
|
+
stampSeal(runId: string, sealedBy: SealedBy, expectedVersion: number): Promise<StampSealResult>;
|
|
33
39
|
list(workflowId?: string): Promise<RunRecord[]>;
|
|
34
40
|
}
|
|
35
41
|
//# sourceMappingURL=in-memory-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../../src/store/in-memory-store.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../../src/store/in-memory-store.ts"],"names":[],"mappings":"AACA,OAAO,EASL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAExB,4FAA4F;AAC5F,qBAAa,aAAc,YAAW,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IACrD,sGAAsG;IACtG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,iGAAiG;IACjG,QAAQ,CAAC,cAAc,QAAQ;IAE/B;wGACoG;IACpG,QAAQ,CAAC,wBAAwB,EAAE,WAAW,CAAC,yBAAyB,CAAC,CAUtE;IAEG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAmDhF,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAatC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAgC7C,SAAS,CACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC,SAAS,CAAC;IA8DrB;;;;;;;;;;OAUG;IACG,UAAU,CACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,kBAAkB,EAC9B,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,IAAI,CAAA;KAAE,GACvB,OAAO,CAAC,gBAAgB,CAAC;IA2B5B;;;;OAIG;IACG,SAAS,CACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC;IAqCrB,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAOtD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// InMemoryStore — in-memory implementation of RunStore for use in tests.
|
|
2
|
-
import { WorkflowError, findEligibleSteps, deriveRunPhase, decideIdempotencyPolicy, computeClaimDeadline, isStepSettledOrInFlight, applySettlement, } from '@sensigo/realm';
|
|
2
|
+
import { WorkflowError, findEligibleSteps, deriveRunPhase, decideIdempotencyPolicy, computeClaimDeadline, isStepSettledOrInFlight, applySettlement, assertSealIntegrity, } from '@sensigo/realm';
|
|
3
3
|
/** In-memory implementation of RunStore. Uses a Map keyed by run ID. No I/O, no locking. */
|
|
4
4
|
export class InMemoryStore {
|
|
5
5
|
runs = new Map();
|
|
@@ -18,6 +18,7 @@ export class InMemoryStore {
|
|
|
18
18
|
// issue #279 (increment 1, PR-A): declared alongside settleStep — declaration-coherence.
|
|
19
19
|
'settled',
|
|
20
20
|
'finalizer_ledger',
|
|
21
|
+
'sealed_by', // issue #367 — declaration-coherence with settleStep
|
|
21
22
|
]);
|
|
22
23
|
async create(options) {
|
|
23
24
|
// Idempotency: a key match applies the re-encounter policy, like JsonFileStore.
|
|
@@ -94,6 +95,9 @@ export class InMemoryStore {
|
|
|
94
95
|
details: { runId: record.id, expected: record.version, actual: existing.version },
|
|
95
96
|
});
|
|
96
97
|
}
|
|
98
|
+
// issue #367: the seal-integrity boundary — identical to JsonFileStore's update tail (the
|
|
99
|
+
// measured update/settle asymmetry closed; the listen/run-attach suites drive THIS store).
|
|
100
|
+
assertSealIntegrity(existing, record);
|
|
97
101
|
const updated = {
|
|
98
102
|
...record,
|
|
99
103
|
run_phase: deriveRunPhase(record),
|
|
@@ -189,6 +193,9 @@ export class InMemoryStore {
|
|
|
189
193
|
if (!outcome.applied) {
|
|
190
194
|
return outcome; // refusal/noop — fresh state, NO write (version unchanged)
|
|
191
195
|
}
|
|
196
|
+
// issue #367: the boundary on the settle tail too (both stores, both tails).
|
|
197
|
+
// `assertSealIntegrity` is pure and synchronous — the documented no-await stretch above holds.
|
|
198
|
+
assertSealIntegrity(fresh, outcome.run);
|
|
192
199
|
const updated = {
|
|
193
200
|
...outcome.run,
|
|
194
201
|
run_phase: deriveRunPhase(outcome.run),
|
|
@@ -198,6 +205,47 @@ export class InMemoryStore {
|
|
|
198
205
|
this.runs.set(updated.id, updated);
|
|
199
206
|
return { ...outcome, run: updated };
|
|
200
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Issue #367 (part 3): the stamp verb — see `RunStore.stampSeal` for the contract. Same shape as
|
|
210
|
+
* JsonFileStore's, including the one thing that makes this verb exist: `updated_at` is carried
|
|
211
|
+
* through byte-for-byte, because stamping is not activity.
|
|
212
|
+
*/
|
|
213
|
+
async stampSeal(runId, sealedBy, expectedVersion) {
|
|
214
|
+
const fresh = this.runs.get(runId);
|
|
215
|
+
if (fresh === undefined) {
|
|
216
|
+
throw new WorkflowError(`Run '${runId}' not found`, {
|
|
217
|
+
code: 'STATE_RUN_NOT_FOUND',
|
|
218
|
+
category: 'STATE',
|
|
219
|
+
agentAction: 'report_to_user',
|
|
220
|
+
retryable: false,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
if (fresh.version !== expectedVersion) {
|
|
224
|
+
throw new WorkflowError('Version conflict — run was modified by another process', {
|
|
225
|
+
code: 'STATE_SNAPSHOT_MISMATCH',
|
|
226
|
+
category: 'STATE',
|
|
227
|
+
agentAction: 'report_to_user',
|
|
228
|
+
retryable: true,
|
|
229
|
+
details: { runId, expected: expectedVersion, actual: fresh.version },
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
if (fresh.sealed_by !== undefined) {
|
|
233
|
+
return { stamped: false, reason: 'already_stamped', run: fresh };
|
|
234
|
+
}
|
|
235
|
+
if (fresh.terminal_state !== true) {
|
|
236
|
+
return { stamped: false, reason: 'not_terminal', run: fresh };
|
|
237
|
+
}
|
|
238
|
+
const stamped = { ...fresh, sealed_by: sealedBy };
|
|
239
|
+
assertSealIntegrity(fresh, stamped);
|
|
240
|
+
const written = {
|
|
241
|
+
...stamped,
|
|
242
|
+
run_phase: deriveRunPhase(stamped),
|
|
243
|
+
version: fresh.version + 1,
|
|
244
|
+
updated_at: fresh.updated_at, // DELIBERATELY unchanged.
|
|
245
|
+
};
|
|
246
|
+
this.runs.set(runId, written);
|
|
247
|
+
return { stamped: true, run: written };
|
|
248
|
+
}
|
|
201
249
|
async list(workflowId) {
|
|
202
250
|
const all = [...this.runs.values()];
|
|
203
251
|
if (workflowId !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../../src/store/in-memory-store.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,
|
|
1
|
+
{"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../../src/store/in-memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type RunStore, type WorkflowDefinition } from '@sensigo/realm';
|
|
2
2
|
/** One of the two laws every `RunStore` implementation should be run against (issue #188). */
|
|
3
|
-
export type RunStoreFidelityLaw = 'FIDELITY_HONESTY' | 'CLAIM_SINGLE_OWNER'
|
|
3
|
+
export type RunStoreFidelityLaw = 'FIDELITY_HONESTY' | 'CLAIM_SINGLE_OWNER'
|
|
4
|
+
/** issue #367 — the seal arm survives a proper terminal write byte-for-byte. */
|
|
5
|
+
| 'SEALED_BY_ROUNDTRIP';
|
|
4
6
|
/**
|
|
5
7
|
* A single, framework-agnostic contract case. `run()` throws (rejects) on failure — any test
|
|
6
8
|
* framework's `await run()` (rejecting fails the test) or `expect(run()).resolves...` /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-store-fidelity-contract.d.ts","sourceRoot":"","sources":["../../src/store/run-store-fidelity-contract.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,QAAQ,EAGb,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAExB,8FAA8F;AAC9F,MAAM,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"run-store-fidelity-contract.d.ts","sourceRoot":"","sources":["../../src/store/run-store-fidelity-contract.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,QAAQ,EAGb,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAExB,8FAA8F;AAC9F,MAAM,MAAM,mBAAmB,GAC3B,kBAAkB,GAClB,oBAAoB;AACtB,gFAAgF;GAC9E,qBAAqB,CAAC;AAE1B;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,GAAG,EAAE,mBAAmB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,oGAAoG;AACpG,MAAM,WAAW,+BAA+B;IAC9C,4BAA4B;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AA4DD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,4BAA4B,EAAE,CA2GhC"}
|
|
@@ -27,6 +27,10 @@ import { WorkflowError, } from '@sensigo/realm';
|
|
|
27
27
|
* see that file's own header for why it needs no edit).
|
|
28
28
|
*/
|
|
29
29
|
const SAMPLE_VALUES = {
|
|
30
|
+
// issue #367: present so the closed-map compile check stays satisfied. The GENERIC loop below
|
|
31
|
+
// deliberately skips this field — see SEALED_BY_ROUNDTRIP for why writing it the generic way
|
|
32
|
+
// would violate the boundary it shares a package with.
|
|
33
|
+
sealed_by: { arm: 'complete' },
|
|
30
34
|
capability_blocks: {
|
|
31
35
|
'tck-step': {
|
|
32
36
|
requirement: { kind: 'handler', name: 'tck-handler' },
|
|
@@ -91,6 +95,13 @@ export function runStoreFidelityContract(adapter) {
|
|
|
91
95
|
const cases = [];
|
|
92
96
|
const declaredFields = adapter.store.persistedRunRecordFields ?? new Set();
|
|
93
97
|
for (const field of declaredFields) {
|
|
98
|
+
// issue #367: `sealed_by` cannot ride the generic loop. That loop writes its sample onto a
|
|
99
|
+
// LIVE record, and a live record carrying a seal is an orphan — the store boundary refuses it
|
|
100
|
+
// (STATE_SEAL_ORPHANED), so the case would red for a reason that has nothing to do with
|
|
101
|
+
// fidelity. It gets the dedicated SEALED_BY_ROUNDTRIP case below, which seals the run properly
|
|
102
|
+
// first and then asserts the arm survives byte-for-byte.
|
|
103
|
+
if (field === 'sealed_by')
|
|
104
|
+
continue;
|
|
94
105
|
cases.push({
|
|
95
106
|
law: 'FIDELITY_HONESTY',
|
|
96
107
|
name: `a store declaring '${field}' actually round-trips it (create → update → get)`,
|
|
@@ -114,6 +125,36 @@ export function runStoreFidelityContract(adapter) {
|
|
|
114
125
|
},
|
|
115
126
|
});
|
|
116
127
|
}
|
|
128
|
+
if (declaredFields.has('sealed_by')) {
|
|
129
|
+
cases.push({
|
|
130
|
+
law: 'SEALED_BY_ROUNDTRIP',
|
|
131
|
+
name: 'a store declaring sealed_by round-trips the seal arm through a PROPER terminal write',
|
|
132
|
+
run: async () => {
|
|
133
|
+
const { run } = await adapter.store.create({
|
|
134
|
+
workflowId: 'tck-fidelity-sealed-by',
|
|
135
|
+
workflowVersion: 1,
|
|
136
|
+
params: {},
|
|
137
|
+
});
|
|
138
|
+
// A real seal: terminal_state and sealed_by in the same write, exactly as every engine
|
|
139
|
+
// seal site does it.
|
|
140
|
+
await adapter.store.update({
|
|
141
|
+
...run,
|
|
142
|
+
completed_steps: ['tck-step'],
|
|
143
|
+
terminal_state: true,
|
|
144
|
+
sealed_by: { arm: 'complete', step: 'tck-step' },
|
|
145
|
+
terminal_reason: 'Workflow completed.',
|
|
146
|
+
});
|
|
147
|
+
const reread = await adapter.store.get(run.id);
|
|
148
|
+
const wrote = JSON.stringify({ arm: 'complete', step: 'tck-step' });
|
|
149
|
+
const read = JSON.stringify(reread.sealed_by);
|
|
150
|
+
if (read !== wrote) {
|
|
151
|
+
throw new Error(`store declares persistedRunRecordFields includes 'sealed_by' but a terminal ` +
|
|
152
|
+
`round-trip did NOT preserve it — the run's recorded outcome silently changed ` +
|
|
153
|
+
`(issue #367). wrote: ${wrote}, read back: ${read}`);
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
}
|
|
117
158
|
cases.push({
|
|
118
159
|
law: 'CLAIM_SINGLE_OWNER',
|
|
119
160
|
name: 'two concurrent claimStep calls for the same (runId, step) — exactly one succeeds',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-store-fidelity-contract.js","sourceRoot":"","sources":["../../src/store/run-store-fidelity-contract.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,kFAAkF;AAClF,EAAE;AACF,+FAA+F;AAC/F,8FAA8F;AAC9F,6FAA6F;AAC7F,kGAAkG;AAClG,aAAa;AACb,EAAE;AACF,6FAA6F;AAC7F,8FAA8F;AAC9F,kGAAkG;AAClG,+FAA+F;AAC/F,wFAAwF;AACxF,OAAO,EACL,aAAa,GAKd,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-store-fidelity-contract.js","sourceRoot":"","sources":["../../src/store/run-store-fidelity-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type RunStore, type WorkflowDefinition, type StepDefinition } from '@sensigo/realm';
|
|
1
|
+
import { type RunStore, type RunRecord, type WorkflowDefinition, type StepDefinition } from '@sensigo/realm';
|
|
2
2
|
/** One of the PR-A-runnable settlement laws (design record §8, narrowed to the PR-A subset named
|
|
3
3
|
* in the hand-off prompt's D4 section — see this module's own header). */
|
|
4
4
|
export type SettlementLaw = 'FRESH_APPLICATION' | 'CONDITIONAL_NOOP' | 'CONDITIONAL_NOOP_GRANDFATHERED' | 'OWNERSHIP_REFUSAL' | 'LEDGER_MINT_ATOMICITY' | 'DRAIN_MARK_DEDUP' | 'TERMINAL_REFUSAL' | 'TERMINAL_STATE_ONLY' | 'CS_PURITY' | 'NEVER_DOWNGRADE' | 'SETTLE_OUTCOME_INTEGRITY' | 'SETTLED_ORPHAN_OVERWRITE' | 'TRANSFORM_FIDELITY' | 'RESULT_AS_APPLIED' | 'MARK_MEMBERSHIP' | 'REFUSAL_SWEEP' | 'MINT_FRESH' | 'SELF_IMAGE_IDEMPOTENCE' | 'TERMINAL_GATE_EXCLUSION' | 'COMPLETE_SEAL_PHASE' | 'WHEN_ROUTED_TERMINALIZATION' | 'G1_GATE_COEXISTENCE' | 'GATE_OPEN_IDEMPOTENT' | 'GATE_RESOLUTION_CONFLICT' | 'GATE_MISMATCH' | 'GUARD_OUTCOME_DIVERGENCE' | 'GUARD_WAITS_ON_OPEN_GATE' | 'GUARD_PASS_COMPLETE_OUTCOME' | 'GUARD_ABORT_CASCADE' | 'GUARD_NO_ENTRY' | 'RELEASE_IDEMPOTENT'
|
|
@@ -14,6 +14,35 @@ export type SettlementLaw = 'FRESH_APPLICATION' | 'CONDITIONAL_NOOP' | 'CONDITIO
|
|
|
14
14
|
/** The new trigger never over-fires: a CLEAN complete (no `failed_steps`) does not select it;
|
|
15
15
|
* a PURE fail seal (never reaches `complete`) does not select it either. */
|
|
16
16
|
| 'CWFS_NEGATIVES'
|
|
17
|
+
/** issue #367 — a fresh seal (non-terminal → terminal write) that names no arm is REFUSED
|
|
18
|
+
* (`STATE_SEAL_UNSTAMPED`). Transition-scoped: re-writing an already-terminal legacy record
|
|
19
|
+
* passes untouched, which is what keeps the pre-#367 population usable. */
|
|
20
|
+
| 'SEAL_FRESH_WRITE_REFUSED'
|
|
21
|
+
/** issue #367 — a terminal → live write that RETAINS the seal is REFUSED
|
|
22
|
+
* (`STATE_SEAL_ORPHANED`): every resume/strip path must drop the fact in the same write. */
|
|
23
|
+
| 'SEAL_ORPHAN_REFUSED'
|
|
24
|
+
/** issue #367 — a terminal rewrite that DROPS a stored seal is REFUSED (`STATE_SEAL_ERASED`),
|
|
25
|
+
* so a field-enumerating rewriter cannot silently drain the stamped population back to prose. */
|
|
26
|
+
| 'SEAL_ERASE_REFUSED'
|
|
27
|
+
/** issue #367 — an arm outside `SEAL_ARMS` never persists (`STATE_SEAL_UNKNOWN_ARM`). */
|
|
28
|
+
| 'SEAL_UNKNOWN_ARM_REFUSED'
|
|
29
|
+
/** issue #367 part 3 — `stampSeal` leaves `updated_at` byte-identical. Stamping is not
|
|
30
|
+
* activity, and the retention clock must not move because a migration ran. */
|
|
31
|
+
| 'STAMP_PRESERVES_UPDATED_AT'
|
|
32
|
+
/** issue #367 part 3 — `stampSeal` bumps `version` exactly once, so a writer holding a
|
|
33
|
+
* pre-stamp snapshot loses its CAS instead of silently erasing the stamp. */
|
|
34
|
+
| 'STAMP_BUMPS_VERSION_ONCE'
|
|
35
|
+
/** issue #367 part 3 — a stale `expectedVersion` THROWS `STATE_SNAPSHOT_MISMATCH`. */
|
|
36
|
+
| 'STAMP_REFUSES_ON_VERSION_MOVE'
|
|
37
|
+
/** issue #367 part 3 — predicate refusals RETURN. A throw-shaped implementation fails. */
|
|
38
|
+
| 'STAMP_RETURNS_NOT_THROWS_PREDICATES'
|
|
39
|
+
/** issue #367 part 3 — re-stamping is byte-identical: no second write, no clock move. */
|
|
40
|
+
| 'STAMP_IDEMPOTENT'
|
|
41
|
+
/** issue #367 part 3 — a `classified: true` stamp survives write → read byte-for-byte, so a
|
|
42
|
+
* classifier-minted stamp stays distinguishable from a writer-asserted one forever. */
|
|
43
|
+
| 'STAMP_CLASSIFIED_ROUNDTRIP'
|
|
44
|
+
/** issue #367 part 3 — a stored arm may not be CHANGED while the run stays terminal. */
|
|
45
|
+
| 'SEAL_REWRITE_REFUSED'
|
|
17
46
|
/** Uniform-predicate pin (design record M1): a second-epoch complete seal whose ONLY
|
|
18
47
|
* `failed_steps` scar is a PRIOR epoch's finalizer self-failure (unresumable, so it never
|
|
19
48
|
* leaves `failed_steps`) still fires — no exclusion of finalizer-declared step names. */
|
|
@@ -100,6 +129,15 @@ export interface SettlementContractAdapter {
|
|
|
100
129
|
* shapes may supply its own.
|
|
101
130
|
*/
|
|
102
131
|
settlementFixture?: SettlementFixture;
|
|
132
|
+
/**
|
|
133
|
+
* Issue #367 (part 3): raw-seed an UNSTAMPED terminal record and return it — the shape the
|
|
134
|
+
* migration vehicle actually meets, and one the store's own boundary would refuse if written
|
|
135
|
+
* through it. Each store supplies its sanctioned channel (a direct file write, a direct map
|
|
136
|
+
* insert). The ADAPTER_WIRING idiom applies: a `stampSeal`-declaring store that omits this gets
|
|
137
|
+
* a failing wiring case rather than a silent pass, because the stamp laws' SUCCESS legs are
|
|
138
|
+
* unobservable without it — and a store that never writes at all would otherwise conform.
|
|
139
|
+
*/
|
|
140
|
+
seedLegacyTerminal?: (id: string) => Promise<RunRecord>;
|
|
103
141
|
}
|
|
104
142
|
/** Default settlement fixture — builds minimal agent-step / finalizer-step / guard-step
|
|
105
143
|
* definitions with no store-specific requirements beyond `RunStore.create` never validating
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settlement-contract.d.ts","sourceRoot":"","sources":["../../src/store/settlement-contract.ts"],"names":[],"mappings":"AAoBA,OAAO,EAGL,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"settlement-contract.d.ts","sourceRoot":"","sources":["../../src/store/settlement-contract.ts"],"names":[],"mappings":"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"}
|