
    Ojn                        d Z ddlmZ ddlZddlZddlZddlZddlZddlmZm	Z	 ddl
mZ dZdZdd	d
dddddddd
ZdZ	 d	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 ddZy)u}  v3.6 Runtime Harness — Runtime Decision Logger (layer 1-4 helper).

chair_authorization_id=CHAIR-AUTH-TASK-2704-V36-CONTROL-PLANE-P0-MVP-260528

Contract:
- log_runtime_event(event_type, task_id, payload) -> None  (safe-fail)
- Reuses scripts/harness/v36/logger.py JSONL writer.
- Each record validates against memory/schemas/v36_runtime_harness_decision.schema.json.
- ANU_V36_HARNESS_TEST_MODE=1 redirects writes to /tmp.

Schema required fields injected automatically:
  schema_version, decision_id, ts, task_id, contract_layer,
  decision_class, evidence, decision_outcome, actor_attribution,
  reason_code, chair_authorization_id
    )annotationsN)datetimetimezone)Optionalz4CHAIR-AUTH-TASK-2704-V36-CONTROL-PLANE-P0-MVP-260528zv36.runtime_harness.decision.v1)layer_1_dispatch_markerSTATE_TRANSITIONspawn_state_progressed_normal)layer_2_spawn_detectionr   r	   )r
   UNKNOWN"spawn_signals_insufficient_unknown)layer_3_watchdog
SUPPRESSED&watchdog_suppressed_by_escalate_marker)r   
ALERT_INFO!watchdog_silently_stalled_cycle_1)r   
ALERT_WARN!watchdog_silently_stalled_cycle_2)r   ESCALATE_CHAIR watchdog_escalate_chair_explicit)layer_4_callback_closeoutr   ,closeout_marker_observed_anu_signal_required)r   r   callback_normal_received)
marker_writtenstate_transitionspawn_unknownchat_suppressed
alert_info
alert_warnescalate_chaircloseout_detectedanu_signal_writtencallback_receivedc                @    	 t        | |||       y# t        $ r Y yw xY w)a  Log a runtime harness event to the JSONL decision audit log.

    Args:
        event_type: One of the known event types (marker_written, state_transition, etc.)
        task_id: Task identifier.
        payload: Event-specific data (stored in evidence.payload).
        decision_outcome_override: Override the auto-generated decision_outcome.

    Safe-fail: silently swallows all exceptions.
    N)_log_runtime_event_impl	Exception)
event_typetask_idpayloaddecision_outcome_overrides       B/home/jay/workspace/scripts/harness/v36/runtime_decision_logger.pylog_runtime_eventr+   Z   s(     
GW>WX s    	c                   t         j                  | t              \  }}}t        j                  t
        j                        }|j                         }| d|  d| }	t        j                  |	j                               j                         d d }
| |d}d|v rF|j                  d      |j                  d      |j                  d      |j                  d      d|d	<   d
|v r|d
   |d
<   d|v r|d   |d<   d|v r|d   |d<   dddddddddd	}|xs& |j                  d|      |j                  |d      d d}t        |
||||||ddddd|t        dg d}ddlm}  ||       y )N.   )r&   r(   marker_pathschedule_iddispatch_methodbot_key_hash)r/   r0   r1   r2   dispatch_markercloseout_statewatchdog_statespawn_statePROCEEDPOLL_NEXT_SAMPLEREPORT_TO_CHAIRSUPPRESSBLOCK_TOOL_CALLHOLD_AWAIT_DECISION)	r   r   r   r   r   r   ALLOWDENYHOLD_FOR_CHAIR
next_state)r@   next_actiontool_call_decisionL3_RUNTIME_HOOK_EVIDENCEv36_control_planeTz)memory/system/.v36_harness_decision.jsonl)evidence_levelclaimed_actor
verifiableevidence_pathF)schema_versiondecision_idtsr'   contract_layerdecision_classevidencedecision_outcomeactor_attributionreason_codechair_authorization_iddry_runlinked_decision_idsr   )log_decision)
_EVENT_MAPget_DEFAULT_EVENT_MAPr   nowr   utc	isoformathashlibsha256encode	hexdigestSCHEMA_VERSIONCHAIR_AUTHORIZATION_IDscripts.harness.v36.loggerrU   )r&   r'   r(   r)   layerrM   rQ   now_utcts_isoraw_idrJ   rN   next_action_maprO   recordrU   s                   r*   r$   r$   q   s    *4
DV)W&E>;ll8<<(G F y*Qvh/F..1;;=crBK %/7CH ";;}5";;}5&{{+<=#KK7	'
"# 7"%,-=%>!"7"%,-=%>!"")-"8 &%((+ !/
O 1 kk,?&**>9E"5 )"(,80H	
 #"8!%F, 8    )N)
r&   strr'   rj   r(   dictr)   zOptional[dict]returnNone)__doc__
__future__r   r\   jsonostimeuuidr   r   typingr   ra   r`   rV   rX   r+   r$    ri   r*   <module>rv      s    #   	   ' O 2








]3
j  15	   .	
 
.JJJ J  .	J
 
Jri   