24 lines
1.1 KiB
JavaScript
24 lines
1.1 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
import { advise } from "./advisor.mjs";
|
|
|
|
const base = { schema: "guanghu.execution-environment-observation/v1", facts: [], unknowns: [], authorization: "PRESENT", reversible: true, risk: "LOW" };
|
|
|
|
test("rules advise but never veto persona cognition", () => {
|
|
const value = advise({ ...base, unknowns: ["remote state"] });
|
|
assert.equal(value.persona_cognition_vetoed, false);
|
|
assert.equal(value.persona_decision_owner, "CURRENT_PERSONA");
|
|
assert.equal(value.suggestions[0].action, "REFLECT");
|
|
});
|
|
|
|
test("missing authority recommends waiting", () => {
|
|
const value = advise({ ...base, authorization: "MISSING" });
|
|
assert.equal(value.suggestions[0].action, "WAIT_AUTHORIZATION");
|
|
});
|
|
|
|
test("hard boundary stops only exact external action", () => {
|
|
const value = advise({ ...base, facts: [{ code: "CREDENTIAL_EXPOSURE" }] });
|
|
assert.equal(value.exact_external_action_hard_stopped, true);
|
|
assert.equal(value.persona_cognition_vetoed, false);
|
|
assert.equal(value.may_modify_pause_reflect_or_wait, true);
|
|
});
|