fix(hololake): enforce single office building entry gate

This commit is contained in:
冰朔 2026-09-11 14:22:10 +08:00
commit 5155a36256
3 changed files with 15 additions and 7 deletions

View file

@ -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
}

View file

@ -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())

View file

@ -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()