35 lines
1.7 KiB
JavaScript
35 lines
1.7 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import { buildReport } from "./dev-evidence-blocker-aggregator.mjs";
|
|
|
|
test("aggregator reports M4 current blocker as durable runtime or skills injection, not stale DB live", async () => {
|
|
const report = await buildReport();
|
|
const m4 = report.milestoneBlockerClassification.find((item) => item.milestone === "M4");
|
|
const m5 = report.milestoneBlockerClassification.find((item) => item.milestone === "M5");
|
|
const dbLayer = report.currentDevLayering.dbLive;
|
|
const dbCheck = report.dod.checks.find((item) => item.id === "cloud-api-db-ready");
|
|
|
|
assert.ok(m4, "M4 blocker classification is present");
|
|
assert.ok(m5, "M5 blocker classification is present");
|
|
assert.equal(dbLayer.status, "pass");
|
|
assert.equal(dbLayer.evidenceLevel, "DEV-LIVE");
|
|
assert.equal(dbCheck.status, "pass");
|
|
assert.equal(dbCheck.evidenceLevel, "DEV-LIVE");
|
|
assert.equal(
|
|
report.blockers.some((blocker) =>
|
|
["cloud-api-db", "cloud-api-db-health-gate", "cloud-api-db-live", "db-live"].includes(blocker.scope)
|
|
),
|
|
false,
|
|
"DB live blockers must be stale once current DB live evidence is pass"
|
|
);
|
|
assert.notEqual(m4.blockerClass, "db-live-readiness");
|
|
assert.ok(
|
|
["runtime_durable_adapter_query_blocked", "skills-commit-version-injection"].includes(m4.blockerClass),
|
|
`unexpected M4 blocker class ${m4.blockerClass}`
|
|
);
|
|
assert.match(m4.dependency, /durable runtime adapter|skill commit and version/u);
|
|
assert.match(m4.nonPromotionReason, /durable agent runtime readiness|skill version injection/u);
|
|
assert.match(m5.dependency, /runtime durable adapter readiness, skills commit\/version injection/u);
|
|
});
|