path = r"C:\Users\intel\AppData\Local\OptimusRuntime\Labs\AR74\10_ar84_trust_boundary\candidate_workspace\app\remediation\self_repair\promotion_executor.py"
with open(path, "r", encoding="utf-8") as f:
    content = f.read()

old_block = '''        # Replay guard check at executor gate if telemetry_audit is provided
        if eff_req_auth and telemetry_audit:
            if hasattr(telemetry_audit, "verify_authenticity"):
                is_valid, reason = telemetry_audit.verify_authenticity(
                    expected_workspace_root=str(w_root),
                    enforce_replay_guard=True,
                )
                if not is_valid:
                    dec = PromotionDecision(
                        promotion_allowed=False,
                        decision="BLOCK",
                        reason_code=f"TELEMETRY_INVALID: {reason}",
                        target_file=target_file,
                        details=details_payload,
                    )
                    return PromotionExecutionResult(
                        promotion_id=promo_id,
                        target_file=target_file,
                        decision=dec,
                        auto_promotion=False,
                        promotion_verified=False,
                        production_file_changed=False,
                        error_message=f"PROMOTION_BLOCKED: {reason}",
                    )'''

new_block = '''        # Replay guard check at executor gate if telemetry_audit is provided
        if eff_req_auth and telemetry_audit:
            if hasattr(telemetry_audit, "verify_authenticity"):
                is_valid, reason = telemetry_audit.verify_authenticity(
                    expected_workspace_root=str(w_root),
                    enforce_replay_guard=True,
                )
            elif isinstance(telemetry_audit, dict):
                try:
                    from app.remediation.self_repair.telemetry_contract import TelemetryAuditRecord
                    rec = TelemetryAuditRecord(
                        mission_id=str(telemetry_audit.get("mission_id") or ""),
                        instance_id=str(telemetry_audit.get("instance_id") or ""),
                        workspace_root=str(telemetry_audit.get("workspace_root") or ""),
                        interval_start=str(telemetry_audit.get("interval_start") or ""),
                        interval_end=str(telemetry_audit.get("interval_end") or ""),
                        observer_active=bool(telemetry_audit.get("observer_active")),
                        observer_fault=telemetry_audit.get("observer_fault"),
                        monitored_scopes=list(telemetry_audit.get("monitored_scopes") or []),
                        unmonitored_scopes=list(telemetry_audit.get("unmonitored_scopes") or []),
                        detected_attempts=list(telemetry_audit.get("detected_attempts") or []),
                        detected_attempts_count=int(telemetry_audit.get("detected_attempts_count") or 0),
                        provider_status=str(telemetry_audit.get("provider_status") or ""),
                        network_status=str(telemetry_audit.get("network_status") or ""),
                        promotion_eligible=bool(telemetry_audit.get("promotion_eligible")),
                        audit_verdict=str(telemetry_audit.get("audit_verdict") or ""),
                        process_id=int(telemetry_audit.get("process_id") or 0),
                        nonce=str(telemetry_audit.get("nonce") or ""),
                        evidence_signature=str(telemetry_audit.get("evidence_signature") or ""),
                    )
                    is_valid, reason = rec.verify_authenticity(
                        expected_workspace_root=str(w_root),
                        enforce_replay_guard=True,
                    )
                except Exception as ex:
                    is_valid, reason = False, f"AUDIT_RECORD_PARSE_ERROR: {ex}"
            else:
                is_valid, reason = False, "INVALID_TELEMETRY_AUDIT_TYPE"

            if not is_valid:
                dec = PromotionDecision(
                    promotion_allowed=False,
                    decision="BLOCK",
                    reason_code=f"TELEMETRY_INVALID: {reason}",
                    target_file=target_file,
                    details=details_payload,
                )
                return PromotionExecutionResult(
                    promotion_id=promo_id,
                    target_file=target_file,
                    decision=dec,
                    auto_promotion=False,
                    promotion_verified=False,
                    production_file_changed=False,
                    error_message=f"PROMOTION_BLOCKED: {reason}",
                )'''

if old_block in content:
    content = content.replace(old_block, new_block, 1)
    print("Updated executor replay check to support dict")
else:
    print("old_block not found in promotion_executor.py")

with open(path, "w", encoding="utf-8") as f:
    f.write(content)

