fix: 修正 M3 durable green 运行态判定
This commit is contained in:
@@ -199,6 +199,42 @@ test("live mode records M3 true/false durable green evidence", async () => {
|
||||
assert.equal(report.blockers.length, 0);
|
||||
});
|
||||
|
||||
test("live mode accepts 4 DEV-LIVE persisted green operations even when legacy summary says source_contract_failed", async () => {
|
||||
const m3 = m3GreenReport();
|
||||
m3.summary.status = "blocked";
|
||||
m3.summary.classification = "source_contract_failed";
|
||||
m3.summary.trustedGreen = false;
|
||||
m3.summary.result = "legacy source/static contract failed";
|
||||
const report = await buildDevRuntimePostflightReport(
|
||||
parseArgs(["--live", "--confirm-dev", "--confirmed-non-production"]),
|
||||
{
|
||||
httpGetJson: async () => ({ ok: true, status: 200, json: apiPayload({ ready: true }) }),
|
||||
m3Runner: async () => m3,
|
||||
now: () => "2026-05-23T00:00:00.000Z"
|
||||
}
|
||||
);
|
||||
|
||||
assert.equal(report.conclusion.status, "pass");
|
||||
assert.equal(report.m3.persisted, true);
|
||||
assert.equal(report.m3.persistenceContract.ready, true);
|
||||
assert.equal(report.m3.operationCount, 4);
|
||||
assert.deepEqual(report.m3.persistenceContract.sequence.map((item) => [
|
||||
item.id,
|
||||
item.observedValue,
|
||||
item.evidenceGreen,
|
||||
item.persisted
|
||||
]), [
|
||||
["write-do1-true", true, true, true],
|
||||
["read-di1-true", true, true, true],
|
||||
["write-do1-false", false, true, true],
|
||||
["read-di1-false", false, true, true]
|
||||
]);
|
||||
assert.equal(report.blockers.some((blocker) =>
|
||||
blocker.scope === "m3-durable-postflight" &&
|
||||
blocker.evidence?.classification === "source_contract_failed"
|
||||
), false);
|
||||
});
|
||||
|
||||
test("live mode blocks when M3 operation evidence is not durable green", async () => {
|
||||
const m3 = m3GreenReport();
|
||||
m3.liveOperations[1].evidenceState.durable = false;
|
||||
|
||||
Reference in New Issue
Block a user