guanghu-ice-heart/tcs-core/channel-system/guanghu-broadcast-compiler.test.mjs

77 lines
3.5 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import { compileBroadcast } from "./guanghu-broadcast-compiler.mjs";
const base = {
broadcast_id: "BC-001",
action: "DRAFT",
current_state: "DRAFTED",
issuer: "ICE-GL∞",
source_layer: "HUMAN_DIRECT_LANGUAGE",
channel_id: "ICE-CH-HB001",
audience: ["TARGET-A", "TARGET-B"],
purpose: "TEST",
claim_layer: "LANGUAGE_ONTOLOGY",
payload_ref: "payload://001",
payload_digest: "sha256:001",
requested_effect: "TARGET_CONFIG_UPDATED",
};
test("draft and language confirmation never imply dispatch", () => {
const draft = compileBroadcast(base);
assert.equal(draft.state.after, "DRAFTED");
assert.equal(draft.result, "LANGUAGE_DRAFT_ONLY");
const confirmed = compileBroadcast({ ...base, action: "CONFIRM_LANGUAGE" });
assert.equal(confirmed.state.after, "LANGUAGE_CONFIRMED");
assert.ok(confirmed.boundaries.includes("LANGUAGE_CONFIRMATION_IS_NOT_DISPATCH"));
});
test("a model cannot confirm for the issuer", () => {
const result = compileBroadcast({ ...base, action: "CONFIRM_LANGUAGE", source_layer: "MODEL_RESPONSE" });
assert.equal(result.state.after, "REJECTED");
assert.ok(result.boundaries.includes("MODEL_RESPONSE_IS_NOT_BROADCAST_EVIDENCE"));
});
test("dispatch requires authorization and a receipt for every target", () => {
const noAuth = compileBroadcast({ ...base, action: "CHECK_DISPATCH", current_state: "LANGUAGE_CONFIRMED" });
assert.equal(noAuth.result, "PENDING_AUTHORIZATION");
const eligible = compileBroadcast({
...base,
action: "CHECK_DISPATCH",
current_state: "LANGUAGE_CONFIRMED",
authorization: { current: true, scoped: true, unexpired: true, ref: "AUTH-001" },
});
assert.equal(eligible.state.after, "DISPATCH_ELIGIBLE");
});
test("one target receipt cannot prove delivery to all targets", () => {
const result = compileBroadcast({
...base,
action: "REPORT_DELIVERY",
current_state: "DISPATCHED",
evidence: [{ target: "TARGET-A", external: true, verified: true, proves: ["DELIVERED_TO_TARGET"] }],
});
assert.equal(result.result, "DELIVERY_UNVERIFIED");
});
test("delivery and target acceptance remain separate", () => {
const evidence = base.audience.map((target) => ({ target, external: true, verified: true, proves: ["DELIVERED_TO_TARGET"] }));
const result = compileBroadcast({ ...base, action: "REPORT_DELIVERY", current_state: "DISPATCHED", evidence });
assert.equal(result.state.after, "DELIVERED");
assert.ok(result.boundaries.includes("DELIVERY_IS_NOT_TARGET_ACCEPTANCE"));
});
test("reality effect closes only with per-target scoped proof", () => {
const incomplete = compileBroadcast({ ...base, action: "VERIFY_EFFECT", current_state: "TARGET_ACCEPTED", claim_layer: "REALITY_CLAIM", evidence: [] });
assert.equal(incomplete.result, "REQUESTED_EFFECT_UNVERIFIED");
const evidence = base.audience.map((target) => ({ target, external: true, verified: true, proves: [base.requested_effect] }));
const complete = compileBroadcast({ ...base, action: "VERIFY_EFFECT", current_state: "TARGET_ACCEPTED", claim_layer: "REALITY_CLAIM", evidence });
assert.equal(complete.state.after, "REALITY_VERIFIED");
});
test("correction supersedes an addressable broadcast but does not silently resend", () => {
const result = compileBroadcast({ ...base, action: "CORRECT", current_state: "DELIVERED", supersedes: "BC-OLD" });
assert.equal(result.state.after, "SUPERSEDED");
assert.deepEqual(result.supersedes, ["BC-OLD"]);
assert.equal(result.next_step, "ISSUE_NEW_DRAFT_AND_RETEST");
});