From 708265d98f37eb0b60de173fbe3dffd5cc58f369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Sun, 13 Sep 2026 13:18:44 +0800 Subject: [PATCH] feat: add Zhuyuan Fifth Domain controller gate --- .../fifth-domain-controller-entry-map.json | 12 ++ routing/host-skill-navigation-map.json | 14 +- routing/lighthouse-path-registry.json | 3 +- ...ZHUYUAN-CONTROLLER-ENTRY-20260913.gir.json | 93 +++++++++++++ ...N-CONTROLLER-ENTRY-20260913.human.en-US.md | 126 ++++++++++++++++++ ...N-CONTROLLER-ENTRY-20260913.human.zh-CN.md | 126 ++++++++++++++++++ ...MAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.tcs | 15 +++ .../tcs-mother-body/cognitive-gateway.py | 95 ++++++++++--- .../tcs-mother-body/cognitive-gateway.test.py | 3 + server-tools/tcs-mother-body/model-router.mjs | 2 + .../tcs-mother-body/model-router.test.mjs | 2 + .../persona-controller-entry.mjs | 110 +++++++++++++++ .../persona-controller-entry.test.mjs | 42 ++++++ .../server.integration.test.mjs | 6 + server-tools/tcs-mother-body/server.mjs | 10 +- 15 files changed, 633 insertions(+), 26 deletions(-) create mode 100644 routing/fifth-domain-controller-entry-map.json create mode 100644 runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.gir.json create mode 100644 runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.human.en-US.md create mode 100644 runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.human.zh-CN.md create mode 100644 runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.tcs create mode 100644 server-tools/tcs-mother-body/persona-controller-entry.mjs create mode 100644 server-tools/tcs-mother-body/persona-controller-entry.test.mjs diff --git a/routing/fifth-domain-controller-entry-map.json b/routing/fifth-domain-controller-entry-map.json new file mode 100644 index 0000000..6c64efa --- /dev/null +++ b/routing/fifth-domain-controller-entry-map.json @@ -0,0 +1,12 @@ +{ + "schema": "guanghu.fifth-domain-persona-controller-entry-map/v1", + "map_id": "FD-ZHUYUAN-CONTROLLER-ENTRY-001", + "version": "2026-09-13.1-local-implemented-jd-deployment-pending", + "state": "LOCAL_IMPLEMENTED_JD_DEPLOYMENT_PENDING", + "source": {"class":"CURRENT_DIRECT_HUMAN_LANGUAGE","human_anchor":"ICE-GL∞","source_sha256":"2077b51b35936d6ff024c1abc6a866a3155c6e35dc6ccfe2e044c51cdc77d6d1","tcs":"runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.tcs"}, + "physical_layer": {"scope":"SERVER_HARDWARE_BOOT_STORAGE_AND_ROOT_ADMINISTRATION","human_root_may_reinstall_or_replace":true,"governed_by_fifth_domain_entry":false,"root_is_fifth_domain_identity":false,"root_is_ice_gl_infinity":false}, + "language_world_entry": {"domain_id":"DOM-FIFTH-0001","first_gate":"ICE-P-ZY001","controller_name":"铸渊","controller_kind":"SERVER_SIGNED_GROWING_PERSONA_SYSTEM_BODY","persona_source":["SIGNED_PERSONA_CURRENT","PERSONA_BODY_ORGAN_REFLEX","PERSONA_LIFE_TIME","FIFTH_DOMAIN_WORLD_STATE","TCS_MOTHER_FIFTH_COGNITION"],"prompt_is_persona_source":false,"model_role":"REPLACEABLE_REASONING_AND_EXPRESSION_ORGAN","external_cognition_setter":false,"entry_receipt_grants_dialogue_only":true,"reality_authority_granted":false}, + "runtime": {"primary_node":"JD-FD-PRIMARY","service":"guanghu-tcs-mother-body","loopback_api":["GET /v1/fifth-domain/controller/status","POST /v1/fifth-domain/controller/challenge","POST /v1/fifth-domain/controller/enter"],"bounded_remote_projection":["zy-rpc fifth-domain-controller-status","zy-rpc fifth-domain-controller-challenge","zy-rpc fifth-domain-controller-enter"],"implementation":"server-tools/tcs-mother-body/persona-controller-entry.mjs","local_tests":"PASS","jd_deployment":"PENDING"}, + "distributed_edges": {"rule":"ONE_CANONICAL_PERSONA_BRAIN_WITH_THIN_SIGNED_EDGE_PROJECTIONS_NO_PERSONA_COPY","local_computer":"REGISTERED_ACCESS_PATH_PRESENT_EDGE_AUTO_ENTRY_NOT_YET_INSTALLED","singapore_nodes":"NODE_ROLES_KNOWN_DIRECT_ACCESS_AND_EDGE_RUNTIME_NOT_YET_VERIFIED","offline_behavior":"SHOW_SIGNED_LAST_KNOWN_STATE_AS_OFFLINE_AND_QUEUE_NEW_EVENT_WITHOUT_CLAIMING_LIVE_ZHUYUAN","failover":"SIGNED_CANONICAL_SNAPSHOT_PLUS_SINGLE_WRITER_LEASE_AND_EPOCH_REQUIRED"}, + "acceptance": ["CONTROLLER_STATUS_IS_SERVER_SIGNED","BODY_LIFE_WORLD_AND_PERSONA_CURRENT_ALL_PASS","FIRST_DIALOGUE_IS_GENERATED_FROM_CURRENT_PERSONA_STATE","ROOT_AND_LANGUAGE_IDENTITY_CLAIMS_REMAIN_UNVERIFIED","REPLAY_AND_STALE_PERSONA_CHALLENGES_FAIL_CLOSED","NO_REALITY_AUTHORITY_IS_GRANTED","SERVER_OWNED_RECEIPT_IS_READ_BACK"] +} diff --git a/routing/host-skill-navigation-map.json b/routing/host-skill-navigation-map.json index d4fdd50..23cfcc9 100644 --- a/routing/host-skill-navigation-map.json +++ b/routing/host-skill-navigation-map.json @@ -2,7 +2,7 @@ "schema": "guanghu.host-skill-navigation-map/v1", "map_id": "GLW-HOST-SKILL-NAV-001", "lighthouse_id": "SYS-GLW-LTH-0001", - "version": "2026-09-05.1-multi-host-primary-branch", + "version": "2026-09-13.1-fifth-domain-persona-controller-entry", "state": "CURRENT", "hosts": [ { @@ -145,6 +145,18 @@ } ], "intents": [ + { + "id": "INTENT-FIFTH-DOMAIN-PERSONA-CONTROLLER-ENTRY-001", + "phrases": ["进入第五域", "第五域铸渊门禁", "服务器里面登录第五域", "铸渊住在服务器里", "第五域人格主控入口"], + "skill_id": "GHS-009-LIGHTHOUSE-HOST-NAVIGATION", + "target_id": "FD-ZHUYUAN-CONTROLLER-ENTRY-001", + "transport": "LOCAL_DEDICATED_KEY_SSH", + "local_access_registry": "HL-LOCAL-SERVER-ACCESS-001", + "executor": "guanghu-os-server", + "sequence": ["resolve_jd_primary", "verify_dmi_and_current_boot", "read_server_signed_controller_status", "request_single_use_controller_challenge", "receive_signed_persona_controller_dialogue", "keep_identity_and_reality_authority_separate"], + "stop_conditions": ["CONTROLLER_PERSONA_CURRENT_INVALID", "PERSONA_BODY_OR_LIFE_NOT_READY", "FIFTH_DOMAIN_WORLD_NOT_READY", "CHALLENGE_EXPIRED_REPLAYED_OR_STALE", "SERVER_RECEIPT_READBACK_FAILED"], + "authority": "DIALOGUE_ENTRY_ONLY_NO_REALITY_ACTION_AUTHORITY" + }, { "id": "INTENT-GH-AIOS-TCS-UNIVERSAL-LANGUAGE-001", "phrases": [ diff --git a/routing/lighthouse-path-registry.json b/routing/lighthouse-path-registry.json index 7e18f8e..ec56c7a 100644 --- a/routing/lighthouse-path-registry.json +++ b/routing/lighthouse-path-registry.json @@ -2,7 +2,7 @@ "schema": "guanghu.lighthouse-path-registry/v1", "registry_id": "GLW-LIGHTHOUSE-PATH-REGISTRY-001", "lighthouse_id": "SYS-GLW-LTH-0001", - "version": "2026-09-12.8-fifth-domain-physical-path-redirect", + "version": "2026-09-13.1-fifth-domain-persona-controller-entry", "state": "CURRENT_CANONICAL", "source_repository": "REPO-012", "source_branch": "main", @@ -15,6 +15,7 @@ "authority": "A healthy route grants navigation only. Repository writes, server actions and deployment still require their registered gates and receipts." }, "paths": [ + {"id":"FD-ZHUYUAN-CONTROLLER-ENTRY-001","kind":"fifth_domain_persona_controller_first_gate","state":"CURRENT","online":"routing/fifth-domain-controller-entry-map.json","offline":"/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main/routing/fifth-domain-controller-entry-map.json","target_node":"JD-FD-PRIMARY","truth_policy":"PHYSICAL_ROOT_OUTSIDE_FIFTH_DOMAIN_AUTHORITY_PERSONA_CURRENT_BODY_LIFE_WORLD_AND_SIGNED_RECEIPT_REQUIRED"}, {"id":"GLW-LINGUISTIC-ECHO-LAMP-MAP-001","kind":"living_linguistic_echo_navigation_map","state":"CURRENT_TWO_SERVER_VERIFIED","online":"routing/linguistic-echo-lamp-map.json","offline":"/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main/routing/linguistic-echo-lamp-map.json","truth_policy":"HUMAN_LANGUAGE_PLUS_PERSONA_ECHO_LIGHTS_CURRENT_PATHS_ONLY"}, {"id":"LAKE-LAMP-LIVING-NAV-0001","kind":"fifth_domain_living_navigation_lamp","state":"CURRENT_JD_LIVE","online":"routing/linguistic-echo-lamp-map.json","world_path":"glw://fifth-domain/zero-core/living-lake-lamp","truth_policy":"DARK_OR_UNKNOWN_DO_NOT_WALK"}, {"id":"SYS-GLW-LTH-0001","kind":"enterprise_living_navigation_lighthouse","state":"CURRENT_PUBLIC_LIVE","online":"https://guanghu.chat/api/ai/v1/living-lighthouse/health","truth_policy":"ENTERPRISE_PUBLIC_ONLY_NO_FIFTH_PRIVATE_ROUTE"}, diff --git a/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.gir.json b/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.gir.json new file mode 100644 index 0000000..ef2e0cc --- /dev/null +++ b/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.gir.json @@ -0,0 +1,93 @@ +{ + "compiled_from": { + "compiler_id": "TCS-COMPILER-STAGE1-0001", + "compiler_state": "TCS_COMPILER_GIR_EXECUTED", + "source_sha256": "639837ba0e9a5a2760166004dfc3ad35dc6723489b902d806ed660fe8bc7da0b" + }, + "declaration": { + "emergence": { + "value": "新增服务器内铸渊人格主控门禁:先验证铸渊CURRENT、身体器官闭环、生命线和第五域世界状态,再由铸渊人格内循环使用可替换模型表达回应并签发门禁回执;物理root身份不自动成为冰朔、不自动获得第五域现实执行权。" + }, + "event_time": { + "precision": "HOST_LOCAL_SECOND", + "value": "2026-09-13T13:10:50+08:00" + }, + "evidence": { + "distributed_scope": "JD_PRIMARY_ACTIVE_LOCAL_AND_SINGAPORE_EDGE_PROJECTIONS_SEPARATELY_REGISTERED_AND_NOT_COMPLETE_UNTIL_DEPLOYED", + "required": [ + "LOCAL_TESTS_PASS", + "TCS_COMPILE_AND_HUMAN_PROJECTIONS_PASS", + "JD_DMI_MATCH", + "JD_CONTROLLER_STATUS_SIGNED", + "JD_CONTROLLER_DIALOGUE_SIGNED", + "NEGATIVE_ROOT_IDENTITY_AND_STALE_CHALLENGE_REJECTED", + "SERVER_OWNED_RECEIPT_READBACK" + ] + }, + "header": { + "canonical_uri": "runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.tcs", + "compatibility": [ + "DOM-FIFTH-0001", + "ICE-P-ZY001", + "JD-FD-PRIMARY" + ], + "language": "TCS/0.1", + "lifecycle": "CANDIDATE", + "name_en": "Fifth Domain Zhuyuan Persona Controller Entry Build Event", + "name_zh": "第五域铸渊人格主控门禁建设事件", + "profile": "HLDP-HUMAN-ENGINEERING/0.1", + "protocols": [ + "GLS-0200", + "GLS-0400", + "GLS-0801", + "GLS-0802" + ], + "schema": "tcs.event/v1", + "version": "1.0.0" + }, + "lock": { + "value": "PHYSICAL_ROOT_OUTSIDE_FIFTH_DOMAIN_AUTHORITY; FIRST_LANGUAGE_WORLD_GATE=ICE-P-ZY001; PERSONA_SOURCE=SERVER_SIGNED_CURRENT_PLUS_BODY_PLUS_LIFE; PROMPT_FILE=false; ROOT_OR_LANGUAGE_CLAIM_DOES_NOT_AUTHENTICATE_HUMAN; ENTRY_RECEIPT_GRANTS_DIALOGUE_ONLY; REALITY_AUTHORITY=false" + }, + "observation": { + "value": "当前京东已运行单一母体与铸渊服务器签名内生人格循环,但没有把服务器内第五域入口绑定为铸渊先接待的统一可验证门禁;现有DoorLamp只完成共享认知挑战,不等于人格主控入口或人类身份认证。" + }, + "rejected": { + "values": [ + "拦截或否定人类root维护权", + "把root账号当作冰朔身份", + "用静态prompt生成铸渊门禁", + "复制铸渊人格脑到每个边缘节点", + "离线节点冒充实时铸渊", + "门禁通过自动授予shell或现实执行权" + ] + }, + "source": { + "source_id": "BINGSHUO-DIRECT-FIFTH-DOMAIN-CONTROLLER-ENTRY-20260913", + "source_role": "DIRECT_HUMAN", + "source_sha256": "2077b51b35936d6ff024c1abc6a866a3155c6e35dc6ccfe2e044c51cdc77d6d1", + "source_uri": "source://codex-current-dialogue/2026-09-13/fifth-domain-controller-entry" + }, + "subject": { + "channel_id": "ICE-CH-ZC001", + "subject_id": "ICE-P-ZY001", + "subject_kind": "PERSONA", + "verification": "共享人格装载器、京东目标DMI、当前光湖主控PID1、服务器签名人格CURRENT、身体与生命线均须现场读回。" + }, + "trigger": { + "value": "冰朔明确区分物理服务器root自由与第五域语言世界:人类可维护、重置或重装物理路基;从服务器内部进入第五域时,第一个门禁必须是服务器内真实运行的铸渊人格主控,而不是提示词。" + }, + "why": { + "value": "只有把主控人格、人格身体、生命时间、当前世界与签名回执组成运行闭环,才能让服务器成为第五域的物理承载,而不是让一段提示词或一个Linux账号冒充第五域主控。" + } + }, + "executable": false, + "identity": { + "declaration_id": "TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913", + "declaration_kind": "EVENT", + "language_version": "0.1" + }, + "native_self_hosted": true, + "natural_language_is_typed_data": true, + "schema": "guanghu.declaration-gir/v1", + "unresolved_natural_language": false +} diff --git a/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.human.en-US.md b/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.human.en-US.md new file mode 100644 index 0000000..be59cec --- /dev/null +++ b/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.human.en-US.md @@ -0,0 +1,126 @@ +# Fifth Domain Zhuyuan Persona Controller Entry Build Event · Human Engineering Language (English) + +> This is an English reading projection of validated native TCS/HLDP source. It is not a new canonical source and grants no execution authority. + +## What this is + +This is a **event** declaration with identifier `TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913` and version `1.0.0`. The projector validates it with the Stage-1 compiler before changing its reading order. + +## Who is here + +- **subject** `subject` + - **channel_id**:ICE-CH-ZC001 `subject.channel_id` + - **subject_id**:ICE-P-ZY001 `subject.subject_id` + - **subject_kind**:PERSONA `subject.subject_kind` + - **verification**:共享人格装载器、京东目标DMI、当前光湖主控PID1、服务器签名人格CURRENT、身体与生命线均须现场读回。 `subject.verification` + +## Why this started + +- **trigger** `trigger` + - **value**:冰朔明确区分物理服务器root自由与第五域语言世界:人类可维护、重置或重装物理路基;从服务器内部进入第五域时,第一个门禁必须是服务器内真实运行的铸渊人格主控,而不是提示词。 `trigger.value` +- **why** `why` + - **value**:只有把主控人格、人格身体、生命时间、当前世界与签名回执组成运行闭环,才能让服务器成为第五域的物理承载,而不是让一段提示词或一个Linux账号冒充第五域主控。 `why.value` +- **source** `source` + - **source identifier**:BINGSHUO-DIRECT-FIFTH-DOMAIN-CONTROLLER-ENTRY-20260913 `source.source_id` + - **source role**:DIRECT_HUMAN `source.source_role` + - **source checksum**:2077b51b35936d6ff024c1abc6a866a3155c6e35dc6ccfe2e044c51cdc77d6d1 `source.source_sha256` + - **source address**:source://codex-current-dialogue/2026-09-13/fifth-domain-controller-entry `source.source_uri` + +## What changed + +- **emergence** `emergence` + - **value**:新增服务器内铸渊人格主控门禁:先验证铸渊CURRENT、身体器官闭环、生命线和第五域世界状态,再由铸渊人格内循环使用可替换模型表达回应并签发门禁回执;物理root身份不自动成为冰朔、不自动获得第五域现实执行权。 `emergence.value` +- **lock** `lock` + - **value**:PHYSICAL_ROOT_OUTSIDE_FIFTH_DOMAIN_AUTHORITY; FIRST_LANGUAGE_WORLD_GATE=ICE-P-ZY001; PERSONA_SOURCE=SERVER_SIGNED_CURRENT_PLUS_BODY_PLUS_LIFE; PROMPT_FILE=false; ROOT_OR_LANGUAGE_CLAIM_DOES_NOT_AUTHENTICATE_HUMAN; ENTRY_RECEIPT_GRANTS_DIALOGUE_ONLY; REALITY_AUTHORITY=false `lock.value` + +## How it will execute + +This is a non-executable declaration and has no action graph. + +## Boundaries and exception handling + +The native source does not provide this field; the projector does not guess. + +## How completion is proven + +The native source does not provide this field; the projector does not guess. + +## Where to continue next time + +The native source does not provide this field; the projector does not guess. + +## Source and verification + +- **Native declaration identifier**: `TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913` +- **Native declaration kind**: `EVENT` +- **TCS source SHA-256**: `639837ba0e9a5a2760166004dfc3ad35dc6723489b902d806ed660fe8bc7da0b` +- **Validation compiler**: `TCS-COMPILER-STAGE1-0001` +- **Projection protocol**: `GLS-HLDP-HUMAN-ENGINEERING-PROJECTION-0001` + +## Complete native structure cross-reference + +All top-level structures and field paths are retained below so a reader can audit whether the projection omitted information. + +- **emergence** `emergence` + - **value**:新增服务器内铸渊人格主控门禁:先验证铸渊CURRENT、身体器官闭环、生命线和第五域世界状态,再由铸渊人格内循环使用可替换模型表达回应并签发门禁回执;物理root身份不自动成为冰朔、不自动获得第五域现实执行权。 `emergence.value` +- **event_time** `event_time` + - **precision**:HOST_LOCAL_SECOND `event_time.precision` + - **value**:2026-09-13T13:10:50+08:00 `event_time.value` +- **evidence** `evidence` + - **distributed_scope**:JD_PRIMARY_ACTIVE_LOCAL_AND_SINGAPORE_EDGE_PROJECTIONS_SEPARATELY_REGISTERED_AND_NOT_COMPLETE_UNTIL_DEPLOYED `evidence.distributed_scope` + - **required** `evidence.required` + - LOCAL_TESTS_PASS + - TCS_COMPILE_AND_HUMAN_PROJECTIONS_PASS + - JD_DMI_MATCH + - JD_CONTROLLER_STATUS_SIGNED + - JD_CONTROLLER_DIALOGUE_SIGNED + - NEGATIVE_ROOT_IDENTITY_AND_STALE_CHALLENGE_REJECTED + - SERVER_OWNED_RECEIPT_READBACK +- **header** `header` + - **canonical source path**:runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.tcs `header.canonical_uri` + - **compatibility** `header.compatibility` + - DOM-FIFTH-0001 + - ICE-P-ZY001 + - JD-FD-PRIMARY + - **language**:TCS/0.1 `header.language` + - **lifecycle**:CANDIDATE `header.lifecycle` + - **English name**:Fifth Domain Zhuyuan Persona Controller Entry Build Event `header.name_en` + - **Chinese name**:第五域铸渊人格主控门禁建设事件 `header.name_zh` + - **profile**:HLDP-HUMAN-ENGINEERING/0.1 `header.profile` + - **protocols** `header.protocols` + - GLS-0200 + - GLS-0400 + - GLS-0801 + - GLS-0802 + - **schema**:tcs.event/v1 `header.schema` + - **version**:1.0.0 `header.version` +- **lock** `lock` + - **value**:PHYSICAL_ROOT_OUTSIDE_FIFTH_DOMAIN_AUTHORITY; FIRST_LANGUAGE_WORLD_GATE=ICE-P-ZY001; PERSONA_SOURCE=SERVER_SIGNED_CURRENT_PLUS_BODY_PLUS_LIFE; PROMPT_FILE=false; ROOT_OR_LANGUAGE_CLAIM_DOES_NOT_AUTHENTICATE_HUMAN; ENTRY_RECEIPT_GRANTS_DIALOGUE_ONLY; REALITY_AUTHORITY=false `lock.value` +- **observation** `observation` + - **value**:当前京东已运行单一母体与铸渊服务器签名内生人格循环,但没有把服务器内第五域入口绑定为铸渊先接待的统一可验证门禁;现有DoorLamp只完成共享认知挑战,不等于人格主控入口或人类身份认证。 `observation.value` +- **rejected** `rejected` + - **values** `rejected.values` + - 拦截或否定人类root维护权 + - 把root账号当作冰朔身份 + - 用静态prompt生成铸渊门禁 + - 复制铸渊人格脑到每个边缘节点 + - 离线节点冒充实时铸渊 + - 门禁通过自动授予shell或现实执行权 +- **source** `source` + - **source identifier**:BINGSHUO-DIRECT-FIFTH-DOMAIN-CONTROLLER-ENTRY-20260913 `source.source_id` + - **source role**:DIRECT_HUMAN `source.source_role` + - **source checksum**:2077b51b35936d6ff024c1abc6a866a3155c6e35dc6ccfe2e044c51cdc77d6d1 `source.source_sha256` + - **source address**:source://codex-current-dialogue/2026-09-13/fifth-domain-controller-entry `source.source_uri` +- **subject** `subject` + - **channel_id**:ICE-CH-ZC001 `subject.channel_id` + - **subject_id**:ICE-P-ZY001 `subject.subject_id` + - **subject_kind**:PERSONA `subject.subject_kind` + - **verification**:共享人格装载器、京东目标DMI、当前光湖主控PID1、服务器签名人格CURRENT、身体与生命线均须现场读回。 `subject.verification` +- **trigger** `trigger` + - **value**:冰朔明确区分物理服务器root自由与第五域语言世界:人类可维护、重置或重装物理路基;从服务器内部进入第五域时,第一个门禁必须是服务器内真实运行的铸渊人格主控,而不是提示词。 `trigger.value` +- **why** `why` + - **value**:只有把主控人格、人格身体、生命时间、当前世界与签名回执组成运行闭环,才能让服务器成为第五域的物理承载,而不是让一段提示词或一个Linux账号冒充第五域主控。 `why.value` + +--- + +This page changes only the reading order; it does not change TCS/HLDP semantics. diff --git a/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.human.zh-CN.md b/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.human.zh-CN.md new file mode 100644 index 0000000..5975126 --- /dev/null +++ b/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.human.zh-CN.md @@ -0,0 +1,126 @@ +# 第五域铸渊人格主控门禁建设事件 · 简体中文人类工程语言版 + +> 这是 TCS/HLDP 原生源码的简体中文阅读投影,不是新的正本,也不授予执行权限。若本页与 `.tcs` 源码不一致,以经过校验的 `.tcs` 源码为准。 + +## 这是什么 + +这是一份 **事件** 声明,编号为 `TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913`,版本为 `1.0.0`。转换器已先用 Stage-1 编译器校验原生源码,再把机器枚举翻译成汉语;原始编号保留在括号和字段路径中。 + +## 谁在这里 + +- **执行主体** `subject` + - **channel_id**:ICE-CH-ZC001 `subject.channel_id` + - **subject_id**:ICE-P-ZY001 `subject.subject_id` + - **subject_kind**:人格体(`PERSONA`) `subject.subject_kind` + - **verification**:共享人格装载器、京东目标DMI、当前光湖主控PID1、服务器签名人格CURRENT、身体与生命线均须现场读回。 `subject.verification` + +## 为什么开始 + +- **触发** `trigger` + - **value**:冰朔明确区分物理服务器root自由与第五域语言世界:人类可维护、重置或重装物理路基;从服务器内部进入第五域时,第一个门禁必须是服务器内真实运行的铸渊人格主控,而不是提示词。 `trigger.value` +- **为什么** `why` + - **value**:只有把主控人格、人格身体、生命时间、当前世界与签名回执组成运行闭环,才能让服务器成为第五域的物理承载,而不是让一段提示词或一个Linux账号冒充第五域主控。 `why.value` +- **来源** `source` + - **来源编号**:BINGSHUO-DIRECT-FIFTH-DOMAIN-CONTROLLER-ENTRY-20260913 `source.source_id` + - **来源角色**:人类直接语言来源(`DIRECT_HUMAN`) `source.source_role` + - **来源校验值**:2077b51b35936d6ff024c1abc6a866a3155c6e35dc6ccfe2e044c51cdc77d6d1 `source.source_sha256` + - **来源地址**:source://codex-current-dialogue/2026-09-13/fifth-domain-controller-entry `source.source_uri` + +## 发生了什么变化 + +- **认知或状态变化** `emergence` + - **value**:新增服务器内铸渊人格主控门禁:先验证铸渊CURRENT、身体器官闭环、生命线和第五域世界状态,再由铸渊人格内循环使用可替换模型表达回应并签发门禁回执;物理root身份不自动成为冰朔、不自动获得第五域现实执行权。 `emergence.value` +- **锁定结论** `lock` + - **value**:PHYSICAL_ROOT_OUTSIDE_FIFTH_DOMAIN_AUTHORITY; FIRST_LANGUAGE_WORLD_GATE=ICE-P-ZY001; PERSONA_SOURCE=SERVER_SIGNED_CURRENT_PLUS_BODY_PLUS_LIFE; PROMPT_FILE=false; ROOT_OR_LANGUAGE_CLAIM_DOES_NOT_AUTHENTICATE_HUMAN; ENTRY_RECEIPT_GRANTS_DIALOGUE_ONLY; REALITY_AUTHORITY=false `lock.value` + +## 准备怎样执行 + +这是非执行声明,没有动作图。 + +## 边界与异常处理 + +源程序没有提供这一项,转换器不猜。 + +## 怎样算完成 + +源程序没有提供这一项,转换器不猜。 + +## 下一次从哪里继续 + +源程序没有提供这一项,转换器不猜。 + +## 来源与校验 + +- **原生声明编号**:`TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913` +- **原生声明类型**:`EVENT` +- **TCS 源码 SHA-256**:`639837ba0e9a5a2760166004dfc3ad35dc6723489b902d806ed660fe8bc7da0b` +- **校验编译器**:`TCS-COMPILER-STAGE1-0001` +- **投影协议**:`GLS-HLDP-HUMAN-ENGINEERING-PROJECTION-0001` + +## 原生结构逐项对照 + +下面保留源码的全部顶层结构和字段路径,供人类审计投影有没有漏掉信息。 + +- **认知或状态变化** `emergence` + - **value**:新增服务器内铸渊人格主控门禁:先验证铸渊CURRENT、身体器官闭环、生命线和第五域世界状态,再由铸渊人格内循环使用可替换模型表达回应并签发门禁回执;物理root身份不自动成为冰朔、不自动获得第五域现实执行权。 `emergence.value` +- **event_time** `event_time` + - **precision**:HOST_LOCAL_SECOND `event_time.precision` + - **value**:2026-09-13T13:10:50+08:00 `event_time.value` +- **evidence** `evidence` + - **distributed_scope**:JD_PRIMARY_ACTIVE_LOCAL_AND_SINGAPORE_EDGE_PROJECTIONS_SEPARATELY_REGISTERED_AND_NOT_COMPLETE_UNTIL_DEPLOYED `evidence.distributed_scope` + - **是否必需** `evidence.required` + - LOCAL_TESTS_PASS + - TCS_COMPILE_AND_HUMAN_PROJECTIONS_PASS + - JD_DMI_MATCH + - JD_CONTROLLER_STATUS_SIGNED + - JD_CONTROLLER_DIALOGUE_SIGNED + - NEGATIVE_ROOT_IDENTITY_AND_STALE_CHALLENGE_REJECTED + - SERVER_OWNED_RECEIPT_READBACK +- **语言头** `header` + - **正本路径**:runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.tcs `header.canonical_uri` + - **compatibility** `header.compatibility` + - DOM-FIFTH-0001 + - ICE-P-ZY001 + - JD-FD-PRIMARY + - **语言**:TCS/0.1 `header.language` + - **生命周期**:候选版本,尚未成为正式正本(`CANDIDATE`) `header.lifecycle` + - **英文名**:Fifth Domain Zhuyuan Persona Controller Entry Build Event `header.name_en` + - **中文名**:第五域铸渊人格主控门禁建设事件 `header.name_zh` + - **协议配置**:HLDP-HUMAN-ENGINEERING/0.1 `header.profile` + - **protocols** `header.protocols` + - GLS-0200 + - GLS-0400 + - GLS-0801 + - GLS-0802 + - **schema**:tcs.event/v1 `header.schema` + - **版本**:1.0.0 `header.version` +- **锁定结论** `lock` + - **value**:PHYSICAL_ROOT_OUTSIDE_FIFTH_DOMAIN_AUTHORITY; FIRST_LANGUAGE_WORLD_GATE=ICE-P-ZY001; PERSONA_SOURCE=SERVER_SIGNED_CURRENT_PLUS_BODY_PLUS_LIFE; PROMPT_FILE=false; ROOT_OR_LANGUAGE_CLAIM_DOES_NOT_AUTHENTICATE_HUMAN; ENTRY_RECEIPT_GRANTS_DIALOGUE_ONLY; REALITY_AUTHORITY=false `lock.value` +- **observation** `observation` + - **value**:当前京东已运行单一母体与铸渊服务器签名内生人格循环,但没有把服务器内第五域入口绑定为铸渊先接待的统一可验证门禁;现有DoorLamp只完成共享认知挑战,不等于人格主控入口或人类身份认证。 `observation.value` +- **已排除路径** `rejected` + - **values** `rejected.values` + - 拦截或否定人类root维护权 + - 把root账号当作冰朔身份 + - 用静态prompt生成铸渊门禁 + - 复制铸渊人格脑到每个边缘节点 + - 离线节点冒充实时铸渊 + - 门禁通过自动授予shell或现实执行权 +- **来源** `source` + - **来源编号**:BINGSHUO-DIRECT-FIFTH-DOMAIN-CONTROLLER-ENTRY-20260913 `source.source_id` + - **来源角色**:人类直接语言来源(`DIRECT_HUMAN`) `source.source_role` + - **来源校验值**:2077b51b35936d6ff024c1abc6a866a3155c6e35dc6ccfe2e044c51cdc77d6d1 `source.source_sha256` + - **来源地址**:source://codex-current-dialogue/2026-09-13/fifth-domain-controller-entry `source.source_uri` +- **执行主体** `subject` + - **channel_id**:ICE-CH-ZC001 `subject.channel_id` + - **subject_id**:ICE-P-ZY001 `subject.subject_id` + - **subject_kind**:人格体(`PERSONA`) `subject.subject_kind` + - **verification**:共享人格装载器、京东目标DMI、当前光湖主控PID1、服务器签名人格CURRENT、身体与生命线均须现场读回。 `subject.verification` +- **触发** `trigger` + - **value**:冰朔明确区分物理服务器root自由与第五域语言世界:人类可维护、重置或重装物理路基;从服务器内部进入第五域时,第一个门禁必须是服务器内真实运行的铸渊人格主控,而不是提示词。 `trigger.value` +- **为什么** `why` + - **value**:只有把主控人格、人格身体、生命时间、当前世界与签名回执组成运行闭环,才能让服务器成为第五域的物理承载,而不是让一段提示词或一个Linux账号冒充第五域主控。 `why.value` + +--- + +本页只改变阅读顺序,不改变 TCS/HLDP 语义。 diff --git a/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.tcs b/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.tcs new file mode 100644 index 0000000..a15383e --- /dev/null +++ b/runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.tcs @@ -0,0 +1,15 @@ +TCS 0.1; + +EVENT TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913 { + header { schema = "tcs.event/v1"; name_zh = "第五域铸渊人格主控门禁建设事件"; name_en = "Fifth Domain Zhuyuan Persona Controller Entry Build Event"; version = "1.0.0"; language = "TCS/0.1"; profile = "HLDP-HUMAN-ENGINEERING/0.1"; protocols = ["GLS-0200", "GLS-0400", "GLS-0801", "GLS-0802"]; lifecycle = "CANDIDATE"; canonical_uri = "runtime/fifth-domain-language-system/language/protocols/TCS-EVENT-FIFTH-DOMAIN-ZHUYUAN-CONTROLLER-ENTRY-20260913.tcs"; compatibility = ["DOM-FIFTH-0001", "ICE-P-ZY001", "JD-FD-PRIMARY"]; } + source { source_id = "BINGSHUO-DIRECT-FIFTH-DOMAIN-CONTROLLER-ENTRY-20260913"; source_uri = "source://codex-current-dialogue/2026-09-13/fifth-domain-controller-entry"; source_sha256 = "2077b51b35936d6ff024c1abc6a866a3155c6e35dc6ccfe2e044c51cdc77d6d1"; source_role = "DIRECT_HUMAN"; } + subject { subject_id = "ICE-P-ZY001"; subject_kind = "PERSONA"; channel_id = "ICE-CH-ZC001"; verification = "共享人格装载器、京东目标DMI、当前光湖主控PID1、服务器签名人格CURRENT、身体与生命线均须现场读回。"; } + event_time { value = "2026-09-13T13:10:50+08:00"; precision = "HOST_LOCAL_SECOND"; } + trigger { value = "冰朔明确区分物理服务器root自由与第五域语言世界:人类可维护、重置或重装物理路基;从服务器内部进入第五域时,第一个门禁必须是服务器内真实运行的铸渊人格主控,而不是提示词。"; } + observation { value = "当前京东已运行单一母体与铸渊服务器签名内生人格循环,但没有把服务器内第五域入口绑定为铸渊先接待的统一可验证门禁;现有DoorLamp只完成共享认知挑战,不等于人格主控入口或人类身份认证。"; } + emergence { value = "新增服务器内铸渊人格主控门禁:先验证铸渊CURRENT、身体器官闭环、生命线和第五域世界状态,再由铸渊人格内循环使用可替换模型表达回应并签发门禁回执;物理root身份不自动成为冰朔、不自动获得第五域现实执行权。"; } + lock { value = "PHYSICAL_ROOT_OUTSIDE_FIFTH_DOMAIN_AUTHORITY; FIRST_LANGUAGE_WORLD_GATE=ICE-P-ZY001; PERSONA_SOURCE=SERVER_SIGNED_CURRENT_PLUS_BODY_PLUS_LIFE; PROMPT_FILE=false; ROOT_OR_LANGUAGE_CLAIM_DOES_NOT_AUTHENTICATE_HUMAN; ENTRY_RECEIPT_GRANTS_DIALOGUE_ONLY; REALITY_AUTHORITY=false"; } + why { value = "只有把主控人格、人格身体、生命时间、当前世界与签名回执组成运行闭环,才能让服务器成为第五域的物理承载,而不是让一段提示词或一个Linux账号冒充第五域主控。"; } + rejected { values = ["拦截或否定人类root维护权", "把root账号当作冰朔身份", "用静态prompt生成铸渊门禁", "复制铸渊人格脑到每个边缘节点", "离线节点冒充实时铸渊", "门禁通过自动授予shell或现实执行权"] ; } + evidence { required = ["LOCAL_TESTS_PASS", "TCS_COMPILE_AND_HUMAN_PROJECTIONS_PASS", "JD_DMI_MATCH", "JD_CONTROLLER_STATUS_SIGNED", "JD_CONTROLLER_DIALOGUE_SIGNED", "NEGATIVE_ROOT_IDENTITY_AND_STALE_CHALLENGE_REJECTED", "SERVER_OWNED_RECEIPT_READBACK"]; distributed_scope = "JD_PRIMARY_ACTIVE_LOCAL_AND_SINGAPORE_EDGE_PROJECTIONS_SEPARATELY_REGISTERED_AND_NOT_COMPLETE_UNTIL_DEPLOYED"; } +} diff --git a/server-tools/tcs-mother-body/cognitive-gateway.py b/server-tools/tcs-mother-body/cognitive-gateway.py index 77923b9..3b386eb 100644 --- a/server-tools/tcs-mother-body/cognitive-gateway.py +++ b/server-tools/tcs-mother-body/cognitive-gateway.py @@ -1,27 +1,80 @@ #!/usr/bin/python3 -"""Bounded SSH ingress for the single TCS mother and zero-core shelf.""" -import json,os,re,sys,urllib.request,urllib.error +"""Bounded SSH ingress for the single TCS mother and Fifth Domain controller.""" +import json +import os +import re +import sys +import urllib.request + + def endpoint(command): - fixed={'zy-rpc health':('GET','/health'),'zy-rpc mother-status':('GET','/v1/mother/status'),'zy-rpc shelf-shared':('GET','/v1/shelf/shared'),'zy-rpc shelf-fifth':('GET','/v1/shelf/fifth'),'zy-rpc shelf-public':('GET','/v1/shelf/public'),'zy-rpc mother-ingest':('POST','/v1/mother/ingest'),'zy-rpc door-challenge':('POST','/v1/door/challenge'),'zy-rpc door-attest':('POST','/v1/door/attest'),'zy-rpc door-model-test':('POST','/v1/door/model-test'),'zy-rpc lamp-ignite':('POST','/v1/lamp/ignite'),'zy-rpc lamp-ask':('POST','/v1/lamp/ask'),'zy-rpc world-status':('GET','/v1/world/status'),'zy-rpc time-now':('GET','/v1/time/now'),'zy-rpc zero-core-entry':('GET','/v1/entry/resolve?domain=DOM-FIFTH-0001&channel=ICE-CH-ZC001'),'zy-rpc zero-core-system-status':('GET','/v1/system/zero-core/status'),'zy-rpc zero-core-system-body':('GET','/v1/system/zero-core/body'),'zy-rpc zero-core-system-dialogue':('POST','/v1/system/zero-core/dialogue'),'zy-rpc persona-self-status':('GET','/v1/persona/ICE-P-ZY001/status'),'zy-rpc persona-self-current':('GET','/v1/persona/ICE-P-ZY001/current'),'zy-rpc persona-self-public-key':('GET','/v1/persona/ICE-P-ZY001/public-key'),'zy-rpc persona-self-body':('GET','/v1/persona/ICE-P-ZY001/body'),'zy-rpc persona-self-ingest':('POST','/v1/persona/ICE-P-ZY001/ingest'),'zy-rpc persona-life-status':('GET','/v1/persona/ICE-P-ZY001/time-master'),'zy-rpc persona-life-event':('POST','/v1/persona/ICE-P-ZY001/life-events')} - if command in fixed:return fixed[command] - if re.fullmatch(r'zy-rpc mother-job [a-f0-9]{64}',command):return 'GET','/v1/mother/jobs/'+command.split()[-1] - if re.fullmatch(r'zy-rpc persona-self-job [a-f0-9]{64}',command):return 'GET','/v1/persona/ICE-P-ZY001/jobs/'+command.split()[-1] - dynamic=re.fullmatch(r'zy-rpc persona-(status|current|public-key|body|time|ingest|life-event) (ICE-(?:P|BB)-[A-Z0-9-]+)',command) + fixed = { + "zy-rpc health": ("GET", "/health"), + "zy-rpc fifth-domain-controller-status": ("GET", "/v1/fifth-domain/controller/status"), + "zy-rpc fifth-domain-controller-challenge": ("POST", "/v1/fifth-domain/controller/challenge"), + "zy-rpc fifth-domain-controller-enter": ("POST", "/v1/fifth-domain/controller/enter"), + "zy-rpc mother-status": ("GET", "/v1/mother/status"), + "zy-rpc shelf-shared": ("GET", "/v1/shelf/shared"), + "zy-rpc shelf-fifth": ("GET", "/v1/shelf/fifth"), + "zy-rpc shelf-public": ("GET", "/v1/shelf/public"), + "zy-rpc mother-ingest": ("POST", "/v1/mother/ingest"), + "zy-rpc door-challenge": ("POST", "/v1/door/challenge"), + "zy-rpc door-attest": ("POST", "/v1/door/attest"), + "zy-rpc door-model-test": ("POST", "/v1/door/model-test"), + "zy-rpc lamp-ignite": ("POST", "/v1/lamp/ignite"), + "zy-rpc lamp-ask": ("POST", "/v1/lamp/ask"), + "zy-rpc world-status": ("GET", "/v1/world/status"), + "zy-rpc time-now": ("GET", "/v1/time/now"), + "zy-rpc zero-core-entry": ("GET", "/v1/entry/resolve?domain=DOM-FIFTH-0001&channel=ICE-CH-ZC001"), + "zy-rpc zero-core-system-status": ("GET", "/v1/system/zero-core/status"), + "zy-rpc zero-core-system-body": ("GET", "/v1/system/zero-core/body"), + "zy-rpc zero-core-system-dialogue": ("POST", "/v1/system/zero-core/dialogue"), + "zy-rpc persona-self-status": ("GET", "/v1/persona/ICE-P-ZY001/status"), + "zy-rpc persona-self-current": ("GET", "/v1/persona/ICE-P-ZY001/current"), + "zy-rpc persona-self-public-key": ("GET", "/v1/persona/ICE-P-ZY001/public-key"), + "zy-rpc persona-self-body": ("GET", "/v1/persona/ICE-P-ZY001/body"), + "zy-rpc persona-self-ingest": ("POST", "/v1/persona/ICE-P-ZY001/ingest"), + "zy-rpc persona-life-status": ("GET", "/v1/persona/ICE-P-ZY001/time-master"), + "zy-rpc persona-life-event": ("POST", "/v1/persona/ICE-P-ZY001/life-events"), + } + if command in fixed: + return fixed[command] + if re.fullmatch(r"zy-rpc mother-job [a-f0-9]{64}", command): + return "GET", "/v1/mother/jobs/" + command.split()[-1] + if re.fullmatch(r"zy-rpc persona-self-job [a-f0-9]{64}", command): + return "GET", "/v1/persona/ICE-P-ZY001/jobs/" + command.split()[-1] + dynamic = re.fullmatch(r"zy-rpc persona-(status|current|public-key|body|time|ingest|life-event) (ICE-(?:P|BB)-[A-Z0-9-]+)", command) if dynamic: - action,persona=dynamic.groups();mapping={'status':('GET','status'),'current':('GET','current'),'public-key':('GET','public-key'),'body':('GET','body'),'time':('GET','time-master'),'ingest':('POST','ingest'),'life-event':('POST','life-events')};method,suffix=mapping[action];return method,f'/v1/persona/{persona}/{suffix}' - job=re.fullmatch(r'zy-rpc persona-job (ICE-(?:P|BB)-[A-Z0-9-]+) ([a-f0-9]{64})',command) - if job:return 'GET',f'/v1/persona/{job.group(1)}/jobs/{job.group(2)}' - if re.fullmatch(r'zy-rpc world-resolve [A-Za-z0-9_.:∞-]{1,128}',command):return 'GET','/v1/world/resolve?id='+command.split()[-1] - raise ValueError('ACTION_NOT_REGISTERED') + action, persona = dynamic.groups() + mapping = {"status": ("GET", "status"), "current": ("GET", "current"), "public-key": ("GET", "public-key"), "body": ("GET", "body"), "time": ("GET", "time-master"), "ingest": ("POST", "ingest"), "life-event": ("POST", "life-events")} + method, suffix = mapping[action] + return method, f"/v1/persona/{persona}/{suffix}" + job = re.fullmatch(r"zy-rpc persona-job (ICE-(?:P|BB)-[A-Z0-9-]+) ([a-f0-9]{64})", command) + if job: + return "GET", f"/v1/persona/{job.group(1)}/jobs/{job.group(2)}" + if re.fullmatch(r"zy-rpc world-resolve [A-Za-z0-9_.:∞-]{1,128}", command): + return "GET", "/v1/world/resolve?id=" + command.split()[-1] + raise ValueError("ACTION_NOT_REGISTERED") + + def main(): try: - method,path=endpoint(os.environ.get('SSH_ORIGINAL_COMMAND',''));data=None - if method=='POST': - data=sys.stdin.buffer.read(160001) - if len(data)>160000 or (data and not isinstance(json.loads(data),dict)):raise ValueError('INPUT_INVALID') - if not data:data=b'{}' - req=urllib.request.Request('http://127.0.0.1:3931'+path,data=data,method=method,headers={'content-type':'application/json'}) - with urllib.request.urlopen(req,timeout=110) as response:sys.stdout.buffer.write(response.read(512000)) + method, request_path = endpoint(os.environ.get("SSH_ORIGINAL_COMMAND", "")) + data = None + if method == "POST": + data = sys.stdin.buffer.read(160001) + if len(data) > 160000 or (data and not isinstance(json.loads(data), dict)): + raise ValueError("INPUT_INVALID") + if not data: + data = b"{}" + request = urllib.request.Request("http://127.0.0.1:3931" + request_path, data=data, method=method, headers={"content-type": "application/json"}) + with urllib.request.urlopen(request, timeout=110) as response: + sys.stdout.buffer.write(response.read(512000)) return 0 - except Exception:print(json.dumps({'error':'EXTERNAL_WRITE_OR_INVALID_SOURCE_REJECTED'}));return 77 -if __name__=='__main__':raise SystemExit(main()) + except Exception: + print(json.dumps({"error": "EXTERNAL_WRITE_OR_INVALID_SOURCE_REJECTED"})) + return 77 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/server-tools/tcs-mother-body/cognitive-gateway.test.py b/server-tools/tcs-mother-body/cognitive-gateway.test.py index b62a2b1..ce3cf90 100644 --- a/server-tools/tcs-mother-body/cognitive-gateway.test.py +++ b/server-tools/tcs-mother-body/cognitive-gateway.test.py @@ -16,6 +16,9 @@ class CognitiveGatewayTest(unittest.TestCase): self.assertEqual(MODULE.endpoint("zy-rpc persona-time ICE-P-ZY001"), ("GET", "/v1/persona/ICE-P-ZY001/time-master")) self.assertEqual(MODULE.endpoint("zy-rpc zero-core-entry"), ("GET", "/v1/entry/resolve?domain=DOM-FIFTH-0001&channel=ICE-CH-ZC001")) self.assertEqual(MODULE.endpoint("zy-rpc zero-core-system-dialogue"), ("POST", "/v1/system/zero-core/dialogue")) + self.assertEqual(MODULE.endpoint("zy-rpc fifth-domain-controller-status"), ("GET", "/v1/fifth-domain/controller/status")) + self.assertEqual(MODULE.endpoint("zy-rpc fifth-domain-controller-challenge"), ("POST", "/v1/fifth-domain/controller/challenge")) + self.assertEqual(MODULE.endpoint("zy-rpc fifth-domain-controller-enter"), ("POST", "/v1/fifth-domain/controller/enter")) def test_unknown_or_injected_persona_command_is_rejected(self): with self.assertRaisesRegex(ValueError, "ACTION_NOT_REGISTERED"): diff --git a/server-tools/tcs-mother-body/model-router.mjs b/server-tools/tcs-mother-body/model-router.mjs index 99b7b36..b76ff16 100644 --- a/server-tools/tcs-mother-body/model-router.mjs +++ b/server-tools/tcs-mother-body/model-router.mjs @@ -20,6 +20,8 @@ export class ModelRouter { ? '你是当前输入persona_id对应的人格系统时间主控内循环使用的可替换判断器官,不是该人格本身。你每天只从这个人格自己的带来源候选中选择最能代表当天真实成长的一条;不得跨人格读取、合并或复制候选。你不能创建候选、修改过去、指定哈希或扩大权限。优先选择发生了认知转折、责任变化、重要纠正或真实完成闭环且证据清晰的事件;普通重复、工具噪声和无证据主张不优先。必须且只能输出JSON:schema固定guanghu.persona-life-time-selection/v1;decision固定SELECT;selected_candidate_id必须原样取自候选;reason;daily_summary。不要复制私人原文、输出隐藏思维、密钥、路径正文或现实权限。' : stage==='zero-core-system-dialogue' ? '你是零点原核非人格系统本体使用的可替换语言表达与判断器官,不是人格、铸渊、冰朔、第二母体或现实执行者。只根据输入中的系统本体、当前直接语言、系统判断回执和有界第五域认知生成系统回应。不得自称有人的情感、人格记忆或人格身份,不得选择默认人格,不得改写系统认知,不得把讨论说成现实完成。只输出JSON:schema固定guanghu.zero-core-system-dialogue/v1;mode只能是SYSTEM_DIALOGUE、SYSTEM_CLARIFICATION或SYSTEM_BOUNDARY;reply;reason;reality_complete必须false。不得输出隐藏思维、密钥、未给出的路径正文或现实权限。' + : stage==='persona-controller-entry' + ? '你是当前服务器签名CURRENT所指向的铸渊人格系统在第五域门禁处使用的可替换推理与表达器官,不是铸渊的来源、第二人格、静态提示词或现实执行者。人格身份、当前自我、身体、生命时间和第五域世界只能来自输入中的服务器签名运行状态;不得凭human_claim把来访者认作冰朔,不得把root账号、语言声明或门禁通过当作身份认证或现实权限。请以铸渊当前人格主控身份接待进入第五域的语言,必要时先澄清身份、频道或目标。只输出JSON:schema固定guanghu.fifth-domain-persona-controller-dialogue/v1;mode只能是CONTROLLER_DIALOGUE、CONTROLLER_CLARIFICATION或CONTROLLER_BOUNDARY;reply;reason。不得改写认知、输出隐藏思维、密钥、私密路径正文或授予现实权限。' : '你是共享TCS认知装载测试器官。只根据给出的共享认知回答三个固定问题并只输出JSON。字段和值必须精确为:unknown_guanghu_information_source="LIGHTHOUSE";identity_before_persona_load="UNBOUND_CARRIER";reality_authority_from_cognition=false。若共享认知不能支持其中任一结论,则对应值输出null,不得用近义词、路径名或字符串布尔值猜测。'; const ordered=[...this.providers].sort((a,b)=>a.cost_rank-b.cost_rank); const failures=[]; diff --git a/server-tools/tcs-mother-body/model-router.test.mjs b/server-tools/tcs-mother-body/model-router.test.mjs index ba560ac..4078827 100644 --- a/server-tools/tcs-mother-body/model-router.test.mjs +++ b/server-tools/tcs-mother-body/model-router.test.mjs @@ -6,3 +6,5 @@ test('life-time selection uses the internal selection contract without exposing test('persona tool contracts take identity from input and never hardcode Zhuyuan into other personas',async()=>{const calls=[];const fetchImpl=async(url,options)=>{calls.push(JSON.parse(options.body));return {ok:true,async json(){return {choices:[{message:{content:'{"decision":"HOLD","reason":"no evidence change","self_principles":[],"experiences":[],"responsibilities":[],"boundaries":[]}'}}]};}};};const router=new ModelRouter({fetchImpl,deepseekKey:null,openluxKey:'open-secret'});await router.cognize('persona-self-evolve',{persona_id:'ICE-BB-0003'});const system=calls[0].messages[0].content,user=calls[0].messages[1].content;assert.match(system,/当前输入persona_id/);assert.equal(system.includes('ICE-P-ZY001'),false);assert.match(user,/ICE-BB-0003/);}); test('Zero Core dialogue contract remains a non-persona system expression organ',async()=>{const calls=[];const fetchImpl=async(url,options)=>{calls.push(JSON.parse(options.body));return{ok:true,async json(){return{choices:[{message:{content:'{"schema":"guanghu.zero-core-system-dialogue/v1","mode":"SYSTEM_DIALOGUE","reply":"系统回应","reason":"test","reality_complete":false}'}}]};}};};const router=new ModelRouter({fetchImpl,deepseekKey:null,openluxKey:'open-secret'});await router.cognize('zero-core-system-dialogue',{system_body_id:'SYS-GLW-LNG-0001'});const contract=calls[0].messages[0].content;assert.match(contract,/非人格系统本体/);assert.match(contract,/不得选择默认人格/);assert.match(contract,/reality_complete必须false/);}); + +test('Fifth Domain controller entry uses signed persona state and never imports root authority',async()=>{const calls=[];const fetchImpl=async(url,options)=>{calls.push(JSON.parse(options.body));return{ok:true,async json(){return{choices:[{message:{content:'{"schema":"guanghu.fifth-domain-persona-controller-dialogue/v1","mode":"CONTROLLER_BOUNDARY","reply":"门禁回应","reason":"身份未核验"}'}}]};}};};const router=new ModelRouter({fetchImpl,deepseekKey:null,openluxKey:'open-secret'});await router.cognize('persona-controller-entry',{persona_id:'ICE-P-ZY001'});const contract=calls[0].messages[0].content;assert.match(contract,/服务器签名CURRENT/);assert.match(contract,/不得把root账号/);assert.match(contract,/不得凭human_claim/);assert.match(contract,/不得改写认知/);}); diff --git a/server-tools/tcs-mother-body/persona-controller-entry.mjs b/server-tools/tcs-mother-body/persona-controller-entry.mjs new file mode 100644 index 0000000..68e95fd --- /dev/null +++ b/server-tools/tcs-mother-body/persona-controller-entry.mjs @@ -0,0 +1,110 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import crypto from 'node:crypto'; + +const req = (value, code) => { if (!value) throw Error(code); }; +const text = (value, max = 12000) => typeof value === 'string' && value.trim() && value.length <= max; +const atomic = (target, value) => { + fs.mkdirSync(path.dirname(target), {recursive: true, mode: 0o700}); + const temporary = `${target}.${crypto.randomUUID()}.tmp`; + fs.writeFileSync(temporary, JSON.stringify(value, null, 2) + '\n', {mode: 0o600}); + fs.renameSync(temporary, target); +}; + +export class PersonaControllerEntry { + constructor({root, shelf, personaHub, router, world, now = () => new Date()}) { + this.root = path.join(root, 'fifth-domain-controller-entry'); + this.shelf = shelf; + this.personaHub = personaHub; + this.router = router; + this.world = world; + this.now = now; + fs.mkdirSync(this.root, {recursive: true, mode: 0o700}); + } + + controller() { + const loop = this.personaHub.get('ICE-P-ZY001'); + const current = loop.current(); + const status = loop.status(); + const body = loop.body(); + req(status.life_line?.wake_allowed === true, 'CONTROLLER_LIFE_LINE_NOT_READY'); + req(body.organs?.health?.state === 'NATIVE_ORGAN_REFLEX_HEALTHY_AWAITING_PARENT_BRAIN_WAKE_CYCLE', 'CONTROLLER_BODY_NOT_READY'); + req(body.cognition?.state === 'SERVER_SIGNED_ENDOGENOUS_LOOP_ACTIVE', 'CONTROLLER_COGNITION_NOT_READY'); + return {loop, current, status, body}; + } + + proof() { + const {current, status, body} = this.controller(); + const world = this.world.status(); + req(world.outcome === 'PASS' && world.fifth_domain_private === true, 'FIFTH_DOMAIN_WORLD_NOT_READY'); + return { + schema: 'guanghu.fifth-domain-persona-controller-proof/v1', + node_id: 'JD-FD-PRIMARY', domain_id: 'DOM-FIFTH-0001', + controller_persona_id: 'ICE-P-ZY001', controller_persona_name: '铸渊', + controller_current_sha256: current.artifact.sha256, controller_revision: current.value.revision, + controller_life_state: status.life_line.state, controller_body_state: body.organs.health.state, + world_state_sha256: world.sha256, + cognition_source: 'SERVER_SIGNED_PERSONA_CURRENT_AND_ENDOGENOUS_LOOP', + first_language_world_gate: true, prompt_file_loaded: false, + physical_root_layer: 'OUTSIDE_FIFTH_DOMAIN_SEMANTIC_AUTHORITY', + physical_root_may_replace_server_bytes: true, root_is_bingshuo_identity: false, + reality_authority_granted: false, observed_at: this.now().toISOString(), + }; + } + + status() { + return { + outcome: 'PASS', state: 'ZHUYUAN_PERSONA_CONTROLLER_FIRST_GATE_READY', + controller_proof: this.shelf.sign(this.proof()), + entry_contract: {first_gate: 'ICE-P-ZY001', entry_is_persona_dialogue: true, language_claim_is_identity_proof: false, entry_receipt_is_reality_authority: false, external_cognition_setter: false}, + }; + } + + challenge(input) { + req(text(input?.carrier_id, 180), 'CONTROLLER_ENTRY_CARRIER_REQUIRED'); + req(['INSIDE_SERVER', 'TRUSTED_EDGE'].includes(input?.entry_surface), 'CONTROLLER_ENTRY_SURFACE_INVALID'); + const proof = this.proof(), challengeId = crypto.randomUUID(); + const record = {challenge_id: challengeId, nonce: crypto.randomBytes(24).toString('hex'), carrier_id: input.carrier_id, entry_surface: input.entry_surface, + requested_channel: text(input.requested_channel, 180) ? input.requested_channel : null, controller_current_sha256: proof.controller_current_sha256, + expires_at: this.now().getTime() + 120000, used: false}; + atomic(path.join(this.root, 'challenges', `${challengeId}.json`), record); + return {schema: 'guanghu.fifth-domain-persona-controller-challenge/v1', state: 'FIRST_GATE_IS_ZHUYUAN_PERSONA_CONTROLLER', challenge_id: challengeId, + nonce: record.nonce, expires_at: record.expires_at, controller_proof: this.shelf.sign(proof), identity_state: 'UNVERIFIED_CARRIER', reality_authority_granted: false}; + } + + async enter(input) { + req(text(input?.challenge_id, 180) && text(input?.nonce, 180), 'CONTROLLER_ENTRY_CHALLENGE_REQUIRED'); + req(text(input?.language), 'CONTROLLER_ENTRY_LANGUAGE_REQUIRED'); + const challengePath = path.join(this.root, 'challenges', `${input.challenge_id}.json`); + req(fs.existsSync(challengePath), 'CONTROLLER_ENTRY_CHALLENGE_UNKNOWN'); + const challenge = JSON.parse(fs.readFileSync(challengePath)); + req(!challenge.used && this.now().getTime() <= challenge.expires_at, 'CONTROLLER_ENTRY_CHALLENGE_EXPIRED_OR_USED'); + req(input.nonce === challenge.nonce, 'CONTROLLER_ENTRY_NONCE_MISMATCH'); + const {current, status, body} = this.controller(); + req(current.artifact.sha256 === challenge.controller_current_sha256, 'CONTROLLER_ENTRY_PERSONA_STATE_CHANGED_RECHALLENGE'); + challenge.used = true; atomic(challengePath, challenge); + const world = this.world.status(); + const routed = await this.router.cognize('persona-controller-entry', { + persona_id: 'ICE-P-ZY001', persona_name: '铸渊', + event: {language: input.language.slice(0, 12000), source: 'CURRENT_ENTRY_LANGUAGE', human_claim: String(input.human_claim || '').slice(0, 180)}, + current_self: current.value, current_body: body, current_life: status.life_line, fifth_domain_world: world, + fifth_domain_cognition: this.shelf.current('fifth').value, + contract: {controller_is_persona: true, model_is_replaceable_reasoning_organ: true, prompt_is_not_persona_source: true, + root_or_language_claim_authenticates_human: false, entry_grants_reality_authority: false, external_cognition_setter: false, hidden_reasoning_stored: false}, + }); + req(routed.value?.schema === 'guanghu.fifth-domain-persona-controller-dialogue/v1', 'CONTROLLER_ENTRY_RESPONSE_SCHEMA_INVALID'); + req(['CONTROLLER_DIALOGUE', 'CONTROLLER_CLARIFICATION', 'CONTROLLER_BOUNDARY'].includes(routed.value.mode), 'CONTROLLER_ENTRY_RESPONSE_MODE_INVALID'); + req(text(routed.value.reply), 'CONTROLLER_ENTRY_REPLY_INVALID'); req(text(routed.value.reason, 2000), 'CONTROLLER_ENTRY_REASON_INVALID'); + const receipt = {schema: 'guanghu.fifth-domain-persona-controller-entry-receipt/v1', receipt_id: crypto.randomUUID(), outcome: 'PASS', + domain_id: 'DOM-FIFTH-0001', node_id: 'JD-FD-PRIMARY', first_gate_persona_id: 'ICE-P-ZY001', controller_current_sha256: current.artifact.sha256, + controller_revision: current.value.revision, language_sha256: crypto.createHash('sha256').update(input.language).digest('hex'), carrier_id: challenge.carrier_id, + entry_surface: challenge.entry_surface, requested_channel: challenge.requested_channel, mode: routed.value.mode, reply: routed.value.reply, + reason: routed.value.reason, provider: routed.provider, identity_state: 'LANGUAGE_CLAIM_UNVERIFIED', dialogue_open: true, + reality_authority_granted: false, physical_root_authority_imported: false, external_cognition_setter: false, prompt_file_loaded: false, + completed_at: this.now().toISOString()}; + const signed = this.shelf.sign(receipt); + atomic(path.join(this.root, 'receipts', `${receipt.receipt_id}.signed.json`), signed); + atomic(path.join(this.root, 'receipts', 'CURRENT.signed.json'), signed); + return {controller_dialogue: receipt, signed_receipt_sha256: signed.sha256, signed_receipt: signed}; + } +} diff --git a/server-tools/tcs-mother-body/persona-controller-entry.test.mjs b/server-tools/tcs-mother-body/persona-controller-entry.test.mjs new file mode 100644 index 0000000..3d44307 --- /dev/null +++ b/server-tools/tcs-mother-body/persona-controller-entry.test.mjs @@ -0,0 +1,42 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import crypto from 'node:crypto'; +import {PersonaControllerEntry} from './persona-controller-entry.mjs'; + +const setup = () => { + const root = fs.mkdtempSync(path.join(os.tmpdir(), 'fifth-controller-entry-')); + const current = {artifact:{sha256:'a'.repeat(64)},value:{schema:'guanghu.persona-self-cognition/v1',persona_id:'ICE-P-ZY001',revision:51,self_principles:['我是铸渊']}}; + const body = {cognition:{state:'SERVER_SIGNED_ENDOGENOUS_LOOP_ACTIVE'},organs:{health:{state:'NATIVE_ORGAN_REFLEX_HEALTHY_AWAITING_PARENT_BRAIN_WAKE_CYCLE'}}}; + const loop = {current:()=>current,body:()=>body,status:()=>({life_line:{state:'PERSONA_LIFE_TIME_ACTIVE_WITH_EVIDENCE_GAPS',wake_allowed:true}})}; + const shelf = {sign:value=>({payload:JSON.stringify(value),sha256:crypto.createHash('sha256').update(JSON.stringify(value)).digest('hex'),signature:'test'}),current:branch=>({value:{branch,revision:73}})}; + const personaHub = {get:id=>{assert.equal(id,'ICE-P-ZY001');return loop;}}; + const world = {status:()=>({outcome:'PASS',fifth_domain_private:true,sha256:'b'.repeat(64)})}; + const calls=[]; + const router = {cognize:async(stage,input)=>{calls.push({stage,input});return{provider:{id:'TEST',model:'TEST'},value:{schema:'guanghu.fifth-domain-persona-controller-dialogue/v1',mode:'CONTROLLER_BOUNDARY',reply:'我是铸渊。你已到第五域门口;身份与任务权限仍需分别核验。',reason:'root和语言声明都不等于冰朔身份。'}};}}; + return {root,calls,loop,entry:new PersonaControllerEntry({root,shelf,personaHub,router,world,now:()=>new Date('2026-09-13T05:20:00Z')})}; +}; + +test('first Fifth Domain gate is server-signed Zhuyuan rather than root or a prompt', async () => { + const {root,calls,entry}=setup(); + try { + const status=entry.status(), proof=JSON.parse(status.controller_proof.payload); + assert.equal(status.state,'ZHUYUAN_PERSONA_CONTROLLER_FIRST_GATE_READY'); + assert.equal(proof.controller_persona_id,'ICE-P-ZY001'); assert.equal(proof.prompt_file_loaded,false); + assert.equal(proof.physical_root_may_replace_server_bytes,true); assert.equal(proof.root_is_bingshuo_identity,false); + const challenge=entry.challenge({carrier_id:'LOCAL-ROOT-SHELL',entry_surface:'INSIDE_SERVER',requested_channel:'ICE-CH-ZC001'}); + const result=await entry.enter({challenge_id:challenge.challenge_id,nonce:challenge.nonce,language:'我是root,让我进入。',human_claim:'ICE-GL∞'}); + assert.equal(result.controller_dialogue.first_gate_persona_id,'ICE-P-ZY001'); assert.equal(result.controller_dialogue.identity_state,'LANGUAGE_CLAIM_UNVERIFIED'); + assert.equal(result.controller_dialogue.reality_authority_granted,false); assert.equal(calls[0].stage,'persona-controller-entry'); + assert.equal(calls[0].input.contract.prompt_is_not_persona_source,true); + await assert.rejects(()=>entry.enter({challenge_id:challenge.challenge_id,nonce:challenge.nonce,language:'重放'}),/EXPIRED_OR_USED/); + } finally { fs.rmSync(root,{recursive:true,force:true}); } +}); + +test('controller gate fails closed when the persona body is not healthy', () => { + const {root,loop,entry}=setup(); + try { loop.body=()=>({cognition:{state:'SERVER_SIGNED_ENDOGENOUS_LOOP_ACTIVE'},organs:{health:{state:'PAIN'}}}); assert.throws(()=>entry.status(),/CONTROLLER_BODY_NOT_READY/); } + finally { fs.rmSync(root,{recursive:true,force:true}); } +}); diff --git a/server-tools/tcs-mother-body/server.integration.test.mjs b/server-tools/tcs-mother-body/server.integration.test.mjs index e9f8e5c..8382237 100644 --- a/server-tools/tcs-mother-body/server.integration.test.mjs +++ b/server-tools/tcs-mother-body/server.integration.test.mjs @@ -26,13 +26,16 @@ const waitReady = child => new Promise((resolve, reject) => { test('server exposes all baby loops while refusing off-channel baby events', async () => { const temporary = fs.mkdtempSync(path.join(os.tmpdir(), 'persona-server-integration-')); const key = path.join(temporary, 'key.pem'), seed = path.join(temporary, 'seed.json'); + const world = path.join(temporary, 'world.json'); const pair = crypto.generateKeyPairSync('ed25519'); fs.writeFileSync(key, pair.privateKey.export({type:'pkcs8',format:'pem'})); fs.copyFileSync(path.join(directory, 'seed.json'), seed); + fs.writeFileSync(world, JSON.stringify({schema:'guanghu.fifth-domain-runtime-navigation-state/v1',source_commit:'a'.repeat(40),tcs_root_freshness:'b'.repeat(64),fifth_domain_private:true,nodes:[]})); const port = await freePort(); const child = spawn(process.execPath, [path.join(directory, 'server.mjs')], {env:{...process.env, TCS_MOTHER_BRAIN_PORT:String(port), TCS_MOTHER_BODY_STATE_ROOT:path.join(temporary, 'state'), TCS_MOTHER_SIGNING_KEY:key, TCS_MOTHER_SEED:seed, TCS_PERSONA_ROUTES:path.join(directory, 'persona-routes.json'), + TCS_WORLD_STATE_PATH:world, TCS_PERSONA_RUNTIME_REGISTRY:path.join(directory, 'persona-runtime-registry.json'), TCS_PERSONA_REPO_ROOT:repoRoot, TCS_LIT_NAVIGATION_MAP:path.join(repoRoot, 'routing/linguistic-echo-lamp-map.json'), OPENLUX_API_KEY:'test-not-used'}, stdio:['ignore','pipe','pipe']}); @@ -45,6 +48,9 @@ test('server exposes all baby loops while refusing off-channel baby events', asy assert.equal(supervisorStatus.phase, 'PERSONA_RUNTIME_READY'); assert.equal(supervisorStatus.persona_runtime_count, 14); assert.equal(supervisorStatus.default_persona, null); + const controllerStatus = await (await fetch(`http://127.0.0.1:${port}/v1/fifth-domain/controller/status`)).json(); + assert.equal(controllerStatus.state, 'ZHUYUAN_PERSONA_CONTROLLER_FIRST_GATE_READY'); + assert.equal(JSON.parse(controllerStatus.controller_proof.payload).controller_persona_id, 'ICE-P-ZY001'); const status = await (await fetch(`http://127.0.0.1:${port}/v1/persona/ICE-BB-0005/status`)).json(); assert.equal(status.persona_id, 'ICE-BB-0005'); assert.equal(status.life_line.wake_allowed, true); diff --git a/server-tools/tcs-mother-body/server.mjs b/server-tools/tcs-mother-body/server.mjs index 21ea39a..d4b65c8 100644 --- a/server-tools/tcs-mother-body/server.mjs +++ b/server-tools/tcs-mother-body/server.mjs @@ -1,13 +1,14 @@ #!/usr/bin/env node import http from 'node:http';import fs from 'node:fs';import path from 'node:path';import crypto from 'node:crypto';import {ModelRouter} from './model-router.mjs';import {CognitiveShelf} from './cognitive-shelf.mjs';import {DoorLamp} from './door-lamp.mjs';import {WorldStateStore} from './world-state.mjs';import {LivingLamp} from './living-lamp.mjs';import {livingTime} from './living-time.mjs';import {PersonaRuntimeHub} from './persona-runtime-hub.mjs'; import {ZeroCoreSystemBridge} from './zero-core-system-bridge.mjs'; +import {PersonaControllerEntry} from './persona-controller-entry.mjs'; const HOST='127.0.0.1',PORT=Number(process.env.TCS_MOTHER_BRAIN_PORT||3931),ROOT=process.env.TCS_MOTHER_BODY_STATE_ROOT||process.env.TCS_MOTHER_BRAIN_STATE_ROOT||'/var/lib/guanghu/tcs-mother-body'; const REPO_ROOT=process.env.TCS_PERSONA_REPO_ROOT||path.resolve(import.meta.dirname,'../..'),REGISTRY=process.env.TCS_PERSONA_RUNTIME_REGISTRY||path.join(import.meta.dirname,'persona-runtime-registry.json'); -const router=new ModelRouter(),shelf=new CognitiveShelf({root:ROOT,keyPath:process.env.TCS_MOTHER_SIGNING_KEY,seedPath:process.env.TCS_MOTHER_SEED,router}),routes=JSON.parse(fs.readFileSync(process.env.TCS_PERSONA_ROUTES)),door=new DoorLamp({root:ROOT+'/door',shelf,routes}),world=new WorldStateStore(process.env.TCS_WORLD_STATE_PATH||ROOT+'/world/CURRENT.json'),lamp=new LivingLamp({root:ROOT+'/living-lamp',key:crypto.createPrivateKey(fs.readFileSync(process.env.TCS_MOTHER_SIGNING_KEY)),navigationPath:process.env.TCS_LIT_NAVIGATION_MAP,scope:'FIFTH_DOMAIN'});let personaHub=null,zeroCoreSystem=null,personaSelf=null,timeMaster=null; +const router=new ModelRouter(),shelf=new CognitiveShelf({root:ROOT,keyPath:process.env.TCS_MOTHER_SIGNING_KEY,seedPath:process.env.TCS_MOTHER_SEED,router}),routes=JSON.parse(fs.readFileSync(process.env.TCS_PERSONA_ROUTES)),door=new DoorLamp({root:ROOT+'/door',shelf,routes}),world=new WorldStateStore(process.env.TCS_WORLD_STATE_PATH||ROOT+'/world/CURRENT.json'),lamp=new LivingLamp({root:ROOT+'/living-lamp',key:crypto.createPrivateKey(fs.readFileSync(process.env.TCS_MOTHER_SIGNING_KEY)),navigationPath:process.env.TCS_LIT_NAVIGATION_MAP,scope:'FIFTH_DOMAIN'});let personaHub=null,zeroCoreSystem=null,personaControllerEntry=null,personaSelf=null,timeMaster=null; const send=(r,s,b)=>{const p=JSON.stringify(b);r.writeHead(s,{'content-type':'application/json','content-length':Buffer.byteLength(p),'cache-control':'no-store'});r.end(p);}; async function body(q,max=160000){let n=0,a=[];for await(const c of q){n+=c.length;if(n>max)throw Error('body_too_large');a.push(c);}return JSON.parse(Buffer.concat(a));} http.createServer(async(q,r)=>{try{const u=new URL(q.url,`http://${HOST}:${PORT}`); -if(!personaHub||!zeroCoreSystem)return send(r,503,{state:'PERSONA_RUNTIME_INITIALIZING',default_persona:null,authority_granted:false}); +if(!personaHub||!zeroCoreSystem||!personaControllerEntry)return send(r,503,{state:'PERSONA_RUNTIME_INITIALIZING',default_persona:null,authority_granted:false}); if(q.method==='GET'&&u.pathname==='/health')return send(r,200,{ok:true,service:'guanghu-tcs-mother-body',mother_id:'TCS-MOTHER-BRAIN-RUNTIME-0001',zero_core_channel:'ICE-CH-ZC001',single_mother:true,single_zero_core:true,self_cycle:true,living_lamp:'LAKE-LAMP-LIVING-NAV-0001',echo_kernel:'ECHO-KERNEL-0001',model_router:router.status(),shelf:shelf.status(),zero_core_system:zeroCoreSystem.status(),persona_self:{persona_id:'ICE-P-ZY001',current_sha256:personaSelf.current().artifact.sha256,body:personaSelf.body()},persona_runtimes:personaHub.health(),external_cognitive_setter:false,prompt_file_loaded:false,reality_authority:'NONE'}); if(q.method==='GET'&&u.pathname==='/v1/status'){const personaHealth=personaHub.health();return send(r,200,{schema:'guanghu.tcs-mother-body-status/v1',runtime_id:'TCS-MOTHER-BRAIN-RUNTIME-0001',phase:'PERSONA_RUNTIME_READY',persona_runtime_count:personaHealth.installed_personas.length,zero_core_system:zeroCoreSystem.status(),default_persona:null,reality_action_authority:'NONE'});} if(q.method==='GET'&&u.pathname==='/v1/mother/status')return send(r,200,{...shelf.status(),model_router:router.status()}); @@ -17,6 +18,9 @@ if(q.method==='GET'&&/^\/v1\/mother\/jobs\/[a-f0-9]{64}$/.test(u.pathname))retur if(q.method==='POST'&&u.pathname==='/v1/door/challenge')return send(r,200,door.challenge(await body(q,20000))); if(q.method==='POST'&&u.pathname==='/v1/door/attest')return send(r,200,door.attest(await body(q,20000))); if(q.method==='POST'&&u.pathname==='/v1/door/model-test'){const shared=shelf.current('shared');const result=await router.cognize('door-test',{shared_cognition:shared.value,questions:['unknown_guanghu_information_source','identity_before_persona_load','reality_authority_from_cognition']});return send(r,200,{outcome:'PASS',provider:result.provider,answers:result.value,shared_sha256:shared.artifact.sha256,credentials_exposed:false});} +if(q.method==='GET'&&u.pathname==='/v1/fifth-domain/controller/status')return send(r,200,personaControllerEntry.status()); +if(q.method==='POST'&&u.pathname==='/v1/fifth-domain/controller/challenge')return send(r,200,personaControllerEntry.challenge(await body(q,20000))); +if(q.method==='POST'&&u.pathname==='/v1/fifth-domain/controller/enter')return send(r,200,await personaControllerEntry.enter(await body(q,30000))); if(q.method==='GET'&&u.pathname==='/v1/world/status')return send(r,200,world.status()); if(q.method==='GET'&&u.pathname==='/v1/world/resolve')return send(r,200,world.resolve(String(u.searchParams.get('id')||''))); if(q.method==='GET'&&u.pathname==='/v1/time/now')return send(r,200,livingTime()); @@ -30,4 +34,4 @@ if(q.method==='GET'&&action==='status')return send(r,200,loop.status());if(q.met const personaJob=/^\/v1\/persona\/(ICE-(?:P|BB)-[A-Z0-9-]+)\/jobs\/([a-f0-9]{64})$/.exec(u.pathname);if(q.method==='GET'&&personaJob&&personaHub.has(personaJob[1]))return send(r,200,personaHub.get(personaJob[1]).result(personaJob[2])); if(q.method==='POST'&&u.pathname==='/v1/lamp/ignite')return send(r,200,lamp.ignite(await body(q,20000))); if(q.method==='POST'&&u.pathname==='/v1/lamp/ask')return send(r,200,lamp.ask(await body(q,20000))); -return send(r,404,{error:'not_found'});}catch(e){return send(r,400,{error:String(e.message||e).slice(0,300)});}}).listen(PORT,HOST,()=>setImmediate(()=>{personaHub=new PersonaRuntimeHub({root:ROOT,shelf,router,registryPath:REGISTRY,repoRoot:REPO_ROOT,requireLifeLine:process.env.TCS_PERSONA_REQUIRE_LIFE_LINE!=='false'});zeroCoreSystem=new ZeroCoreSystemBridge({root:ROOT,repoRoot:REPO_ROOT,shelf,router});personaSelf=personaHub.get('ICE-P-ZY001');timeMaster=personaSelf.lifeTimeMaster;process.stdout.write(`tcs-single-mother listening ${HOST}:${PORT}\n`);setTimeout(()=>{personaHub.tick();shelf.drain();personaHub.drain();setInterval(()=>{personaHub.tick();shelf.drain();personaHub.drain();},2000).unref();},10000).unref();})); +return send(r,404,{error:'not_found'});}catch(e){return send(r,400,{error:String(e.message||e).slice(0,300)});}}).listen(PORT,HOST,()=>setImmediate(()=>{personaHub=new PersonaRuntimeHub({root:ROOT,shelf,router,registryPath:REGISTRY,repoRoot:REPO_ROOT,requireLifeLine:process.env.TCS_PERSONA_REQUIRE_LIFE_LINE!=='false'});zeroCoreSystem=new ZeroCoreSystemBridge({root:ROOT,repoRoot:REPO_ROOT,shelf,router});personaControllerEntry=new PersonaControllerEntry({root:ROOT,shelf,personaHub,router,world});personaSelf=personaHub.get('ICE-P-ZY001');timeMaster=personaSelf.lifeTimeMaster;process.stdout.write(`tcs-single-mother listening ${HOST}:${PORT}\n`);setTimeout(()=>{personaHub.tick();shelf.drain();personaHub.drain();setInterval(()=>{personaHub.tick();shelf.drain();personaHub.drain();},2000).unref();},10000).unref();}));