{
  "schema_version": 1,
  "channel": "homelab-runtime",
  "command_id": "RESULT-API-LOCAL-PREFLIGHT-FIX1-20260727T074036Z",
  "status": "OK",
  "rc": 0,
  "host": "pve01",
  "mode": "verify",
  "component": "result-integration",
  "started_at_utc": "2026-07-27T07:42:58Z",
  "finished_at_utc": "2026-07-27T07:42:58Z",
  "reference_register_checked": true,
  "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
  "error_register_checked": true,
  "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
  "command_sha256": "3ff4d1ea2cda459219b872cac9a804822a5a17f093dc9ac0fdc8925c372b09c4",
  "duplicate_failed_command_blocked": false,
  "block_reason": null,
  "execution_started": true,
  "change_declared": false,
  "result_contract_valid": true,
  "result_contract_status": null,
  "result_contract_error": null,
  "command_rc": 0,
  "changes_made": false,
  "rollback_started": false,
  "rollback_restored": null,
  "mutation_outcome": "NO_MUTATION",
  "sanitized": true,
  "secrets_included": false,
  "private_addresses_included": false,
  "raw_evidence_retained_locally": true,
  "raw_evidence_sha256": "d46658451693a1872d7a4401e2d1fbec106612ffc95b7a9f8ce712fb494cce79",
  "sanitized_output_sha256": "d46658451693a1872d7a4401e2d1fbec106612ffc95b7a9f8ce712fb494cce79",
  "output_truncated_in_json": false,
  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
  "output": "{\"adapter_capabilities\":{\"has_dispatch\":true,\"has_evidence_url\":true,\"has_public_state\":true,\"has_result_public_key_operation\":false,\"has_result_public_operation\":false,\"has_sanitize_state\":true,\"has_terminal_evidence_fields\":true},\"backup_changed\":false,\"candidate_parent\":{\"exists\":true,\"gid\":990,\"is_symlink\":false,\"mode\":\"0o750\",\"path\":\"/var/lib/homelab-command-adapter\",\"result_signing_exists\":false,\"uid\":0},\"changes_made\":false,\"checks\":{\"adapter_dispatch_available\":true,\"adapter_expected_sha\":true,\"adapter_healthy\":true,\"adapter_root_safe\":true,\"adapter_sanitizer_available\":true,\"adapter_terminal_fields_available\":true,\"current_command_running_once\":true,\"new_routes_not_already_present\":true,\"no_invalid_states\":true,\"no_other_running_states\":true,\"openssl_ed25519_pass\":true,\"portal_adapter_boundary_available\":true,\"portal_expected_sha\":true,\"portal_healthy\":true,\"runner_expected_sha\":true,\"terminal_evidence_exists\":true},\"cluster_changed\":false,\"command_id\":\"RESULT-API-LOCAL-PREFLIGHT-FIX1-20260727T074036Z\",\"crypto_test\":{\"available\":true,\"pass\":true,\"private_mode\":\"0o600\",\"public_key_sha256\":\"2d591f1b49f9e2771be5c02739e6f519c91d9ceebb00cc2a96b03d6f66f779c5\",\"signature_bytes\":64,\"verify_rc\":0},\"gitea_changed\":false,\"inventory\":{\"adapter\":{\"exists\":true,\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"path\":\"/usr/local/sbin/homelab-command-adapter\",\"sha256\":\"8d0af84dcfcf6ddbfd1c4e6cbb059cef66b4cfc6c75bfd66da649acc229c7f5e\",\"uid\":0},\"portal\":{\"exists\":true,\"gid\":990,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"path\":\"/usr/local/sbin/homelab-command-portal\",\"sha256\":\"8056faf4ef6348f0b06319ad3c49fbfeeadf25b6370f857ea19569bd27652ee2\",\"uid\":0},\"runner\":{\"exists\":true,\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"path\":\"/usr/local/sbin/homelab-chat-run\",\"sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\",\"uid\":0}},\"next_plan_scope\":{\"create\":[\"/var/lib/homelab-command-adapter/result-signing/private.pem\",\"/var/lib/homelab-command-adapter/result-signing/public.pem\"],\"modify\":[\"/usr/local/sbin/homelab-command-adapter\",\"/usr/local/sbin/homelab-command-portal\"],\"preserve\":[\"/usr/local/sbin/homelab-chat-run\",\"existing state files\",\"existing evidence objects\",\"Gitea runtime history\",\"backup\",\"cluster\"]},\"portal_capabilities\":{\"classes\":{\"Handler\":{\"line\":451,\"methods\":[\"content_length\",\"do_GET\",\"do_POST\",\"error_reply\",\"log_message\",\"path_parts\",\"read_body\",\"redirect\",\"reply\"],\"strings\":[\"\",\"\\n\",\" - \",\"(/enroll/)[A-Za-z0-9_-]{32,160}\",\"([?&]t=)[^&\\\\s]+\",\",\",\".hcmd\",\".upload-\",\"/api/enroll\",\"/api/import\",\"/api/state/([A-Z2-7]{10,20})\",\"/bridge-setup.cmd\",\"/bridge-setup.cmd\\\">Скачать установщик</a></p>\\n<p>После запуска установщика файлы <code>.hcmd</code> будут открываться двойным кликом.</p>\\n</body></html>\",\"/bridge/bridge.cmd\",\"/enroll/\",\"/healthz\",\"/r/\",\"/r/([A-Z2-7]{10,20})\",\"/r/([A-Z2-7]{10,20})/evidence\",\"/r/([A-Z2-7]{10,20})/execute\",\"0\",\":\",\"; Max-Age=\",\"; Path=/; Secure; HttpOnly; SameSite=Strict\",\"<!doctype html>\\n<html lang=\\\"ru\\\"><head><meta charset=\\\"utf-8\\\">\\n<meta name=\\\"robots\\\" content=\\\"noindex,nofollow,noarchive\\\">\\n<title>Homelab Bridge</title>\\n<style>body{font-family:Segoe UI,Arial;background:#111827;color:#e5e7eb;max-width:760px;margin:40px auto;padding:20px}a{display:inline-block;background:#60a5fa;color:#172554;padding:12px 18px;border-radius:8px;text-decoration:none;font-weight:700}</style>\\n</head><body>\\n<h1>Установка Homelab Bridge</h1>\\n<p>Профиль: \",\"</p>\\n<p>Ссылка одноразовая и уже привязана к этому NetBird-адресу.</p>\\n<p><a href=\\\"\",\"APPROVE\",\"Authorization\",\"Bearer \",\"Cache-Control\",\"Content-Disposition\",\"Content-Length\",\"Content-Length required\",\"Content-Security-Policy\",\"Content-Type\",\"Expires\",\"HIGH\",\"HTTP/1.1\",\"HomelabCommandPortal/1\",\"Location\",\"PORTAL_ERROR=\",\"Pragma\",\"Referrer-Policy\",\"Set-Cookie\",\"X-Content-Type-Options\",\"X-Robots-Tag\",\"\\\\1[REDACTED]\",\"__Host-HLSESSION=\",\"adapter\",\"application/json; charset=utf-8\",\"application/octet-stream\",\"ascii\",\"attachment; filename=\\\"HomelabBridgeSetup.cmd\\\"\",\"attachment; filename=\\\"bridge.cmd\\\"\",\"bind_enrollment\",\"client_ip\",\"command confirmation mismatch\",\"command manifest unavailable\",\"command_id\",\"confirm\",\"consume_bootstrap\",\"default-src 'none'; style-src 'unsafe-inline'; form-action 'self'; frame-ancestors 'none'; base-uri 'none'\",\"device authorization required\",\"device_token\",\"enroll\",\"evidence_url\",\"execute\",\"health\",\"import\",\"invalid device token\",\"invalid execute form\",\"label\",\"manifest\",\"no-cache\",\"no-referrer\",\"no-store, no-cache, must-revalidate, max-age=0\",\"noindex, nofollow,noarchive\",\"nosniff\",\"not found\",\"ok\",\"op\",\"request body too large\",\"risk\",\"session_token\",\"short request body\",\"short_id\",\"state\",\"status\",\"strict\",\"t\",\"text/html; charset=utf-8\",\"text/plain; charset=utf-8\",\"token\",\"upload_path\",\"url\",\"utf-8\",\"version\",\"wb\"]},\"PortalError\":{\"line\":40,\"methods\":[],\"strings\":[]},\"Server\":{\"line\":895,\"methods\":[],\"strings\":[]}},\"has_adapter_call\":true,\"has_anonymous_result_route\":false,\"has_healthz\":true,\"has_public_key_route\":false,\"route_strings\":[\"/api/enroll\",\"/api/import\",\"/api/state/([A-Z2-7]{10,20})\",\"/bridge-setup.cmd\",\"/bridge-setup.cmd\\\">Скачать установщик</a></p>\\n<p>После запуска установщика файлы <code>.hcmd</code> будут открываться двойным кликом.</p>\\n</body></html>\",\"/bridge/bridge.cmd\",\"/enroll/\",\"/healthz\",\"/r/\",\"/r/([A-Z2-7]{10,20})\",\"/r/([A-Z2-7]{10,20})/evidence\",\"/r/([A-Z2-7]{10,20})/execute\",\"evidence_url\",\"health\"]},\"private_addresses_included\":false,\"proposed_design\":{\"adapter_operations\":[\"result_public\",\"result_public_key\"],\"document_fields\":[\"schema_version\",\"command_id\",\"capsule_sha256\",\"status\",\"started_at_utc\",\"finished_at_utc\",\"runner_rc\",\"runner_document_rc\",\"runner_wrapper_matches_document\",\"evidence_sha256\",\"gateway_verified\",\"summary\",\"document_sha256\",\"signature_algorithm\",\"signature\",\"key_id\"],\"excluded_fields\":[\"tokens\",\"presigned_urls\",\"credentials\",\"cookies\",\"private_keys\",\"raw_logs\",\"private_addresses\",\"local_paths\"],\"lookup_inputs\":[\"command_id\",\"capsule_sha256\"],\"no_listing\":true,\"public_key_url\":\"https://run.vpn.gram1.ru/.well-known/homelab-result-key.pem\",\"result_url_template\":\"https://run.vpn.gram1.ru/.well-known/homelab-result/<command_id>/<capsule_sha256>.json\",\"signature\":{\"algorithm\":\"Ed25519\",\"canonical_json\":\"UTF-8, sort_keys=true, separators=(',',':')\",\"encoding\":\"base64\"},\"terminal_only\":true},\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secrets_included\":false,\"services\":{\"adapter\":{\"active\":\"active\",\"pid\":\"976008\",\"restarts\":\"0\",\"sub\":\"running\"},\"portal\":{\"active\":\"active\",\"pid\":\"976035\",\"restarts\":\"0\",\"sub\":\"running\"}},\"state_summary\":{\"current_running\":[{\"command_id\":\"RESULT-API-LOCAL-PREFLIGHT-FIX1-20260727T074036Z\",\"state_file\":\"AZBBQXVDMF.json\"}],\"evidence_ready_count\":28,\"invalid\":[],\"other_running\":[],\"terminal_count\":30},\"status\":\"OK\"}\n"
}
