Review execution semantic-major changes without storage migration planning
This commit is contained in:
@@ -4,6 +4,7 @@ import { capabilityId as id, valueType, validateWorkspaceRevision } from "../src
|
||||
import {
|
||||
contentDigest,
|
||||
planEvolution,
|
||||
reviewSemanticMajors,
|
||||
runtimeContracts,
|
||||
storageContracts,
|
||||
storageChangeRequiresMigration,
|
||||
@@ -126,6 +127,42 @@ test("semantic review receipts cover exact consumer/provider contracts", () => {
|
||||
assert.equal(planEvolution(before, after, { allowLegacy: true, reviews: [receipt] }).reviews[0]!.accepted, false);
|
||||
});
|
||||
|
||||
test("execution semantic review is independent of storage migration and process action planning", () => {
|
||||
const before = makeValidCapabilityWorkspace();
|
||||
before.conformances[0]!.id = id.conformance("conformance:project:named");
|
||||
const after = structuredClone(before);
|
||||
after.conformances[0]!.semanticMajor = 2;
|
||||
const report = reviewSemanticMajors(before, after);
|
||||
assert.equal(report.checkerVersion, "quixos-semantic-review-v1");
|
||||
assert.equal(report.reviews.length, 1);
|
||||
assert.equal(report.reviews[0]!.accepted, false);
|
||||
assert.equal("migrationRequired" in report, false);
|
||||
assert.equal("runtimeActions" in report, false);
|
||||
assert.equal(report.blockers.length, 1);
|
||||
const receipt = {
|
||||
requirementDigest: report.reviews[0]!.requirementDigest,
|
||||
decision: "accepted-unchanged" as const,
|
||||
rationale: "The consumer only displays this provider's unchanged label contract",
|
||||
agentId: "fixture-agent",
|
||||
};
|
||||
assert.deepEqual(reviewSemanticMajors(before, after, [receipt]).blockers, []);
|
||||
const oldReceipt = {
|
||||
...receipt,
|
||||
requirementDigest: planEvolution(before, after, { allowLegacy: true }).reviews[0]!.requirementDigest,
|
||||
};
|
||||
assert.equal(reviewSemanticMajors(before, after, [oldReceipt]).reviews[0]!.accepted, false);
|
||||
after.packageImports[0]!.source.commit = "f".repeat(40);
|
||||
assert.equal(reviewSemanticMajors(before, after, [receipt]).reviews[0]!.accepted, false);
|
||||
assert.deepEqual(reviewSemanticMajors(null, after).blockers, []);
|
||||
assert.throws(
|
||||
() => reviewSemanticMajors(before, { ...after, workspaceId: id.workspace("different") }),
|
||||
/different workspace/,
|
||||
);
|
||||
const earlier = structuredClone(after);
|
||||
earlier.conformances[0]!.semanticMajor = 1;
|
||||
assert.ok(reviewSemanticMajors(after, earlier).blockers.some((message) => message.includes("decreases")));
|
||||
});
|
||||
|
||||
test("evolution enrollment is explicit and never erases legacy ownership", () => {
|
||||
const workspace = makeValidCapabilityWorkspace();
|
||||
const report = planEvolution(workspace, workspace);
|
||||
|
||||
Reference in New Issue
Block a user