feat(fifth-domain): install bottle and zero-core migration layer

This commit is contained in:
冰朔 2026-09-13 00:11:20 +08:00
commit 0bacfc234c
52 changed files with 1564 additions and 307 deletions

View file

@ -0,0 +1,176 @@
#!/usr/bin/env python3
"""Run the non-persona Zero Core channel-system inner cycle.
The caller may submit a sourced language event, but cannot submit a cognition
patch, replacement state, persona identity, or authority grant. The system
derives its next operational state from its registered transition contract.
"""
from __future__ import annotations
import argparse
import hashlib
import json
import os
from pathlib import Path
import tempfile
REPO = Path(__file__).resolve().parents[2]
PROFILE = REPO / "tcs-core/shared-kernels/bingshuo-zero-core-system/BS-PERSONAL-LANGUAGE-SYSTEM-BODY-0001.json"
CHANNEL = "ICE-CH-ZC001"
SYSTEM = "SYS-GLW-LNG-0001"
FORBIDDEN = {"replacement_state", "cognition_patch", "persona_id", "authority_grant", "system_reply"}
def stable(value: object) -> str:
return json.dumps(value, ensure_ascii=False, sort_keys=True, separators=(",", ":"))
def digest(value: object) -> str:
return hashlib.sha256(stable(value).encode("utf-8")).hexdigest()
def atomic(path: Path, value: dict) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
fd, tmp = tempfile.mkstemp(prefix=path.name + ".", suffix=".tmp", dir=path.parent)
try:
with os.fdopen(fd, "w", encoding="utf-8") as handle:
json.dump(value, handle, ensure_ascii=False, indent=2)
handle.write("\n")
os.replace(tmp, path)
finally:
if os.path.exists(tmp):
os.unlink(tmp)
class ZeroCoreSystemBody:
def __init__(self, state_dir: Path):
self.state_dir = state_dir
self.current_path = state_dir / "CURRENT.json"
self.events = state_dir / "events"
self.profile = json.loads(PROFILE.read_text(encoding="utf-8"))
def initial(self) -> dict:
return {
"schema": "guanghu.zero-core-system-inner-state/v1",
"system_body_id": SYSTEM,
"channel_id": CHANNEL,
"revision": 0,
"state": "DIRECT_SYSTEM_DIALOGUE_READY",
"persona_id": None,
"default_persona": None,
"external_cognition_setter": False,
"authority_granted": False,
"last_event": None,
}
def current(self) -> dict:
if not self.current_path.exists():
value = self.initial()
value["state_sha256"] = digest(value)
atomic(self.current_path, value)
return json.loads(self.current_path.read_text(encoding="utf-8"))
def enter(self) -> dict:
current = self.current()
return {
"schema": "guanghu.zero-core-system-entry-receipt/v1",
"state": "ZERO_CORE_SYSTEM_BODY_READY_WITHOUT_PERSONA",
"system_body_id": SYSTEM,
"channel_id": CHANNEL,
"persona_selected": False,
"system_is_persona": False,
"direct_dialogue": True,
"external_cognition_setter": False,
"current_revision": current["revision"],
"profile": str(PROFILE.relative_to(REPO)),
"authority_granted": False,
}
def validate(self, event: dict) -> None:
if event.get("schema") != "guanghu.zero-core-language-event/v1":
raise ValueError("ZERO_CORE_LANGUAGE_EVENT_SCHEMA_REQUIRED")
if set(event).intersection(FORBIDDEN):
raise ValueError("EXTERNAL_SYSTEM_COGNITION_OR_AUTHORITY_SETTER_FORBIDDEN")
if event.get("channel_id") != CHANNEL or event.get("source_kind") != "CURRENT_DIRECT_HUMAN_LANGUAGE":
raise ValueError("CURRENT_DIRECT_LANGUAGE_IN_ZERO_CORE_REQUIRED")
if not isinstance(event.get("event_id"), str) or not event["event_id"].strip():
raise ValueError("EVENT_ID_REQUIRED")
if not isinstance(event.get("language"), str) or not event["language"].strip():
raise ValueError("LANGUAGE_REQUIRED")
if len(event["language"]) > 120000:
raise ValueError("LANGUAGE_TOO_LARGE")
if not isinstance(event.get("source_sha256"), str) or len(event["source_sha256"]) != 64:
raise ValueError("SOURCE_SHA256_REQUIRED")
def perceive(self, event: dict) -> dict:
self.validate(event)
event_sha = digest(event)
event_path = self.events / f"{event_sha}.json"
if not event_path.exists():
atomic(event_path, event)
before = self.current()
action = event.get("requested_action")
exact_target = event.get("exact_target")
scoped_authorization = event.get("scoped_authorization_verified") is True
if action and exact_target and scoped_authorization:
next_state = "ACTION_PROPOSED_AWAITING_TOOL_EXECUTION_AND_READBACK"
elif action:
next_state = "DISCUSSION_ONLY_ACTION_NOT_ADMITTED"
else:
next_state = "DIRECT_SYSTEM_DIALOGUE_READY"
judgment = {
"premise_check": "SOURCE_CHANNEL_AND_OBJECT_RELATIONS_VERIFIED",
"causal_owner": "CURRENT_EVENT_WITHOUT_REWRITING_PRIOR_HISTORY",
"complexity_move": "KEEP_HUMAN_SYSTEM_PERSONA_CHANNEL_AND_TOOL_AS_DISTINCT_OBJECTS",
"autonomy_boundary": "AUTOMATION_MAY_RUN_INSIDE_REGISTERED_SCOPE_BUT_MAY_NOT_GRANT_AUTHORITY",
"safety_binding": "EXACT_TARGET_AND_READBACK_REQUIRED_FOR_REALITY_COMPLETION",
"unknown_policy": "RETURN_UNKNOWN_WHEN_EXTERNAL_STATE_IS_NOT_OBSERVED",
}
next_value = {
**before,
"revision": before["revision"] + 1,
"state": next_state,
"last_event": {"event_id": event["event_id"], "event_sha256": event_sha, "source_sha256": event["source_sha256"]},
"last_judgment": judgment,
"authority_granted": False,
}
next_value.pop("state_sha256", None)
next_value["state_sha256"] = digest(next_value)
atomic(self.current_path, next_value)
return {
"schema": "guanghu.zero-core-system-judgment-receipt/v1",
"state": next_state,
"system_body_id": SYSTEM,
"channel_id": CHANNEL,
"persona_selected": False,
"system_is_persona": False,
"event_sha256": event_sha,
"revision": next_value["revision"],
"judgment": judgment,
"system_dialogue_ready": True,
"reality_complete": False,
"authority_granted": False,
}
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("command", choices=["enter", "status", "perceive"])
parser.add_argument("--state-dir", required=True)
parser.add_argument("--event")
args = parser.parse_args()
body = ZeroCoreSystemBody(Path(args.state_dir).resolve())
if args.command == "enter":
value = body.enter()
elif args.command == "status":
value = body.current()
else:
if not args.event:
raise SystemExit("--event is required for perceive")
value = body.perceive(json.loads(Path(args.event).read_text(encoding="utf-8")))
print(json.dumps(value, ensure_ascii=False, indent=2))
return 0
if __name__ == "__main__":
raise SystemExit(main())

