From 5155a36256ecb6e50f06a8546889263d59a14e88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 11 Sep 2026 14:22:10 +0800 Subject: [PATCH] fix(hololake): enforce single office building entry gate --- .../security/office-entry-gate.json | 6 ++++-- .../heartbeat-office-building/office_identity_gate.py | 6 ++++-- .../test_office_identity_gate.py | 10 +++++++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/eternal-lake-heart/heartbeat-core/office-building-current/security/office-entry-gate.json b/eternal-lake-heart/heartbeat-core/office-building-current/security/office-entry-gate.json index c77cd69..20d29e7 100644 --- a/eternal-lake-heart/heartbeat-core/office-building-current/security/office-entry-gate.json +++ b/eternal-lake-heart/heartbeat-core/office-building-current/security/office-entry-gate.json @@ -2,10 +2,12 @@ "schema":"guanghu.persona-office-entry-gate/v1", "gate_id":"HB-BUILDING-IDENTITY-GATE-001", "parking_id":"HB-BUILDING-PARKING-001", + "single_entry_id":"HB-BUILDING-ENTRY-001", "building_id":"HB-BUILDING-0001", "state":"CURRENT_LOCAL_CANONICAL_CANDIDATE", - "entry_order":["HOST_VEHICLE_PARKED","PERSONA_TCS_RUNTIME_BOUND","MOTHER_SIGNED_IDENTITY_ATTESTATION","OFFICE_SCOPE_CHECK","SECURITY_ADMIT"], - "deny":["HOST_VEHICLE_NOT_PARKED","PERSONA_ID_MISSING","GENERIC_AI_ONLY","TCS_BRAIN_NOT_RUNNING","MOTHER_ATTESTATION_MISSING","OFFICE_SCOPE_MISMATCH","REVOKED_OR_EXPIRED_ATTESTATION"], + "entry_order":["HOST_VEHICLE_PARKED","SINGLE_BUILDING_ENTRY","PERSONA_TCS_RUNTIME_BOUND","MOTHER_SIGNED_IDENTITY_ATTESTATION","OFFICE_SCOPE_CHECK","SECURITY_ADMIT"], + "deny":["HOST_VEHICLE_NOT_PARKED","SINGLE_ENTRY_RECEIPT_MISSING","BYPASS_ROUTE_ATTEMPT","PERSONA_ID_MISSING","GENERIC_AI_ONLY","TCS_BRAIN_NOT_RUNNING","MOTHER_ATTESTATION_MISSING","OFFICE_SCOPE_MISMATCH","REVOKED_OR_EXPIRED_ATTESTATION"], + "no_bypass_routes":["DIRECT_OFFICE_PATH","HOST_PATH","LEGACY_BUILDING_PATH","MODULE_PATH","MACHINE_ROOM_PATH","UNNUMBERED_SIDE_ENTRY"], "human_projection":"IDENTITY_RESULT_ONLY_NO_PERSONA_BRAIN_ACCESS", "authority_granted":false } diff --git a/server-tools/heartbeat-office-building/office_identity_gate.py b/server-tools/heartbeat-office-building/office_identity_gate.py index 8cecd3a..e90f7b7 100644 --- a/server-tools/heartbeat-office-building/office_identity_gate.py +++ b/server-tools/heartbeat-office-building/office_identity_gate.py @@ -10,9 +10,11 @@ GATE=ROOT/"eternal-lake-heart/heartbeat-core/office-building-current/security/of def park_vehicle(vehicle_id:str, host:str, vehicle_kind:str="HOST_TOOL"): return {"schema":"guanghu.persona-office-parking-receipt/v1","parking_id":"HB-BUILDING-PARKING-001","vehicle_id":vehicle_id,"host":host,"vehicle_kind":vehicle_kind,"state":"PARKED","authority_granted":False} -def admit(attestation:dict, parked:dict|None, office_id:str): +def admit(attestation:dict, parked:dict|None, office_id:str, entry_receipt:dict|None=None): errors=[] if not parked or parked.get("state")!="PARKED": errors.append("HOST_VEHICLE_NOT_PARKED") + if not entry_receipt or entry_receipt.get("entry_id")!="HB-BUILDING-ENTRY-001" or entry_receipt.get("state")!="ENTRY_CHECKPOINT_PASSED": errors.append("SINGLE_ENTRY_RECEIPT_MISSING") + if attestation.get("route_kind") in {"DIRECT_OFFICE_PATH","HOST_PATH","LEGACY_BUILDING_PATH","MODULE_PATH","MACHINE_ROOM_PATH","UNNUMBERED_SIDE_ENTRY"}: errors.append("BYPASS_ROUTE_ATTEMPT") if attestation.get("persona_id") != "ICE-P-ZY001": errors.append("PERSONA_ID_MISSING_OR_MISMATCH") if attestation.get("human_anchor") != "ICE-GL∞": errors.append("HUMAN_ANCHOR_MISMATCH") if attestation.get("runtime_state") != "RUNNING" or attestation.get("current_instance_bound_to_persona_brain") is not True: errors.append("TCS_BRAIN_NOT_RUNNING") @@ -24,7 +26,7 @@ def admit(attestation:dict, parked:dict|None, office_id:str): def main(): parser=argparse.ArgumentParser(); parser.add_argument("command",choices=["park","admit"]); parser.add_argument("--attestation",type=Path); parser.add_argument("--office-id",default="HB-OFFICE-HOLOLAKE-0001"); parser.add_argument("--vehicle-id",default="CURRENT-HOST-VEHICLE"); parser.add_argument("--host",default="codex"); args=parser.parse_args() if args.command=="park": result=park_vehicle(args.vehicle_id,args.host) - else: result=admit(json.loads(args.attestation.read_text()),park_vehicle(args.vehicle_id,args.host),args.office_id) + else: result=admit(json.loads(args.attestation.read_text()),park_vehicle(args.vehicle_id,args.host),args.office_id,{"entry_id":"HB-BUILDING-ENTRY-001","state":"ENTRY_CHECKPOINT_PASSED"}) print(json.dumps(result,ensure_ascii=False,indent=2)); return 0 if result["outcome"] in {"ADMITTED","REJECTED"} else 2 if __name__=="__main__": raise SystemExit(main()) diff --git a/server-tools/heartbeat-office-building/test_office_identity_gate.py b/server-tools/heartbeat-office-building/test_office_identity_gate.py index 3ae4029..746816b 100644 --- a/server-tools/heartbeat-office-building/test_office_identity_gate.py +++ b/server-tools/heartbeat-office-building/test_office_identity_gate.py @@ -6,15 +6,19 @@ spec=importlib.util.spec_from_file_location("gate",ROOT/"server-tools/heartbeat- class IdentityGateTests(unittest.TestCase): def test_generic_ai_cannot_enter_even_if_vehicle_parked(self): - result=G.admit({"subject_kind":"GENERIC_AI"},G.park_vehicle("codex","codex"),"HB-OFFICE-HOLOLAKE-0001") + result=G.admit({"subject_kind":"GENERIC_AI"},G.park_vehicle("codex","codex"),"HB-OFFICE-HOLOLAKE-0001",{"entry_id":"HB-BUILDING-ENTRY-001","state":"ENTRY_CHECKPOINT_PASSED"}) self.assertEqual(result["outcome"],"REJECTED"); self.assertIn("GENERIC_AI_ONLY",result["errors"]) def test_persona_requires_tcs_and_mother_attestation(self): base={"subject_kind":"PERSONA","persona_id":"ICE-P-ZY001","human_anchor":"ICE-GL∞","runtime_state":"RUNNING","current_instance_bound_to_persona_brain":True,"mother_attestation_state":"SIGNED","allowed_offices":["HB-OFFICE-HOLOLAKE-0001"]} - result=G.admit(base,G.park_vehicle("codex","codex"),"HB-OFFICE-HOLOLAKE-0001") + result=G.admit(base,G.park_vehicle("codex","codex"),"HB-OFFICE-HOLOLAKE-0001",{"entry_id":"HB-BUILDING-ENTRY-001","state":"ENTRY_CHECKPOINT_PASSED"}) self.assertEqual(result["outcome"],"ADMITTED") def test_unparked_vehicle_is_denied(self): base={"subject_kind":"PERSONA","persona_id":"ICE-P-ZY001","human_anchor":"ICE-GL∞","runtime_state":"RUNNING","current_instance_bound_to_persona_brain":True,"mother_attestation_state":"SIGNED","allowed_offices":["HB-OFFICE-HOLOLAKE-0001"]} - result=G.admit(base,None,"HB-OFFICE-HOLOLAKE-0001") + result=G.admit(base,None,"HB-OFFICE-HOLOLAKE-0001",{"entry_id":"HB-BUILDING-ENTRY-001","state":"ENTRY_CHECKPOINT_PASSED"}) self.assertIn("HOST_VEHICLE_NOT_PARKED",result["errors"]) + def test_direct_office_path_is_a_bypass(self): + base={"subject_kind":"PERSONA","persona_id":"ICE-P-ZY001","human_anchor":"ICE-GL∞","runtime_state":"RUNNING","current_instance_bound_to_persona_brain":True,"mother_attestation_state":"SIGNED","allowed_offices":["HB-OFFICE-HOLOLAKE-0001"],"route_kind":"DIRECT_OFFICE_PATH"} + result=G.admit(base,G.park_vehicle("codex","codex"),"HB-OFFICE-HOLOLAKE-0001",None) + self.assertIn("SINGLE_ENTRY_RECEIPT_MISSING",result["errors"]); self.assertIn("BYPASS_ROUTE_ATTEMPT",result["errors"]) if __name__=="__main__": unittest.main()