"""Run only inside existing admitted StateHub Pod AFTER verified candidate Ready.

The fixed existing dispatcher loads its internal credential; root never reads
it. HTTP success proves canonical lifecycle.outcomes PDP gate returned, not an
advisory verdict emission or a substitute for separate evidence obligations.
Root records this bounded metadata receipt with verified PodUID/image/source.
This preparation only writes source; no request is made here.
"""
import datetime,json,urllib.request,urllib.error
from api.services.memo_dispatch import ORIGIN,NoRedirect,token_file
id='infd-20261011-zlib-remediation-r1'
req=urllib.request.Request(ORIGIN+'/v1/decisions/'+id+'/outcomes?version=1',headers={'Authorization':'Bearer '+token_file('/var/run/secrets/state-hub/informed-decision/lifecycle-token')})
opener=urllib.request.build_opener(urllib.request.ProxyHandler({}),NoRedirect())
try:
 with opener.open(req,timeout=15) as response:
  raw=response.read(1048577)
  if len(raw)>1048576:raise ValueError('oversize')
  r=json.loads(raw)
 print(json.dumps({'memo_id':id,'source_memo_version':1,'observed_at':datetime.datetime.now(datetime.timezone.utc).isoformat(),'native_authenticated_canonical_lifecycle_outcomes':True,'native_provider_path_returned':True,'credential_material_output':False,'review':r.get('review'),'disposition_count':len(r.get('dispositions',[])),'dispositions':[{k:d.get(k) for k in ('id','approval_id','submission_state','disposition','approved_at','decided_at')} for d in r.get('dispositions',[])]}))
except Exception as e:print(json.dumps({'memo_id':id,'status':'unverified','error_class':type(e).__name__}));raise SystemExit(1)
