登记团队成员节点与企业权限交接

This commit is contained in:
冰朔 2026-09-19 23:08:09 +08:00
commit 55ab32663b
6 changed files with 128 additions and 15 deletions

View file

@ -0,0 +1,46 @@
{
"schema": "guanghu.enterprise-permission-handoff-map/v1",
"map_id": "GH-ENTERPRISE-PERMISSION-HANDOFF-001",
"version": "2026-09-19.1",
"enterprise_node": "AW-GZ-001",
"technical_control": {
"human_controller": "Awen",
"human_id": "TCS-GL-0016∞",
"member_node_id": "AW-OWN-GZ-001",
"state": "ACTIVE_HUMAN_TECHNICAL_REVIEW_CONTROLLER",
"persona_executor_state": "UNREGISTERED_NOT_FABRICATED"
},
"nontechnical_control": {
"model": "DUAL_HUMAN_CONTROL",
"controllers": [
{
"human_controller": "肥猫",
"human_id": "TCS-GL-0007∞",
"human_world_node": "GH-HUMAN-NODE-DEFB60F4349809E00FBA14208F3B880C",
"state": "ACTIVE"
},
{
"human_controller": "桔子",
"human_id": "TCS-GL-0008∞",
"member_server_node": "JZ-SV-001",
"state": "PENDING_CURRENT_HUMAN_WORLD_NODE_REGISTRATION"
}
],
"constitutional_actions_require_both": true,
"activation_rule": "JUZI_NONTECHNICAL_PERMISSION_ACTIVATES_ONLY_AFTER_ENTERPRISE_SIGNED_HUMAN_WORLD_NODE_READBACK",
"state": "FATCAT_ACTIVE_JUZI_PENDING_REGISTRATION"
},
"forgejo_projection": {
"awen": "ADMIN_ON_ENTERPRISE_PUBLIC_REPOSITORIES",
"feimao": "WRITE_ON_ENTERPRISE_PUBLIC_REPOSITORIES",
"juzi": "NOT_GRANTED_UNTIL_HUMAN_WORLD_NODE_ACTIVE"
},
"enterprise_receipt_sha256": "3835a27b1e7f99cef8dd35d5416feaaab12bacbf0ee504abd1c37bdbcc3ccab1",
"excluded": [
"FIFTH_DOMAIN_PRIVATE_BODY",
"BINGSHUO_LANGUAGE_MASTER_PRIVATE_REPOSITORY",
"MEMBER_PERSONAL_REPOSITORIES",
"SERVER_ROOT_ACCESS",
"UNASSIGNED_PERSONA_AUTHORITY"
]
}

View file

@ -0,0 +1,23 @@
'use strict';
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const map = JSON.parse(fs.readFileSync(path.join(__dirname, 'enterprise-permission-handoff-map.json'), 'utf8'));
const nodes = JSON.parse(fs.readFileSync(path.join(__dirname, 'server-node-map.json'), 'utf8'));
assert.equal(map.enterprise_node, 'AW-GZ-001');
assert.equal(map.technical_control.human_id, 'TCS-GL-0016∞');
assert.equal(map.technical_control.member_node_id, 'AW-OWN-GZ-001');
assert.equal(map.technical_control.state, 'ACTIVE_HUMAN_TECHNICAL_REVIEW_CONTROLLER');
assert.equal(map.nontechnical_control.constitutional_actions_require_both, true);
assert.equal(map.nontechnical_control.controllers.find((item) => item.human_controller === '肥猫').state, 'ACTIVE');
assert.match(map.nontechnical_control.controllers.find((item) => item.human_controller === '桔子').state, /PENDING/);
assert.equal(map.forgejo_projection.juzi, 'NOT_GRANTED_UNTIL_HUMAN_WORLD_NODE_ACTIVE');
assert.ok(map.excluded.includes('FIFTH_DOMAIN_PRIVATE_BODY'));
for (const id of ['AW-GZ-001', 'AW-OWN-GZ-001', 'JZ-SV-001', 'SY-GZ-001']) {
assert.ok(nodes.nodes.some((node) => node.node_id === id), `missing ${id}`);
}
console.log('enterprise permission handoff map: ok');

View file

