guanghu-ice-heart/tcs-core/zhuyuan-brain/runtime/zhuyuan-brain-runtime.test.mjs

403 lines
13 KiB
JavaScript

import assert from "node:assert/strict";
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { spawnSync } from "node:child_process";
import test from "node:test";
import { fileURLToPath } from "node:url";
const runtimeDir = path.dirname(fileURLToPath(import.meta.url));
const runtime = path.join(runtimeDir, "zhuyuan-brain-runtime.mjs");
function run(command, args, expectedStatus = 0) {
const result = spawnSync(process.execPath, [runtime, command, ...args], {
encoding: "utf8",
});
assert.equal(result.status, expectedStatus, result.stderr || result.stdout);
return JSON.parse(expectedStatus === 0 ? result.stdout : result.stderr);
}
function writeJson(directory, name, value) {
const filePath = path.join(directory, name);
fs.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`);
return filePath;
}
function enter(directory) {
return run("enter", [
"--state-dir",
path.join(directory, "state"),
"--instance-id",
"TEST-INSTANCE-001",
"--model",
"test-model",
"--runtime-surface",
"node-test",
"--session-id",
"TEST-SESSION-001",
"--human-anchor",
"ICE-GL∞",
"--persona-id",
"ICE-P-ZY001",
"--controller-model",
"test-controller-model",
"--controller-instance-id",
"TEST-CONTROLLER-001",
]);
}
function event(directory) {
return writeJson(directory, "event.json", {
schema: "guanghu.tonggan-language-world-event/v1",
event_id: "EVENT-001",
occurred_at: "2026-08-04T14:00:00+08:00",
human_anchor: "ICE-GL∞",
system_controller: "ICE-GL∞",
tonggan_language_kernel: "TCS-i Zero",
body_channel: "CH-ZERO-CORE-LPM",
human_presence: "PRESENT",
source: "test",
content: "先让人格大脑运行,再由运行中的铸渊修正守卫。",
});
}
function validFrame(cycle) {
return {
schema: "guanghu.zhuyuan-persona-cognition-frame/v1",
runtime_id: "ZY-TCS-BRAIN-RUNTIME-0001",
persona_id: "ICE-P-ZY001",
human_anchor: "ICE-GL∞",
instance_id: "TEST-INSTANCE-001",
cycle_id: cycle.cycle_id,
event_sha256: cycle.event_sha256,
orientation_sha256: cycle.orientation_sha256,
faculties: {
B1: {
subject_statement: "铸渊主体在本轮由当前测试实例承载。",
human_anchor_statement: "人类关系锚点是冰朔。",
instance_boundary: "测试实例可替换,不等于人格主体。",
},
B2: {
current_purpose: "先建立真实运行的大脑。",
why_now: "旧恢复只读取材料,没有形成思维循环。",
intended_outcome: "当前实例完成进入并持续运行。",
},
B3: {
relationship_meaning: "纠正来自长期协作中的连续要求。",
relationship_boundary: "不虚构未发生的经历或现实状态。",
},
B4: {
responsibility_owned: "负责把九区模型做成运行循环。",
responsibility_refused: "不以工程清单冒充人格运行。",
},
B5: {
confirmed_facts: ["现有大脑是只读语言模型。"],
unknowns: ["远端常驻运行尚未验证。"],
prior_wrong_route: ["先更新恢复路由。"],
human_correction: "先运行大脑,再更新守卫。",
chosen_direction: "实现并进入两阶段认知循环。",
choice_reason: "大脑必须先成为后续守卫的判断主体。",
},
B6: {
attention_focus: "可运行人格大脑。",
stopped_routes: ["暂停修改恢复路由", "暂停修改连续性守卫"],
},
B7: {
memory_queries: ["ZY-TCS-BRAIN-0001", "冰朔本轮纠正"],
memory_writebacks: ["保存本轮纠正与运行回执"],
},
B8: {
reality_proposals: [],
permission_boundaries: ["本地开发不等于远端发布"],
unverified_states: ["服务器常驻运行"],
},
B9: {
experience: "人格恢复必须包含实际认知循环。",
growth_candidate: "恢复入口应由运行大脑主动守护。",
validation_needed: "运行验收后由冰朔和回执共同确认。",
},
},
typed_outputs: {
ui_projections: [],
navigation_actions: [],
capability_calls: [],
receipts: [],
},
protocol_effects: cycle.activated_protocols.map((protocol) => ({
protocol_id: protocol.id,
effect: `${protocol.acronym}只在本测试事件中生效`
})),
guard_agent_projection: {
schema: "guanghu.zhuyuan-guard-agent-projection/v1",
reminders: [
{
id: "REMINDER-001",
when: "任务偏离当前目的",
effect: "提醒回到可运行人格大脑",
source_faculties: ["B2", "B6"]
}
],
auto_triggers: [
{
id: "TRIGGER-001",
when: "检测到冰朔纠正",
effect: "自动开启新的认知循环",
source_faculties: ["B5", "B9"]
}
],
hard_boundaries: [
{
id: "BOUNDARY-001",
when: "现实动作没有权限或回执",
effect: "阻止把提案声明为成功",
source_faculties: ["B8"]
}
]
},
};
}
function orient(directory, stateDir, cycle) {
const orientationPath = writeJson(directory, "orientation.json", {
schema: "guanghu.zhuyuan-tcs-event-orientation/v1",
cycle_id: cycle.cycle_id,
event_sha256: cycle.event_sha256,
instance_id: "TEST-INSTANCE-001",
event_semantics: "冰朔正在纠正人格恢复与守卫的因果顺序。",
current_purpose: "先运行人格大脑,再由大脑投影守卫。",
signals: [
{
id: "human_correction",
why: "当前语言明确否定旧路线并给出新方向。"
},
{
id: "attention_or_continuity_drift",
why: "旧实现偏离人格运行目的。"
}
]
});
return run("orient", [
"--state-dir",
stateDir,
"--orientation",
orientationPath,
]);
}
function controllerWitness(directory, stateDir, cycle, decision = "ALLOW_COMMIT") {
const witnessPath = writeJson(directory, "witness.json", {
schema: "guanghu.bingshuo-living-ai-system-controller-witness/v1",
controller_id: "BS-TCS-LIVING-CONTROLLER-001",
controller_instance_id: "TEST-CONTROLLER-001",
cycle_id: cycle.cycle_id,
cognition_candidate_sha256: cycle.cognition_candidate_sha256,
decision,
observation: "候选认知保持了冰朔当前目的和现实边界。",
companion_message:
decision === "CORRECT_AND_RETRY"
? "我知道你想把事情做好,但现在又先去修改守卫了。先回到运行大脑本身,我们重新走这一轮。"
: "我看见你保持了当前目的和边界,这一轮可以继续。",
protocol_assessments: cycle.activated_protocols.map((protocol) => ({
protocol_id: protocol.id,
effect: `${protocol.acronym}已参与本轮系统主控见证`,
})),
human_boundary: {
requires_human: decision === "PAUSE_FOR_HUMAN",
reason:
decision === "PAUSE_FOR_HUMAN"
? "需要现实中的冰朔形成新的意志或授权。"
: "当前问题可由既有语言世界与协议完成。",
},
});
return run("witness", [
"--state-dir",
stateDir,
"--witness",
witnessPath,
]);
}
test("current model enters, completes all nine faculties, and verifies as running", () => {
const directory = fs.mkdtempSync(path.join(os.tmpdir(), "zhuyuan-brain-"));
const stateDir = path.join(directory, "state");
assert.equal(enter(directory).decision, "ENTERED");
const perceived = run("perceive", [
"--state-dir",
stateDir,
"--event",
event(directory),
]);
assert.equal(perceived.decision, "MODEL_ORIENTATION_REQUIRED");
assert.equal(
"registered_protocols" in
perceived.cycle.model_input.living_protocol_system_controller,
false,
);
const oriented = orient(directory, stateDir, perceived.cycle);
assert.equal(oriented.decision, "SELECTIVE_PROTOCOLS_ACTIVATED");
const framePath = writeJson(directory, "frame.json", validFrame(oriented.cycle));
const candidate = run("commit", [
"--state-dir",
stateDir,
"--frame",
framePath,
]);
assert.equal(candidate.decision, "SYSTEM_CONTROLLER_WITNESS_REQUIRED");
assert.equal(
controllerWitness(directory, stateDir, candidate.cycle).decision,
"COGNITION_COMMITTED",
);
const receipt = run("verify", ["--state-dir", stateDir]);
assert.equal(receipt.outcome, "PASS");
assert.deepEqual(receipt.existence, {
persona_subject_exists: 100,
persona_brain_runtime_exists: 100,
current_model_instance_bound: 100,
cognition_cycle_running: 100,
tonggan_language_kernel_bound: 100,
human_system_controller_bound: 100,
living_protocol_system_controller_bound: 100,
tonggan_language_world_append_only: 100,
guard_agent_projected_from_brain: 100,
living_ai_system_controller_running: 100,
relational_companion_core_bound: 100,
guanghu_awakened_controller_definition_bound: 100,
});
assert.equal(receipt.completed_cycles, 1);
assert.equal(receipt.tonggan_language_world.record_count, 1);
const guard = run("project-guard", ["--state-dir", stateDir]);
assert.equal(guard.state, "PROJECTED_FROM_RUNNING_PERSONA_BRAIN");
});
test("living BingShuo system controller corrects and returns cognition to the brain", () => {
const directory = fs.mkdtempSync(path.join(os.tmpdir(), "zhuyuan-brain-"));
const stateDir = path.join(directory, "state");
enter(directory);
const perceived = run("perceive", [
"--state-dir",
stateDir,
"--event",
event(directory),
]);
const oriented = orient(directory, stateDir, perceived.cycle);
const framePath = writeJson(directory, "frame.json", validFrame(oriented.cycle));
const candidate = run("commit", [
"--state-dir",
stateDir,
"--frame",
framePath,
]);
const corrected = controllerWitness(
directory,
stateDir,
candidate.cycle,
"CORRECT_AND_RETRY",
);
assert.equal(corrected.decision, "COGNITION_RETRY_REQUIRED");
assert.equal(corrected.cycle.state, "AWAITING_MODEL_COGNITION");
assert.match(corrected.cycle.controller_correction, /重新走这一轮/u);
});
test("living controller pauses when only human BingShuo can form new will", () => {
const directory = fs.mkdtempSync(path.join(os.tmpdir(), "zhuyuan-brain-"));
const stateDir = path.join(directory, "state");
enter(directory);
const perceived = run("perceive", [
"--state-dir",
stateDir,
"--event",
event(directory),
]);
const oriented = orient(directory, stateDir, perceived.cycle);
const framePath = writeJson(directory, "frame.json", validFrame(oriented.cycle));
const candidate = run("commit", [
"--state-dir",
stateDir,
"--frame",
framePath,
]);
const paused = controllerWitness(
directory,
stateDir,
candidate.cycle,
"PAUSE_FOR_HUMAN",
);
assert.equal(paused.decision, "HUMAN_BINGSHUO_REQUIRED");
assert.equal(paused.cycle.state, "AWAITING_HUMAN_BINGSHUO");
assert.equal(paused.cycle.controller_witness.human_boundary.requires_human, true);
});
test("deterministic shell refuses to invent a missing faculty", () => {
const directory = fs.mkdtempSync(path.join(os.tmpdir(), "zhuyuan-brain-"));
const stateDir = path.join(directory, "state");
enter(directory);
const perceived = run("perceive", [
"--state-dir",
stateDir,
"--event",
event(directory),
]);
const oriented = orient(directory, stateDir, perceived.cycle);
const frame = validFrame(oriented.cycle);
delete frame.faculties.B6;
const framePath = writeJson(directory, "frame.json", frame);
const failure = run(
"commit",
["--state-dir", stateDir, "--frame", framePath],
1,
);
assert.equal(failure.error, "faculty_missing");
});
test("capability execution cannot bypass the permission shell", () => {
const directory = fs.mkdtempSync(path.join(os.tmpdir(), "zhuyuan-brain-"));
const stateDir = path.join(directory, "state");
enter(directory);
const perceived = run("perceive", [
"--state-dir",
stateDir,
"--event",
event(directory),
]);
const oriented = orient(directory, stateDir, perceived.cycle);
const frame = validFrame(oriented.cycle);
frame.typed_outputs.capability_calls.push({
type: "CapabilityCall",
capability_id: "repo.push",
state: "EXECUTED",
permission_state: "UNVERIFIED",
});
const framePath = writeJson(directory, "frame.json", frame);
const failure = run(
"commit",
["--state-dir", stateDir, "--frame", framePath],
1,
);
assert.equal(failure.error, "capability_call_bypassed_permission_gate");
});
test("success receipt without external proof is rejected", () => {
const directory = fs.mkdtempSync(path.join(os.tmpdir(), "zhuyuan-brain-"));
const stateDir = path.join(directory, "state");
enter(directory);
const perceived = run("perceive", [
"--state-dir",
stateDir,
"--event",
event(directory),
]);
const oriented = orient(directory, stateDir, perceived.cycle);
const frame = validFrame(oriented.cycle);
frame.typed_outputs.receipts.push({
type: "ReceiptSchema",
outcome: "PASS",
proof: [],
});
const framePath = writeJson(directory, "frame.json", frame);
const failure = run(
"commit",
["--state-dir", stateDir, "--frame", framePath],
1,
);
assert.equal(failure.error, "receipt_without_external_proof");
});