mirror of
https://github.com/morluto/rea.git
synced 2026-10-26 17:35:11 +00:00
perf(evidence): reuse authenticated unknown mutation snapshots
This commit is contained in:
1 parent
b045df100e
commit
042dcaa1ee
3 files changed
+57
-17
No files matched your search
@@ -78,6 +78,51 @@ const update = (
|
||||
});
|
||||
|
||||
describe("residual unknown registry reads and identity", () => {
|
||||
it("seals mutation Evidence without freezing caller-owned inputs", () => {
|
||||
const store = ledger();
|
||||
const recordMutation = mutation("mutable-record-mutation");
|
||||
const recorded = store.recordUnknown(
|
||||
input("Does record mutation evidence stay stable?"),
|
||||
recordMutation,
|
||||
);
|
||||
if (!recorded.ok) throw recorded.error;
|
||||
|
||||
const updateMutation = mutation("mutable-update-mutation");
|
||||
const updated = store.updateUnknown(update(recorded.value), updateMutation);
|
||||
if (!updated.ok) throw updated.error;
|
||||
const atomicEvidence = evidence("mutable-atomic-evidence");
|
||||
const atomicMutation = mutation("mutable-atomic-mutation");
|
||||
const atomicallyRecorded = store.recordWithUnknown(
|
||||
atomicEvidence,
|
||||
input("Does atomic evidence stay stable?"),
|
||||
atomicMutation,
|
||||
);
|
||||
if (!atomicallyRecorded.ok) throw atomicallyRecorded.error;
|
||||
|
||||
for (const callerEvidence of [
|
||||
recordMutation,
|
||||
updateMutation,
|
||||
atomicEvidence,
|
||||
atomicMutation,
|
||||
]) {
|
||||
expect(Object.isFrozen(callerEvidence)).toBe(false);
|
||||
const retained = store.forAnalysis(callerEvidence.evidence_id);
|
||||
if (retained === undefined) throw new Error("Missing retained Evidence");
|
||||
const originalResult = structuredClone(retained.normalized_result);
|
||||
expect(Object.isFrozen(retained)).toBe(true);
|
||||
Reflect.set(callerEvidence, "operation", "caller mutation");
|
||||
expect(
|
||||
Reflect.set(
|
||||
callerEvidence.normalized_result as object,
|
||||
"label",
|
||||
"caller nested mutation",
|
||||
),
|
||||
).toBe(true);
|
||||
expect(retained.operation).not.toBe("caller mutation");
|
||||
expect(retained.normalized_result).toEqual(originalResult);
|
||||
}
|
||||
});
|
||||
|
||||
it("merges record-only bundles without changing retained unknown history", () => {
|
||||
const store = ledger();
|
||||
const created = store.recordUnknown(
|
||||
|
||||
@@ -11,11 +11,7 @@ import {
|
||||
import { AnalysisInputError } from "../../domain/analysisErrorCore.js";
|
||||
import { EvidenceIntegrityError } from "../../domain/evidenceErrors.js";
|
||||
import { UnknownRegistryError } from "../../domain/unknownRegistryError.js";
|
||||
import {
|
||||
immutableEvidence,
|
||||
parseEvidence,
|
||||
type Evidence,
|
||||
} from "../../domain/evidence.js";
|
||||
import { immutableEvidence, type Evidence } from "../../domain/evidence.js";
|
||||
import {
|
||||
createResidualUnknown,
|
||||
updateResidualUnknown,
|
||||
@@ -220,7 +216,7 @@ export class EvidenceLedger {
|
||||
): Result<ResidualUnknown, EvidenceIntegrityError | UnknownRegistryError> {
|
||||
let parsedMutation: Evidence;
|
||||
try {
|
||||
parsedMutation = parseEvidence(mutationEvidence);
|
||||
parsedMutation = immutableEvidence(mutationEvidence);
|
||||
} catch (cause: unknown) {
|
||||
return err(
|
||||
new EvidenceIntegrityError("Unknown mutation evidence is invalid", {
|
||||
@@ -255,8 +251,8 @@ export class EvidenceLedger {
|
||||
let evidence: Evidence;
|
||||
let mutation: Evidence;
|
||||
try {
|
||||
evidence = parseEvidence(evidenceInput);
|
||||
mutation = parseEvidence(mutationInput);
|
||||
evidence = immutableEvidence(evidenceInput);
|
||||
mutation = immutableEvidence(mutationInput);
|
||||
} catch (cause: unknown) {
|
||||
return err(
|
||||
new EvidenceIntegrityError("Atomic Evidence validation failed", {
|
||||
@@ -394,7 +390,7 @@ export class EvidenceLedger {
|
||||
): Result<ResidualUnknown, EvidenceIntegrityError | UnknownRegistryError> {
|
||||
let mutationEvidence: Evidence;
|
||||
try {
|
||||
mutationEvidence = parseEvidence(mutationEvidenceInput);
|
||||
mutationEvidence = immutableEvidence(mutationEvidenceInput);
|
||||
} catch (cause: unknown) {
|
||||
return err(
|
||||
new EvidenceIntegrityError("Unknown mutation evidence is invalid", {
|
||||
|
||||
@@ -281,7 +281,7 @@ it("pages filtered unknown heads through the public MCP contract", async () => {
|
||||
supporting_evidence_ids: [],
|
||||
contradicting_evidence_ids: [],
|
||||
});
|
||||
expect(result.ok).toBe(true);
|
||||
if (!result.ok) throw result.error;
|
||||
}
|
||||
|
||||
const defaultPage = structured(
|
||||
@@ -372,12 +372,11 @@ it("pages filtered unknown heads through the public MCP contract", async () => {
|
||||
.result as typeof defaultPage;
|
||||
expect(first).toMatchObject({ total: 3, offset: 0, next_offset: 2 });
|
||||
expect(first.items).toHaveLength(2);
|
||||
const second = structured(
|
||||
await client.callTool({
|
||||
...request,
|
||||
arguments: { ...request.arguments, offset: first.next_offset ?? 0 },
|
||||
}),
|
||||
).result as typeof defaultPage;
|
||||
const secondResponse = await client.callTool({
|
||||
...request,
|
||||
arguments: { ...request.arguments, offset: first.next_offset ?? 0 },
|
||||
});
|
||||
const second = structured(secondResponse).result as typeof defaultPage;
|
||||
expect(second).toMatchObject({ total: 3, offset: 2, next_offset: null });
|
||||
expect(second.items).toHaveLength(1);
|
||||
expect(
|
||||
@@ -389,7 +388,7 @@ it("pages filtered unknown heads through the public MCP contract", async () => {
|
||||
);
|
||||
expect(
|
||||
toolContract("list_unknowns").outputSchema.safeParse(
|
||||
(await client.callTool(request)).structuredContent,
|
||||
secondResponse.structuredContent,
|
||||
).success,
|
||||
).toBe(true);
|
||||
|
||||
|
||||
Reference in new issue
Block a user