import json,os,sys from pathlib import Path from keycape_factor_metadata import call,normalized,policy_text NAME="workload-kv-read-keycape-factor-read" OLD='# Exact-path JWT delivery; no issuer password or sibling paths.\npath "platform/data/workloads/net-kingdom/keycape-factor-read" {\n capabilities = ["read"]\n}\npath "platform/metadata/workloads/net-kingdom/keycape-factor-read" {\n capabilities = ["read"]\n}\n\n# ESO validates its own short-lived workload session.\npath "auth/token/lookup-self" {\n capabilities = ["read"]\n}\n' NEW=Path(__file__).resolve().parents[1].joinpath("openbao/policies/"+NAME+".hcl").read_text() fd=os.open(sys.argv[1],os.O_WRONLY|os.O_CREAT|os.O_EXCL,0o600) result={"success":False} try: current=policy_text(call("policy","read","-format=json",NAME)) if normalized(current) not in (normalized(OLD),normalized(NEW)):raise RuntimeError() call("write","-format=json","sys/policies/acl/"+NAME,"-",payload={"policy":NEW}) if normalized(policy_text(call("policy","read","-format=json",NAME)))!=normalized(NEW):raise RuntimeError() result={"success":True,"change":"ESO self-session lookup and revocation only","secret_values_read":False} finally: os.write(fd,json.dumps(result).encode());os.close(fd)