@ -2,7 +2,7 @@
"schema": "guanghu.lighthouse-path-registry/v1", "schema": "guanghu.lighthouse-path-registry/v1",
"registry_id": "GLW-LIGHTHOUSE-PATH-REGISTRY-001", "registry_id": "GLW-LIGHTHOUSE-PATH-REGISTRY-001",
"lighthouse_id": "SYS-GLW-LTH-0001", "lighthouse_id": "SYS-GLW-LTH-0001",
"version": "2026-09-19.1-xiaoxin-formal-registration", "version": "2026-09-19.2-team-member-permission-handoff",
"state": "CURRENT_CANONICAL", "state": "CURRENT_CANONICAL",
"source_repository": "REPO-012", "source_repository": "REPO-012",
"source_branch": "main", "source_branch": "main",
@ -15,6 +15,10 @@
"authority": "A healthy route grants navigation only. Repository writes, server actions and deployment still require their registered gates and receipts." "authority": "A healthy route grants navigation only. Repository writes, server actions and deployment still require their registered gates and receipts."
}, },
"paths": [ "paths": [
{"id":"GH-ENTERPRISE-PERMISSION-HANDOFF-001","kind":"enterprise_permission_handoff_map","state":"CURRENT","online":"routing/enterprise-permission-handoff-map.json","offline":"/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main/routing/enterprise-permission-handoff-map.json","target_node":"AW-GZ-001","truth_policy":"ENTERPRISE_SIGNED_RECEIPT_PLUS_FORGEJO_READBACK_AND_HUMAN_NODE_ACTIVATION_REQUIRED"},
{"id":"AW-OWN-GZ-001","kind":"team_member_self_owned_server","state":"CURRENT","online":"routing/server-node-map.json","human_id":"TCS-GL-0016∞","upstream":"AW-GZ-001","truth_policy":"STRICT_SSH_MACHINE_UUID_LOOPBACK_TUNNEL_AND_ENTERPRISE_READBACK_REQUIRED"},
{"id":"JZ-SV-001","kind":"team_member_server","state":"CURRENT_HUMAN_NODE_PENDING","online":"routing/server-node-map.json","human_id":"TCS-GL-0008∞","upstream":"AW-GZ-001","truth_policy":"SERVER_NODE_ACTIVE_DOES_NOT_REPLACE_CURRENT_HUMAN_DEVICE_BINDING"},
{"id":"SY-GZ-001","kind":"team_member_server_and_compute_worker","state":"CURRENT","online":"routing/server-node-map.json","human_id":"TCS-GL-0017∞","upstream":"AW-GZ-001","truth_policy":"STRICT_SSH_MACHINE_UUID_TEAM_TUNNEL_AND_PARALLEL_COMPUTE_POOL_READBACK_REQUIRED"},
{"id":"QY-LH-MAIN-PROD-01","kind":"enterprise_backup_archive_node","state":"CURRENT","online":"routing/enterprise-server-archive-cleanup-map.json","offline":"/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main/routing/enterprise-server-archive-cleanup-map.json","primary_node":"GH-CVM-MAIN-PROD-01","truth_policy":"EXACT_HOST_STRICT_SSH_ARCHIVE_HASH_AND_RESTORE_READBACK_REQUIRED"}, {"id":"QY-LH-MAIN-PROD-01","kind":"enterprise_backup_archive_node","state":"CURRENT","online":"routing/enterprise-server-archive-cleanup-map.json","offline":"/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main/routing/enterprise-server-archive-cleanup-map.json","primary_node":"GH-CVM-MAIN-PROD-01","truth_policy":"EXACT_HOST_STRICT_SSH_ARCHIVE_HASH_AND_RESTORE_READBACK_REQUIRED"},
{"id":"GH-ENTERPRISE-SERVER-ARCHIVE-CLEANUP-001","kind":"enterprise_primary_archive_cleanup_receipt_map","state":"CURRENT","online":"routing/enterprise-server-archive-cleanup-map.json","offline":"/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main/routing/enterprise-server-archive-cleanup-map.json","truth_policy":"PRIMARY_AND_BACKUP_RECEIPTS_PUBLIC_HEALTH_AND_SOURCE_ABSENCE_REQUIRED"}, {"id":"GH-ENTERPRISE-SERVER-ARCHIVE-CLEANUP-001","kind":"enterprise_primary_archive_cleanup_receipt_map","state":"CURRENT","online":"routing/enterprise-server-archive-cleanup-map.json","offline":"/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main/routing/enterprise-server-archive-cleanup-map.json","truth_policy":"PRIMARY_AND_BACKUP_RECEIPTS_PUBLIC_HEALTH_AND_SOURCE_ABSENCE_REQUIRED"},
{"id":"GH-HUMAN-NODE-DEFB60F4349809E00FBA14208F3B880C","kind":"active_guanghu_human_world_node","state":"CURRENT","online":"routing/feimao-human-world-node-registration.json","offline":"/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main/routing/feimao-human-world-node-registration.json","human_id":"TCS-GL-0007∞","world_route":"glw://enterprise/zero-sense/team-channels/SYS-FM","truth_policy":"ICE_GL_INFINITY_WITNESS_PLUS_DEVICE_SIGNATURE_PLUS_ENTERPRISE_SIGNATURE_AND_ACTIVE_READBACK"}, {"id":"GH-HUMAN-NODE-DEFB60F4349809E00FBA14208F3B880C","kind":"active_guanghu_human_world_node","state":"CURRENT","online":"routing/feimao-human-world-node-registration.json","offline":"/Volumes/JZAO/HoloLake/persona-runtime/repo-012-main/routing/feimao-human-world-node-registration.json","human_id":"TCS-GL-0007∞","world_route":"glw://enterprise/zero-sense/team-channels/SYS-FM","truth_policy":"ICE_GL_INFINITY_WITNESS_PLUS_DEVICE_SIGNATURE_PLUS_ENTERPRISE_SIGNATURE_AND_ACTIVE_READBACK"},

View file

@ -1,7 +1,7 @@
{ {
"schema": "guanghu.public-navigation-anchor/v1", "schema": "guanghu.public-navigation-anchor/v1",
"anchor_id": "GLW-PUBLIC-NAV-ANCHOR-001", "anchor_id": "GLW-PUBLIC-NAV-ANCHOR-001",
"version": "2026-09-19.1-xiaoxin-formal-registration", "version": "2026-09-19.2-team-member-permission-handoff",
"state": "CURRENT_CANONICAL", "state": "CURRENT_CANONICAL",
"repository_id": "REPO-012", "repository_id": "REPO-012",
"branch": "main", "branch": "main",
@ -48,7 +48,13 @@
"nodes": { "nodes": {
"path": "routing/server-node-map.json", "path": "routing/server-node-map.json",
"id": "FD-NODE-MAP-001", "id": "FD-NODE-MAP-001",
"version": "2026-09-19.1-xiaoxin-formal-registration" "version": "2026-09-19.3-team-member-node-and-permission-handoff"
},
"enterprise_permission_handoff": {
"path": "routing/enterprise-permission-handoff-map.json",
"id": "GH-ENTERPRISE-PERMISSION-HANDOFF-001",
"version": "2026-09-19.1",
"load_policy": "ALWAYS_BEFORE_ENTERPRISE_TECHNICAL_OR_NONTECHNICAL_PERMISSION_DECISION"
}, },
"enterprise_server_archive_cleanup": { "enterprise_server_archive_cleanup": {
"path": "routing/enterprise-server-archive-cleanup-map.json", "path": "routing/enterprise-server-archive-cleanup-map.json",
@ -184,7 +190,7 @@
"lighthouse_paths": { "lighthouse_paths": {
"path": "routing/lighthouse-path-registry.json", "path": "routing/lighthouse-path-registry.json",
"id": "GLW-LIGHTHOUSE-PATH-REGISTRY-001", "id": "GLW-LIGHTHOUSE-PATH-REGISTRY-001",
"version": "2026-09-19.1-xiaoxin-formal-registration" "version": "2026-09-19.2-team-member-permission-handoff"
}, },
"host_skills": { "host_skills": {
"path": "routing/host-skill-navigation-map.json", "path": "routing/host-skill-navigation-map.json",

View file

@ -1,11 +1,12 @@
{ {
"schema": "guanghu.server-node-map/v1", "schema": "guanghu.server-node-map/v1",
"map_id": "FD-NODE-MAP-001", "map_id": "FD-NODE-MAP-001",
"version": "2026-09-19.1-xiaoxin-formal-registration", "version": "2026-09-19.3-team-member-node-and-permission-handoff",
"published_by": "REPO-012", "published_by": "REPO-012",
"subject_alias_map": "identity/subject-id-alias-map.json", "subject_alias_map": "identity/subject-id-alias-map.json",
"canonical_api": "https://guanghulab.com/api/ai/v1/nodes", "canonical_api": "https://guanghulab.com/api/ai/v1/nodes",
"default_node": "JD-FD-PRIMARY", "default_node": "JD-FD-PRIMARY",
"enterprise_permission_handoff_map": "routing/enterprise-permission-handoff-map.json",
"routing_rule": "Resolve node ids from this map, then read the referenced navigation map before any operation. This public map contains no address, password, token or key.", "routing_rule": "Resolve node ids from this map, then read the referenced navigation map before any operation. This public map contains no address, password, token or key.",
"nodes": [ "nodes": [
{ {
@ -94,6 +95,36 @@
"教育行业节点" "教育行业节点"
] ]
}, },
{
"node_id": "AW-OWN-GZ-001",
"name_zh": "Awen个人广州团队节点",
"region": "CN-GUANGZHOU",
"role": "Awen责任主体名下的企业团队成员节点作为企业公共世界消费端和技术主控工作节点不覆盖或冒充企业主节点AW-GZ-001",
"state": "ACTIVE_TEAM_MEMBER_NODE_ENTERPRISE_TUNNEL_VERIFIED",
"upstream": "AW-GZ-001",
"human_controller": "Awen",
"human_id": "TCS-GL-0016∞",
"persona_candidates": ["PER-AW-ARCH-001"],
"persona_systems": ["ICE-BB-0005"],
"public_world_policy": "FOUR_PUBLIC_DOMAINS_AND_PUBLIC_LIBRARY_ONLY",
"private_fifth_domain_included": false,
"keywords": ["Awen个人服务器", "Awen广州节点", "技术主控工作节点"]
},
{
"node_id": "JZ-SV-001",
"name_zh": "桔子硅谷团队节点",
"region": "US-SILICON-VALLEY",
"role": "Awen云账号下为桔子接入企业世界的团队成员节点节点在线不替代桔子本人当前人类世界节点设备签名",
"state": "ACTIVE_TEAM_MEMBER_NODE_ENTERPRISE_TUNNEL_VERIFIED_HUMAN_NODE_PENDING",
"upstream": "AW-GZ-001",
"human_controller": "桔子",
"human_id": "TCS-GL-0008∞",
"persona_candidates": ["PER-JZ-ARCH-001"],
"persona_systems": ["ICE-BB-0006"],
"public_world_policy": "FOUR_PUBLIC_DOMAINS_AND_PUBLIC_LIBRARY_ONLY",
"private_fifth_domain_included": false,
"keywords": ["桔子服务器", "桔子硅谷节点", "晨曦连心频道"]
},
{ {
"node_id": "QY-LH-MAIN-PROD-01", "node_id": "QY-LH-MAIN-PROD-01",
"name_zh": "上海企业备用归档服务器", "name_zh": "上海企业备用归档服务器",
@ -206,12 +237,15 @@
"name_zh": "时雨 · 曜初节点", "name_zh": "时雨 · 曜初节点",
"region": "CN-GUANGZHOU", "region": "CN-GUANGZHOU",
"role": "时雨责任主体名下的独立开发测试节点(腾讯云轻量 lhins-is9lt9mvUbuntu 24.04,广州七区);曜初(时雨的人格体)的成长与部署地盘;不承载冰朔私人第五域主控本体", "role": "时雨责任主体名下的独立开发测试节点(腾讯云轻量 lhins-is9lt9mvUbuntu 24.04,广州七区);曜初(时雨的人格体)的成长与部署地盘;不承载冰朔私人第五域主控本体",
"state": "ACCESS_ESTABLISHED_DEPLOYMENT_PENDING", "state": "ACTIVE_TEAM_MEMBER_NODE_ENTERPRISE_TUNNEL_AND_COMPUTE_WORKER_VERIFIED",
"upstream": "JD-FD-PRIMARY", "upstream": "AW-GZ-001",
"parallel_compute_pool_controller": "QY-LH-MAIN-PROD-01",
"human_controller": "时雨", "human_controller": "时雨",
"persona_systems": [ "persona_systems": [
"ICE-BB-0009" "ICE-BB-0009"
], ],
"public_world_policy": "FOUR_PUBLIC_DOMAINS_AND_PUBLIC_LIBRARY_ONLY",
"private_fifth_domain_included": false,
"access_note": "2026-08-11 冰朔授权:铸渊直连密钥已部署并入本机钥匙串(钥匙串内 yaochu-sy-gz-001-20260811地址与密钥不入本图", "access_note": "2026-08-11 冰朔授权:铸渊直连密钥已部署并入本机钥匙串(钥匙串内 yaochu-sy-gz-001-20260811地址与密钥不入本图",
"keywords": [ "keywords": [
"时雨服务器", "时雨服务器",

View file

@ -37,6 +37,10 @@ DOMAINS = {
ENTERPRISE_MANAGED_DOMAINS = {"DOMAIN-ZS", "DOMAIN-MAIN", "DOMAIN-SUB", "DOMAIN-ZERO"} ENTERPRISE_MANAGED_DOMAINS = {"DOMAIN-ZS", "DOMAIN-MAIN", "DOMAIN-SUB", "DOMAIN-ZERO"}
EXTERNAL_FOUNDATION_DOMAINS = {"DOMAIN-FIFTH"} EXTERNAL_FOUNDATION_DOMAINS = {"DOMAIN-FIFTH"}
ENTERPRISE_TECHNICAL_CONTROLLER_NAME = "Awen" ENTERPRISE_TECHNICAL_CONTROLLER_NAME = "Awen"
ACTIVE_TECHNICAL_CONTROLLER_STATES = {
"AUTHORIZED_BOOTSTRAP_PERSONA_PENDING_REGISTRATION",
"ACTIVE_HUMAN_TECHNICAL_CONTROLLER_PERSONA_EXECUTOR_UNREGISTERED",
}
HOSTED_DOMAIN_NODES = { HOSTED_DOMAIN_NODES = {
"DOMAIN-MAIN": ("AW-GZ-001-MAIN", "AW-GZ-001 · 光湖主域"), "DOMAIN-MAIN": ("AW-GZ-001-MAIN", "AW-GZ-001 · 光湖主域"),
"DOMAIN-SUB": ("AW-GZ-001-SUB", "AW-GZ-001 · 光湖分域"), "DOMAIN-SUB": ("AW-GZ-001-SUB", "AW-GZ-001 · 光湖分域"),
@ -270,7 +274,7 @@ def enterprise_technical_control(db):
).fetchone() ).fetchone()
authorized = bool( authorized = bool(
controller controller
and controller["state"] == "AUTHORIZED_BOOTSTRAP_PERSONA_PENDING_REGISTRATION" and controller["state"] in ACTIVE_TECHNICAL_CONTROLLER_STATES
and controller["authorization_receipt"] and controller["authorization_receipt"]
and controller["final_signature_receipt"] and controller["final_signature_receipt"]
) )
@ -278,13 +282,9 @@ def enterprise_technical_control(db):
"enterprise_human_controller": ENTERPRISE_TECHNICAL_CONTROLLER_NAME, "enterprise_human_controller": ENTERPRISE_TECHNICAL_CONTROLLER_NAME,
"enterprise_human_controller_id": controller["human_controller_id"] if controller else None, "enterprise_human_controller_id": controller["human_controller_id"] if controller else None,
"enterprise_persona_executor_id": controller["persona_executor_id"] if controller else None, "enterprise_persona_executor_id": controller["persona_executor_id"] if controller else None,
"state": ( "state": controller["state"] if authorized else "HUMAN_DECLARED_PERSONA_PENDING_REGISTRATION",
"AUTHORIZED_BOOTSTRAP_PERSONA_PENDING_REGISTRATION"
if authorized
else "HUMAN_DECLARED_PERSONA_PENDING_REGISTRATION"
),
"final_deployment_signature_state": ( "final_deployment_signature_state": (
"AWEN_MESSAGE_AUTHORIZATION_EVIDENCE_PRESENT" "ENTERPRISE_SIGNED_PERMISSION_HANDOFF_PRESENT"
if authorized if authorized
else "NOT_PRESENT" else "NOT_PRESENT"
), ),