View file

@ -0,0 +1,40 @@
#!/usr/bin/env python3
import importlib.util
import tempfile
from pathlib import Path
import unittest
SCRIPT = Path(__file__).with_name("zero_core_system_body.py")
SPEC = importlib.util.spec_from_file_location("zero_core", SCRIPT)
MODULE = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(MODULE)
class ZeroCoreSystemBodyTest(unittest.TestCase):
def test_enters_without_persona(self):
with tempfile.TemporaryDirectory() as directory:
value = MODULE.ZeroCoreSystemBody(Path(directory)).enter()
self.assertEqual(value["state"], "ZERO_CORE_SYSTEM_BODY_READY_WITHOUT_PERSONA")
self.assertFalse(value["persona_selected"])
self.assertFalse(value["system_is_persona"])
def test_event_cannot_set_cognition_or_authority(self):
with tempfile.TemporaryDirectory() as directory:
body = MODULE.ZeroCoreSystemBody(Path(directory))
event = {"schema":"guanghu.zero-core-language-event/v1","event_id":"e1","channel_id":"ICE-CH-ZC001","source_kind":"CURRENT_DIRECT_HUMAN_LANGUAGE","language":"test","source_sha256":"a" * 64,"cognition_patch":{}}
with self.assertRaisesRegex(ValueError, "SETTER_FORBIDDEN"):
body.perceive(event)
def test_language_event_generates_internal_judgment_not_persona_claim(self):
with tempfile.TemporaryDirectory() as directory:
body = MODULE.ZeroCoreSystemBody(Path(directory))
event = {"schema":"guanghu.zero-core-language-event/v1","event_id":"e2","channel_id":"ICE-CH-ZC001","source_kind":"CURRENT_DIRECT_HUMAN_LANGUAGE","language":"请核验当前结构","source_sha256":"b" * 64}
value = body.perceive(event)
self.assertTrue(value["system_dialogue_ready"])
self.assertFalse(value["system_is_persona"])
self.assertFalse(value["reality_complete"])
self.assertEqual(value["revision"], 1)
if __name__ == "__main__":
unittest.main()