{
  "schema_version": 1,
  "channel": "homelab-runtime",
  "command_id": "GRAM1-SITE-BASELINE-EDITING-DOSSIER-V6-INTEGRITY-AUDIT-20260731T083000Z",
  "status": "OK",
  "rc": 0,
  "host": "pve01",
  "mode": "verify",
  "component": "gram1-site-baseline-integrity-audit",
  "started_at_utc": "2026-07-31T08:32:45Z",
  "finished_at_utc": "2026-07-31T08:32:46Z",
  "reference_register_checked": true,
  "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
  "error_register_checked": true,
  "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
  "command_sha256": "7ddb77a54bc2cfa4a70442acb26bb500fb7935c9e9ea20d4b7a300899163a533",
  "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": "fa76687f4f69125ebd086d16fb3fb4557a90d0f1574208b1e12a131672cb2795",
  "sanitized_output_sha256": "e88e9c4ec4ed17c27e5aa30d0bc61ed9a0c0aec30145dda307a4718069698a4c",
  "output_truncated_in_json": true,
  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
  "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"GRAM1-SITE-BASELINE-EDITING-DOSSIER-V6-INTEGRITY-AUDIT-20260731T083000Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"baseline_integrity\":{\"capture_report_tree_matches_commit\":false,\"commit_identity_verified\":true,\"manifest_matches_commit\":false,\"repair_required_before_site_editing\":true,\"status\":\"DEGRADED\"},\"baseline_readme\":\"# `gram1.ru` initial technical baseline\\n\\n- Command: `GRAM1-SITE-BASELINE-CAPTURE-GITEA-V1-20260731T071400Z`\\n- Snapshot: `20260731T071400Z`\\n- Target branch: `site-gram1-ru-baseline-20260731`\\n- Hosts successfully inspected: **3**\\n- Hosts with site-related evidence: **3**\\n- Public URLs fetched: **15**\\n- Public assets inventoried: **0**\\n\\n## Start here\\n\\n1. `EDITING_START_HERE.md` — deployment/source candidates and the next editing entry points.\\n2. `external/` — live DNS, HTTP, TLS, public-page, header and search-engine baseline.\\n3. `hosts/` — per-host configuration, service, container, source and log inventory.\\n4. `manifest.json` — SHA256 for every stored file.\\n5. `collection/quarantined_files.json` — files excluded because the final secret scan was not clean.\\n\\n## Site-related hosts\\n\\n- `pve01`: 1000 domain matches; 10 candidate source roots.\\n- `pve02`: 16 domain matches; 6 candidate source roots.\\n- `pve03`: 6 domain matches; 0 candidate source roots.\\n\\n## Safety boundary\\n\\n- The production site was not modified.\\n- Only a dedicated Gitea branch was created or updated.\\n- Secret values, cookies, credentials, private keys and environment values were redacted or excluded.\\n- Raw access logs were not stored; only aggregate route/status information was retained.\\n\",\"capture_summary\":{\"command_id\":\"GRAM1-SITE-BASELINE-CAPTURE-GITEA-V1-20260731T071400Z\",\"discovered_hosts\":[{\"candidate_source_roots\":[{\"markers\":\"<list:1>\",\"path\":\"/root/homelab-configs-worktree\",\"reasons\":\"<list:1>\",\"score\":\"144\"},{\"markers\":\"<list:0>\",\"path\":\"/root/homelab-configs-worktree/docs\",\"reasons\":\"<list:1>\",\"score\":\"129\"},{\"markers\":\"<list:0>\",\"path\":\"/root/homelab-configs-worktree/docs/operations\",\"reasons\":\"<list:1>\",\"score\":\"110\"},{\"markers\":\"<list:1>\",\"path\":\"/srv/homelab-desired-state\",\"reasons\":\"<list:1>\",\"score\":\"95\"},{\"markers\":\"<list:0>\",\"path\":\"/srv/homelab-desired-state/health\",\"reasons\":\"<list:1>\",\"score\":\"63\"},{\"markers\":\"<list:1>\",\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation\",\"reasons\":\"<list:1>\",\"score\":\"32\"},{\"markers\":\"<list:0>\",\"path\":\"/srv/homelab-desired-state/sbin\",\"reasons\":\"<list:1>\",\"score\":\"26\"},{\"markers\":\"<list:1>\",\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"reasons\":\"<list:1>\",\"score\":\"23\"},{\"markers\":\"<list:1>\",\"path\":\"/root/homelab-ops-cr-2026-0004\",\"reasons\":\"<list:1>\",\"score\":\"19\"},{\"markers\":\"<list:1>\",\"path\":\"/root/homelab-ops-cr-2026-0012\",\"reasons\":\"<list:1>\",\"score\":\"17\"}],\"container_count\":1,\"directory\":\"local\",\"domain_match_count\":1000,\"fqdn\":\"pve01.gram1.ru\",\"hostname\":\"pve01\",\"source_snapshots\":[{\"source_root\":\"/root/homelab-configs-worktree\",\"stored_bytes\":\"9347306\",\"stored_files\":\"1322\",\"truncated\":\"\"},{\"source_root\":\"/root/homelab-configs-worktree/docs\",\"stored_bytes\":\"6362627\",\"stored_files\":\"764\",\"truncated\":\"\"},{\"source_root\":\"/root/homelab-configs-worktree/docs/operations\",\"stored_bytes\":\"5969079\",\"stored_files\":\"699\",\"truncated\":\"\"},{\"source_root\":\"/srv/homelab-desired-state\",\"stored_bytes\":\"1274899\",\"stored_files\":\"957\",\"truncated\":\"\"},{\"source_root\":\"/srv/homelab-desired-state/health\",\"stored_bytes\":\"231477\",\"stored_files\":\"493\",\"truncated\":\"\"}]},{\"candidate_source_roots\":[{\"markers\":\"<list:0>\",\"path\":\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"reasons\":\"<list:1>\",\"score\":\"2\"},{\"markers\":\"<list:0>\",\"path\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"reasons\":\"<list:1>\",\"score\":\"2\"},{\"markers\":\"<list:0>\",\"path\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"reasons\":\"<list:1>\",\"score\":\"1\"},{\"markers\":\"<list:0>\",\"path\":\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"reasons\":\"<list:1>\",\"score\":\"1\"},{\"markers\":\"<list:0>\",\"path\":\"/root/evidence/forum-prod-recreate-20260629T030810Z\",\"reasons\":\"<list:1>\",\"score\":\"1\"},{\"markers\":\"<list:0>\",\"path\":\"/srv/homelab-desired-state/routerguard-tuya\",\"reasons\":\"<list:1>\",\"score\":\"1\"}],\"container_count\":0,\"directory\":\"pve02\",\"domain_match_count\":16,\"fqdn\":\"pve02.gram1.ru\",\"hostname\":\"pve02\",\"source_snapshots\":[{\"source_root\":\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"stored_bytes\":\"852\",\"stored_files\":\"3\",\"truncated\":\"\"},{\"source_root\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"stored_bytes\":\"14367\",\"stored_files\":\"3\",\"truncated\":\"\"},{\"source_root\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"stored_bytes\":\"242\",\"stored_files\":\"3\",\"truncated\":\"\"},{\"source_root\":\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"stored_bytes\":\"1438\",\"stored_files\":\"3\",\"truncated\":\"\"},{\"source_root\":\"/root/evidence/forum-prod-recreate-20260629T030810Z\",\"stored_bytes\":\"3490\",\"stored_files\":\"3\",\"truncated\":\"\"}]},{\"candidate_source_roots\":[],\"container_count\":0,\"directory\":\"pve03\",\"domain_match_count\":6,\"fqdn\":\"pve03.gram1.ru\",\"hostname\":\"pve03\",\"source_snapshots\":[]}],\"domain\":\"gram1.ru\",\"final_sanitation\":{\"processed_text_files\":4380,\"quarantined_file_count\":0},\"hosts_attempted\":12,\"hosts_failed\":9,\"hosts_successful\":3,\"public_http_assets\":0,\"public_http_pages\":15,\"resolved_ips\":[\"95.84.154.183\"],\"site_hosts\":[{\"candidate_source_roots\":[{\"markers\":\"<list:1>\",\"path\":\"/root/homelab-configs-worktree\",\"reasons\":\"<list:1>\",\"score\":\"144\"},{\"markers\":\"<list:0>\",\"path\":\"/root/homelab-configs-worktree/docs\",\"reasons\":\"<list:1>\",\"score\":\"129\"},{\"markers\":\"<list:0>\",\"path\":\"/root/homelab-configs-worktree/docs/operations\",\"reasons\":\"<list:1>\",\"score\":\"110\"},{\"markers\":\"<list:1>\",\"path\":\"/srv/homelab-desired-state\",\"reasons\":\"<list:1>\",\"score\":\"95\"},{\"markers\":\"<list:0>\",\"path\":\"/srv/homelab-desired-state/health\",\"reasons\":\"<list:1>\",\"score\":\"63\"},{\"markers\":\"<list:1>\",\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation\",\"reasons\":\"<list:1>\",\"score\":\"32\"},{\"markers\":\"<list:0>\",\"path\":\"/srv/homelab-desired-state/sbin\",\"reasons\":\"<list:1>\",\"score\":\"26\"},{\"markers\":\"<list:1>\",\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"reasons\":\"<list:1>\",\"score\":\"23\"},{\"markers\":\"<list:1>\",\"path\":\"/root/homelab-ops-cr-2026-0004\",\"reasons\":\"<list:1>\",\"score\":\"19\"},{\"markers\":\"<list:1>\",\"path\":\"/root/homelab-ops-cr-2026-0012\",\"reasons\":\"<list:1>\",\"score\":\"17\"}],\"container_count\":1,\"directory\":\"local\",\"domain_match_count\":1000,\"fqdn\":\"pve01.gram1.ru\",\"hostname\":\"pve01\",\"source_snapshots\":[{\"source_root\":\"/root/homelab-configs-worktree\",\"stored_bytes\":\"9347306\",\"stored_files\":\"1322\",\"truncated\":\"\"},{\"source_root\":\"/root/homelab-configs-worktree/docs\",\"stored_bytes\":\"6362627\",\"stored_files\":\"764\",\"truncated\":\"\"},{\"source_root\":\"/root/homelab-configs-worktree/docs/operations\",\"stored_bytes\":\"5969079\",\"stored_files\":\"699\",\"truncated\":\"\"},{\"source_root\":\"/srv/homelab-desired-state\",\"stored_bytes\":\"1274899\",\"stored_files\":\"957\",\"truncated\":\"\"},{\"source_root\":\"/srv/homelab-desired-state/health\",\"stored_bytes\":\"231477\",\"stored_files\":\"493\",\"truncated\":\"\"}]},{\"candidate_source_roots\":[{\"markers\":\"<list:0>\",\"path\":\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"reasons\":\"<list:1>\",\"score\":\"2\"},{\"markers\":\"<list:0>\",\"path\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"reasons\":\"<list:1>\",\"score\":\"2\"},{\"markers\":\"<list:0>\",\"path\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"reasons\":\"<list:1>\",\"score\":\"1\"},{\"markers\":\"<list:0>\",\"path\":\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"reasons\":\"<list:1>\",\"score\":\"1\"},{\"markers\":\"<list:0>\",\"path\":\"/root/evidence/forum-prod-recreate-20260629T030810Z\",\"reasons\":\"<list:1>\",\"score\":\"1\"},{\"markers\":\"<list:0>\",\"path\":\"/srv/homelab-desired-state/routerguard-tuya\",\"reasons\":\"<list:1>\",\"score\":\"1\"}],\"container_count\":0,\"directory\":\"pve02\",\"domain_match_count\":16,\"fqdn\":\"pve02.gram1.ru\",\"hostname\":\"pve02\",\"source_snapshots\":[{\"source_root\":\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"stored_bytes\":\"852\",\"stored_files\":\"3\",\"truncated\":\"\"},{\"source_root\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"stored_bytes\":\"14367\",\"stored_files\":\"3\",\"truncated\":\"\"},{\"source_root\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"stored_bytes\":\"242\",\"stored_files\":\"3\",\"truncated\":\"\"},{\"source_root\":\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"stored_bytes\":\"1438\",\"stored_files\":\"3\",\"truncated\":\"\"},{\"source_root\":\"/root/evidence/forum-prod-recreate-20260629T030810Z\",\"stored_bytes\":\"3490\",\"stored_files\":\"3\",\"truncated\":\"\"}]},{\"candidate_source_roots\":[],\"container_count\":0,\"directory\":\"pve03\",\"domain_match_count\":6,\"fqdn\":\"pve03.gram1.ru\",\"hostname\":\"pve03\",\"source_snapshots\":[]}],\"snapshot_id\":\"20260731T071400Z\",\"tls_hosts\":[\"gram1.ru\",\"www.gram1.ru\"]},\"changes_made\":false,\"command_id\":\"GRAM1-SITE-BASELINE-EDITING-DOSSIER-V6-INTEGRITY-AUDIT-20260731T083000Z\",\"coverage_notes\":{\"dossier_is_a_projection\":true,\"failed_probe_count\":9,\"public_assets_zero\":true,\"raw_baseline_is_authoritative\":true},\"dns\":{\"_dmarc.gram1.ru\":{\"A\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"AAAA\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"CAA\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"CNAME\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"DNSKEY\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"DNSSEC_PROBE\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"\\n; <<>> DiG 9.20.23-1~deb13u1-Debian <<>> +dnssec +multiline _dmarc.gram1.ru A\\n;; global options: +cmd\\n;; Got answer:\\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37736\\n;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1\\n\\n;; OPT PSEUDOSECTION:\\n; EDNS: version: 0, flags: do; udp: 1212\\n;; QUESTION SECTION:\\n;_dmarc.gram1.ru.\\tIN A\\n\\n;; AUTHORITY SECTION:\\ngram1.ru.\\t\\t371 IN SOA sara.ns.cloudflare.com. dns.cloudflare.com. (\\n\\t\\t\\t\\t2410492416 ; serial\\n\\t\\t\\t\\t10000      ; refresh (2 hours 46 minutes 40 seconds)\\n\\t\\t\\t\\t2400       ; retry (40 minutes)\\n\\t\\t\\t\\t604800     ; expire (1 week)\\n\\t\\t\\t\\t1800       ; minimum (30 minutes)\\n\\t\\t\\t\\t)\\n\\n;; Query time: 1 msec\\n;; SERVER: 100.100.131.41#53(100.100.131.41) (UDP)\\n;; WHEN: Fri Jul 31 10:37:17 MSK 2026\\n;; MSG SIZE  rcvd: 128\\n\\n\"},\"DS\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"HTTPS\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"MX\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"NS\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"SOA\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"SVCB\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"TXT\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"_dmarc.gram1.ru.\\t300\\tIN\\tTXT\\t\\\"v=DMARC1; p=reject\\\"\\n\"}},\"gram1.ru\":{\"A\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t129\\tIN\\tA\\t95.84.154.183\\n\"},\"AAAA\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t258\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"CAA\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t374\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"CNAME\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t374\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"DNSKEY\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t374\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"DNSSEC_PROBE\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"\\n; <<>> DiG 9.20.23-1~deb13u1-Debian <<>> +dnssec +multiline gram1.ru A\\n;; global options: +cmd\\n;; Got answer:\\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4726\\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\\n\\n;; OPT PSEUDOSECTION:\\n; EDNS: version: 0, flags: do; udp: 1212\\n;; QUESTION SECTION:\\n;gram1.ru.\\t\\tIN A\\n\\n;; ANSWER SECTION:\\ngram1.ru.\\t\\t129 IN A 95.84.154.183\\n\\n;; Query time: 0 msec\\n;; SERVER: 100.100.131.41#53(100.100.131.41) (UDP)\\n;; WHEN: Fri Jul 31 10:37:14 MSK 2026\\n;; MSG SIZE  rcvd: 61\\n\\n\"},\"DS\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"ru.\\t\\t\\t3101\\tIN\\tSOA\\ta.dns.ripn.net. hostmaster.ripn.net. 4069813 86400 14400 2592000 3600\\n\"},\"HTTPS\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t374\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"MX\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t374\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"NS\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t12670\\tIN\\tNS\\tsara.ns.cloudflare.com.\\ngram1.ru.\\t\\t12670\\tIN\\tNS\\tvern.ns.cloudflare.com.\\n\"},\"SOA\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t1800\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"SVCB\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t374\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"TXT\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t300\\tIN\\tTXT\\t\\\"v=spf1 -all\\\"\\n\"}},\"www.gram1.ru\":{\"A\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"www.gram1.ru.\\t\\t300\\tIN\\tA\\t95.84.154.183\\n\"},\"AAAA\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t374\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"CAA\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t372\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"CNAME\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t374\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"DNSKEY\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"DNSSEC_PROBE\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"\\n; <<>> DiG 9.20.23-1~deb13u1-Debian <<>> +dnssec +multiline www.gram1.ru A\\n;; global options: +cmd\\n;; Got answer:\\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48071\\n;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1\\n\\n;; OPT PSEUDOSECTION:\\n; EDNS: version: 0, flags: do; udp: 1212\\n;; QUESTION SECTION:\\n;www.gram1.ru.\\t\\tIN A\\n\\n;; ANSWER SECTION:\\nwww.gram1.ru.\\t\\t297 IN A 95.84.154.183\\n\\n;; Query time: 1 msec\\n;; SERVER: 100.100.131.41#53(100.100.131.41) (UDP)\\n;; WHEN: Fri Jul 31 10:37:17 MSK 2026\\n;; MSG SIZE  rcvd: 69\\n\\n\"},\"DS\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t372\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"HTTPS\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"MX\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t374\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"NS\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t374\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"SOA\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t372\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"SVCB\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t371\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"},\"TXT\":{\"rc\":0,\"stderr\":\"\",\"stdout\":\"gram1.ru.\\t\\t1691\\tIN\\tSOA\\tsara.ns.cloudflare.com. dns.cloudflare.com. 2410492416 10000 2400 604800 1800\\n\"}}},\"dossier_json_bytes_before_hash_field\":345137,\"dossier_json_sha256\":\"e7252d8d48b73bbe6eb4d6a8729ff3264ce30bca29193b533761987d2c0509a6\",\"dossier_markdown\":\"# Editing dossier: `gram1.ru`\\n\\n## Cryptographic identity\\n\\n- Branch: `site-gram1-ru-baseline-20260731`\\n- Commit: `f9d3ba8caf65005605aa8aee2ede7e4e7e94ee49`\\n- Snapshot tree SHA256: `fdac2c317221e056500efb4c4750c5cf0b4325102f99f67bb566f818bca9d231`\\n- Files / bytes: **4309 / 28684549**\\n- Capture-report tree match: **False**\\n- Manifest/commit consistency: **False**\\n- Missing manifest files: **74**\\n- Missing files matched by Git ignore rules: **74**\\n\\n## Collection coverage\\n\\n- Hosts attempted: **12**\\n- Hosts successful: **3**\\n- Hosts failed: **9**\\n- Site-related hosts: **3**\\n- Public pages: **15**\\n- Public assets: **0**\\n\\n## Highest-priority editable roots\\n\\n- `pve01` → `/root/homelab-configs-worktree`; score=144; frameworks=Docker Compose; snapshot=yes\\n- `pve01` → `/root/homelab-configs-worktree/docs`; score=129; frameworks=Docker Compose; snapshot=yes\\n- `pve01` → `/root/homelab-configs-worktree/docs/operations`; score=110; frameworks=Docker Compose; snapshot=yes\\n- `pve01` → `/srv/homelab-desired-state`; score=95; frameworks=Docker Compose; snapshot=yes\\n- `pve01` → `/srv/homelab-desired-state/health`; score=63; frameworks=Docker Compose; snapshot=yes\\n- `pve01` → `/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation`; score=32; frameworks=Docker Compose; snapshot=no\\n- `pve01` → `/srv/homelab-desired-state/sbin`; score=26; frameworks=Docker Compose; snapshot=no\\n- `pve01` → `/srv/homelab-ops-worktrees/cr-2026-0015`; score=23; frameworks=Docker Compose; snapshot=no\\n- `pve01` → `/root/homelab-ops-cr-2026-0004`; score=19; frameworks=Docker Compose; snapshot=no\\n- `pve01` → `/root/homelab-ops-cr-2026-0012`; score=17; frameworks=Docker Compose; snapshot=no\\n- `pve02` → `/root/evidence/forum-prod-diag-20260629T032514Z`; score=2; frameworks=not identified; snapshot=yes\\n- `pve02` → `/root/evidence/forum-prod-os-baseline-20260629T034119Z`; score=2; frameworks=not identified; snapshot=yes\\n- `pve02` → `/root/evidence/forum-prod-offline-fix2-20260629T033832Z`; score=1; frameworks=not identified; snapshot=yes\\n- `pve02` → `/root/evidence/forum-prod-recover-20260629T025511Z`; score=1; frameworks=not identified; snapshot=yes\\n- `pve02` → `/root/evidence/forum-prod-recreate-20260629T030810Z`; score=1; frameworks=not identified; snapshot=yes\\n- `pve02` → `/srv/homelab-desired-state/routerguard-tuya`; score=1; frameworks=not identified; snapshot=no\\n\\n## Failed host probes\\n\\n- `[PRIVATE_IP]`: rc=142; \\n- `[PRIVATE_IP]`: rc=142; \\n- `95.84.154.183`: rc=255; ssh: connect to host 95.84.154.183 port 22: Connection timed out\\n\\n- `core-apps`: rc=255; ssh: Could not resolve hostname core-apps: Name or service not known\\n\\n- `edge-vm`: rc=255; No ED25519 host key is known for edge-vm and you have requested strict checking.\\nHost key verification failed.\\n\\n- `gram1.ru`: rc=255; ssh: connect to host gram1.ru port 22: Connection timed out\\n\\n- `pve02.gram1.ru`: rc=255; No ED25519 host key is known for pve02.gram1.ru and you have requested strict checking.\\nHost key verification failed.\\n\\n- `pve03.gram1.ru`: rc=255; No ED25519 host key is known for pve03.gram1.ru and you have requested strict checking.\\nHost key verification failed.\\n\\n- `www.gram1.ru`: rc=255; ssh: connect to host www.gram1.ru port 22: Connection timed out\\n\\n\\n## Safety\\n\\n- This dossier operation only cloned and verified the existing Gitea branch.\\n- Production and Gitea were not modified.\\n- All returned text was sanitized again before publication.\\n\",\"editing_candidates\":[{\"detected_frameworks\":[\"Docker Compose\"],\"discovery_score\":144,\"domain_match_count\":1000,\"host\":\"pve01\",\"markers\":[\".git\"],\"priority_score\":1510,\"snapshot\":{\"source_root\":\"/root/homelab-configs-worktree\",\"stored_bytes\":9347306,\"stored_files\":1322,\"truncated\":false},\"source_root\":\"/root/homelab-configs-worktree\"},{\"detected_frameworks\":[\"Docker Compose\"],\"discovery_score\":129,\"domain_match_count\":1000,\"host\":\"pve01\",\"markers\":[],\"priority_score\":1360,\"snapshot\":{\"source_root\":\"/root/homelab-configs-worktree/docs\",\"stored_bytes\":6362627,\"stored_files\":764,\"truncated\":false},\"source_root\":\"/root/homelab-configs-worktree/docs\"},{\"detected_frameworks\":[\"Docker Compose\"],\"discovery_score\":110,\"domain_match_count\":1000,\"host\":\"pve01\",\"markers\":[],\"priority_score\":1170,\"snapshot\":{\"source_root\":\"/root/homelab-configs-worktree/docs/operations\",\"stored_bytes\":5969079,\"stored_files\":699,\"truncated\":false},\"source_root\":\"/root/homelab-configs-worktree/docs/operations\"},{\"detected_frameworks\":[\"Docker Compose\"],\"discovery_score\":95,\"domain_match_count\":1000,\"host\":\"pve01\",\"markers\":[\".git\"],\"priority_score\":1020,\"snapshot\":{\"source_root\":\"/srv/homelab-desired-state\",\"stored_bytes\":1274899,\"stored_files\":957,\"truncated\":false},\"source_root\":\"/srv/homelab-desired-state\"},{\"detected_frameworks\":[\"Docker Compose\"],\"discovery_score\":63,\"domain_match_count\":1000,\"host\":\"pve01\",\"markers\":[],\"priority_score\":700,\"snapshot\":{\"source_root\":\"/srv/homelab-desired-state/health\",\"stored_bytes\":231477,\"stored_files\":493,\"truncated\":false},\"source_root\":\"/srv/homelab-desired-state/health\"},{\"detected_frameworks\":[\"Docker Compose\"],\"discovery_score\":32,\"domain_match_count\":1000,\"host\":\"pve01\",\"markers\":[\".git\"],\"priority_score\":370,\"snapshot\":null,\"source_root\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation\"},{\"detected_frameworks\":[\"Docker Compose\"],\"discovery_score\":26,\"domain_match_count\":1000,\"host\":\"pve01\",\"markers\":[],\"priority_score\":310,\"snapshot\":null,\"source_root\":\"/srv/homelab-desired-state/sbin\"},{\"detected_frameworks\":[\"Docker Compose\"],\"discovery_score\":23,\"domain_match_count\":1000,\"host\":\"pve01\",\"markers\":[\".git\"],\"priority_score\":280,\"snapshot\":null,\"source_root\":\"/srv/homelab-ops-worktrees/cr-2026-0015\"},{\"detected_frameworks\":[\"Docker Compose\"],\"discovery_score\":19,\"domain_match_count\":1000,\"host\":\"pve01\",\"markers\":[\".git\"],\"priority_score\":240,\"snapshot\":null,\"source_root\":\"/root/homelab-ops-cr-2026-0004\"},{\"detected_frameworks\":[\"Docker Compose\"],\"discovery_score\":17,\"domain_match_count\":1000,\"host\":\"pve01\",\"markers\":[\".git\"],\"priority_score\":220,\"snapshot\":null,\"source_root\":\"/root/homelab-ops-cr-2026-0012\"},{\"detected_frameworks\":[],\"discovery_score\":2,\"domain_match_count\":16,\"host\":\"pve02\",\"markers\":[],\"priority_score\":56,\"snapshot\":{\"source_root\":\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"stored_bytes\":852,\"stored_files\":3,\"truncated\":false},\"source_root\":\"/root/evidence/forum-prod-diag-20260629T032514Z\"},{\"detected_frameworks\":[],\"discovery_score\":2,\"domain_match_count\":16,\"host\":\"pve02\",\"markers\":[],\"priority_score\":56,\"snapshot\":{\"source_root\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"stored_bytes\":14367,\"stored_files\":3,\"truncated\":false},\"source_root\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\"},{\"detected_frameworks\":[],\"discovery_score\":1,\"domain_match_count\":16,\"host\":\"pve02\",\"markers\":[],\"priority_score\":46,\"snapshot\":{\"source_root\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"stored_bytes\":242,\"stored_files\":3,\"truncated\":false},\"source_root\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\"},{\"detected_frameworks\":[],\"discovery_score\":1,\"domain_match_count\":16,\"host\":\"pve02\",\"markers\":[],\"priority_score\":46,\"snapshot\":{\"source_root\":\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"stored_bytes\":1438,\"stored_files\":3,\"truncated\":false},\"source_root\":\"/root/evidence/forum-prod-recover-20260629T025511Z\"},{\"detected_frameworks\":[],\"discovery_score\":1,\"domain_match_count\":16,\"host\":\"pve02\",\"markers\":[],\"priority_score\":46,\"snapshot\":{\"source_root\":\"/root/evidence/forum-prod-recreate-20260629T030810Z\",\"stored_bytes\":3490,\"stored_files\":3,\"truncated\":false},\"source_root\":\"/root/evidence/forum-prod-recreate-20260629T030810Z\"},{\"detected_frameworks\":[],\"discovery_score\":1,\"domain_match_count\":16,\"host\":\"pve02\",\"markers\":[],\"priority_score\":26,\"snapshot\":null,\"source_root\":\"/srv/homelab-desired-state/routerguard-tuya\"}],\"editing_start_here\":\"# Editing start: `gram1.ru`\\n\\nThis document lists the highest-confidence source and deployment roots discovered by the baseline.\\n\\n## Host `pve01`\\n\\n- Source candidate `/root/homelab-configs-worktree` — score 144; markers: .git.\\n- Source candidate `/root/homelab-configs-worktree/docs` — score 129; markers: none.\\n- Source candidate `/root/homelab-configs-worktree/docs/operations` — score 110; markers: none.\\n- Source candidate `/srv/homelab-desired-state` — score 95; markers: .git.\\n- Source candidate `/srv/homelab-desired-state/health` — score 63; markers: none.\\n- Source candidate `/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation` — score 32; markers: .git.\\n- Source candidate `/srv/homelab-desired-state/sbin` — score 26; markers: none.\\n- Source candidate `/srv/homelab-ops-worktrees/cr-2026-0015` — score 23; markers: .git.\\n- Source candidate `/root/homelab-ops-cr-2026-0004` — score 19; markers: .git.\\n- Source candidate `/root/homelab-ops-cr-2026-0012` — score 17; markers: .git.\\n- Snapshot `/root/homelab-configs-worktree`: 1322 files / 9347306 bytes; truncated=False.\\n- Snapshot `/root/homelab-configs-worktree/docs`: 764 files / 6362627 bytes; truncated=False.\\n- Snapshot `/root/homelab-configs-worktree/docs/operations`: 699 files / 5969079 bytes; truncated=False.\\n- Snapshot `/srv/homelab-desired-state`: 957 files / 1274899 bytes; truncated=False.\\n- Snapshot `/srv/homelab-desired-state/health`: 493 files / 231477 bytes; truncated=False.\\n\\n## Host `pve02`\\n\\n- Source candidate `/root/evidence/forum-prod-diag-20260629T032514Z` — score 2; markers: none.\\n- Source candidate `/root/evidence/forum-prod-os-baseline-20260629T034119Z` — score 2; markers: none.\\n- Source candidate `/root/evidence/forum-prod-offline-fix2-20260629T033832Z` — score 1; markers: none.\\n- Source candidate `/root/evidence/forum-prod-recover-20260629T025511Z` — score 1; markers: none.\\n- Source candidate `/root/evidence/forum-prod-recreate-20260629T030810Z` — score 1; markers: none.\\n- Source candidate `/srv/homelab-desired-state/routerguard-tuya` — score 1; markers: none.\\n- Snapshot `/root/evidence/forum-prod-diag-20260629T032514Z`: 3 files / 852 bytes; truncated=False.\\n- Snapshot `/root/evidence/forum-prod-os-baseline-20260629T034119Z`: 3 files / 14367 bytes; truncated=False.\\n- Snapshot `/root/evidence/forum-prod-offline-fix2-20260629T033832Z`: 3 files / 242 bytes; truncated=False.\\n- Snapshot `/root/evidence/forum-prod-recover-20260629T025511Z`: 3 files / 1438 bytes; truncated=False.\\n- Snapshot `/root/evidence/forum-prod-recreate-20260629T030810Z`: 3 files / 3490 bytes; truncated=False.\\n\\n## Host `pve03`\\n\\n- No source root, but domain/config evidence exists.\\n\\nBefore changing production, compare the selected source snapshot with the live source root and create a separate transactional change capsule with byte-for-byte backup and automatic rollback.\\n\",\"failed_hosts\":[{\"duration_seconds\":10.366,\"rc\":142,\"ssh_target\":\"root@[PRIVATE_IP]\",\"stderr\":\"\",\"target\":\"[PRIVATE_IP]\"},{\"duration_seconds\":10.262,\"rc\":142,\"ssh_target\":\"root@[PRIVATE_IP]\",\"stderr\":\"\",\"target\":\"[PRIVATE_IP]\"},{\"duration_seconds\":7.011,\"rc\":255,\"ssh_target\":\"root@95.84.154.183\",\"stderr\":\"ssh: connect to host 95.84.154.183 port 22: Connection timed out\\n\",\"target\":\"95.84.154.183\"},{\"duration_seconds\":0.043,\"rc\":255,\"ssh_target\":\"core-apps\",\"stderr\":\"ssh: Could not resolve hostname core-apps: Name or service not known\\n\",\"target\":\"core-apps\"},{\"duration_seconds\":0.045,\"rc\":255,\"ssh_target\":\"edge-vm\",\"stderr\":\"No ED25519 host key is known for edge-vm and you have requested strict checking.\\nHost key verification failed.\\n\",\"target\":\"edge-vm\"},{\"duration_seconds\":7.012,\"rc\":255,\"ssh_target\":\"gram1.ru\",\"stderr\":\"ssh: connect to host gram1.ru port 22: Connection timed out\\n\",\"target\":\"gram1.ru\"},{\"duration_seconds\":0.026,\"rc\":255,\"ssh_target\":\"pve02.gram1.ru\",\"stderr\":\"No ED25519 host key is known for pve02.gram1.ru and you have requested strict checking.\\nHost key verification failed.\\n\",\"target\":\"pve02.gram1.ru\"},{\"duration_seconds\":0.025,\"rc\":255,\"ssh_target\":\"pve03.gram1.ru\",\"stderr\":\"No ED25519 host key is known for pve03.gram1.ru and you have requested strict checking.\\nHost key verification failed.\\n\",\"target\":\"pve03.gram1.ru\"},{\"duration_seconds\":7.013,\"rc\":255,\"ssh_target\":\"www.gram1.ru\",\"stderr\":\"ssh: connect to host www.gram1.ru port 22: Connection timed out\\n\",\"target\":\"www.gram1.ru\"}],\"gitea_changed\":false,\"hosts\":[{\"candidate_source_roots\":[{\"markers\":[\".git\"],\"path\":\"/root/homelab-configs-worktree\",\"reasons\":[\"domain_match_parent\"],\"score\":144},{\"markers\":[],\"path\":\"/root/homelab-configs-worktree/docs\",\"reasons\":[\"domain_match_parent\"],\"score\":129},{\"markers\":[],\"path\":\"/root/homelab-configs-worktree/docs/operations\",\"reasons\":[\"domain_match_parent\"],\"score\":110},{\"markers\":[\".git\"],\"path\":\"/srv/homelab-desired-state\",\"reasons\":[\"domain_match_parent\"],\"score\":95},{\"markers\":[],\"path\":\"/srv/homelab-desired-state/health\",\"reasons\":[\"domain_match_parent\"],\"score\":63},{\"markers\":[\".git\"],\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation\",\"reasons\":[\"domain_match_parent\"],\"score\":32},{\"markers\":[],\"path\":\"/srv/homelab-desired-state/sbin\",\"reasons\":[\"domain_match_parent\"],\"score\":26},{\"markers\":[\".git\"],\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"reasons\":[\"domain_match_parent\"],\"score\":23},{\"markers\":[\".git\"],\"path\":\"/root/homelab-ops-cr-2026-0004\",\"reasons\":[\"domain_match_parent\"],\"score\":19},{\"markers\":[\".git\"],\"path\":\"/root/homelab-ops-cr-2026-0012\",\"reasons\":[\"domain_match_parent\"],\"score\":17}],\"certificate_reference_count\":0,\"container_count\":1,\"container_inventory\":{\"podman.json\":{\"containers\":[{\"command\":\"/init\",\"created\":\"2026-07-28T14:05:23.091587634+03:00\",\"domain_related\":false,\"engine\":\"podman\",\"entrypoint\":null,\"environment_keys\":[\"HOME\",\"HOSTNAME\",\"INFLUXD_CONFIG_PATH\",\"INFLUXVER\",\"PATH\",\"S6VER\",\"S6_SERVICES_READYTIME\",\"container\"],\"id\":\"aa350cac62aa\",\"image\":\"ghcr.io/analogj/scrutiny:latest-omnibus\",\"labels\":{\"org.opencontainers.image.created\":\"2026-04-28T01:10:28.851Z\",\"org.opencontainers.image.description\":\"Hard Drive S.M.A.R.T Monitoring, Historical Trends & Real World Failure Thresholds\",\"org.opencontainers.image.licenses\":\"MIT\",\"org.opencontainers.image.revision\":\"5928d68be79d91431afa937b3b233ed792187a1f\",\"org.opencontainers.image.source\":\"https://github.com/AnalogJ/scrutiny\",\"org.opencontainers.image.title\":\"scrutiny\",\"org.opencontainers.image.url\":\"https://github.com/AnalogJ/scrutiny\",\"org.opencontainers.image.version\":\"v0.9.2-omnibus\"},\"mounts\":[\"<dict:6>\",\"<dict:6>\",\"<dict:6>\"],\"name\":\"scrutiny\",\"ports\":{\"8080/tcp\":\"<list:1>\"},\"restart_policy\":\"no\",\"state\":{\"CgroupPath\":\"/machine.slice/libpod-aa350cac62aa0235a41c70f8650092e69fa92e815c08c8e4e2aeea65a8accc46.scope\",\"CheckpointedAt\":\"0001-01-01T00:00:00Z\",\"ConmonPid\":\"1583\",\"Dead\":\"\",\"Error\":\"\",\"ExitCode\":\"\",\"FinishedAt\":\"0001-01-01T00:00:00Z\",\"OOMKilled\":\"\",\"OciVersion\":\"1.2.0\",\"Paused\":\"\",\"Pid\":\"1585\",\"Restarting\":\"\",\"RestoredAt\":\"0001-01-01T00:00:00Z\",\"Running\":\"True\",\"StartedAt\":\"2026-07-28T14:05:23.370292013+03:00\",\"Status\":\"running\"},\"user\":\"\",\"working_dir\":\"/opt/scrutiny\"}],\"errors\":[],\"ps_rc\":0}},\"deployment_evidence\":[{\"line\":1,\"path\":\"systemd/services.txt\",\"text\":\"* docker.service                                                                            not-found inactive   dead          docker.service\"},{\"line\":2,\"path\":\"systemd/services.txt\",\"text\":\"homelab-docker-health.service                                                             loaded    inactive   dead          Homelab Docker health readonly collector\"},{\"line\":2,\"path\":\"systemd/timers.txt\",\"text\":\"Sat 2026-08-01 00:08:53 MSK       13h Fri 2026-07-31 00:18:50 MSK      10h ago homelab-docker-health.timer                            homelab-docker-health.service\"},{\"line\":1,\"path\":\"systemd/units/homelab-docker-health.service.cat.txt\",\"text\":\"# /etc/systemd/system/homelab-docker-health.service\"},{\"line\":3,\"path\":\"systemd/units/homelab-docker-health.service.cat.txt\",\"text\":\"Description=Homelab Docker health readonly collector\"},{\"line\":5,\"path\":\"systemd/units/homelab-docker-health.service.cat.txt\",\"text\":\"After=local-fs.target docker.service\"},{\"line\":6,\"path\":\"systemd/units/homelab-docker-health.service.cat.txt\",\"text\":\"Wants=docker.service\"},{\"line\":10,\"path\":\"systemd/units/homelab-docker-health.service.cat.txt\",\"text\":\"EnvironmentFile=-/etc/default/homelab-docker-health\"},{\"line\":11,\"path\":\"systemd/units/homelab-docker-health.service.cat.txt\",\"text\":\"ExecStart=/usr/local/sbin/homelab-docker-health.sh\"},{\"line\":1,\"path\":\"systemd/units/homelab-docker-health.service.show.txt\",\"text\":\"ExecStart={ path=/usr/local/sbin/homelab-docker-health.sh ; argv[]=/usr/local/sbin/homelab-docker-health.sh ; ignore_errors=no ; start_time=[Fri 2026-07-31 00:18:50 MSK] ; stop_time=[Fri 2026-07-31 00:18:50 MSK] ; pid=2850307 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/homelab-docker-health.service.show.txt\",\"text\":\"EnvironmentFiles=/etc/default/homelab-docker-health (ignore_errors=yes)\"},{\"line\":3,\"path\":\"systemd/units/homelab-docker-health.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":4,\"path\":\"systemd/units/homelab-docker-health.service.show.txt\",\"text\":\"Id=homelab-docker-health.service\"},{\"line\":8,\"path\":\"systemd/units/homelab-docker-health.service.show.txt\",\"text\":\"FragmentPath=/etc/systemd/system/homelab-docker-health.service\"},{\"line\":22,\"path\":\"systemd/units/kmod-static-nodes.service.cat.txt\",\"text\":\"ExecStart=/usr/bin/kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/static-nodes.conf\"},{\"line\":1,\"path\":\"systemd/units/kmod-static-nodes.service.show.txt\",\"text\":\"ExecStart={ path=/usr/bin/kmod ; argv[]=/usr/bin/kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/static-nodes.conf ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/kmod-static-nodes.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":8,\"path\":\"systemd/units/prometheus-node-exporter-apt.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/apt_info.py | sponge /var/lib/prometheus/node-exporter/apt.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-apt.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/apt_info.py | sponge /var/lib/prometheus/node-exporter/apt.prom ; ignore_errors=no ; start_time=[Fri 2026-07-31 10:26:24 MSK] ; stop_time=[Fri 2026-07-31 10:26:25 MSK] ; pid=542370 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-apt.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":10,\"path\":\"systemd/units/prometheus-node-exporter-ipmitool-sensor.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/bin/ipmitool sensor | /usr/share/prometheus-node-exporter-collectors/ipmitool | sponge /var/lib/prometheus/node-exporter/ipmitool_sensor.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-ipmitool-sensor.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/bin/ipmitool sensor | /usr/share/prometheus-node-exporter-collectors/ipmitool | sponge /var/lib/prometheus/node-exporter/ipmitool_sensor.prom ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-ipmitool-sensor.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":9,\"path\":\"systemd/units/prometheus-node-exporter-mellanox-hca-temp.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/mellanox_hca_temp | sponge /var/lib/prometheus/node-exporter/mellanox_hca_temp.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-mellanox-hca-temp.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/mellanox_hca_temp | sponge /var/lib/prometheus/node-exporter/mellanox_hca_temp.prom ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-mellanox-hca-temp.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":8,\"path\":\"systemd/units/prometheus-node-exporter-nvme.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/nvme_metrics.py | sponge /var/lib/prometheus/node-exporter/nvme.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-nvme.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/nvme_metrics.py | sponge /var/lib/prometheus/node-exporter/nvme.prom ; ignore_errors=no ; start_time=[Fri 2026-07-31 10:28:14 MSK] ; stop_time=[Fri 2026-07-31 10:28:15 MSK] ; pid=543032 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-nvme.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":8,\"path\":\"systemd/units/prometheus-node-exporter-smartmon.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/smartmon.sh | sponge /var/lib/prometheus/node-exporter/smartmon.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-smartmon.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/smartmon.sh | sponge /var/lib/prometheus/node-exporter/smartmon.prom ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-smartmon.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":9,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"EnvironmentFile=/etc/default/prometheus-node-exporter\"},{\"line\":10,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"ExecStart=/usr/bin/prometheus-node-exporter $ARGS\"},{\"line\":20,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"ExecStart=\"},{\"line\":21,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"ExecStart=/usr/bin/prometheus-node-exporter --collector.textfile.directory=/var/lib/node_exporter/textfile_collector\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter.service.show.txt\",\"text\":\"ExecStart={ path=/usr/bin/prometheus-node-exporter ; argv[]=/usr/bin/prometheus-node-exporter --collector.textfile.directory=/var/lib/node_exporter/textfile_collector ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter.service.show.txt\",\"text\":\"EnvironmentFiles=/etc/default/prometheus-node-exporter (ignore_errors=no)\"},{\"line\":3,\"path\":\"systemd/units/prometheus-node-exporter.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":10,\"path\":\"systemd/units/proxmox-boot-cleanup.service.cat.txt\",\"text\":\"ExecStart=/usr/sbin/proxmox-boot-tool kernel unpin --next-boot\"},{\"line\":11,\"path\":\"systemd/units/proxmox-boot-cleanup.service.cat.txt\",\"text\":\"ExecStart=/usr/sbin/proxmox-boot-tool refresh\"},{\"line\":1,\"path\":\"systemd/units/proxmox-boot-cleanup.service.show.txt\",\"text\":\"ExecStart={ path=/usr/sbin/proxmox-boot-tool ; argv[]=/usr/sbin/proxmox-boot-tool kernel unpin --next-boot ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/proxmox-boot-cleanup.service.show.txt\",\"text\":\"ExecStart={ path=/usr/sbin/proxmox-boot-tool ; argv[]=/usr/sbin/proxmox-boot-tool refresh ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":3,\"path\":\"systemd/units/proxmox-boot-cleanup.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":24,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev-early.service.cat.txt\",\"text\":\"ExecStart=systemd-tmpfiles --prefix=/dev --create --boot --graceful\"},{\"line\":1,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev-early.service.show.txt\",\"text\":\"ExecStart={ path=systemd-tmpfiles ; argv[]=systemd-tmpfiles --prefix=/dev --create --boot --graceful ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev-early.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":25,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev.service.cat.txt\",\"text\":\"ExecStart=systemd-tmpfiles --prefix=/dev --create --boot\"},{\"line\":1,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev.service.show.txt\",\"text\":\"ExecStart={ path=systemd-tmpfiles ; argv[]=systemd-tmpfiles --prefix=/dev --create --boot ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":7,\"path\":\"containers/podman.json\",\"text\":\"\\\"engine\\\": \\\"podman\\\",\"},{\"line\":5,\"path\":\"source/01_homelab-configs-worktree/OPS_RULES.md\",\"text\":\"- Runtime, Docker, and /opt/stacks commands run only through EDGE SSH.\"},{\"line\":7,\"path\":\"source/01_homelab-configs-worktree/OPS_RULES.md\",\"text\":\"- On edge, never allow implicit Docker Compose default networks.\"},{\"line\":3,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"Документация восстановления homelab-кластера gram1.ru с нуля.\"},{\"line\":9,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Homepage: https://home.gram1.ru\"},{\"line\":10,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Gitea: https://git.gram1.ru\"},{\"line\":11,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Nextcloud: https://nc.gram1.ru\"},{\"line\":12,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Vaultwarden: https://vault.gram1.ru\"},{\"line\":13,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Dockge: https://dockge.gram1.ru\"},{\"line\":14,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Uptime Kuma: http://uptime.gram1.ru\"},{\"line\":15,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Gotify: http://gotify.gram1.ru\"},{\"line\":23,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"5. Не использовать webroot / HTTP-01, пока WAN TCP/80 даёт timeout.\"},{\"line\":41,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"`https://backup.gram1.ru/backup.txt`\"},{\"line\":45,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Dozzle: https://dozzle.gram1.ru\"},{\"line\":46,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Paperless-ngx: https://paper.gram1.ru\"},{\"line\":47,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Memos: https://memos.gram1.ru\"},{\"line\":48,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Immich: https://photos.gram1.ru\"},{\"line\":49,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Authentik: https://auth.gram1.ru\"},{\"line\":53,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- https://home.gram1.ru\"},{\"line\":54,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Backup Health link points to `https://backup.gram1.ru/backup.txt`.\"},{\"line\":58,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"Never commit or print Cloudflare tokens, certbot credentials, `.env`, private keys, passwords, or raw NPMplus `meta`.\"},{\"line\":64,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- URL: `https://backup.gram1.ru/backup.txt`\"},{\"line\":84,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Operational rule: for `systemctl enable/start`, `docker compose`, `apt-get`, and `git push`, judge success by exit code plus explicit verification; informational stderr must not be treated as failure.\"},{\"line\":122,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- Verification at this checkpoint: `photos.gram1.ru` returned 200 and off-host health returned `STATUS=OK`.\"},{\"line\":255,\"path\":\"source/01_homelab-configs-worktree/README.md\",\"text\":\"- `https://backup.gram1.ru/backup.txt`\"},{\"line\":21,\"path\":\"source/01_homelab-configs-worktree/SECURITY.md\",\"text\":\"Cloudflare API tokens, certbot credential files, private keys, `.env` files, passwords, and raw NPMplus `meta` are secrets.\"},{\"line\":9,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/dockge-compose.yaml\",\"text\":\"- /var/run/docker.sock:/var/run/docker.sock\"},{\"line\":3,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/gitea-compose.yaml\",\"text\":\"image: docker.gitea.com/gitea:1.26.2\"},{\"line\":13,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/gitea-compose.yaml\",\"text\":\"GITEA__server__DOMAIN: git.gram1.ru\"},{\"line\":14,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/gitea-compose.yaml\",\"text\":\"GITEA__server__ROOT_URL: https://git.gram1.ru/\"},{\"line\":9,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-compose.yaml\",\"text\":\"HOMEPAGE_ALLOWED_HOSTS: home.gram1.ru,homepage.vpn.gram1.ru\"},{\"line\":3,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://home.gram1.ru\"},{\"line\":7,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://homepage.vpn.gram1.ru\"},{\"line\":8,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"description: VPN alias for Homepage\"},{\"line\":11,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://auth.gram1.ru\"},{\"line\":15,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://auth.vpn.gram1.ru\"},{\"line\":16,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"description: VPN alias for Authentik\"},{\"line\":19,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://vault.gram1.ru\"},{\"line\":23,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://git.gram1.ru\"},{\"line\":27,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://gitea.vpn.gram1.ru\"},{\"line\":28,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"description: VPN alias for Gitea\"},{\"line\":31,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://backup.gram1.ru/backup.txt\"},{\"line\":36,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://uptime.gram1.ru\"},{\"line\":40,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://kuma.vpn.gram1.ru\"},{\"line\":41,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"description: VPN alias for Uptime Kuma\"},{\"line\":44,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://grafana.vpn.gram1.ru\"},{\"line\":48,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://prometheus.vpn.gram1.ru\"},{\"line\":52,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://alertmanager.vpn.gram1.ru\"},{\"line\":56,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://beszel.vpn.gram1.ru\"},{\"line\":60,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://dozzle.gram1.ru\"},{\"line\":61,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"description: Docker logs viewer\"},{\"line\":64,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://ntfy.vpn.gram1.ru\"},{\"line\":68,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://gotify.gram1.ru\"},{\"line\":73,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://checks.vpn.gram1.ru\"},{\"line\":77,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://npmplus.vpn.gram1.ru\"},{\"line\":81,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://dockge.gram1.ru\"},{\"line\":82,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"description: Compose stacks admin\"},{\"line\":85,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://netbox.vpn.gram1.ru\"},{\"line\":90,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://proxmox.vpn.gram1.ru\"},{\"line\":91,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"description: Proxmox node 1\"},{\"line\":94,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://minio.vpn.gram1.ru\"},{\"line\":98,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://filebrowser.vpn.gram1.ru\"},{\"line\":103,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://actual-budget.vpn.gram1.ru\"},{\"line\":107,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://homebox.vpn.gram1.ru\"},{\"line\":111,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://mealie.vpn.gram1.ru\"},{\"line\":115,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://paper.gram1.ru\"},{\"line\":119,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://memos.gram1.ru\"},{\"line\":123,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://linkding.vpn.gram1.ru\"},{\"line\":127,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://karakeep.vpn.gram1.ru\"},{\"line\":131,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://it-tools.vpn.gram1.ru\"},{\"line\":135,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://n8n.vpn.gram1.ru\"},{\"line\":139,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://node-red.vpn.gram1.ru\"},{\"line\":144,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://vikunja.vpn.gram1.ru\"},{\"line\":148,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://bookstack.vpn.gram1.ru\"},{\"line\":152,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://nc.gram1.ru\"},{\"line\":156,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://photos.gram1.ru\"},{\"line\":160,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://syncthing.vpn.gram1.ru\"},{\"line\":165,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://pdf.vpn.gram1.ru\"},{\"line\":169,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://jellyfin.vpn.gram1.ru\"},{\"line\":173,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://audiobooks.vpn.gram1.ru\"},{\"line\":177,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://books.vpn.gram1.ru\"},{\"line\":181,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://homeassistant.vpn.gram1.ru\"},{\"line\":186,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://searxng.vpn.gram1.ru\"},{\"line\":191,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://dns1.vpn.gram1.ru\"},{\"line\":195,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"text\":\"href: https://dns2.vpn.gram1.ru\"},{\"line\":10,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/renovate-config.js\",\"text\":\"gitAuthor: \\\"Renovate Bot <renovate@gram1.ru>\\\",\"},{\"line\":16,\"path\":\"source/01_homelab-configs-worktree/configs/sanitized/edge-vm/renovate-config.js\",\"text\":\"enabledManagers: [\\\"docker-compose\\\",\\\"dockerfile\\\",\\\"github-actions\\\"],\"},{\"line\":3,\"path\":\"source/01_homelab-configs-worktree/docs/00-overview.md\",\"text\":\"Homelab gram1.ru построен вокруг Proxmox-кластера, внутреннего DNS, NPMplus reverse proxy, мониторинга, backup и набора self-hosted сервисов.\"},{\"line\":27,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"Use Cloudflare DNS challenge for internal/private services. Never print Cloudflare tokens, certbot credential files, or NPMplus raw `meta` in chat or logs.\"},{\"line\":29,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"Do not use webroot / HTTP-01 unless WAN TCP/80 reachability is intentionally fixed.\"},{\"line\":37,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"| dozzle.gram1.ru | [PRIVATE_IP] | Dozzle |\"},{\"line\":38,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"| paper.gram1.ru | [PRIVATE_IP] | Paperless-ngx |\"},{\"line\":39,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"| memos.gram1.ru | [PRIVATE_IP] | Memos |\"},{\"line\":40,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"| photos.gram1.ru | [PRIVATE_IP] | Immich |\"},{\"line\":41,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"| auth.gram1.ru | [PRIVATE_IP] | Authentik |\"},{\"line\":42,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"| backup.gram1.ru | [PRIVATE_IP] | Backup health proxy |\"},{\"line\":43,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"| turn.gram1.ru | [PRIVATE_IP] | TURN / Nextcloud-related exception |\"},{\"line\":45,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"Final verified state for `backup.gram1.ru`:\"},{\"line\":49,\"path\":\"source/01_homelab-configs-worktree/docs/01-network-and-dns.md\",\"text\":\"- HTTPS endpoint: `https://backup.gram1.ru/backup.txt`\"},{\"line\":29,\"path\":\"source/01_homelab-configs-worktree/docs/02-backup-and-restore.md\",\"text\":\"https://backup.gram1.ru/backup.txt\"},{\"line\":37,\"path\":\"source/01_homelab-configs-worktree/docs/02-backup-and-restore.md\",\"text\":\"Important: the root path `https://backup.gram1.ru/` may show the NPMplus Default Page. The correct health endpoint is `/backup.txt`.\"},{\"line\":93,\"path\":\"source/01_homelab-configs-worktree/docs/02-backup-and-restore.md\",\"text\":\"- Docker container state on edge-vm.\"},{\"line\":7,\"path\":\"source/01_homelab-configs-worktree/docs/03-proxmox-layout.md\",\"text\":\"| Node | IP | Main role |\"},{\"line\":11,\"path\":\"source/01_homelab-configs-worktree/docs/03-proxmox-layout.md\",\"text\":\"| pve03 | [PRIVATE_IP] | edge-vm with Docker services |\"},{\"line\":18,\"path\":\"source/01_homelab-configs-worktree/docs/03-proxmox-layout.md\",\"text\":\"| 112 | unbound1 | LXC | pve01 | [PRIVATE_IP] | Unbound primary upstream |\"},{\"line\":20,\"path\":\"source/01_homelab-configs-worktree/docs/03-proxmox-layout.md\",\"text\":\"| 113 | unbound2 | LXC | pve02 | [PRIVATE_IP] | Unbound secondary upstream |\"},{\"line\":21,\"path\":\"source/01_homelab-configs-worktree/docs/03-proxmox-layout.md\",\"text\":\"| 130 | edge-vm | VM | pve03 | [PRIVATE_IP] | Docker edge services |\"},{\"line\":44,\"path\":\"source/01_homelab-configs-worktree/docs/03-proxmox-layout.md\",\"text\":\"edge-vm hosts the main Docker service layer.\"},{\"line\":81,\"path\":\"source/01_homelab-configs-worktree/docs/03-proxmox-layout.md\",\"text\":\"## Validation after node restore\"},{\"line\":85,\"path\":\"source/01_homelab-configs-worktree/docs/03-proxmox-layout.md\",\"text\":\"- node is reachable by SSH;\"},{\"line\":107,\"path\":\"source/01_homelab-configs-worktree/docs/03-proxmox-layout.md\",\"text\":\"The previous 4 GB / 2 core sizing was not enough for the expanded Docker service set.\"},{\"line\":124,\"path\":\"source/01_homelab-configs-worktree/docs/03-proxmox-layout.md\",\"text\":\"## Node placement rules\"},{\"line\":15,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Compose path: /opt/npmplus-compose/compose.yaml\"},{\"line\":25,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Compose path: /opt/uptime-kuma-compose/compose.yaml\"},{\"line\":27,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Domain: https://uptime.gram1.ru\"},{\"line\":33,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Compose path: /opt/gotify-compose/compose.yaml\"},{\"line\":35,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Domain: https://gotify.gram1.ru\"},{\"line\":36,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Note: HEAD on root may return 404, so monitoring should accept the proper status range or endpoint.\"},{\"line\":41,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Compose path: /opt/vaultwarden-compose/compose.yaml\"},{\"line\":42,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Data path: /opt/vaultwarden-compose/data\"},{\"line\":44,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Domain: https://vault.gram1.ru\"},{\"line\":51,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Purpose: Docker Compose stack admin for future stacks.\"},{\"line\":52,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Compose path: /opt/dockge-compose/compose.yaml\"},{\"line\":53,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Data path: /opt/dockge-compose/data\"},{\"line\":56,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Domain: https://dockge.gram1.ru\"},{\"line\":58,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Warning: Docker socket access makes Dockge a privileged admin panel.\"},{\"line\":64,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Compose path: /opt/stacks/homepage/compose.yaml\"},{\"line\":67,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Domain: https://home.gram1.ru\"},{\"line\":68,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Docker socket integration disabled.\"},{\"line\":74,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Compose path: /opt/stacks/gitea/compose.yaml\"},{\"line\":77,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Domain: https://git.gram1.ru\"},{\"line\":90,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Domain: https://nc.gram1.ru\"},{\"line\":92,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- TURN: turn.gram1.ru:3478\"},{\"line\":105,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Backup health endpoint: https://backup.gram1.ru/backup.txt\"},{\"line\":115,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"| Dozzle | `/opt/stacks/dozzle` | `http://127.0.0.1:9999` | `https://dozzle.gram1.ru` | id 18 |\"},{\"line\":116,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"| Paperless-ngx | `/opt/stacks/paperless` | `http://127.0.0.1:8010` | `https://paper.gram1.ru` | id 19 |\"},{\"line\":117,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"| Memos | `/opt/stacks/memos` | `http://127.0.0.1:5230` | `https://memos.gram1.ru` | id 20 |\"},{\"line\":118,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"| Immich | `/opt/stacks/immich` | `http://127.0.0.1:2283` | `https://photos.gram1.ru` | id 21 |\"},{\"line\":119,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"| Authentik | `/opt/stacks/authentik` | `http://127.0.0.1:9000` | `https://auth.gram1.ru` | id 22 |\"},{\"line\":127,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- URL: `https://backup.gram1.ru/backup.txt`\"},{\"line\":136,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"`https://backup.gram1.ru/backup.txt`\"},{\"line\":148,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- root path may show the NPMplus Default Page and should not be used as the health check.\"},{\"line\":152,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- dns1 / `[PRIVATE_IP]`: `backup.gram1.ru -> [PRIVATE_IP]`\"},{\"line\":153,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- dns2 / `[PRIVATE_IP]`: `backup.gram1.ru -> [PRIVATE_IP]`\"},{\"line\":157,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"`edge-vm` was resized to 12 GB RAM and 4 CPU cores after the first 4 GB / 2 core sizing proved too small for the expanded Docker service set.\"},{\"line\":176,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Operational rule: for `systemctl enable/start`, `docker compose`, `apt-get`, and `git push`, judge success by exit code plus explicit verification; informational stderr must not be treated as failure.\"},{\"line\":214,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- Verification at this checkpoint: `photos.gram1.ru` returned 200 and off-host health returned `STATUS=OK`.\"},{\"line\":347,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"- `https://backup.gram1.ru/backup.txt`\"},{\"line\":368,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"Homepage was reorganized into operational groups and user-facing internal services were made clickable through VPN-only `*.vpn.gram1.ru` routes.\"},{\"line\":372,\"path\":\"source/01_homelab-configs-worktree/docs/05-service-catalog.md\",\"text\":\"The visible-only cards are intentionally limited to metrics/API/status-only services: Loki, Alloy, Node Exporter, Registry Cache, CrowdSec, and DIUN.\"},{\"line\":9,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"Do not use webroot or HTTP-01 unless WAN TCP 80 reachability is intentionally fixed and verified.\"},{\"line\":13,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"1. Make sure certbot is not already running.\"},{\"line\":22,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"10. Wait for certbot to finish.\"},{\"line\":27,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"## Check certbot process\"},{\"line\":31,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"Command idea: ssh to edge-vm and run pgrep -af certbot.\"},{\"line\":33,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"If certbot is running, do not click the NPMplus certificate button again.\"},{\"line\":37,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"Observed with dockge.gram1.ru.\"},{\"line\":48,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"Observed after DNS was fixed for dockge.gram1.ru.\"},{\"line\":54,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"## Error: Another instance of Certbot is already running\"},{\"line\":56,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"Observed when a certificate request was clicked again while another certbot process was still running.\"},{\"line\":62,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"Observed with home.gram1.ru and git.gram1.ru before certificate completion.\"},{\"line\":84,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"The Docker subnet used by Uptime Kuma may need to be allowed, for example [PRIVATE_IP]/16.\"},{\"line\":94,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"- vault.gram1.ru: Lets Encrypt via Cloudflare DNS challenge.\"},{\"line\":95,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"- dockge.gram1.ru: Lets Encrypt via Cloudflare DNS challenge.\"},{\"line\":96,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"- home.gram1.ru: Lets Encrypt via Cloudflare DNS challenge.\"},{\"line\":97,\"path\":\"source/01_homelab-configs-worktree/docs/06-certificates-troubleshooting.md\",\"text\":\"- git.gram1.ru: Lets Encrypt via Cloudflare DNS challenge.\"},{\"line\":7,\"path\":\"source/01_homelab-configs-worktree/docs/07-gitea-workflow.md\",\"text\":\"- URL: https://git.gram1.ru/homelab-admin/homelab-configs\"},{\"line\":16,\"path\":\"source/01_homelab-configs-worktree/docs/07-gitea-workflow.md\",\"text\":\"- Safe compose snapshots without secrets.\"},{\"line\":7,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Remote: https://git.gram1.ru/homelab-admin/homelab-configs\"},{\"line\":17,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Do not print secrets, tokens, private keys, `.env`, NPMplus raw `meta`, or certbot credential contents.\"},{\"line\":27,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Public health URL: https://backup.gram1.ru/backup.txt\"},{\"line\":30,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Important: `https://backup.gram1.ru/` may show the NPMplus Default Page and should not be used as the health check.\"},{\"line\":43,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| Node | IP | Role |\"},{\"line\":55,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| edge-vm | VM130 | pve03 | [PRIVATE_IP] | Docker edge, 12 GB RAM, 4 cores |\"},{\"line\":61,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Compose path: /opt/npmplus-compose/compose.yaml\"},{\"line\":69,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Domain: backup.gram1.ru\"},{\"line\":72,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Certbot cert name: npm-31\"},{\"line\":74,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Public URL: https://backup.gram1.ru/backup.txt\"},{\"line\":78,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Certificate id 30 covers dozzle.gram1.ru, paper.gram1.ru, memos.gram1.ru, photos.gram1.ru, auth.gram1.ru.\"},{\"line\":87,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| dozzle.gram1.ru | [PRIVATE_IP] |\"},{\"line\":88,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| paper.gram1.ru | [PRIVATE_IP] |\"},{\"line\":89,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| memos.gram1.ru | [PRIVATE_IP] |\"},{\"line\":90,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| photos.gram1.ru | [PRIVATE_IP] |\"},{\"line\":91,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| auth.gram1.ru | [PRIVATE_IP] |\"},{\"line\":92,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| backup.gram1.ru | [PRIVATE_IP] |\"},{\"line\":93,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| turn.gram1.ru | [PRIVATE_IP] |\"},{\"line\":99,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- HTTPS https://backup.gram1.ru/backup.txt returns 200 and STATUS=OK\"},{\"line\":105,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| Dozzle | /opt/stacks/dozzle | http://127.0.0.1:9999 | https://dozzle.gram1.ru | id 18 |\"},{\"line\":106,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| Paperless-ngx | /opt/stacks/paperless | http://127.0.0.1:8010 | https://paper.gram1.ru | id 19 |\"},{\"line\":107,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| Memos | /opt/stacks/memos | http://127.0.0.1:5230 | https://memos.gram1.ru | id 20 |\"},{\"line\":108,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| Immich | /opt/stacks/immich | http://127.0.0.1:2283 | https://photos.gram1.ru | id 21 |\"},{\"line\":109,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"| Authentik | /opt/stacks/authentik | http://127.0.0.1:9000 | https://auth.gram1.ru | id 22 |\"},{\"line\":113,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- URL: https://home.gram1.ru\"},{\"line\":116,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Backup Health link points to https://backup.gram1.ru/backup.txt.\"},{\"line\":121,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- Public/LAN URL: https://uptime.gram1.ru\"},{\"line\":129,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- 23: Backup Health / https://backup.gram1.ru/backup.txt\"},{\"line\":134,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- New token was installed in NPMplus DB meta and certbot credential files without printing token contents.\"},{\"line\":143,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- https://nc.gram1.ru\"},{\"line\":144,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- https://vault.gram1.ru\"},{\"line\":145,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\",\"text\":\"- https://dockge.gram1.ru\"}],\"detected_frameworks\":[\"Docker Compose\"],\"directory\":\"hosts/local\",\"domain_match_count\":1000,\"domain_matches\":[{\"lines\":[{\"line\":345,\"text\":\"        \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":463,\"text\":\"            {\\\"host\\\": \\\"pve01.gram1.ru\\\", \\\"runtime\\\": \\\"python3\\\", \\\"compile\\\": \\\"python3 compile()\\\"}\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1785436778529839357,\"path\":\"/opt/homelab-admin/libexec/homelab-admin-lint\",\"sha256\":\"d5a56d702379c9834a103401147436b1243cc5e1c0fe961fb8d8c090db19ad2c\",\"size\":22756,\"uid\":0},\"path\":\"/opt/homelab-admin/libexec/homelab-admin-lint\"},{\"lines\":[{\"line\":11,\"text\":\"EXPECTED_HOST=\\\"${HOMELAB_EXPECTED_HOST:-pve01.gram1.ru}\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1784108548897502927,\"path\":\"/opt/homelab-admin/bin/homelab-admin\",\"sha256\":\"5398600c15b63f3872116e6d1ae6f65e2d7a5d1752349c9de0de07d801967bd1\",\"size\":9589,\"uid\":0},\"path\":\"/opt/homelab-admin/bin/homelab-admin\"},{\"lines\":[{\"line\":13,\"text\":\"    \\\"pve01.gram1.ru\\\": \\\"pve01\\\",\"},{\"line\":14,\"text\":\"    \\\"pve02.gram1.ru\\\": \\\"pve02\\\",\"},{\"line\":15,\"text\":\"    \\\"pve03.gram1.ru\\\": \\\"pve03\\\",\"},{\"line\":16,\"text\":\"    \\\"edge-vm.gram1.ru\\\": \\\"edge\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1784026163276834491,\"path\":\"/opt/cluster-admin-probe-target/responder.py\",\"sha256\":\"3e7585050d734ef0e3ccec7f98bde3626db31a6fd05e60dfb6f9976b371dea3c\",\"size\":2648,\"uid\":0},\"path\":\"/opt/cluster-admin-probe-target/responder.py\"},{\"lines\":[{\"line\":4,\"text\":\"Collector: `pve01.gram1.ru`\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495133884419331,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/CURRENT_CONTEXT.md\",\"sha256\":\"9a772d6e8d6438e84b0d2459c69cd99dc51820dba46fae3897c94a661a43a993\",\"size\":1147,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/CURRENT_CONTEXT.md\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"collector_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":124,\"text\":\"    \\\"remote\\\": \\\"https://git.gram1.ru/homelab-admin/homelab-ops.git\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495133885547518,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/current-context.json\",\"sha256\":\"d2c7e06967fd76e09bb8ca694f5132aadd65a9eca35fca8ba92ac11c168d4ebb\",\"size\":6036,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/current-context.json\"},{\"lines\":[{\"line\":5,\"text\":\"  \\\"collector_host\\\": \\\"pve01.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495776231298902,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/live-verification-summary.json\",\"sha256\":\"6b9b7511cdae678efde036f0413c5fc26c3babf50ffd12c3777c39a20d9efe7e\",\"size\":787,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/live-verification-summary.json\"},{\"lines\":[{\"line\":217,\"text\":\"        \\\"searchdomain\\\": \\\"gram1.ru\\\",\"},{\"line\":247,\"text\":\"        \\\"searchdomain\\\": \\\"gram1.ru\\\",\"},{\"line\":282,\"text\":\"        \\\"searchdomain\\\": \\\"gram1.ru\\\",\"},{\"line\":408,\"text\":\"        \\\"searchdomain\\\": \\\"gram1.ru\\\",\"},{\"line\":922,\"text\":\"        \\\"searchdomain\\\": \\\"gram1.ru\\\",\"},{\"line\":1374,\"text\":\"        \\\"searchdomain\\\": \\\"gram1.ru\\\",\"},{\"line\":2952,\"text\":\"        \\\"searchdomain\\\": \\\"gram1.ru\\\",\"},{\"line\":2982,\"text\":\"        \\\"searchdomain\\\": \\\"gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784497022613291200,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/guests/management-discovery.json\",\"sha256\":\"fa7c99412123dbb529127644800b2527e16a86692fd54bda61c0a62dcb372548\",\"size\":86524,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/guests/management-discovery.json\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"collector_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":26,\"text\":\"          \\\"url\\\": \\\"https://actual-budget.vpn.gram1.ru\\\",\"},{\"line\":36,\"text\":\"          \\\"effective_url\\\": \\\"https://actual-budget.vpn.gram1.ru/\\\",\"},{\"line\":56,\"text\":\"          \\\"url\\\": \\\"https://alertmanager.vpn.gram1.ru\\\",\"},{\"line\":66,\"text\":\"          \\\"effective_url\\\": \\\"https://alertmanager.vpn.gram1.ru/\\\",\"},{\"line\":86,\"text\":\"          \\\"url\\\": \\\"https://audiobooks.vpn.gram1.ru\\\",\"},{\"line\":96,\"text\":\"          \\\"effective_url\\\": \\\"https://audiobooks.vpn.gram1.ru/\\\",\"},{\"line\":116,\"text\":\"          \\\"url\\\": \\\"https://auth.gram1.ru\\\",\"},{\"line\":126,\"text\":\"          \\\"effective_url\\\": \\\"https://auth.gram1.ru/if/flow/default-authentication-flow/?next=%2F\\\",\"},{\"line\":146,\"text\":\"          \\\"url\\\": \\\"https://backup.gram1.ru/backup.txt\\\",\"},{\"line\":156,\"text\":\"          \\\"effective_url\\\": \\\"https://backup.gram1.ru/backup.txt\\\",\"},{\"line\":163,\"text\":\"          \\\"url\\\": \\\"https://backup.gram1.ru/overall.txt\\\",\"},{\"line\":173,\"text\":\"          \\\"effective_url\\\": \\\"https://backup.gram1.ru/overall.txt\\\",\"},{\"line\":193,\"text\":\"          \\\"url\\\": \\\"https://beszel.vpn.gram1.ru\\\",\"},{\"line\":203,\"text\":\"          \\\"effective_url\\\": \\\"https://beszel.vpn.gram1.ru/\\\",\"},{\"line\":253,\"text\":\"          \\\"url\\\": \\\"https://bookstack.vpn.gram1.ru\\\",\"},{\"line\":263,\"text\":\"          \\\"effective_url\\\": \\\"https://bookstack.vpn.gram1.ru/login\\\",\"},{\"line\":313,\"text\":\"          \\\"url\\\": \\\"https://books.vpn.gram1.ru\\\",\"},{\"line\":323,\"text\":\"          \\\"effective_url\\\": \\\"https://books.vpn.gram1.ru/login?next=%2Fadmin%2Fdbconfig\\\",\"},{\"line\":373,\"text\":\"          \\\"url\\\": \\\"https://cluster-admin.vpn.gram1.ru/status.txt\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495776230298887,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/services/index.json\",\"sha256\":\"0046ef9897703f2462d7022a3236b7fa40070a625deca3f383eea90d01eca4a5\",\"size\":46003,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/services/index.json\"},{\"lines\":[{\"line\":48,\"text\":\"      \\\"expected_hostname\\\": \\\"forum-prod.gram1.ru\\\",\"},{\"line\":62,\"text\":\"      \\\"expected_hostname\\\": \\\"monitoring.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784497022644300719,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/findings/access-gaps.json\",\"sha256\":\"6358da671fbcfb7cc5d42eea6ba95c7056d6dda494d7e25f5b472bddaa0f0492\",\"size\":2925,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/findings/access-gaps.json\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"collector_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":19,\"text\":\"      \\\"expected_hostname\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":20,\"text\":\"      \\\"actual_hostname\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":34,\"text\":\"      \\\"expected_hostname\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":35,\"text\":\"      \\\"actual_hostname\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":49,\"text\":\"      \\\"expected_hostname\\\": \\\"pve03.gram1.ru\\\",\"},{\"line\":50,\"text\":\"      \\\"actual_hostname\\\": \\\"pve03.gram1.ru\\\",\"},{\"line\":64,\"text\":\"      \\\"expected_hostname\\\": \\\"edge-vm.gram1.ru\\\",\"},{\"line\":65,\"text\":\"      \\\"actual_hostname\\\": \\\"edge-vm.gram1.ru\\\",\"},{\"line\":79,\"text\":\"      \\\"expected_hostname\\\": \\\"forum-prod.gram1.ru\\\",\"},{\"line\":92,\"text\":\"      \\\"expected_hostname\\\": \\\"core-apps.gram1.ru\\\",\"},{\"line\":93,\"text\":\"      \\\"actual_hostname\\\": \\\"core-apps.gram1.ru\\\",\"},{\"line\":107,\"text\":\"      \\\"expected_hostname\\\": \\\"cluster-admin.gram1.ru\\\",\"},{\"line\":108,\"text\":\"      \\\"actual_hostname\\\": \\\"cluster-admin.gram1.ru\\\",\"},{\"line\":137,\"text\":\"      \\\"expected_hostname\\\": \\\"monitoring.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495776229298871,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/access/index.json\",\"sha256\":\"3b2324041ed71e69407195809a383f45ab16e3e6056c5249ad71fe4ae142d237\",\"size\":4499,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/observed/access/index.json\"},{\"lines\":[{\"line\":14,\"text\":\"      \\\"expected_hostname\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":15,\"text\":\"      \\\"actual_hostname\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":28,\"text\":\"      \\\"expected_hostname\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":29,\"text\":\"      \\\"actual_hostname\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":42,\"text\":\"      \\\"expected_hostname\\\": \\\"pve03.gram1.ru\\\",\"},{\"line\":43,\"text\":\"      \\\"actual_hostname\\\": \\\"pve03.gram1.ru\\\",\"},{\"line\":56,\"text\":\"      \\\"expected_hostname\\\": \\\"edge-vm.gram1.ru\\\",\"},{\"line\":57,\"text\":\"      \\\"actual_hostname\\\": \\\"edge-vm.gram1.ru\\\",\"},{\"line\":70,\"text\":\"      \\\"expected_hostname\\\": \\\"forum-prod.gram1.ru\\\",\"},{\"line\":84,\"text\":\"      \\\"expected_hostname\\\": \\\"core-apps.gram1.ru\\\",\"},{\"line\":85,\"text\":\"      \\\"actual_hostname\\\": \\\"core-apps.gram1.ru\\\",\"},{\"line\":98,\"text\":\"      \\\"expected_hostname\\\": \\\"cluster-admin.gram1.ru\\\",\"},{\"line\":99,\"text\":\"      \\\"actual_hostname\\\": \\\"cluster-admin.gram1.ru\\\",\"},{\"line\":126,\"text\":\"      \\\"expected_hostname\\\": \\\"monitoring.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784497022643731409,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/access-evidence.json\",\"sha256\":\"5568a9b1d5e29930b602a2345e5c44352e9fffa9ae9b57aaa14dcdd8052e1397\",\"size\":7540,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/access-evidence.json\"},{\"lines\":[{\"line\":6,\"text\":\"      \\\"target\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":13,\"text\":\"      \\\"target\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":20,\"text\":\"      \\\"target\\\": \\\"pve03.gram1.ru\\\",\"},{\"line\":27,\"text\":\"      \\\"target\\\": \\\"edge-vm.gram1.ru\\\",\"},{\"line\":34,\"text\":\"      \\\"target\\\": \\\"forum-prod.gram1.ru\\\",\"},{\"line\":41,\"text\":\"      \\\"target\\\": \\\"core-apps.gram1.ru\\\",\"},{\"line\":48,\"text\":\"      \\\"target\\\": \\\"cluster-admin.gram1.ru\\\",\"},{\"line\":62,\"text\":\"      \\\"target\\\": \\\"monitoring.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495133885246039,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/access-paths.json\",\"sha256\":\"ac5dc881dcd9fcb72644bc893e866f463c9c2b9b4544e32434e21b5d34168fb5\",\"size\":1652,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/access-paths.json\"},{\"lines\":[{\"line\":9,\"text\":\"        \\\"pve01.gram1.ru\\\"\"},{\"line\":12,\"text\":\"      \\\"expected_hostname\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":31,\"text\":\"        \\\"pve02.gram1.ru\\\"\"},{\"line\":34,\"text\":\"      \\\"expected_hostname\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":53,\"text\":\"        \\\"pve03.gram1.ru\\\"\"},{\"line\":56,\"text\":\"      \\\"expected_hostname\\\": \\\"pve03.gram1.ru\\\",\"},{\"line\":135,\"text\":\"        \\\"edge-vm.gram1.ru\\\"\"},{\"line\":138,\"text\":\"      \\\"expected_hostname\\\": \\\"edge-vm.gram1.ru\\\",\"},{\"line\":174,\"text\":\"        \\\"forum-prod.gram1.ru\\\"\"},{\"line\":177,\"text\":\"      \\\"expected_hostname\\\": \\\"forum-prod.gram1.ru\\\",\"},{\"line\":198,\"text\":\"        \\\"core-apps.gram1.ru\\\"\"},{\"line\":201,\"text\":\"      \\\"expected_hostname\\\": \\\"core-apps.gram1.ru\\\",\"},{\"line\":222,\"text\":\"        \\\"monitoring.gram1.ru\\\"\"},{\"line\":225,\"text\":\"      \\\"expected_hostname\\\": \\\"monitoring.gram1.ru\\\",\"},{\"line\":246,\"text\":\"        \\\"cluster-admin.gram1.ru\\\"\"},{\"line\":249,\"text\":\"      \\\"expected_hostname\\\": \\\"cluster-admin.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784495133909456622,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/hosts.json\",\"sha256\":\"c0fe9677e338f34db252dda89ffdcd28fd23986fb9c219fe8c8b419d3b0c3967\",\"size\":8502,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/hosts.json\"},{\"lines\":[{\"line\":10,\"text\":\"      \\\"remote_url\\\": \\\"https://git.gram1.ru/homelab-admin/homelab-ops.git\\\",\"},{\"line\":21,\"text\":\"      \\\"remote_url\\\": \\\"https://git.gram1.ru/homelab-admin/homelab-desired-state.git\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784495133915442036,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/repositories.json\",\"sha256\":\"3a03a32a211559b3af512ba37ac503a5504631c22850a117cf0c34c611b69112\",\"size\":937,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/repositories.json\"},{\"lines\":[{\"line\":16,\"text\":\"          \\\"url\\\": \\\"https://actual-budget.vpn.gram1.ru\\\",\"},{\"line\":46,\"text\":\"          \\\"url\\\": \\\"https://alertmanager.vpn.gram1.ru\\\",\"},{\"line\":76,\"text\":\"          \\\"url\\\": \\\"https://audiobooks.vpn.gram1.ru\\\",\"},{\"line\":106,\"text\":\"          \\\"url\\\": \\\"https://auth.gram1.ru\\\",\"},{\"line\":141,\"text\":\"          \\\"url\\\": \\\"https://backup.gram1.ru/backup.txt\\\",\"},{\"line\":145,\"text\":\"          \\\"url\\\": \\\"https://backup.gram1.ru/overall.txt\\\",\"},{\"line\":175,\"text\":\"          \\\"url\\\": \\\"https://beszel.vpn.gram1.ru\\\",\"},{\"line\":235,\"text\":\"          \\\"url\\\": \\\"https://bookstack.vpn.gram1.ru\\\",\"},{\"line\":300,\"text\":\"          \\\"url\\\": \\\"https://books.vpn.gram1.ru\\\",\"},{\"line\":360,\"text\":\"          \\\"url\\\": \\\"https://cluster-admin.vpn.gram1.ru/status.txt\\\",\"},{\"line\":390,\"text\":\"          \\\"url\\\": \\\"https://gram1.ru/\\\",\"},{\"line\":420,\"text\":\"          \\\"url\\\": \\\"https://dns1.vpn.gram1.ru\\\",\"},{\"line\":450,\"text\":\"          \\\"url\\\": \\\"https://dns2.vpn.gram1.ru\\\",\"},{\"line\":482,\"text\":\"          \\\"url\\\": \\\"https://dockge.gram1.ru\\\",\"},{\"line\":540,\"text\":\"          \\\"url\\\": \\\"https://dozzle.gram1.ru\\\",\"},{\"line\":570,\"text\":\"          \\\"url\\\": \\\"https://filebrowser.vpn.gram1.ru\\\",\"},{\"line\":600,\"text\":\"          \\\"url\\\": \\\"https://git.gram1.ru\\\",\"},{\"line\":635,\"text\":\"          \\\"url\\\": \\\"https://gotify.gram1.ru\\\",\"},{\"line\":670,\"text\":\"          \\\"url\\\": \\\"https://grafana.vpn.gram1.ru\\\",\"},{\"line\":725,\"text\":\"          \\\"url\\\": \\\"https://checks.vpn.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784495133918006174,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/services.json\",\"sha256\":\"189ab606f9de7b379b03510aef024def88ab91a1e2782d0c7d74fe93fa61509b\",\"size\":43565,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/services.json\"},{\"lines\":[{\"line\":13,\"text\":\"        \\\"fqdn\\\": \\\"pve01.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784497007814974332,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/execution-contexts.json\",\"sha256\":\"75e9716477032a09924d6b8f2bfe485b5a008119539ae10c315a6e306c57fc3b\",\"size\":1579,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/execution-contexts.json\"},{\"lines\":[{\"line\":19,\"text\":\"        \\\"pve01.gram1.ru\\\"\"},{\"line\":28,\"text\":\"      \\\"expected_hostname\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":53,\"text\":\"        \\\"pve02.gram1.ru\\\"\"},{\"line\":62,\"text\":\"      \\\"expected_hostname\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":87,\"text\":\"        \\\"pve03.gram1.ru\\\"\"},{\"line\":96,\"text\":\"      \\\"expected_hostname\\\": \\\"pve03.gram1.ru\\\",\"},{\"line\":121,\"text\":\"        \\\"edge-vm.gram1.ru\\\"\"},{\"line\":130,\"text\":\"      \\\"expected_hostname\\\": \\\"edge-vm.gram1.ru\\\",\"},{\"line\":155,\"text\":\"        \\\"forum-prod.gram1.ru\\\"\"},{\"line\":164,\"text\":\"      \\\"expected_hostname\\\": \\\"forum-prod.gram1.ru\\\",\"},{\"line\":190,\"text\":\"        \\\"core-apps.gram1.ru\\\"\"},{\"line\":199,\"text\":\"      \\\"expected_hostname\\\": \\\"core-apps.gram1.ru\\\",\"},{\"line\":224,\"text\":\"        \\\"cluster-admin.gram1.ru\\\"\"},{\"line\":233,\"text\":\"      \\\"expected_hostname\\\": \\\"cluster-admin.gram1.ru\\\",\"},{\"line\":300,\"text\":\"        \\\"monitoring.gram1.ru\\\"\"},{\"line\":309,\"text\":\"      \\\"expected_hostname\\\": \\\"monitoring.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784495133907632717,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/access-registry.json\",\"sha256\":\"a3dd86cf081def8772b16ce798beb733825183466d46a3997b43aff250c68563\",\"size\":9641,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/inventory/access-registry.json\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":98,\"text\":\"      \\\"host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":103,\"text\":\"      \\\"host\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":108,\"text\":\"      \\\"host\\\": \\\"pve03.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495133886066538,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\",\"sha256\":\"636254d2526f0f62184d47cdb4c30c2831b11869c2000c557666f60b55d7691b\",\"size\":7440,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\"},{\"lines\":[{\"line\":14,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784495133886066538,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"sha256\":\"a49bcb32ac7212d7fb9768db8a277cb5525c873c84dd6fb633edae35dc6de532\",\"size\":4667,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":122,\"text\":\"      \\\"host\\\": \\\"pve01.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495133886318234,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/homelab-logrotate-namespace-latch-clearance-v1/task.json\",\"sha256\":\"3a8fdfb6b4b64880012fcc3bc6fee4be6f101377310325541f9776de6d1623f7\",\"size\":6750,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/homelab-logrotate-namespace-latch-clearance-v1/task.json\"},{\"lines\":[{\"line\":8,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784495133886318234,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\",\"sha256\":\"21802253966e8d94e8404fd6a217c8248004091dc9dd3b4c03193e3c81af4609\",\"size\":1869,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":111,\"text\":\"      \\\"host\\\": \\\"pve01.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495133886993643,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/skladchik-reports-monitor-controlled-reauth-v1/task.json\",\"sha256\":\"d3108777e5094468aa3e633740ce8a56c90ca957a9a62932be896bbe784680b0\",\"size\":13579,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/skladchik-reports-monitor-controlled-reauth-v1/task.json\"},{\"lines\":[{\"line\":11,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784495133886993643,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\",\"sha256\":\"f3e533ebd72ba2343a78797a8087c529c9fcfa2b3cabc45b3c0bd477356a8cc9\",\"size\":3076,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\"},{\"lines\":[{\"line\":112,\"text\":\"    if fqdn != \\\"pve01.gram1.ru\\\":\"},{\"line\":210,\"text\":\"            \\\"remote\\\": \\\"https://git.gram1.ru/homelab-admin/homelab-ops.git\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495133887204143,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tools/collect_context.py\",\"sha256\":\"4d42623567c9e30d46a78bccd30c754319712d64012c722c33265e7de62c017c\",\"size\":11071,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tools/collect_context.py\"},{\"lines\":[{\"line\":93,\"text\":\"    assert_true(context.get(\\\"collector_host\\\") == \\\"pve01.gram1.ru\\\", \\\"unexpected collector host\\\")\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784495133942768953,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tools/validate_repo.py\",\"sha256\":\"b187206b0d2cbcb9e9ea03522bae0f0097a7d9925d3d433ef3e7c15e9def73d1\",\"size\":6226,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tools/validate_repo.py\"},{\"lines\":[{\"line\":110,\"text\":\"        require(repo[\\\"remote_url\\\"].startswith(\\\"https://git.gram1.ru/\\\"), f\\\"repository remote mismatch: {repo['id']}\\\")\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1784495764389647511,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tools/validate_inventory.py\",\"sha256\":\"b557babe3ca63de809be5793e88dfa8d5f4ae9f2d1834713d114ce802820fc5e\",\"size\":9527,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tools/validate_inventory.py\"},{\"lines\":[{\"line\":180,\"text\":\"        \\\"detected_collector_context\\\": \\\"pve01-root\\\" if socket.getfqdn() == \\\"pve01.gram1.ru\\\" and os.geteuid() == 0 else \\\"unknown\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1784497007832257887,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tools/reconcile_access_contexts.py\",\"sha256\":\"59b37a01607fc8e7e53dd22fafa513450b1088a6cc5eca6edae9548e5d708e92\",\"size\":11655,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tools/reconcile_access_contexts.py\"},{\"lines\":[{\"line\":158,\"text\":\"    if socket.getfqdn() != \\\"pve01.gram1.ru\\\" or os.geteuid() != 0:\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1784497007829357325,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tools/discover_guest_management.py\",\"sha256\":\"f25f417f3ce3234ac183f03aba22280f653943824286b267e8374f2fafa86720\",\"size\":12247,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tools/discover_guest_management.py\"},{\"lines\":[{\"line\":157,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784495133887716127,\"path\":\"<REDACTED_TOKEN>\",\"sha256\":\"1e2f5323abf880f3e8b17bf1f2d0a844c402a9bbf5f24159ed39aaf1d79caef0\",\"size\":10086,\"uid\":0},\"path\":\"<REDACTED_TOKEN>\"},{\"lines\":[{\"line\":31,\"text\":\"        self.assertEqual(target[\\\"expected_hostname\\\"], \\\"pve03.gram1.ru\\\")\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784495133937361990,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tests/test_inventory_foundation.py\",\"sha256\":\"2142fd35c4927b17d33aa35d584267b7b17430ddfe52ab85d0a49dc7c7ee8ed1\",\"size\":4026,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tests/test_inventory_foundation.py\"},{\"lines\":[{\"line\":24,\"text\":\"      \\\"const\\\": \\\"pve01.gram1.ru\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784495133885820162,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/schemas/context.schema.json\",\"sha256\":\"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043\",\"size\":539,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/schemas/context.schema.json\"},{\"lines\":[{\"line\":4,\"text\":\"Collector: `pve01.gram1.ru`\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784458148522837462,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/CURRENT_CONTEXT.md\",\"sha256\":\"9a772d6e8d6438e84b0d2459c69cd99dc51820dba46fae3897c94a661a43a993\",\"size\":1147,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/CURRENT_CONTEXT.md\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"collector_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":124,\"text\":\"    \\\"remote\\\": \\\"https://git.gram1.ru/homelab-admin/homelab-ops.git\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784458148525128655,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/observed/current-context.json\",\"sha256\":\"d2c7e06967fd76e09bb8ca694f5132aadd65a9eca35fca8ba92ac11c168d4ebb\",\"size\":6036,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/observed/current-context.json\"},{\"lines\":[{\"line\":6,\"text\":\"      \\\"target\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":13,\"text\":\"      \\\"target\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":20,\"text\":\"      \\\"target\\\": \\\"pve03.gram1.ru\\\",\"},{\"line\":27,\"text\":\"      \\\"target\\\": \\\"edge-vm.gram1.ru\\\",\"},{\"line\":34,\"text\":\"      \\\"target\\\": \\\"forum-prod.gram1.ru\\\",\"},{\"line\":41,\"text\":\"      \\\"target\\\": \\\"core-apps.gram1.ru\\\",\"},{\"line\":48,\"text\":\"      \\\"target\\\": \\\"cluster-admin.gram1.ru\\\",\"},{\"line\":62,\"text\":\"      \\\"target\\\": \\\"monitoring.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784458148524623846,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/inventory/access-paths.json\",\"sha256\":\"ac5dc881dcd9fcb72644bc893e866f463c9c2b9b4544e32434e21b5d34168fb5\",\"size\":1652,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/inventory/access-paths.json\"},{\"lines\":[{\"line\":7,\"text\":\"  \\\"target_node\\\": \\\"pve03.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784473042934789545,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/changes/CR-2026-0015/plan.json\",\"sha256\":\"978093bb17d307cabadfb48ffc2d3f9458071528abb69100334cbbce72267d47\",\"size\":1338,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/changes/CR-2026-0015/plan.json\"},{\"lines\":[{\"line\":391,\"text\":\"      \\\"required_control\\\": \\\"Preflight and the remote worker must require pve03.gram1.ru, interface nic1, driver r8152, link detected, quorum and exactly three nodes before mutation.\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784473042945809454,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/errors/regression-cases.json\",\"sha256\":\"07c9854ab0232d1f2766cdab114d0d398a4dcc1a5b41ea7fde77646e5f42804e\",\"size\":38408,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/errors/regression-cases.json\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":98,\"text\":\"      \\\"host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":103,\"text\":\"      \\\"host\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":108,\"text\":\"      \\\"host\\\": \\\"pve03.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784458148526295291,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\",\"sha256\":\"636254d2526f0f62184d47cdb4c30c2831b11869c2000c557666f60b55d7691b\",\"size\":7440,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\"},{\"lines\":[{\"line\":14,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784458148526295291,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"sha256\":\"a49bcb32ac7212d7fb9768db8a277cb5525c873c84dd6fb633edae35dc6de532\",\"size\":4667,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":122,\"text\":\"      \\\"host\\\": \\\"pve01.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784458148526834032,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/homelab-logrotate-namespace-latch-clearance-v1/task.json\",\"sha256\":\"3a8fdfb6b4b64880012fcc3bc6fee4be6f101377310325541f9776de6d1623f7\",\"size\":6750,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/homelab-logrotate-namespace-latch-clearance-v1/task.json\"},{\"lines\":[{\"line\":8,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784458148526834032,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\",\"sha256\":\"21802253966e8d94e8404fd6a217c8248004091dc9dd3b4c03193e3c81af4609\",\"size\":1869,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":111,\"text\":\"      \\\"host\\\": \\\"pve01.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784458148528120612,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/skladchik-reports-monitor-controlled-reauth-v1/task.json\",\"sha256\":\"d3108777e5094468aa3e633740ce8a56c90ca957a9a62932be896bbe784680b0\",\"size\":13579,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/skladchik-reports-monitor-controlled-reauth-v1/task.json\"},{\"lines\":[{\"line\":11,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784458148528120612,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\",\"sha256\":\"f3e533ebd72ba2343a78797a8087c529c9fcfa2b3cabc45b3c0bd477356a8cc9\",\"size\":3076,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":86,\"text\":\"      \\\"host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":91,\"text\":\"      \\\"host\\\": \\\"pve03.gram1.ru\\\",\"},{\"line\":117,\"text\":\"    \\\"target_node\\\": \\\"pve03.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784473042968224809,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/pve03-r8152-rx-ring-canary-v1/task.json\",\"sha256\":\"c5f36cd51d38da66d5c2e517ff850f996b04b4be4ee9a5529f991687bb7bb429\",\"size\":7694,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/pve03-r8152-rx-ring-canary-v1/task.json\"},{\"lines\":[{\"line\":38,\"text\":\"  case \\\"$(hostname -f 2>/dev/null || hostname)\\\" in pve03|pve03.gram1.ru) :;; *) return 66;; esac\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1784473042949900157,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/pve03-r8152-rx-ring-canary-v1/assets/pve03-r8152-rx-ring-canary.sh\",\"sha256\":\"b8a3a60b907ca8d021f1ddda84333349db1ce97e655b2b7a3d3222e3e8235c2c\",\"size\":9986,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/pve03-r8152-rx-ring-canary-v1/assets/pve03-r8152-rx-ring-canary.sh\"},{\"lines\":[{\"line\":10,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"},{\"line\":12,\"text\":\"test \\\"$(ssh \\\"${SSH_BASE[@]}\\\" \\\"$REMOTE_HOST\\\" /bin/hostname -f)\\\" = pve03.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1784473042956561556,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/pve03-r8152-rx-ring-canary-v1/phases/preflight.sh\",\"sha256\":\"fe88e11652bdfeaabf0b24947c044985db265cb593dea201e07cd542842502a7\",\"size\":3441,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tasks/pve03-r8152-rx-ring-canary-v1/phases/preflight.sh\"},{\"lines\":[{\"line\":112,\"text\":\"    if fqdn != \\\"pve01.gram1.ru\\\":\"},{\"line\":210,\"text\":\"            \\\"remote\\\": \\\"https://git.gram1.ru/homelab-admin/homelab-ops.git\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784458148528552412,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tools/collect_context.py\",\"sha256\":\"4d42623567c9e30d46a78bccd30c754319712d64012c722c33265e7de62c017c\",\"size\":11071,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tools/collect_context.py\"},{\"lines\":[{\"line\":77,\"text\":\"    assert_true(context.get(\\\"collector_host\\\") == \\\"pve01.gram1.ru\\\", \\\"unexpected collector host\\\")\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784458148529443651,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tools/validate_repo.py\",\"sha256\":\"58fddb5f43f0668f70405ad09b5d79aa59d934329ed708f09b26692130781b35\",\"size\":4893,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tools/validate_repo.py\"},{\"lines\":[{\"line\":157,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784458148529443651,\"path\":\"<REDACTED_TOKEN>\",\"sha256\":\"1e2f5323abf880f3e8b17bf1f2d0a844c402a9bbf5f24159ed39aaf1d79caef0\",\"size\":10086,\"uid\":0},\"path\":\"<REDACTED_TOKEN>\"},{\"lines\":[{\"line\":31,\"text\":\"        self.assertEqual(source[\\\"target_node\\\"], \\\"pve03.gram1.ru\\\")\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784473042970360259,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tests/test_cr_2026_0015_pve03_r8152_rx_ring_canary.py\",\"sha256\":\"91b7a0a01b0eaa1db6a726eb8b009726e75bad5e11959be9494d82c5b5bf00df\",\"size\":13506,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tests/test_cr_2026_0015_pve03_r8152_rx_ring_canary.py\"},{\"lines\":[{\"line\":24,\"text\":\"      \\\"const\\\": \\\"pve01.gram1.ru\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784458148525763885,\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/schemas/context.schema.json\",\"sha256\":\"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043\",\"size\":539,\"uid\":0},\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/schemas/context.schema.json\"},{\"lines\":[{\"line\":9,\"text\":\"external_url: https://prometheus.vpn.gram1.ru\"},{\"line\":12,\"text\":\"npmplus_route: prometheus.vpn.gram1.ru -> [PRIVATE_IP]:9090\"},{\"line\":18,\"text\":\"- curl https://prometheus.vpn.gram1.ru/-/ready\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783582853987353718,\"path\":\"/srv/homelab-desired-state/runbooks/prometheus.md\",\"sha256\":\"c72594b147418ae1eee39f7508bf9d0f5307b59b353273eaf798d9169e3c2b3b\",\"size\":1292,\"uid\":0},\"path\":\"/srv/homelab-desired-state/runbooks/prometheus.md\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T19:50:17Z TYPE=service-readiness-final BAD=0 SERVICE=node-red HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://node-red.vpn.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783626618731757752,\"path\":\"/srv/homelab-desired-state/health/service-readiness-node-red.txt\",\"sha256\":\"261a8127018c171d5c34bc1a5bc9e04dc2aa97c6244d4213028e72130a8a00d9\",\"size\":270,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-node-red.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T12:33:46Z TYPE=service-readiness-final BAD=0 SERVICE=proxmox-pve01 HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK QUORUM=OK CLUSTER_NODES=OK STORAGE=OK GUESTS=OK UI=OK API_401=OK PUBLIC=OK CERTS=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://proxmox.vpn.gram1.ru STATE=pveproxy:active,pvedaemon:active,pvestatd:active,cluster:quorate\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783600432812890589,\"path\":\"/srv/homelab-desired-state/health/service-readiness-proxmox-pve01.txt\",\"sha256\":\"8f4b33c45c3aebc150ab26ffef11d8b8770fb36433dc893f642ab49f5bfb5d9c\",\"size\":397,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-proxmox-pve01.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T08:12:13Z TYPE=service-readiness-final BAD=0 SERVICE=crypto-portfolio HEALTH=OK PUBLIC=OK CHART_HEALTH=OK BROWSER_SMOKE=OK SHARP_MOVES_CENTERED=YES ALERT_CURRENCY_USD_RUB=OK GRT_REMOVED=YES BACKUP=OK OFFHOST=OK RESTORE=OK RUNBOOK=OK RETENTION=OK URL=https://gram1.ru/ STATE=web:running,worker:running\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783930333302397603,\"path\":\"/srv/homelab-desired-state/health/service-readiness-crypto-portfolio.txt\",\"sha256\":\"5d2ec1109c7e78730c58f6d650213bc14f3becd0eb49d9fd08cedb22834aa98c\",\"size\":325,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-crypto-portfolio.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T18:13:21Z TYPE=service-readiness-final BAD=0 SERVICE=stirling-pdf HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://pdf.vpn.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783620802972090984,\"path\":\"/srv/homelab-desired-state/health/service-readiness-stirling-pdf.txt\",\"sha256\":\"7f46372e6a6f89fdc87e43435e6c9f1b6f3b725d952879399094cd9cfc1ab7e2\",\"size\":269,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-stirling-pdf.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T16:50:21Z TYPE=service-readiness-final BAD=0 SERVICE=memos HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://memos.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783615822598077480,\"path\":\"/srv/homelab-desired-state/health/service-readiness-memos.txt\",\"sha256\":\"5b076b0774e6a8b16df6d85fe7726a96966d3e18551de76a698d45b17f4b1919\",\"size\":261,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-memos.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T19:07:39Z TYPE=service-readiness-final BAD=0 SERVICE=homeassistant HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://homeassistant.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783624061222793180,\"path\":\"/srv/homelab-desired-state/health/service-readiness-homeassistant.txt\",\"sha256\":\"0c8e6c3d5cd1d96f67f663054479f3a3327d63cd2e4f5933b2691653b727a227\",\"size\":281,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-homeassistant.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T06:29:21Z TYPE=service-readiness-final BAD=0 SERVICE=authentik HOMEPAGE=OK NPMPLUS=OK KUMA=OK BACKUP=OK OFFHOST=OK RESTORE=OK RUNBOOK=OK HEALTH=OK SECURITY=PUBLIC_URL_SET_ANALYTICS_DISABLED EMAIL=NOT_CONFIGURED_NO_SECRET_CHANGE URL=https://auth.gram1.ru STATES=running/healthy,running/healthy,running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783578561978755827,\"path\":\"/srv/homelab-desired-state/health/service-readiness-authentik.txt\",\"sha256\":\"690f7dc699b3e75f5b46851d3973bfd44baafeba6ef93258d90f202e7ebb4c55\",\"size\":333,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-authentik.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T10:40:06Z TYPE=service-readiness-final BAD=0 SERVICE=netbox HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK API_UNAUTH_403=OK MANAGE_CHECK=OK COMPOSE=OK_LABEL BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://netbox.vpn.gram1.ru STATE=app:running/healthy,worker:running/healthy,postgres:running/healthy,redis:running/healthy,redis-cache:running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783593618904444100,\"path\":\"/srv/homelab-desired-state/health/service-readiness-netbox.txt\",\"sha256\":\"33895568487a26464942f218d24b529bfefde845bfd60ffc7eea04251481708a\",\"size\":419,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-netbox.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T19:59:09Z TYPE=service-readiness-final BAD=0 SERVICE=syncthing HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://syncthing.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783627150632032480,\"path\":\"/srv/homelab-desired-state/health/service-readiness-syncthing.txt\",\"sha256\":\"af794151ecea52e6876462895e7412c3d473ecbe650f05898b21a77ff9a9b3d9\",\"size\":273,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-syncthing.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T16:46:31Z TYPE=service-readiness-final BAD=0 SERVICE=paperless HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://paper.gram1.ru STATE=app:running/healthy,postgres:running,redis:running\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783615593351578029,\"path\":\"/srv/homelab-desired-state/health/service-readiness-paperless.txt\",\"sha256\":\"603fd21d8a9daf63d5e1c2e92fe18b7a15c4f84d25412f99786da48c8efa677a\",\"size\":299,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-paperless.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T05:10:13Z TYPE=crypto-portfolio-remove-grt-prechange-backup BAD=0 COMMAND_PHYSICAL_LINES=1 PRODUCTION_CHANGED=ROLLBACK_SNAPSHOT_AND_BACKUP_ONLY PRODUCTION_DATABASE_CHANGED=NO DESIRED_STATE_CHANGED=NO_BY_THIS_COMMAND SERVICE_RESTARTED=NO PRODUCTION_CONTAINER_RECREATED=NO CLOUD_WRITE_RUN=YES_CONTROLLED_PRECHANGE_BACKUP RETENTION_RUN=NO PRODUCTION_APPLY=NO TARGET_HOST=core-apps.gram1.ru DESIRED_STATE_HEAD=80763a6c62b94cde4f3293f3b529980f76919d25 CANDIDATE_ROOT=/var/lib/homelab-change-sets/crypto-portfolio-remove-grt-candidate-v3/20260713T042046Z INPUT_APP_SHA256=684ad884119554503db0ed36252aeb017c0c04b54729f30c51e66a7ab293f8bd INPUT_WORKER_SHA256=40a1c81111d7097120125b140683a8604abcb4051db5073ab8af708a11854038 INPUT_INDEX_SHA256=2b1ab459cabf3050af1db4a7b293fff7c2a9ac18bf4a14faa1efc70a3a3f63e3 EXACT_LOCAL_ROLLBACK=OK ROLLBACK_PATH=/var/lib/homelab-incidents/crypto-remove-grt-prechange-20260713T051013Z ROLLBACK_MANIFEST_SHA256=6cc505f7e13a02b0ddfc9fd3a9700903d7aaf70d8\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783919444727781612,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-prechange-backup.txt\",\"sha256\":\"59de8a4e38310ef8236d167be536aa2f0f1d0fa3dd0ad3ac7fd49e67ed6206f3\",\"size\":1647,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-prechange-backup.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T17:47:41Z TYPE=healthchecks-canonical-domain-repair BAD=0 SERVICE=healthchecks CANONICAL_URL=https://checks.vpn.gram1.ru OLD_ALIAS=https://healthchecks.vpn.gram1.ru OLD_ALIAS_DEFAULT_PAGE=1 HOMEPAGE=OK KUMA=OK BESZEL_NTFY_KUMA=OK LOGS=OK NOTE=service-readiness-count-unchanged\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783619261777467514,\"path\":\"/srv/homelab-desired-state/health/healthchecks-canonical-domain-repair.txt\",\"sha256\":\"deaba0aab509c20f7546d26011b7e651720c516ed37186edde56016db389c2b5\",\"size\":301,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/healthchecks-canonical-domain-repair.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T04:00:02Z TYPE=crypto-portfolio-remove-grt-current BAD=0 COMMAND_PHYSICAL_LINES=1 SOURCE_OF_TRUTH=HANDOFF REMOTE_STDIN_FIX=SSH_WITHOUT_N PRODUCTION_CHANGED=NO DATABASE_CHANGED=NO DESIRED_STATE_CHANGED=NO SERVICE_RESTARTED=NO CLOUD_WRITE_RUN=NO TARGET_HOST=core-apps.gram1.ru TARGET_STACK=/opt/stacks/crypto-portfolio TARGET_DB=/opt/stacks/crypto-portfolio/data/portfolio.db DB_INTEGRITY=ok GRT_HOLDING_ROWS=1 GRT_ALERT_ROWS=1 GRT_HISTORY_ROWS=714 GRT_CACHE_KEYS=0 GRT_SOURCE_REFERENCES=9 GRT_MARKET_PRESENT=YES LOCAL_DESIRED_GRT_REFERENCES=3 GRT_TOTAL_CURRENT_REFERENCES=728 REMOVE_SCOPE=HOLDING_ALERTS_HISTORY_MARKET_CACHE_BACKEND_FRONTEND_CHART_HEALTH_DESIRED_STATE READY_FOR_GRT_PRECHANGE_BACKUP=YES CAPTURE_ROOT=/var/lib/homelab-change-sets/crypto-portfolio-remove-grt-current/20260713T040002Z\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783915202517048335,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-current.txt\",\"sha256\":\"825d92b1650dd8867aad03fc2893a52677174cce54f1b853c23c88cec5d4d3bc\",\"size\":822,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-current.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T06:37:47Z TYPE=service-readiness-final BAD=0 SERVICE=gitea HOMEPAGE=OK NPMPLUS=OK KUMA=OK BACKUP=OK OFFHOST=OK RESTORE=OK RUNBOOK=OK HEALTHCHECK=OK SECURITY=REGISTRATION_LOCKED_SIGNIN_REQUIRED_SSH_DISABLED_LFS_DISABLED URL=https://git.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783579067443436857,\"path\":\"/srv/homelab-desired-state/health/service-readiness-gitea.txt\",\"sha256\":\"68389cd9424921f46c067ca5fdb1b902dfde4e6623297f61ace74abd30c3190c\",\"size\":290,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-gitea.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=20260730T230822Z TYPE=vps-identity-audit VPS_IP=188.127.235.6 ALIAS=netbird.vpn.gram1.ru ALIAS_IP=100.100.60.182 SSH_TRUST=BLOCKED_NO_BACKED_UP_HOST_KEYS BACKUP_HOSTKEYS=NO KNOWN_HOSTS_UNCHANGED=YES SECRET_PRINTED=REDACTED\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1785452913011062217,\"path\":\"/srv/homelab-desired-state/health/vps-identity-audit.txt\",\"sha256\":\"b568cce4204dddaee3908dbbaa57aa6bba06c436d05609e2348664cc0b9b7e23\",\"size\":236,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/vps-identity-audit.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T07:40:53Z TYPE=service-readiness-final BAD=0 SERVICE=prometheus HOMEPAGE=OK NPMPLUS=OK KUMA=OK READY=OK HEALTHY=OK PROMTOOL=OK TARGETS=14 TARGETS_DOWN=0 ALERTS_FIRING=0 CADVISOR_PROXY=OK PVE_EXPORTER_PROXY=OK ALERTING=OK BACKUP_SLA=OK NPMPLUS_KUMA_LEGACY_SUPERSEDED=OK RUNBOOK=OK URL=https://prometheus.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783582855969973905,\"path\":\"/srv/homelab-desired-state/health/service-readiness-prometheus.txt\",\"sha256\":\"5e41320e81e4e98329bbf07c1205eb65174c934d071d58f57e03f1ce568381b6\",\"size\":363,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-prometheus.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T20:55:37Z TYPE=service-readiness-final BAD=0 SERVICE=dns1 HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK CONFIG_SYNC=OK BACKUP_SLA=OK ALERTING=OK URL=https://dns1.vpn.gram1.ru STATE=adguard-ui:monitored,dns-tcp:monitored,unbound:monitored\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783630538260037616,\"path\":\"/srv/homelab-desired-state/health/service-readiness-dns1.txt\",\"sha256\":\"58976a704a031c25d354992cc203a5ce91f1c54ba67d4bb9ba02e775c7b4fe35\",\"size\":277,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-dns1.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T20:55:37Z TYPE=service-readiness-final BAD=0 SERVICE=homepage HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK URL=https://home.gram1.ru STATE=container:running/healthy,config:backed-by-dockge-stacks\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783630538260037616,\"path\":\"/srv/homelab-desired-state/health/service-readiness-homepage.txt\",\"sha256\":\"183f5c0708439e1b1fbb544d22c7bc89eb3ac53390a92d5a6be768bad0396d22\",\"size\":284,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-homepage.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T20:12:53Z TYPE=service-readiness-final BAD=0 SERVICE=immich HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://photos.gram1.ru STATE=server:running/healthy,postgres:running/healthy,machine-learning:running/healthy,redis:running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783627975396808112,\"path\":\"/srv/homelab-desired-state/health/service-readiness-immich.txt\",\"sha256\":\"1bb7058b101dc91d7dae849f23a8f144efc83baff71a4af13bc248181efac259\",\"size\":349,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-immich.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T08:43:15Z TYPE=service-readiness-final BAD=0 SERVICE=beszel HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://beszel.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783586692168325745,\"path\":\"/srv/homelab-desired-state/health/service-readiness-beszel.txt\",\"sha256\":\"995e8754fef167d95ad9ab04e7c6bec54dbe6d4b99985ac99934140ddca3ea54\",\"size\":267,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-beszel.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T12:18:28Z TYPE=service-readiness-final BAD=0 SERVICE=minio HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK API=OK CONSOLE=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://minio.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783599509661864595,\"path\":\"/srv/homelab-desired-state/health/service-readiness-minio.txt\",\"sha256\":\"f5b9a25ffb5b03b9d53f658e4a3b4d683918832a4be3209cfc1ed028b9495c6f\",\"size\":283,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-minio.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T04:20:46Z TYPE=crypto-portfolio-remove-grt-candidate BAD=0 COMMAND_PHYSICAL_LINES=1 PREVIOUS_FAILURE=CORRECTED PREVIOUS_FAILURE_ROOT_CAUSE=KLINE_CACHE_FILTER_APPLIED_TO_TOP_LEVEL_INSTEAD_OF_ENTRIES EXCLUSIVE_ROOT_CAUSE_PROOF=OK PRODUCTION_CHANGED=NO DATABASE_CHANGED=NO DESIRED_STATE_CHANGED=NO SERVICE_RESTARTED=NO CLOUD_WRITE_RUN=NO TARGET_HOST=core-apps.gram1.ru DESIRED_STATE_HEAD=b974057b536ece861299d0b230c06cc0e6702c39 INPUT_APP_SHA256=684ad884119554503db0ed36252aeb017c0c04b54729f30c51e66a7ab293f8bd INPUT_WORKER_SHA256=40a1c81111d7097120125b140683a8604abcb4051db5073ab8af708a11854038 INPUT_INDEX_SHA256=2b1ab459cabf3050af1db4a7b293fff7c2a9ac18bf4a14faa1efc70a3a3f63e3 APP_CANDIDATE_SHA256=44df2b25183b7c5d87ff1516ec2d9cd1d169acde3031f7c2aa1fc4e0c7813cd2 WORKER_CANDIDATE_SHA256=174a14b86014535980d200a76d0057110c7af102c66f16c2e21fc3e74bb2e49e INDEX_CANDIDATE_SHA256=8bbe88f5f420fe429d479c598e1f3f904521eb166d4707e32e579851e84c205e MARKET_CANDIDATE_SHA256=eb6c21667d4a\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783916446916055776,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-candidate.txt\",\"sha256\":\"13af0ac9918f8fbaee45ce196fa380b10a2e4c5773dedc432ab8a25e7181ee7c\",\"size\":1741,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-candidate.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T16:06:41Z TYPE=service-readiness-final BAD=0 SERVICE=homebox HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://homebox.vpn.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783613203194105273,\"path\":\"/srv/homelab-desired-state/health/service-readiness-homebox.txt\",\"sha256\":\"b316e15bfdd9bbcd625079eee2c17f5b2560b2169057eb8ef182a101f82060ca\",\"size\":268,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-homebox.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T17:40:57Z TYPE=service-readiness-final BAD=0 SERVICE=linkding HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://linkding.vpn.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783618858884346373,\"path\":\"/srv/homelab-desired-state/health/service-readiness-linkding.txt\",\"sha256\":\"0ff8e0deef0ed42e53e8ba442ce1cfec567803ce769b5eff5689e069464c612d\",\"size\":270,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-linkding.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T06:02:55Z TYPE=cluster-admin-homepage-card BAD=0 URL=https://cluster-admin.vpn.gram1.ru HOMEPAGE=OK VPN_ROUTE=OK DIRECT=OK\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783576975005627760,\"path\":\"/srv/homelab-desired-state/health/cluster-admin-homepage-card.txt\",\"sha256\":\"1c7d45a1762e8eb15cbcc8164eea990a68d2f91d4efbc7d2b4bb971c2ebe9da6\",\"size\":147,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/cluster-admin-homepage-card.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T06:22:58Z TYPE=service-readiness-final BAD=0 SERVICE=vaultwarden HOMEPAGE=OK NPMPLUS=OK KUMA=OK BACKUP=OK OFFHOST=OK RESTORE=OK RUNBOOK=OK SECURITY=LOCKED_SIGNUPS_INVITES_ADMIN_DISABLED_DOMAIN_SET URL=https://vault.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783578178379924000,\"path\":\"/srv/homelab-desired-state/health/service-readiness-vaultwarden.txt\",\"sha256\":\"004f504fd822cfa9cdb876045051ce8d654ae34849409209bf056f306e5ee0ff\",\"size\":270,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-vaultwarden.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T16:23:37Z TYPE=service-readiness-final BAD=0 SERVICE=mealie HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK SIGNUP_LOCKED=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://mealie.vpn.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783614219348604724,\"path\":\"/srv/homelab-desired-state/health/service-readiness-mealie.txt\",\"sha256\":\"c16fe90e3101b92f4ca3b95bfbad833e8d02ec4e42e44b41a9672cd8acc5793f\",\"size\":283,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-mealie.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T19:23:55Z TYPE=service-readiness-final BAD=0 SERVICE=it-tools HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://it-tools.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783625037335098315,\"path\":\"/srv/homelab-desired-state/health/service-readiness-it-tools.txt\",\"sha256\":\"554a191135c66f5a5382739e52cb160232b612afb7eea1bb829fdac51ce78654\",\"size\":271,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-it-tools.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T06:52:06Z TYPE=service-readiness-final BAD=0 SERVICE=gotify HOMEPAGE=OK NPMPLUS=OK KUMA=OK NOTIFICATION=OK ALERTING=OK DB=OK BACKUP=OK RESTORECHECK=OK_BY_PRECHECK RUNBOOK=OK HEALTH=GREEN URL=https://gotify.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783579926099477865,\"path\":\"/srv/homelab-desired-state/health/service-readiness-gotify.txt\",\"sha256\":\"a632388e8898c60a402d18b2f67141c2393a1e9e42b86f8568f77818fc1a7c4b\",\"size\":261,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-gotify.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T09:57:55Z TYPE=service-readiness-final BAD=0 SERVICE=searxng HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK SEARCH=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK_FATAL_0 ENGINE_WARN_5MIN=8 URL=https://searxng.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783591080562933313,\"path\":\"/srv/homelab-desired-state/health/service-readiness-searxng.txt\",\"sha256\":\"41d7c88fba76d93449e5895014e2de9ffccd4b15e14a0b6e239baf4ce02565c9\",\"size\":306,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-searxng.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T07:42:53Z TYPE=crypto-portfolio-ui-preapply-backup BAD=0 COMMAND_PHYSICAL_LINES=1 PREVIOUS_FAILURE=CORRECTED PREVIOUS_FAILURE_ROOT_CAUSE=INLINE_PYTHON_QUOTE_ERROR_IN_NONESSENTIAL_HELPER_PROOF BACKUP_SERVICE_RERUN=NO MANUAL_REHYDRATE_RERUN=NO CANONICAL_RESTORE_CHECK_RERUN=YES_READ_ONLY PRODUCTION_CHANGED=NO PRODUCTION_DATABASE_CHANGED=NO DESIRED_STATE_CHANGED=NO SERVICE_RESTARTED=NO CONTAINER_RECREATED=NO CLOUD_WRITE_RUN=NO_READ_ONLY_RESTORE_CHECK TARGET_HOST=core-apps.gram1.ru INPUT_INDEX_SHA256=8bbe88f5f420fe429d479c598e1f3f904521eb166d4707e32e579851e84c205e CANDIDATE_INDEX_SHA256=e497a36d8549654c6d451360a11a2ad714e19c23e6d384330a5436f7d32267cb BACKUP_JOB=homelab-pve01-app-crypto-portfolio-20260713T071127Z BACKUP_STATUS=success BACKUP_SCHEMA=homelab-app-backup-manifest-v2-flat BACKUP_LAYOUT=flat-v1 BACKUP_PATH_REL=hb/a/cp-260713-071127 BACKUP_DATABASE_INTEGRITY=ok BACKUP_FILE_COUNT=19 BACKUP_ARCHIVE_SIZE_BYTES=136632 BACKUP_ARCHIVE_SHA256=b29eb55820ec46c474f51e\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783928577148769166,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-ui-preapply-backup.txt\",\"sha256\":\"7b4b3faf518b57a01b5bb1302377fc1fb13ad9a206f9e8211edfd8bbbc0bf395\",\"size\":1851,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-ui-preapply-backup.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-15T22:32:11Z TYPE=homelab-ops-bootstrap BAD=0 REPOSITORY=/srv/homelab-ops BRANCH=main COMMIT=14d8bb0467e5890a7166444afda90a0185552eba REMOTE=https://git.gram1.ru/homelab-admin/homelab-ops.git PVE01_PUSH_DISABLED=YES\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o640\",\"mtime_ns\":1784154731087612149,\"path\":\"/srv/homelab-desired-state/health/homelab-ops-bootstrap.txt\",\"sha256\":\"ffbd6012fdb16a415b5218c0a47bc26cc2946113e2a69fdde6f090bcbb53bc31\",\"size\":237,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/homelab-ops-bootstrap.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T08:33:53Z TYPE=service-readiness-final BAD=0 SERVICE=dozzle HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK LOCAL_BIND=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://dozzle.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783586034791337394,\"path\":\"/srv/homelab-desired-state/health/service-readiness-dozzle.txt\",\"sha256\":\"c13d689f67ac3dc4bd5afd825a54d89288d23bce5fd54c0ed91b07c4b8f8fc81\",\"size\":277,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-dozzle.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T18:25:21Z TYPE=service-readiness-final BAD=0 SERVICE=audiobookshelf HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://audiobooks.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783621522560223546,\"path\":\"/srv/homelab-desired-state/health/service-readiness-audiobookshelf.txt\",\"sha256\":\"af911c53597b0e1b5c16431392db9338b97a4d0e23be353cbadc0ba629ca0066\",\"size\":279,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-audiobookshelf.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T19:42:26Z TYPE=service-readiness-final BAD=0 SERVICE=n8n HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://n8n.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783626147812414504,\"path\":\"/srv/homelab-desired-state/health/service-readiness-n8n.txt\",\"sha256\":\"8f180c813dbc129525da7da537292ee4fb006ba90117dbdf6c2909514c5ec187\",\"size\":261,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-n8n.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T20:45:50Z TYPE=service-readiness-final BAD=0 SERVICE=nextcloud HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK URL=https://nc.gram1.ru STATE=vm150:running,nextcloud-status:installed-maintenance-false,turn:monitored\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783629951391156886,\"path\":\"/srv/homelab-desired-state/health/service-readiness-nextcloud.txt\",\"sha256\":\"fa0e3d005860b5f4d4bf7d7e28ff9927623cbe7ccb2e74ca2406d706ec9b9ba0\",\"size\":311,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-nextcloud.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T06:41:40Z TYPE=service-readiness-final BAD=0 SERVICE=backup-health HOMEPAGE=OK NPMPLUS=OK KUMA=OK ENDPOINTS=LOCAL_LAN_PUBLIC_OK CORE_GATES=OK LISTENERS=OK URL=https://backup.gram1.ru/backup.txt OVERALL=https://backup.gram1.ru/overall.txt\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783579300097970342,\"path\":\"/srv/homelab-desired-state/health/service-readiness-backup-health.txt\",\"sha256\":\"f8074ea30fd108c0db7c85caebaaaa4a3600ea49fbea717f372bf5e6218753b4\",\"size\":262,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-backup-health.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T10:16:45Z TYPE=service-readiness-final BAD=0 SERVICE=dockge HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK EDGE=OK CORE_AGENT=OK MONITORING_AGENT=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://dockge.gram1.ru STATE=edge:running/healthy,core-agent:running/healthy,monitoring-agent:running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783592208183045599,\"path\":\"/srv/homelab-desired-state/health/service-readiness-dockge.txt\",\"sha256\":\"804a6933e538cf0da0625d7908ede05586edc317c11035f3b3914c85d562bfd3\",\"size\":369,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-dockge.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T06:05:58Z TYPE=cluster-admin-service-readiness BAD=0 SERVICE=cluster-admin-webpanel HOMEPAGE=OK NPMPLUS_VPN_ROUTE=OK KUMA=OK HEALTH_GATES=OK BACKUP=MAIL_CLOUD_2COPY_VERIFY_OK URL=https://cluster-admin.vpn.gram1.ru/status.txt\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783577158699420766,\"path\":\"/srv/homelab-desired-state/health/cluster-admin-service-readiness.txt\",\"sha256\":\"d90dce13be5b4274dbbb288721852ad2331779e779aa79ba688371fc220e6ca0\",\"size\":249,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/cluster-admin-service-readiness.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T04:35:29Z TYPE=crypto-portfolio-remove-grt-runtime-verifier-prepared BAD=0 COMMAND_PHYSICAL_LINES=1 VERIFIER_REVISION=V3 DEEP_ANALYSIS_RESULT=DIRECT_ROUTE_JSONRESPONSE_CONTRACT_CORRECTED FAILURE_CLASS=VERIFIER_ONLY PRODUCTION_CHANGED=NO PRODUCTION_DATABASE_CHANGED=NO CANDIDATE_CHANGED=NO DESIRED_STATE_CHANGED=NO SERVICE_RESTARTED=NO CONTAINER_STARTED=NO CLOUD_WRITE_RUN=NO TARGET_HOST=core-apps.gram1.ru DESIRED_STATE_HEAD=b974057b536ece861299d0b230c06cc0e6702c39 INPUT_APP_SHA256=684ad884119554503db0ed36252aeb017c0c04b54729f30c51e66a7ab293f8bd INPUT_WORKER_SHA256=40a1c81111d7097120125b140683a8604abcb4051db5073ab8af708a11854038 INPUT_INDEX_SHA256=2b1ab459cabf3050af1db4a7b293fff7c2a9ac18bf4a14faa1efc70a3a3f63e3 CANDIDATE_ROOT=/var/lib/homelab-change-sets/crypto-portfolio-remove-grt-candidate-v3/20260713T042046Z RUNTIME_POLICY=CONTAINER_PYTHON_ONLY PYTHONPATH_APP_INJECTED=YES ROUTE_RETURN_DECODER=DICT_OR_RESPONSE_BODY STATE_RETURN_DECODED=YES CHART_HEALTH_RETURN_DECO\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783917330889546451,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-runtime-verifier-prepared.txt\",\"sha256\":\"7d161370e3d79ff94529b8069e6876e3444e70054658d732d351ef1e3ed26466\",\"size\":1403,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-runtime-verifier-prepared.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T06:14:02Z TYPE=service-readiness-final BAD=0 SERVICE=cluster-admin-webpanel VMID=180 HOMEPAGE=OK NPMPLUS=OK KUMA=OK KUMA_CONTAINER_ROUTE=OK BACKEND=OK WEBPANEL=OK BACKUP=MAIL_CLOUD_2COPY_VERIFY_OK URL=https://cluster-admin.vpn.gram1.ru/status.txt KUMA_STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783577642636778863,\"path\":\"/srv/homelab-desired-state/health/service-readiness-cluster-admin-webpanel.txt\",\"sha256\":\"d82e7b1217b1e199fd7879944e9ef46dbab22d37537c9e2bf56b89e98bbe0b35\",\"size\":298,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-cluster-admin-webpanel.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T07:51:32Z TYPE=service-readiness-final BAD=0 SERVICE=alertmanager HOMEPAGE=OK NPMPLUS=OK KUMA=OK READY=OK HEALTHY=OK CONFIG=OK API=OK CLUSTER=ready PEERS=1 PROMETHEUS_LINK=OK PROM_FIRING_ALERTS=0 ALERTMANAGER_ALERTS=0 SILENCES_ACTIVE=0 GOTIFY_DEPENDENCY=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK RUNBOOK=OK LOGS=OK URL=https://alertmanager.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783583493513666300,\"path\":\"/srv/homelab-desired-state/health/service-readiness-alertmanager.txt\",\"sha256\":\"3bf9df80a61822884d6e07b4a9afba25326ebd8eae3142ae98b4721765950a76\",\"size\":407,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-alertmanager.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T06:11:23Z TYPE=crypto-portfolio-ui-center-alert-currency-candidate BAD=0 COMMAND_PHYSICAL_LINES=1 PREVIOUS_FAILURE=CORRECTED PREVIOUS_FAILURE_ROOT_CAUSE=EXPECTED_DIFF_RC_1_TRIGGERED_SET_E_PIPEFAIL PRODUCTION_CHANGED=NO PRODUCTION_DATABASE_CHANGED=NO DESIRED_STATE_CHANGED=NO SERVICE_RESTARTED=NO CLOUD_WRITE_RUN=NO TARGET_HOST=core-apps.gram1.ru DESIRED_STATE_HEAD=80763a6c62b94cde4f3293f3b529980f76919d25 INPUT_INDEX_SHA256=8bbe88f5f420fe429d479c598e1f3f904521eb166d4707e32e579851e84c205e CANDIDATE_INDEX_SHA256=e497a36d8549654c6d451360a11a2ad714e19c23e6d384330a5436f7d32267cb BUILDER_DOUBLE_CHECK=OK CANDIDATE_DOUBLE_CHECK=OK SHARP_MOVES_POSITION=CENTERED SHARP_MOVES_MAX_WIDTH_PX=860 SHARP_MOVES_COLUMNS_DESKTOP=2 SHARP_MOVES_COLUMNS_MOBILE=1 ALERT_RENDERER=V5 ALERT_CURRENCY_SOURCE=TOP_USD_RUB_SWITCH ALERT_EXCHANGE_RATE_SOURCE=STATE_MARKET_USD_RUB ALERT_PRICE_THRESHOLD_CONVERTED=YES ALERT_CAP_THRESHOLD_CONVERTED=YES ALERT_SALE_VALUE_CONVERTED=YES CURRENCY_SWITCH_REDRAW\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783923084154265049,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-ui-center-alert-currency-candidate.txt\",\"sha256\":\"5bbb00a58d9d033a411890f2880c8a5831eb38a52ec299c891e6e6cfa0d4ca4f\",\"size\":1347,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-ui-center-alert-currency-candidate.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T18:01:02Z TYPE=service-readiness-final BAD=0 SERVICE=bookstack HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://bookstack.vpn.gram1.ru STATE=app:running/nohealth,db:running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783620063724715337,\"path\":\"/srv/homelab-desired-state/health/service-readiness-bookstack.txt\",\"sha256\":\"ff7d57382f780857cc0c84793264f26e247dee00024900f4ccd0f4d005d48f19\",\"size\":297,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-bookstack.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T12:47:17Z TYPE=service-readiness-final BAD=0 SERVICE=filebrowser HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://filebrowser.vpn.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783601238831135091,\"path\":\"/srv/homelab-desired-state/health/service-readiness-filebrowser.txt\",\"sha256\":\"ac04b01ed5c63f05f02e9610bdc2b6f311b8adb879656f36762800dddc2c3407\",\"size\":276,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-filebrowser.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T20:55:37Z TYPE=service-readiness-final BAD=0 SERVICE=dns2 HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK CONFIG_SYNC=OK BACKUP_SLA=OK ALERTING=OK URL=https://dns2.vpn.gram1.ru STATE=adguard-ui:monitored,dns-tcp:monitored,unbound:monitored\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783630538260037616,\"path\":\"/srv/homelab-desired-state/health/service-readiness-dns2.txt\",\"sha256\":\"f013a395e99807f39c9a3f08ac58f6b03c255f636283eb9daba2db333de40e23\",\"size\":277,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-dns2.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T06:47:55Z TYPE=service-readiness-final BAD=0 SERVICE=uptime-kuma HOMEPAGE=OK NPMPLUS=OK KUMA_SELF=OK DB=OK MONITORS_ACTIVE=91 HEARTBEAT_BAD=0 NOTIFICATION=OK BACKUP=OK RESTORECHECK=OK_BY_PRECHECK POLICY=OK ALERTING=OK RUNBOOK=OK EXTRA_HOST_CLUSTER_ADMIN=OK URL=https://uptime.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783579675563672808,\"path\":\"/srv/homelab-desired-state/health/service-readiness-uptime-kuma.txt\",\"sha256\":\"f9e8b1f3e6a319ab629f03f1126a8cd011adc6bf3171fe10c2e04642558e580c\",\"size\":331,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-uptime-kuma.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T18:19:10Z TYPE=service-readiness-final BAD=0 SERVICE=jellyfin HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://jellyfin.vpn.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783621151781487323,\"path\":\"/srv/homelab-desired-state/health/service-readiness-jellyfin.txt\",\"sha256\":\"2e35c908acfdb9f85db0bb2cb0395c4f8b629d7ed6a7d0e9e836459bf08389db\",\"size\":270,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-jellyfin.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T07:04:45Z TYPE=crypto-portfolio-ui-center-alert-currency-browser-smoke BAD=0 COMMAND_PHYSICAL_LINES=1 PREVIOUS_FAILURE=CORRECTED PREVIOUS_FAILURE_ROOT_CAUSE=UNPRIVILEGED_REMOTE_RM_AFTER_SUDO_HARNESS PRODUCTION_CHANGED=NO_BROWSER_EVIDENCE_FINALIZATION_ONLY PRODUCTION_DATABASE_CHANGED=NO DESIRED_STATE_CHANGED=NO SERVICE_RESTARTED=NO CLOUD_WRITE_RUN=NO TARGET_HOST=core-apps.gram1.ru CANDIDATE_INDEX_SHA256=e497a36d8549654c6d451360a11a2ad714e19c23e6d384330a5436f7d32267cb CANDIDATE_STATIC_GRT_DOUBLE_CHECK=OK BROWSER_ENGINE=CHROMIUM BROWSER_RUNS=2 BROWSER_RUNS_IDENTICAL=YES MOVES=2 SHARP_MOVES_CENTERED=YES SHARP_MOVES_MAX_WIDTH_OK=YES SHARP_MOVES_COLUMNS=2 ALERT_ROWS=2 USD_ALERT_RENDER=OK RUB_ALERT_RENDER=OK TOP_CURRENCY_SWITCH_REDRAW=OK RUB_PRICE_THRESHOLD=OK RUB_CAP_THRESHOLD=OK RUB_SALE_VALUE=OK ALERT_USD_RESIDUE_IN_RUB_MODE=ABSENT CHART_CARDS=2 CHART_CANVASES=14 CHARTS_BOTTOM=YES BROWSER_ERRORS=0 GRT_VISIBLE=NO RESULT_SHA256=b566f492cd80c8f99bc6b24cbef6d5f326c04f4d\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783926287230037708,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-ui-center-alert-currency-browser-smoke.txt\",\"sha256\":\"4f08e0d48c42dc5a33b50166382ad70b0ef55b6dd332f834ab5917624bd2286f\",\"size\":1490,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-ui-center-alert-currency-browser-smoke.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T18:57:16Z TYPE=service-readiness-final BAD=0 SERVICE=calibre-web HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://books.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783623440303098924,\"path\":\"/srv/homelab-desired-state/health/service-readiness-calibre-web.txt\",\"sha256\":\"6d15c1aeb465f70a5689aec04a7d4be835f58daf1b2db6e359aaf5018805e216\",\"size\":271,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-calibre-web.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T04:05:42Z TYPE=crypto-portfolio-remove-grt-surface BAD=0 COMMAND_PHYSICAL_LINES=1 PREVIOUS_FAILURE=CORRECTED PRODUCTION_CHANGED=NO DATABASE_CHANGED=NO DESIRED_STATE_CHANGED=NO SERVICE_RESTARTED=NO CLOUD_WRITE_RUN=NO TARGET_HOST=core-apps.gram1.ru TARGET_STACK=/opt/stacks/crypto-portfolio DESIRED_STATE_HEAD=b974057b536ece861299d0b230c06cc0e6702c39 DESIRED_STATE_CLEAN=YES APP_SHA256=684ad884119554503db0ed36252aeb017c0c04b54729f30c51e66a7ab293f8bd WORKER_SHA256=40a1c81111d7097120125b140683a8604abcb4051db5073ab8af708a11854038 INDEX_SHA256=2b1ab459cabf3050af1db4a7b293fff7c2a9ac18bf4a14faa1efc70a3a3f63e3 APP_GRT_REFERENCES=5 WORKER_GRT_REFERENCES=2 INDEX_GRT_REFERENCES=2 LOCAL_GRT_REFERENCES=3 SQLITE_SCHEMA_CAPTURED=YES READY_FOR_GRT_CANDIDATE_PREPARE=YES SURFACE_ROOT=/var/lib/homelab-change-sets/crypto-portfolio-remove-grt-surface/20260713T040542Z\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783915543613258985,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-surface.txt\",\"sha256\":\"ec0e80392e7132f3a38af9d159c40860977a0647c01ff63731642f8b3e60e6e4\",\"size\":879,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-surface.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T05:47:54Z TYPE=crypto-portfolio-remove-grt-production-apply BAD=0 COMMAND_PHYSICAL_LINES=1 APPLY_REVISION=V3 FIX_UID_READONLY=YES FIX_READINESS_ENDPOINT=YES FIX_ROLLBACK_DATABASE_METADATA=YES PRODUCTION_CHANGED=YES_REMOVE_GRT DESIRED_STATE_CHANGED=NO_BY_THIS_COMMAND PRODUCTION_CONTAINER_RECREATED=YES CLOUD_WRITE_RUN=NO ROLLBACK_ON_FAILURE=ARMED_NOT_NEEDED TARGET_HOST=core-apps.gram1.ru DESIRED_STATE_HEAD=80763a6c62b94cde4f3293f3b529980f76919d25 PRECHANGE_BACKUP_JOB=homelab-pve01-app-crypto-portfolio-20260713T051015Z ROLLBACK_PATH=/var/lib/homelab-incidents/crypto-remove-grt-prechange-20260713T051013Z APP_SHA256=44df2b25183b7c5d87ff1516ec2d9cd1d169acde3031f7c2aa1fc4e0c7813cd2 WORKER_SHA256=174a14b86014535980d200a76d0057110c7af102c66f16c2e21fc3e74bb2e49e INDEX_SHA256=8bbe88f5f420fe429d479c598e1f3f904521eb166d4707e32e579851e84c205e CHART_HEALTH_SCRIPT_SHA256=c16473f16390eeeff4d4eb701db604093564dd78d0be2d30b4cc8ffeeb22364a ACTIVE_COINS=HBAR,POL GRT_SOURCE_REFERENCES\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783921693260063344,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-production-apply.txt\",\"sha256\":\"c52b04528dc67a5502c297f32c3a0d6812cdc8801d6725905a5957cadc38c5ea\",\"size\":1640,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-production-apply.txt\"},{\"lines\":[{\"line\":4,\"text\":\"SUMMARY=Four pending Uptime Kuma keyword monitors were repointed from public backup.gram1.ru paths to local pve01 health endpoint [PRIVATE_IP]:9101.\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783028423760334827,\"path\":\"/srv/homelab-desired-state/health/uptime-kuma-pending-health-monitors-fix.txt\",\"sha256\":\"bb2acd1f93682c0eb7d108ef03b8559e285b4bac37e6302598d0f617567fa866\",\"size\":535,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/uptime-kuma-pending-health-monitors-fix.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T13:02:48Z TYPE=service-readiness-final BAD=0 SERVICE=actual-budget HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://actual-budget.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783602290011106709,\"path\":\"/srv/homelab-desired-state/health/service-readiness-actual-budget.txt\",\"sha256\":\"68605ac6b4b89fdf968d8fa466e6ff95ecebe281a0504f6fdf56e94bcb89518e\",\"size\":281,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-actual-budget.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T07:47:18Z TYPE=service-readiness-final BAD=0 SERVICE=grafana HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK DB=OK DATASOURCE=OK DASHBOARDS=3 DASHBOARD_JSON_BAD=0 PROMETHEUS_DEPENDENCY=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK RUNBOOK=OK LOGS=OK URL=https://grafana.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783583239209799155,\"path\":\"/srv/homelab-desired-state/health/service-readiness-grafana.txt\",\"sha256\":\"6f78de19c0db914cda8df87a8aa2e6f07f1fd13af462125193fcfe7dc5a6c8d8\",\"size\":326,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-grafana.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T04:52:06Z TYPE=crypto-portfolio-remove-grt-browser-smoke BAD=0 COMMAND_PHYSICAL_LINES=1 PREVIOUS_FAILURE=CORRECTED PREVIOUS_FAILURE_ROOT_CAUSE=OPTIONAL_XXD_DEPENDENCY_MISSING_WITH_STDERR_SUPPRESSED BROWSER_RERUN=NO EVIDENCE_SALVAGED=YES PRODUCTION_CHANGED=NO PRODUCTION_DATABASE_CHANGED=NO CANDIDATE_CHANGED=NO DESIRED_STATE_CHANGED=NO SERVICE_RESTARTED=NO CONTAINER_STARTED=NO CLOUD_WRITE_RUN=NO TARGET_HOST=core-apps.gram1.ru DESIRED_STATE_HEAD=b974057b536ece861299d0b230c06cc0e6702c39 INPUT_APP_SHA256=684ad884119554503db0ed36252aeb017c0c04b54729f30c51e66a7ab293f8bd INPUT_WORKER_SHA256=40a1c81111d7097120125b140683a8604abcb4051db5073ab8af708a11854038 INPUT_INDEX_SHA256=2b1ab459cabf3050af1db4a7b293fff7c2a9ac18bf4a14faa1efc70a3a3f63e3 ACTIVE_COINS=HBAR,POL GRT_VISIBLE=NO BROWSER_CARDS=2 BROWSER_CANVASES=14 BROWSER_MOVES=2 BROWSER_COIN_CARDS=2 BROWSER_POSITION_ROWS=2 BROWSER_ALERT_OPTIONS=2 BROWSER_ACTIVE_COIN=HBAR BROWSER_CHART_SYMBOLS=HBAR,POL BROWSER_ERRORS=0 BROWSE\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783918328118750433,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-browser-smoke.txt\",\"sha256\":\"0ec07f2df3d2acd4e02a3c884b1bf75885ac24995516c5a4657da1ef99cf5963\",\"size\":1724,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-browser-smoke.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T07:58:51Z TYPE=service-readiness-final BAD=0 SERVICE=ntfy HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK ALERTMANAGER_LINK=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK RUNBOOK=OK LOGS=OK URL=https://ntfy.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783584042770018771,\"path\":\"/srv/homelab-desired-state/health/service-readiness-ntfy.txt\",\"sha256\":\"d971945a3d44413da361fa030c9e2a6f2ae0974251e74a24c412eae2f5956892\",\"size\":262,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-ntfy.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T17:55:47Z TYPE=service-readiness-final BAD=0 SERVICE=vikunja HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://vikunja.vpn.gram1.ru STATE=running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783619748698868888,\"path\":\"/srv/homelab-desired-state/health/service-readiness-vikunja.txt\",\"sha256\":\"80c71a30d842b941afefcca2ca64b95ee43c767b7fb7313a71b4e84356b78bff\",\"size\":269,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-vikunja.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T10:07:24Z TYPE=service-readiness-final BAD=0 SERVICE=npmplus HOMEPAGE=OK NPMPLUS=OK_SELF KUMA=OK HEALTH=OK ROUTES=OK ROUTE_TOTAL=55 VPN_ROUTES=31 CERTS=OK EDGE_HEALTH=OK ADMIN=OK NGINX=OK CROWDSEC_LAPI=RESPONSIVE CROWDSEC_LAPI_WARN_5MIN=0 UPSTREAM_WARN_5MIN=0 BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK_NGINX_FATAL_0 URL=https://npmplus.vpn.gram1.ru STATE=running/healthy\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783591652096606835,\"path\":\"/srv/homelab-desired-state/health/service-readiness-npmplus.txt\",\"sha256\":\"5b3c966481b8a013bab4a3aba9bfeb67a31e954a3396fcdd0bdde1bb8bedb880\",\"size\":430,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-npmplus.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T17:47:41Z TYPE=service-readiness-final BAD=0 SERVICE=healthchecks HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://checks.vpn.gram1.ru STATE=running/healthy NOTE=canonical-domain-corrected-from-healthchecks-vpn-to-checks-vpn\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783619261777467514,\"path\":\"/srv/homelab-desired-state/health/service-readiness-healthchecks.txt\",\"sha256\":\"058719ad927e849e693923fc46d0a9d0ef2babba819d968b05d0e6a32f2f6edf\",\"size\":340,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-healthchecks.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-13T04:41:24Z TYPE=crypto-portfolio-remove-grt-runtime-dry-run BAD=0 COMMAND_PHYSICAL_LINES=1 VERIFIER_REVISION=V3 ANALYSIS_SOURCES=FULL_CHAT_CRYPTO_HANDOFF_CLUSTER_REFERENCE_ERROR_HISTORY PRODUCTION_CHANGED=NO PRODUCTION_DATABASE_CHANGED=NO CANDIDATE_DATABASE_CHANGED=ISOLATED_COPY_RUNTIME_CHECK_ONLY DESIRED_STATE_CHANGED=NO SERVICE_RESTARTED=NO PRODUCTION_CONTAINER_RECREATED=NO ISOLATED_CONTAINER_STARTED=YES ISOLATED_CONTAINER_CLEANED=YES CLOUD_WRITE_RUN=NO TARGET_HOST=core-apps.gram1.ru DESIRED_STATE_HEAD=b974057b536ece861299d0b230c06cc0e6702c39 INPUT_APP_SHA256=684ad884119554503db0ed36252aeb017c0c04b54729f30c51e66a7ab293f8bd INPUT_WORKER_SHA256=40a1c81111d7097120125b140683a8604abcb4051db5073ab8af708a11854038 INPUT_INDEX_SHA256=2b1ab459cabf3050af1db4a7b293fff7c2a9ac18bf4a14faa1efc70a3a3f63e3 ACTIVE_COINS=HBAR,POL CANDIDATE_GRT_REFERENCES=0 DATABASE_GRT_AFTER=0|0|0 WORKER_RUNTIME_CHECK=OK WEB_RUNTIME_CHECK=OK HTTP_RUNTIME_CHECK=OK HTTP_CODES=200|303|401|200|200|401\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783917691943052086,\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-runtime-dry-run.txt\",\"sha256\":\"2fb9cadb78f74a3fcebf23b9f623716c6ef023d253ee4a9d8e6ae8ac876e7892\",\"size\":1497,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/crypto-portfolio-remove-grt-runtime-dry-run.txt\"},{\"lines\":[{\"line\":1,\"text\":\"STATUS=OK TS=2026-07-09T19:32:34Z TYPE=service-readiness-final BAD=0 SERVICE=karakeep HOMEPAGE=OK NPMPLUS=OK KUMA=OK HEALTH=OK PUBLIC=OK BACKUP=OK OFFHOST=OK RESTORE=OK BACKUP_SLA=OK ALERTING=OK RUNBOOK=OK LOGS=OK URL=https://karakeep.vpn.gram1.ru STATE=app:running/healthy,meilisearch:running/nohealth,chrome:running/nohealth\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783625556748197752,\"path\":\"/srv/homelab-desired-state/health/service-readiness-karakeep.txt\",\"sha256\":\"694ae06a6ed89bb6c1e1b10171bc2eb21166459118ec2c415d8963a803d3face\",\"size\":327,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/service-readiness-karakeep.txt\"},{\"lines\":[{\"line\":1,\"text\":\"HOST|kuma|fqdn=kuma.vpn.gram1.ru|dns=100.100.60.182|http=301|https=200|location=https://kuma.vpn.gram1.ru/|cert_ok=yes\"},{\"line\":2,\"text\":\"HOST|homepage|fqdn=homepage.vpn.gram1.ru|dns=100.100.60.182|http=301|https=200|location=https://homepage.vpn.gram1.ru/|cert_ok=yes\"},{\"line\":3,\"text\":\"HOST|gitea|fqdn=gitea.vpn.gram1.ru|dns=100.100.60.182|http=301|https=200|location=https://gitea.vpn.gram1.ru/|cert_ok=yes\"},{\"line\":4,\"text\":\"HOST|filebrowser|fqdn=filebrowser.vpn.gram1.ru|dns=100.100.60.182|http=301|https=200|location=https://filebrowser.vpn.gram1.ru/|cert_ok=yes\"},{\"line\":5,\"text\":\"HOST|auth|fqdn=auth.vpn.gram1.ru|dns=100.100.60.182|http=301|https=200|location=https://auth.vpn.gram1.ru/|cert_ok=yes\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1785473496367948551,\"path\":\"/srv/homelab-desired-state/health/private-vpn-hosts.txt\",\"sha256\":\"21690d2c395bb4a56f72c727790afc4146b3710865deffe2067f6cd98c27ff63\",\"size\":641,\"uid\":0},\"path\":\"/srv/homelab-desired-state/health/private-vpn-hosts.txt\"},{\"lines\":[{\"line\":3,\"text\":\"  \\\"host\\\": \\\"edge-vm.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783944646020037205,\"path\":\"/srv/homelab-desired-state/app-states/latest-hapusya-site.json\",\"sha256\":\"82315a126652ae435070b4f8025348dbd75800b0acdbe848b38200ddc2312a01\",\"size\":1975,\"uid\":0},\"path\":\"/srv/homelab-desired-state/app-states/latest-hapusya-site.json\"},{\"lines\":[{\"line\":17,\"text\":\"check \\\"public overall endpoint\\\" bash -c \\\"curl -k -fsS https://backup.gram1.ru/overall.txt | grep -q STATUS=\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783451585156819526,\"path\":\"/srv/homelab-desired-state/sbin/homelab-final-readiness-gate.bak-cluster-admin-hardgate-20260709T044746Z\",\"sha256\":\"da66763f888cf5b96f7a5fcaa95d95de8b30420949fec7d67776a8d119ec5e0c\",\"size\":6035,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-final-readiness-gate.bak-cluster-admin-hardgate-20260709T044746Z\"},{\"lines\":[{\"line\":10,\"text\":\"dns=\\\"$(getent hosts kuma.vpn.gram1.ru 2>/dev/null | awk '{print $1}' | head -n1 || true)\\\"\"},{\"line\":12,\"text\":\"  line=\\\"HOST|kuma|fqdn=kuma.vpn.gram1.ru|dns=$dns\\\"\"},{\"line\":13,\"text\":\"  grep -q \\\"HOST|kuma|fqdn=kuma.vpn.gram1.ru|dns=100.100.60\\\" \\\"$H\\\" 2>/dev/null || printf '%s|compat=added-for-kuma-keyword\\\\n' \\\"$line\\\" >> \\\"$H\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1782307022434277840,\"path\":\"/srv/homelab-desired-state/sbin/homelab-check-private-vpn-hosts.realnet-20260624T140509Z\",\"sha256\":\"912bde53ec047d89f0142d9ece9f13a27309d6979af6287604abbb0e0f8a4536\",\"size\":553,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-check-private-vpn-hosts.realnet-20260624T140509Z\"},{\"lines\":[{\"line\":15,\"text\":\"ssh -n -o BatchMode=yes -o ConnectTimeout=10 \\\"$CORE\\\" 'H=\\\"$(hostname -f 2>/dev/null || hostname)\\\"; { [ \\\"$H\\\" = \\\"core-apps.gram1.ru\\\" ] || [ \\\"$H\\\" = \\\"core-apps\\\" ]; } || exit 3; D=/opt/stacks/crypto-portfolio; T=\\\"$(sudo -n mktemp -d /tmp/crypto-portfolio-backup.XXXXXX)\\\"; trap \\\"sudo -n rm -rf \\\\\\\"$T\\\\\\\"\\\" EXIT; sudo -n install -d -m 700 \\\"$T/stack\\\" \\\"$T/stack/data\\\"; for F in compose.yaml Dockerfile requirements.txt app.py worker.py .dockerignore; do sudo -n test -s \\\"$D/$F\\\" && sudo -n cp -a \\\"$D/$F\\\" \\\"$T/stack/\\\"; done; sudo -n cp -a \\\"$D/templates\\\" \\\"$D/secrets\\\" \\\"$T/stack/\\\"; sudo -n python3 -c \\\"import sqlite3,sys;s=sqlite3.connect(sys.argv[1]);d=sqlite3.connect(sys.argv[2]);s.backup(d);d.close();s.close()\\\" \\\"$D/data/portfolio.db\\\" \\\"$T/stack/data/portfolio.db\\\"; for F in market.json worker-status.json; do sudo -n test -s \\\"$D/data/$F\\\" && sudo -n cp -a \\\"$D/data/$F\\\" \\\"$T/stack/data/\\\"; done; sudo -n tar -C \\\"$T\\\" -czf - stack' > \\\"$STAGE/remote.tgz\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1783749840508333194,\"path\":\"/srv/homelab-desired-state/sbin/crypto-portfolio-backup-run\",\"sha256\":\"536f44dd76b1f5216c0d2a537d4ecb6190b192b2b955a0ad0580ce1923638002\",\"size\":2285,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/crypto-portfolio-backup-run\"},{\"lines\":[{\"line\":64,\"text\":\"[[ \\\"$(/usr/bin/curl -sS -m8 --resolve git.gram1.ru:443:[PRIVATE_IP] -o /dev/null -w '%{http_code}' https://git.gram1.ru/)\\\" == 200 ]] || fail GITEA 69\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1784759151977086610,\"path\":\"/srv/homelab-desired-state/sbin/homelab-reader-change-gate\",\"sha256\":\"90470653345baac426d1ff6d3e3b1109a611ef7ba8d98b7453be0f732ced3597\",\"size\":3441,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-reader-change-gate\"},{\"lines\":[{\"line\":325,\"text\":\"        \\\"https://git.gram1.ru/.well-known/homelab-context.json\\\",\"},{\"line\":326,\"text\":\"        \\\"https://git.gram1.ru/.well-known/homelab-context.txt\\\",\"},{\"line\":327,\"text\":\"        \\\"https://git.gram1.ru/assets/homelab-context/index.html\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1784581638869385776,\"path\":\"/srv/homelab-desired-state/sbin/homelab-safe-exec\",\"sha256\":\"1c755e35f40ce565d88df958141901e4ec7afadcdd0dcb1573e06d831adf7528\",\"size\":14981,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-safe-exec\"},{\"lines\":[{\"line\":101,\"text\":\"  NPM_REQUIRED_VPN_SQL=\\\"SELECT count(*) FROM proxy_host WHERE is_deleted=0 AND enabled=1 AND ssl_forced=1 AND certificate_id=32 AND access_list_id=1 AND (domain_names LIKE '%actual-budget.vpn.gram1.ru%' OR domain_names LIKE '%grafana.vpn.gram1.ru%' OR domain_names LIKE '%homebox.vpn.gram1.ru%' OR domain_names LIKE '%mealie.vpn.gram1.ru%' OR domain_names LIKE '%n8n.vpn.gram1.ru%' OR domain_names LIKE '%netbox.vpn.gram1.ru%' OR domain_names LIKE '%node-red.vpn.gram1.ru%' OR domain_names LIKE '%beszel.vpn.gram1.ru%' OR domain_names LIKE '%it-tools.vpn.gram1.ru%' OR domain_names LIKE '%karakeep.vpn.gram1.ru%' OR domain_names LIKE '%linkding.vpn.gram1.ru%' OR domain_names LIKE '%minio.vpn.gram1.ru%' OR domain_names LIKE '%ntfy.vpn.gram1.ru%' OR domain_names LIKE '%searxng.vpn.gram1.ru%' OR domain_names LIKE '%syncthing.vpn.gram1.ru%' OR domain_names LIKE '%alertmanager.vpn.gram1.ru%' OR domain_names LIKE '%prometheus.vpn.gram1.ru%' OR domain_names LIKE '%homeassistant.vpn.gram1.ru%');\\\"\"},{\"line\":104,\"text\":\"NPM_CERT32_CHECK=\\\"$(sqlite3 \\\"$SNAP/edge-vm/npmplus/db/database.sqlite\\\" \\\"SELECT count(*) FROM certificate WHERE id=32 AND is_deleted=0 AND domain_names LIKE '%*.vpn.gram1.ru%';\\\" 2>>\\\"$ERR\\\" || echo error)\\\"\"},{\"line\":142,\"text\":\"RESTORE_CERT32_CHECK=\\\"$(sqlite3 \\\"$RESTORE/edge-vm/npmplus/db/database.sqlite\\\" \\\"SELECT count(*) FROM certificate WHERE id=32 AND is_deleted=0 AND domain_names LIKE '%*.vpn.gram1.ru%';\\\" 2>>\\\"$ERR\\\" || echo error)\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1782325806516302937,\"path\":\"/srv/homelab-desired-state/sbin/homelab-backup-npmplus-kuma-configs\",\"sha256\":\"8cb2c47de0879ec57df51411513ecc00d84fd2aad1b27939797b36da75c8e875\",\"size\":13772,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-backup-npmplus-kuma-configs\"},{\"lines\":[{\"line\":12,\"text\":\"PUBLIC_URL=\\\"https://backup.gram1.ru/overall.txt\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783347693211264665,\"path\":\"/srv/homelab-desired-state/sbin/homelab-kuma-monitor-policy\",\"sha256\":\"87e1f14bde3e5eb2d0512c949e1e32d7fe3214f38797559b6e3e1a9d855f059a\",\"size\":3824,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-kuma-monitor-policy\"},{\"lines\":[{\"line\":20,\"text\":\"curl -fsS --connect-timeout 8 --max-time 20 https://backup.gram1.ru/overall.txt -o \\\"$TMP\\\" 2>/dev/null\"},{\"line\":54,\"text\":\"- netbird.vpn.gram1.ru / 100.100.60.182 is edge-vm, not an independent external runner.\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783447538561827954,\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps.bak-final-tailfix-20260707T182128Z\",\"sha256\":\"08d4eb79b89fbfa5b9978f1b482e84f4bfffea504c33017493602fbb9a0e81d8\",\"size\":3327,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps.bak-final-tailfix-20260707T182128Z\"},{\"lines\":[{\"line\":17,\"text\":\"curl -fsS --connect-timeout 8 --max-time 20 https://backup.gram1.ru/overall.txt -o \\\"$TMP\\\" 2>/dev/null\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783448488517978618,\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps\",\"sha256\":\"fdbdeee1f2ea108d5318ea48b072e11f226d6f9d60957d9a95fb496e4322c19a\",\"size\":2608,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps\"},{\"lines\":[{\"line\":6,\"text\":\"kuma.vpn.gram1.ru\"},{\"line\":7,\"text\":\"homepage.vpn.gram1.ru\"},{\"line\":8,\"text\":\"gitea.vpn.gram1.ru\"},{\"line\":9,\"text\":\"filebrowser.vpn.gram1.ru\"},{\"line\":10,\"text\":\"auth.vpn.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1782309909348255553,\"path\":\"/srv/homelab-desired-state/sbin/homelab-check-private-vpn-hosts\",\"sha256\":\"591217150ef742117f677c4db12578528b1eaa0ec69ff31122003505a4fc7a82\",\"size\":1411,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-check-private-vpn-hosts\"},{\"lines\":[{\"line\":20,\"text\":\"curl -fsS --connect-timeout 8 --max-time 20 https://backup.gram1.ru/overall.txt -o \\\"$TMP\\\" 2>/dev/null\"},{\"line\":54,\"text\":\"- netbird.vpn.gram1.ru / 100.100.60.182 is edge-vm, not an independent external runner.\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783443351210790532,\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps.bak-tailfix-20260707T180537Z\",\"sha256\":\"08d4eb79b89fbfa5b9978f1b482e84f4bfffea504c33017493602fbb9a0e81d8\",\"size\":3327,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps.bak-tailfix-20260707T180537Z\"},{\"lines\":[{\"line\":39,\"text\":\"immutable=\\\"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/\\\"+commit+\\\"/runtime/history/\\\"+cid+\\\".txt\\\"\"},{\"line\":47,\"text\":\"url=\\\"https://git.gram1.ru/.well-known/homelab-reader/\\\"+match.group(1)\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1784824702232864122,\"path\":\"/srv/homelab-desired-state/sbin/homelab-reader-result-publish\",\"sha256\":\"9cb8f7f1e9f300176a87f1abc8a9c51c92aeb9bea3514c7a9d9019ec400d4fd7\",\"size\":2914,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-reader-result-publish\"},{\"lines\":[{\"line\":17,\"text\":\"check \\\"public overall endpoint\\\" bash -c \\\"curl -k -fsS https://backup.gram1.ru/overall.txt | grep -q STATUS=\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1783898557281683025,\"path\":\"/srv/homelab-desired-state/sbin/homelab-final-readiness-gate\",\"sha256\":\"b7ed04b335f6bbab3811e2cf00606f32b181521280f76d6de79e1e266231235b\",\"size\":7947,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-final-readiness-gate\"},{\"lines\":[{\"line\":17,\"text\":\"check \\\"public overall endpoint\\\" bash -c \\\"curl -k -fsS https://backup.gram1.ru/overall.txt | grep -q STATUS=\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1783572466213632993,\"path\":\"/srv/homelab-desired-state/sbin/homelab-final-readiness-gate.bak-cluster-admin-backup-webpanel-20260709T051329Z\",\"sha256\":\"329467e471c369c05eaa2e39820bb94a04e3ca0b4f2094a5a7dc704a57c8e770\",\"size\":6540,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-final-readiness-gate.bak-cluster-admin-backup-webpanel-20260709T051329Z\"},{\"lines\":[{\"line\":10,\"text\":\"URLS=\\\"https://backup.gram1.ru/overall.txt http://[PRIVATE_IP]:9101/overall.txt\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783449769031984212,\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps-health.bak-nocycle-20260707T184739Z\",\"sha256\":\"0fdbaeb93b40ddbc82b517b1fd843a4731999f8b640d5cdf1910e7c54f82545c\",\"size\":3153,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps-health.bak-nocycle-20260707T184739Z\"},{\"lines\":[{\"line\":674,\"text\":\"        \\\"https://git.gram1.ru/.well-known/\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1785422739562047130,\"path\":\"/srv/homelab-desired-state/sbin/homelab-chat-run.broken-20260730T153645Z\",\"sha256\":\"657b0b9ce7821d549f02e1f918a969ac7c447bd71101febf4b3b3e61677d2467\",\"size\":23357,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-chat-run.broken-20260730T153645Z\"},{\"lines\":[{\"line\":76,\"text\":\"PORTAL_BASE = \\\"https://run.vpn.gram1.ru\\\"\"},{\"line\":77,\"text\":\"EVIDENCE_BASE = \\\"https://evidence.vpn.gram1.ru\\\"\"},{\"line\":1939,\"text\":\"                \\\"evidence.vpn.gram1.ru:443:[PRIVATE_IP]\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1785257434839960288,\"path\":\"/srv/homelab-desired-state/sbin/homelab-command-adapter\",\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\",\"size\":86019,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-command-adapter\"},{\"lines\":[{\"line\":13,\"text\":\"ssh -n -o BatchMode=yes -o ConnectTimeout=10 \\\"$CORE\\\" 'H=\\\"$(hostname -f 2>/dev/null || hostname)\\\"; { [ \\\"$H\\\" = \\\"core-apps.gram1.ru\\\" ] || [ \\\"$H\\\" = \\\"core-apps\\\" ]; } || exit 3; D=/opt/stacks/crypto-portfolio; T=\\\"$(sudo -n mktemp -d /tmp/crypto-portfolio-backup.XXXXXX)\\\"; trap \\\"sudo -n rm -rf \\\\\\\"$T\\\\\\\"\\\" EXIT; sudo -n install -d -m 700 \\\"$T/stack\\\" \\\"$T/stack/data\\\"; for F in compose.yaml Dockerfile requirements.txt app.py worker.py .dockerignore; do sudo -n test -s \\\"$D/$F\\\" && sudo -n cp -a \\\"$D/$F\\\" \\\"$T/stack/\\\"; done; sudo -n cp -a \\\"$D/templates\\\" \\\"$D/secrets\\\" \\\"$T/stack/\\\"; sudo -n python3 -c \\\"import sqlite3,sys;s=sqlite3.connect(sys.argv[1]);d=sqlite3.connect(sys.argv[2]);s.backup(d);d.close();s.close()\\\" \\\"$D/data/portfolio.db\\\" \\\"$T/stack/data/portfolio.db\\\"; for F in market.json worker-status.json; do sudo -n test -s \\\"$D/data/$F\\\" && sudo -n cp -a \\\"$D/data/$F\\\" \\\"$T/stack/data/\\\"; done; sudo -n tar -C \\\"$T\\\" -czf - stack' > \\\"$STAGE/remote.tgz\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1783704792885620561,\"path\":\"/srv/homelab-desired-state/sbin/crypto-portfolio-backup-run.bak-short-flat-20260711T060400Z\",\"sha256\":\"27d0cfb37969c52e2516c98d2f399e3aa460dcfa8f0baf83e9bb7edf702d874d\",\"size\":2172,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/crypto-portfolio-backup-run.bak-short-flat-20260711T060400Z\"},{\"lines\":[{\"line\":674,\"text\":\"        \\\"https://git.gram1.ru/.well-known/\\\"\"},{\"line\":773,\"text\":\"PUBLIC_URL='https://git.gram1.ru/.well-known/homelab-runtime/latest.json'\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1785425805343562815,\"path\":\"/srv/homelab-desired-state/sbin/homelab-chat-run\",\"sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\",\"size\":21321,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-chat-run\"},{\"lines\":[{\"line\":33,\"text\":\"  echo \\\"$cert\\\" | grep -q \\\"DNS:\\\\*.vpn.gram1.ru\\\" || fail \\\"${name}_cert_san_missing\\\"\"},{\"line\":39,\"text\":\"check_host \\\"kuma\\\" \\\"kuma.vpn.gram1.ru\\\" \\\"^(200|302)$\\\"\"},{\"line\":40,\"text\":\"check_host \\\"homepage\\\" \\\"homepage.vpn.gram1.ru\\\" \\\"^200$\\\"\"},{\"line\":41,\"text\":\"check_host \\\"gitea\\\" \\\"gitea.vpn.gram1.ru\\\" \\\"^200$\\\"\"},{\"line\":42,\"text\":\"check_host \\\"filebrowser\\\" \\\"filebrowser.vpn.gram1.ru\\\" \\\"^200$\\\"\"},{\"line\":43,\"text\":\"check_host \\\"auth\\\" \\\"auth.vpn.gram1.ru\\\" \\\"^(200|302)$\\\"\"},{\"line\":45,\"text\":\"auth_live=\\\"$(curl -k -sS -o \\\"$TMPD/auth-live\\\" -w \\\"%{http_code}\\\" --max-time 8 https://auth.vpn.gram1.ru/-/health/live/ 2>/dev/null || echo error)\\\"\"},{\"line\":46,\"text\":\"auth_ready=\\\"$(curl -k -sS -o \\\"$TMPD/auth-ready\\\" -w \\\"%{http_code}\\\" --max-time 8 https://auth.vpn.gram1.ru/-/health/ready/ 2>/dev/null || echo error)\\\"\"},{\"line\":78,\"text\":\"echo \\\"$edge_out\\\" | grep -q \\\"17|\\\\[\\\\\\\"homepage.vpn.gram1.ru\\\\\\\"\\\\].*auth_request=none\\\" || fail \\\"homepage_auth_not_none\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1781751578563364783,\"path\":\"/srv/homelab-desired-state/sbin/homelab-check-private-vpn-hosts.real-20260624T131702Z\",\"sha256\":\"227d5c5bf4e3287bc44fdcb96d1b383e7973fbca491748fabfb3b5433cccc228\",\"size\":4503,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-check-private-vpn-hosts.real-20260624T131702Z\"},{\"lines\":[{\"line\":5,\"text\":\"VPS_ALIAS=\\\"${VPS_ALIAS:-netbird.vpn.gram1.ru}\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1782306007135818676,\"path\":\"/srv/homelab-desired-state/sbin/homelab-vps-identity-audit\",\"sha256\":\"b709691c52ae48432b70e197eb4810b6c374a05911cee3b9fdba4ecc67c76c3a\",\"size\":2161,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-vps-identity-audit\"},{\"lines\":[{\"line\":20,\"text\":\"curl -fsS --connect-timeout 8 --max-time 20 https://backup.gram1.ru/overall.txt -o \\\"$TMP\\\" 2>/dev/null\"},{\"line\":54,\"text\":\"- netbird.vpn.gram1.ru / 100.100.60.182 is edge-vm, not an independent external runner.\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783441405600588336,\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps.bak-fixed-v2-20260707T165551Z\",\"sha256\":\"ed358ab76eebe3b79c3f18a16878426f20b9b9054cadbe2159ffe3d7c2d0b0f9\",\"size\":3321,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps.bak-fixed-v2-20260707T165551Z\"},{\"lines\":[{\"line\":9,\"text\":\"URLS=\\\"https://backup.gram1.ru/overall.txt https://codevipe.ru https://gamevipe.ru https://hkmods.ru https://zakrutim.ru https://dsmods.ru https://gram1.ru https://pvepro.ru https://auth.gram1.ru https://vault.gram1.ru https://git.gram1.ru https://uptime.gram1.ru https://paper.gram1.ru https://memos.gram1.ru https://dozzle.gram1.ru https://gotify.gram1.ru\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783398535195119646,\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps-health.bak-owner-fix-20260707T184249Z\",\"sha256\":\"a1277cdfc1c3e8dc94f2c1d9552e7763f542fe3f1ef0ba6cb2df121bf126d3a9\",\"size\":3317,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps-health.bak-owner-fix-20260707T184249Z\"},{\"lines\":[{\"line\":27,\"text\":\"BASE = \\\"https://run.vpn.gram1.ru\\\"\"},{\"line\":28,\"text\":\"PORTAL_HOST = \\\"run.vpn.gram1.ru\\\"\"},{\"line\":36,\"text\":\"BRIDGE_CMD = '@echo off\\\\nsetlocal EnableExtensions DisableDelayedExpansion\\\\n\\\\nset \\\"ROOT=%LOCALAPPDATA%\\\\\\\\HomelabBridge\\\"\\\\nset \\\"CAPSULE=%~f1\\\"\\\\n\\\\nif \\\"%~1\\\"==\\\"\\\" (\\\\n  echo HOMELAB_BRIDGE_ERROR=NO_CAPSULE\\\\n  pause\\\\n  exit /b 64\\\\n)\\\\n\\\\nif /I not \\\"%~x1\\\"==\\\".hcmd\\\" (\\\\n  echo HOMELAB_BRIDGE_ERROR=INVALID_EXTENSION\\\\n  pause\\\\n  exit /b 65\\\\n)\\\\n\\\\nif not exist \\\"%CAPSULE%\\\" (\\\\n  echo HOMELAB_BRIDGE_ERROR=CAPSULE_NOT_FOUND\\\\n  pause\\\\n  exit /b 66\\\\n)\\\\n\\\\nif not exist \\\"%ROOT%\\\\\\\\curl.cfg\\\" (\\\\n  echo HOMELAB_BRIDGE_ERROR=NOT_ENROLLED\\\\n  pause\\\\n  exit /b 67\\\\n)\\\\n\\\\nset \\\"RESPONSE=%TEMP%\\\\\\\\homelab-bridge-%RANDOM%-%RANDOM%.txt\\\"\\\\n\\\\n\\\"%SystemRoot%\\\\\\\\System32\\\\\\\\curl.exe\\\" -q --proto =https --tlsv1.2 --config \\\"%ROOT%\\\\\\\\curl.cfg\\\" ^\\\\n  --fail-with-body ^\\\\n  --silent ^\\\\n  --show-error ^\\\\n  --connect-timeout 10 ^\\\\n  --max-time 180 ^\\\\n  --request POST ^\\\\n  --header \\\"Content-Type: application/octet-stream\\\" ^\\\\n  --data-binary \\\"@%CAPSULE%\\\" ^\\\\n  \\\"https://run.vpn.gram1.ru/api/import\\\" ^\\\\n  --output \\\"%RESPONSE%\\\"\\\\n\\\\nif errorlevel 1 (\\\\n  echo HO\"},{\"line\":37,\"text\":\"SETUP_TEMPLATE = '@echo off\\\\nsetlocal EnableExtensions DisableDelayedExpansion\\\\n\\\\nset \\\"ROOT=%LOCALAPPDATA%\\\\\\\\HomelabBridge\\\"\\\\nset \\\"TOKEN_TMP=%TEMP%\\\\\\\\homelab-enroll-%RANDOM%-%RANDOM%.txt\\\"\\\\n\\\\nif not exist \\\"%SystemRoot%\\\\\\\\System32\\\\\\\\curl.exe\\\" (\\\\n  echo HOMELAB_BRIDGE_SETUP_ERROR=CURL_MISSING\\\\n  pause\\\\n  exit /b 64\\\\n)\\\\n\\\\nif not exist \\\"%ROOT%\\\" mkdir \\\"%ROOT%\\\"\\\\nif errorlevel 1 (\\\\n  echo HOMELAB_BRIDGE_SETUP_ERROR=CREATE_DIRECTORY\\\\n  pause\\\\n  exit /b 65\\\\n)\\\\n\\\\n\\\"%SystemRoot%\\\\\\\\System32\\\\\\\\icacls.exe\\\" \\\"%ROOT%\\\" /inheritance:r /grant:r \\\"%USERDOMAIN%\\\\\\\\%USERNAME%:(OI)(CI)F\\\" >nul\\\\nif errorlevel 1 (\\\\n  echo HOMELAB_BRIDGE_SETUP_ERROR=ACL_DIRECTORY\\\\n  pause\\\\n  exit /b 72\\\\n)\\\\n\\\\n\\\"%SystemRoot%\\\\\\\\System32\\\\\\\\curl.exe\\\" -q --proto =https --tlsv1.2 ^\\\\n  --fail-with-body ^\\\\n  --silent ^\\\\n  --show-error ^\\\\n  --connect-timeout 10 ^\\\\n  --max-time 60 ^\\\\n  --request POST ^\\\\n  --header \\\"Content-Type: text/plain\\\" ^\\\\n  --data-binary \\\"__ENROLLMENT_TOKEN__\\\" ^\\\\n  \\\"https://run.vpn.gram1.ru/api/enroll\\\" ^\\\\n  --output \\\"%TOKEN_TMP%\\\"\\\\n\\\\n\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1785147080986831529,\"path\":\"/srv/homelab-desired-state/sbin/homelab-command-portal\",\"sha256\":\"97c69bd4fccf7272dadc911281c1503f411bae2dc11dac4b22b87f33d678ae52\",\"size\":39936,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-command-portal\"},{\"lines\":[{\"line\":18,\"text\":\"line \\\"- public overall: https://backup.gram1.ru/overall.txt\\\"\"},{\"line\":72,\"text\":\"line \\\"curl -k -fsS https://backup.gram1.ru/overall.txt\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783452999392787228,\"path\":\"/srv/homelab-desired-state/sbin/homelab-cluster-passport\",\"sha256\":\"1d47186f97a35df8650960658e56328797c29471fec36f41d7532222798c00f6\",\"size\":6192,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-cluster-passport\"},{\"lines\":[{\"line\":10,\"text\":\"URLS=\\\"https://backup.gram1.ru/overall.txt http://[PRIVATE_IP]:9101/overall.txt\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783450059956321821,\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps-health\",\"sha256\":\"e889270a26129bc9da104b19fbb05a00f7547485bac9f713292958311fd0d366\",\"size\":3280,\"uid\":0},\"path\":\"/srv/homelab-desired-state/sbin/homelab-external-probe-vps-health\"},{\"lines\":[{\"line\":4,\"text\":\"Collector: `pve01.gram1.ru`\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o640\",\"mtime_ns\":1784154375920318327,\"path\":\"/srv/homelab-ops/CURRENT_CONTEXT.md\",\"sha256\":\"9a772d6e8d6438e84b0d2459c69cd99dc51820dba46fae3897c94a661a43a993\",\"size\":1147,\"uid\":0},\"path\":\"/srv/homelab-ops/CURRENT_CONTEXT.md\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"collector_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":124,\"text\":\"    \\\"remote\\\": \\\"https://git.gram1.ru/homelab-admin/homelab-ops.git\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o640\",\"mtime_ns\":1784154375919824327,\"path\":\"/srv/homelab-ops/observed/current-context.json\",\"sha256\":\"d2c7e06967fd76e09bb8ca694f5132aadd65a9eca35fca8ba92ac11c168d4ebb\",\"size\":6036,\"uid\":0},\"path\":\"/srv/homelab-ops/observed/current-context.json\"},{\"lines\":[{\"line\":6,\"text\":\"      \\\"target\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":13,\"text\":\"      \\\"target\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":20,\"text\":\"      \\\"target\\\": \\\"pve03.gram1.ru\\\",\"},{\"line\":27,\"text\":\"      \\\"target\\\": \\\"edge-vm.gram1.ru\\\",\"},{\"line\":34,\"text\":\"      \\\"target\\\": \\\"forum-prod.gram1.ru\\\",\"},{\"line\":41,\"text\":\"      \\\"target\\\": \\\"core-apps.gram1.ru\\\",\"},{\"line\":48,\"text\":\"      \\\"target\\\": \\\"cluster-admin.gram1.ru\\\",\"},{\"line\":62,\"text\":\"      \\\"target\\\": \\\"monitoring.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o640\",\"mtime_ns\":1784154263754121903,\"path\":\"/srv/homelab-ops/inventory/access-paths.json\",\"sha256\":\"ac5dc881dcd9fcb72644bc893e866f463c9c2b9b4544e32434e21b5d34168fb5\",\"size\":1652,\"uid\":0},\"path\":\"/srv/homelab-ops/inventory/access-paths.json\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":98,\"text\":\"      \\\"host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":103,\"text\":\"      \\\"host\\\": \\\"pve02.gram1.ru\\\",\"},{\"line\":108,\"text\":\"      \\\"host\\\": \\\"pve03.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784381569327213062,\"path\":\"/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\",\"sha256\":\"636254d2526f0f62184d47cdb4c30c2831b11869c2000c557666f60b55d7691b\",\"size\":7440,\"uid\":0},\"path\":\"/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\"},{\"lines\":[{\"line\":14,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784381569327213062,\"path\":\"/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"sha256\":\"a49bcb32ac7212d7fb9768db8a277cb5525c873c84dd6fb633edae35dc6de532\",\"size\":4667,\"uid\":0},\"path\":\"/srv/homelab-ops/tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":122,\"text\":\"      \\\"host\\\": \\\"pve01.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784350113669712143,\"path\":\"/srv/homelab-ops/tasks/homelab-logrotate-namespace-latch-clearance-v1/task.json\",\"sha256\":\"3a8fdfb6b4b64880012fcc3bc6fee4be6f101377310325541f9776de6d1623f7\",\"size\":6750,\"uid\":0},\"path\":\"/srv/homelab-ops/tasks/homelab-logrotate-namespace-latch-clearance-v1/task.json\"},{\"lines\":[{\"line\":8,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1784350113669712143,\"path\":\"/srv/homelab-ops/tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\",\"sha256\":\"21802253966e8d94e8404fd6a217c8248004091dc9dd3b4c03193e3c81af4609\",\"size\":1869,\"uid\":0},\"path\":\"/srv/homelab-ops/tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\"},{\"lines\":[{\"line\":4,\"text\":\"  \\\"target_host\\\": \\\"pve01.gram1.ru\\\",\"},{\"line\":111,\"text\":\"      \\\"host\\\": \\\"pve01.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784373912544434393,\"path\":\"/srv/homelab-ops/tasks/skladchik-reports-monitor-controlled-reauth-v1/task.json\",\"sha256\":\"d3108777e5094468aa3e633740ce8a56c90ca957a9a62932be896bbe784680b0\",\"size\":13579,\"uid\":0},\"path\":\"/srv/homelab-ops/tasks/skladchik-reports-monitor-controlled-reauth-v1/task.json\"},{\"lines\":[{\"line\":11,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784369933041417855,\"path\":\"/srv/homelab-ops/tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\",\"sha256\":\"f3e533ebd72ba2343a78797a8087c529c9fcfa2b3cabc45b3c0bd477356a8cc9\",\"size\":3076,\"uid\":0},\"path\":\"/srv/homelab-ops/tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\"},{\"lines\":[{\"line\":112,\"text\":\"    if fqdn != \\\"pve01.gram1.ru\\\":\"},{\"line\":210,\"text\":\"            \\\"remote\\\": \\\"https://git.gram1.ru/homelab-admin/homelab-ops.git\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o640\",\"mtime_ns\":1784154263754379506,\"path\":\"/srv/homelab-ops/tools/collect_context.py\",\"sha256\":\"4d42623567c9e30d46a78bccd30c754319712d64012c722c33265e7de62c017c\",\"size\":11071,\"uid\":0},\"path\":\"/srv/homelab-ops/tools/collect_context.py\"},{\"lines\":[{\"line\":77,\"text\":\"    assert_true(context.get(\\\"collector_host\\\") == \\\"pve01.gram1.ru\\\", \\\"unexpected collector host\\\")\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o640\",\"mtime_ns\":1784154263754451430,\"path\":\"/srv/homelab-ops/tools/validate_repo.py\",\"sha256\":\"58fddb5f43f0668f70405ad09b5d79aa59d934329ed708f09b26692130781b35\",\"size\":4893,\"uid\":0},\"path\":\"/srv/homelab-ops/tools/validate_repo.py\"},{\"lines\":[{\"line\":157,\"text\":\"test \\\"$(hostname -f)\\\" = pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784373912544434393,\"path\":\"/srv/homelab-ops/tools/skladchik-cookie-refresh\",\"sha256\":\"1e2f5323abf880f3e8b17bf1f2d0a844c402a9bbf5f24159ed39aaf1d79caef0\",\"size\":10086,\"uid\":0},\"path\":\"/srv/homelab-ops/tools/skladchik-cookie-refresh\"},{\"lines\":[{\"line\":24,\"text\":\"      \\\"const\\\": \\\"pve01.gram1.ru\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o640\",\"mtime_ns\":1784154263754238755,\"path\":\"/srv/homelab-ops/schemas/context.schema.json\",\"sha256\":\"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043\",\"size\":539,\"uid\":0},\"path\":\"/srv/homelab-ops/schemas/context.schema.json\"},{\"lines\":[{\"line\":20,\"text\":\"API=https://git.gram1.ru/api/v1/repos/homelab-admin/homelab-ops\"},{\"line\":144,\"text\":\"[[ \\\"$(hostname -f)\\\" == pve01.gram1.ru ]]\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1784360675564833388,\"path\":\"/root/finish_skladchik_cr_2026_0010_v2.sh\",\"sha256\":\"ccb53e47546870d70a1bc22d9bec2d342478c72b98ae8de0561171eadb8234ca\",\"size\":14820,\"uid\":0},\"path\":\"/root/finish_skladchik_cr_2026_0010_v2.sh\"},{\"lines\":[{\"line\":18,\"text\":\"  ssh debian@[PRIVATE_IP] \\\"sudo docker ps --format '{{.Names}} {{.Status}} {{.Ports}}' | grep -E '^jellyfin ' || true; echo EDGE_MOUNTS; sudo docker inspect jellyfin --format '{{range .Mounts}}{{println .Source}}{{end}}' 2>/dev/null | sort -u || true; curl -sk -H 'Host: jellyfin.vpn.gram1.ru' -o /tmp/edge_jellyfin_741.html -w 'EDGE_JELLYFIN_LOCAL=%{http_code}\\\\n' http://127.0.0.1:8019/ || true\\\"\"},{\"line\":42,\"text\":\"    direct=$(curl -sk -H 'Host: jellyfin.vpn.gram1.ru' -o /tmp/jellyfin_direct_741.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:8019/ || true)\"},{\"line\":43,\"text\":\"    npm=$(ssh debian@[PRIVATE_IP] \\\"sudo docker exec npmplus sh -lc \\\\\\\"curl -sk -H 'Host: jellyfin.vpn.gram1.ru' -o /tmp/jellyfin_741.html -w '%{http_code}' http://[PRIVATE_IP]:8019/ || true\\\\\\\"\\\" || true)\"},{\"line\":67,\"text\":\"    code=$(curl -sk --resolve \\\"jellyfin.vpn.gram1.ru:443:[PRIVATE_IP]\\\" -o /tmp/jellyfin_route_741.html -w \\\"%{http_code}\\\" \\\"https://jellyfin.vpn.gram1.ru/\\\" || true)\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782974914004604440,\"path\":\"/root/741_jellyfin_cutover.sh\",\"sha256\":\"1739e4d700d431989a4e5a9e0f948a9782c3683d9be7fccded3e590da36a47ca\",\"size\":6185,\"uid\":0},\"path\":\"/root/741_jellyfin_cutover.sh\"},{\"lines\":[{\"line\":44,\"text\":\"    audio=$(curl -sk -H 'Host: audiobooks.vpn.gram1.ru' -o /tmp/audiobooks_740.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:8020/ || true)\"},{\"line\":45,\"text\":\"    books=$(curl -sk -H 'Host: books.vpn.gram1.ru' -o /tmp/books_740.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:8021/ || true)\"},{\"line\":46,\"text\":\"    npm_audio=$(ssh debian@[PRIVATE_IP] \\\"sudo docker exec npmplus sh -lc \\\\\\\"curl -sk -H 'Host: audiobooks.vpn.gram1.ru' -o /tmp/audiobooks_740.html -w '%{http_code}' http://[PRIVATE_IP]:8020/ || true\\\\\\\"\\\" || true)\"},{\"line\":47,\"text\":\"    npm_books=$(ssh debian@[PRIVATE_IP] \\\"sudo docker exec npmplus sh -lc \\\\\\\"curl -sk -H 'Host: books.vpn.gram1.ru' -o /tmp/books_740.html -w '%{http_code}' http://[PRIVATE_IP]:8021/ || true\\\\\\\"\\\" || true)\"},{\"line\":72,\"text\":\"    audio_code=$(curl -sk --resolve \\\"audiobooks.vpn.gram1.ru:443:[PRIVATE_IP]\\\" -o /tmp/audiobooks_route_740.html -w \\\"%{http_code}\\\" \\\"https://audiobooks.vpn.gram1.ru/\\\" || true)\"},{\"line\":73,\"text\":\"    books_code=$(curl -sk --resolve \\\"books.vpn.gram1.ru:443:[PRIVATE_IP]\\\" -o /tmp/books_route_740.html -w \\\"%{http_code}\\\" \\\"https://books.vpn.gram1.ru/\\\" || true)\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782974733162840780,\"path\":\"/root/740_media_books_cutover.sh\",\"sha256\":\"c3c0c164033b60191ea722b64083890bddedbc042ee77b83fc12a0c0bfdf73a7\",\"size\":8426,\"uid\":0},\"path\":\"/root/740_media_books_cutover.sh\"},{\"lines\":[{\"line\":453,\"text\":\"  for h in auth.gram1.ru photos.gram1.ru git.gram1.ru n8n.vpn.gram1.ru mealie.vpn.gram1.ru karakeep.vpn.gram1.ru dozzle.gram1.ru npmplus.vpn.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783001713345765242,\"path\":\"/root/771h_crowdsec_capi_register_correct_sequence.sh\",\"sha256\":\"ee6fbc099aa24ec3404821905d4e962c242f43ecc7af8092e54334b273d2f7aa\",\"size\":20573,\"uid\":0},\"path\":\"/root/771h_crowdsec_capi_register_correct_sequence.sh\"},{\"lines\":[{\"line\":10,\"text\":\"REMOTE_URL=\\\"https://git.gram1.ru/${GITEA_USER}/${REPO_NAME}.git\\\"\"},{\"line\":11,\"text\":\"API_BASE=\\\"https://git.gram1.ru/api/v1\\\"\"},{\"line\":14,\"text\":\"API_BASE=\\\"https://git.gram1.ru/api/v1\\\"\"},{\"line\":97,\"text\":\"machine git.gram1.ru\"}],\"metadata\":{\"content_hash_omitted\":true,\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1781544371825534159,\"path\":\"/root/stage21c-push-with-gitea-token.sh.broken-20260615T172738Z\",\"size\":5787,\"uid\":0},\"path\":\"/root/stage21c-push-with-gitea-token.sh.broken-20260615T172738Z\"},{\"lines\":[{\"line\":314,\"text\":\"  for h in auth.gram1.ru photos.gram1.ru git.gram1.ru n8n.vpn.gram1.ru mealie.vpn.gram1.ru karakeep.vpn.gram1.ru dozzle.gram1.ru npmplus.vpn.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782999318704442125,\"path\":\"/root/771d_crowdsec_capi_via_privoxy_tor.sh\",\"sha256\":\"11bf35410ec035f9f93178618247507cb12dc46860bb30758fb3a734265a7cc0\",\"size\":16158,\"uid\":0},\"path\":\"/root/771d_crowdsec_capi_via_privoxy_tor.sh\"},{\"lines\":[{\"line\":71,\"text\":\"  ssh debian@[PRIVATE_IP] \\\"code=\\\\$(curl -sk --resolve 'auth.gram1.ru:443:[PRIVATE_IP]' -o /tmp/auth_after_750.html -w '%{http_code}' https://auth.gram1.ru/ || true); title=\\\\$(grep -Eio '<title>[^<]+' /tmp/auth_after_750.html 2>/dev/null | head -1 | sed 's/<title>//I' || true); echo EDGE_AUTH_ROUTE=\\\\$code TITLE=\\\\$title\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782977075486947385,\"path\":\"/root/750_authentik_db_proof_dump.sh\",\"sha256\":\"98b2f1e811de20b10388e70ba8951da9fc7257b29b9ffb9b5fe5125465704f56\",\"size\":4479,\"uid\":0},\"path\":\"/root/750_authentik_db_proof_dump.sh\"},{\"lines\":[{\"line\":6,\"text\":\"DOMAINS=\\\"dozzle.gram1.ru paper.gram1.ru memos.gram1.ru photos.gram1.ru auth.gram1.ru\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1781560515480697737,\"path\":\"/root/ag-add-new-service-rewrites.sh\",\"sha256\":\"77b2f72cc6887898c31ded5a6932b1ed4f2e8d386519f40e2ece7073a8ebe694\",\"size\":1648,\"uid\":0},\"path\":\"/root/ag-add-new-service-rewrites.sh\"},{\"lines\":[{\"line\":62,\"text\":\"    direct=$(curl -sk -H 'Host: netbox.vpn.gram1.ru' -o /tmp/netbox_direct_736.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:8000/ || true)\"},{\"line\":63,\"text\":\"    npm=$(ssh debian@[PRIVATE_IP] \\\"sudo docker exec npmplus sh -lc \\\\\\\"curl -sk -H 'Host: netbox.vpn.gram1.ru' -o /tmp/netbox_736.html -w '%{http_code}' http://[PRIVATE_IP]:8000/ || true\\\\\\\"\\\" || true)\"},{\"line\":81,\"text\":\"  ssh debian@[PRIVATE_IP] \\\"sudo docker ps --format '{{.Names}} {{.Status}} {{.Ports}}' | grep -E '^netbox' || true; curl -sk --resolve 'netbox.vpn.gram1.ru:443:[PRIVATE_IP]' -o /tmp/netbox_edge_736.html -w 'EDGE_ROUTE_NETBOX=%{http_code}\\\\n' https://netbox.vpn.gram1.ru/ || true\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782974247992950291,\"path\":\"/root/736_netbox_fix_links_pre_route.sh\",\"sha256\":\"e325b98918b9c3663b7b6dd9c3a82d4ab38d3e9f188f2b33f6aa54d6b10a29d0\",\"size\":5115,\"uid\":0},\"path\":\"/root/736_netbox_fix_links_pre_route.sh\"},{\"lines\":[{\"line\":196,\"text\":\"for url in \\\"https://uptime.gram1.ru\\\" \\\"$NEW_URL\\\"; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783027411043062158,\"path\":\"/root/773c_fix_npmplus_admin_red_monitor.sh\",\"sha256\":\"6d1b00ee766793642b20eb3d73e9784ae1bc84f8482cd49cfc9da1c8f854a439\",\"size\":9062,\"uid\":0},\"path\":\"/root/773c_fix_npmplus_admin_red_monitor.sh\"},{\"lines\":[{\"line\":586,\"text\":\"  for h in auth.gram1.ru photos.gram1.ru git.gram1.ru n8n.vpn.gram1.ru mealie.vpn.gram1.ru karakeep.vpn.gram1.ru dozzle.gram1.ru npmplus.vpn.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783014230694542054,\"path\":\"/root/771w_pve01_netbird_ssh_egress_crowdsec_capi.sh\",\"sha256\":\"fe9ac004c2013fe0ff413d5a5dbcfb2151203ba9426f8f50d0f7ac1c77eea178\",\"size\":24594,\"uid\":0},\"path\":\"/root/771w_pve01_netbird_ssh_egress_crowdsec_capi.sh\"},{\"lines\":[{\"line\":61,\"text\":\"dig @[PRIVATE_IP] nc.gram1.ru +short\"},{\"line\":62,\"text\":\"dig @[PRIVATE_IP] turn.gram1.ru +short\"},{\"line\":67,\"text\":\"curl -I --max-time 15 https://nc.gram1.ru | head -n 8 || true\"},{\"line\":68,\"text\":\"curl -I --max-time 10 http://uptime.gram1.ru | head -n 8 || true\"},{\"line\":69,\"text\":\"curl -I --max-time 10 http://gotify.gram1.ru | head -n 8 || true\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1781521417124378993,\"path\":\"/root/post-reboot-pve01-check.sh\",\"sha256\":\"232cf4cb84d55c115b6c2e5ba69520620fcf66aa905f0367d7fee12e9e1b8120\",\"size\":1929,\"uid\":0},\"path\":\"/root/post-reboot-pve01-check.sh\"},{\"lines\":[{\"line\":87,\"text\":\"curl -I --max-time 5 -H \\\"Host: uptime.gram1.ru\\\" http://127.0.0.1 2>/dev/null | head -n 5 || true\"},{\"line\":88,\"text\":\"curl -I --max-time 5 -H \\\"Host: gotify.gram1.ru\\\" http://127.0.0.1 2>/dev/null | head -n 5 || true\"},{\"line\":89,\"text\":\"curl -I --max-time 5 -H \\\"Host: nc.gram1.ru\\\" http://127.0.0.1 2>/dev/null | head -n 5 || true\"},{\"line\":122,\"text\":\"  dig @\\\"$DNS\\\" nc.gram1.ru +short || true\"},{\"line\":123,\"text\":\"  dig @\\\"$DNS\\\" turn.gram1.ru +short || true\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1781520588302036173,\"path\":\"/root/pre-reboot-audit.sh\",\"sha256\":\"813a6fd5c3fe16f387b27122132ee47c1505e643fd359e8ae5c78dadfb93b9a4\",\"size\":4075,\"uid\":0},\"path\":\"/root/pre-reboot-audit.sh\"},{\"lines\":[{\"line\":98,\"text\":\"location: https://nc.gram1.ru/login\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1781521992613955131,\"path\":\"/root/stage14-final-cleanup-audit-20260615T111307Z.txt\",\"sha256\":\"3dd3e506673623acbb60d37dcf147920002505cc84c07bf06a44a29ba49f903d\",\"size\":4975,\"uid\":0},\"path\":\"/root/stage14-final-cleanup-audit-20260615T111307Z.txt\"},{\"lines\":[{\"line\":3,\"text\":\"generator_host=pve01.gram1.ru\"},{\"line\":15,\"text\":\"node=pve01.gram1.ru\"},{\"line\":50,\"text\":\"[PRIVATE_IP] pve01.gram1.ru pve01\"},{\"line\":51,\"text\":\"[PRIVATE_IP] pve02.gram1.ru pve02\"},{\"line\":52,\"text\":\"[PRIVATE_IP] pve03.gram1.ru pve03\"},{\"line\":63,\"text\":\"search netbird.selfhosted gram1.ru\"},{\"line\":442,\"text\":\"node=pve02.gram1.ru\"},{\"line\":483,\"text\":\"[PRIVATE_IP] pve01.gram1.ru pve01\"},{\"line\":484,\"text\":\"[PRIVATE_IP] pve02.gram1.ru pve02\"},{\"line\":485,\"text\":\"[PRIVATE_IP] pve03.gram1.ru pve03\"},{\"line\":496,\"text\":\"search netbird.selfhosted gram1.ru\"},{\"line\":875,\"text\":\"node=pve03.gram1.ru\"},{\"line\":912,\"text\":\"[PRIVATE_IP] pve01.gram1.ru pve01\"},{\"line\":913,\"text\":\"[PRIVATE_IP] pve02.gram1.ru pve02\"},{\"line\":914,\"text\":\"[PRIVATE_IP] pve03.gram1.ru pve03\"},{\"line\":925,\"text\":\"search netbird.selfhosted gram1.ru\"},{\"line\":1304,\"text\":\"edge=edge-vm.gram1.ru\"},{\"line\":1555,\"text\":\"DOMAIN=https://vault.gram1.ru\"},{\"line\":1665,\"text\":\"DOMAIN = git.gram1.ru\"},{\"line\":1668,\"text\":\"ROOT_URL = https://git.gram1.ru/\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782244349037549140,\"path\":\"/root/homelab_cluster_audit_supplement_v3_20260623T195206Z.txt\",\"sha256\":\"f72a2c31c2f6d9c0864683e118f901eea8dd0fb08995f8521b57518c6d89e9ba\",\"size\":1117712,\"uid\":0},\"path\":\"/root/homelab_cluster_audit_supplement_v3_20260623T195206Z.txt\"},{\"lines\":[{\"line\":50,\"text\":\"        (\\\"BASE_URL: http://127.0.0.1:9001\\\", \\\"BASE_URL: https://mealie.vpn.gram1.ru\\\"),\"},{\"line\":51,\"text\":\"        (\\\"BASE_URL: http://0.0.0.0:9001\\\", \\\"BASE_URL: https://mealie.vpn.gram1.ru\\\"),\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782982134190734048,\"path\":\"/root/769b_fix_public_bind_remote_20260702T084854Z.sh\",\"sha256\":\"5650993df3008d0218b13f4b0471d96a165e35d5c8e5baa10a75f83df3d7a7b6\",\"size\":3851,\"uid\":0},\"path\":\"/root/769b_fix_public_bind_remote_20260702T084854Z.sh\"},{\"lines\":[{\"line\":214,\"text\":\"    for url in http://127.0.0.1:3000 https://homepage.vpn.gram1.ru https://home.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o755\",\"mtime_ns\":1783022817533839001,\"path\":\"/root/772d_remote_20260702T200657Z.sh\",\"sha256\":\"3a2627e6549b777ab52abd236bc78f675340d708f58dfd56cd57acdc5dc82e82\",\"size\":12013,\"uid\":0},\"path\":\"/root/772d_remote_20260702T200657Z.sh\"},{\"lines\":[{\"line\":266,\"text\":\"                    if host and host.endswith(\\\".vpn.gram1.ru\\\"):\"},{\"line\":349,\"text\":\"docker exec homepage sh -lc 'cat /etc/hosts | grep vpn.gram1.ru | sort || true'\"},{\"line\":357,\"text\":\"  \\\"https://searxng.vpn.gram1.ru\\\",\"},{\"line\":358,\"text\":\"  \\\"https://grafana.vpn.gram1.ru\\\",\"},{\"line\":359,\"text\":\"  \\\"https://prometheus.vpn.gram1.ru\\\",\"},{\"line\":360,\"text\":\"  \\\"https://alertmanager.vpn.gram1.ru\\\",\"},{\"line\":361,\"text\":\"  \\\"https://beszel.vpn.gram1.ru\\\",\"},{\"line\":362,\"text\":\"  \\\"https://ntfy.vpn.gram1.ru\\\",\"},{\"line\":364,\"text\":\"  \\\"https://netbox.vpn.gram1.ru\\\",\"},{\"line\":365,\"text\":\"  \\\"https://proxmox.vpn.gram1.ru\\\",\"},{\"line\":366,\"text\":\"  \\\"https://minio.vpn.gram1.ru\\\",\"},{\"line\":367,\"text\":\"  \\\"https://filebrowser.vpn.gram1.ru\\\",\"},{\"line\":368,\"text\":\"  \\\"https://actual-budget.vpn.gram1.ru\\\",\"},{\"line\":369,\"text\":\"  \\\"https://homebox.vpn.gram1.ru\\\",\"},{\"line\":370,\"text\":\"  \\\"https://mealie.vpn.gram1.ru\\\",\"},{\"line\":371,\"text\":\"  \\\"https://linkding.vpn.gram1.ru\\\",\"},{\"line\":372,\"text\":\"  \\\"https://karakeep.vpn.gram1.ru\\\",\"},{\"line\":373,\"text\":\"  \\\"https://it-tools.vpn.gram1.ru\\\",\"},{\"line\":374,\"text\":\"  \\\"https://n8n.vpn.gram1.ru\\\",\"},{\"line\":375,\"text\":\"  \\\"https://node-red.vpn.gram1.ru\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783025388335719219,\"path\":\"/root/772j_fix_homepage_red_badges_step1.sh\",\"sha256\":\"fceb513c59e0ba721e4ff5e340db9dacf39b6f02fa239b5275a947131a35dca6\",\"size\":15067,\"uid\":0},\"path\":\"/root/772j_fix_homepage_red_badges_step1.sh\"},{\"lines\":[{\"line\":326,\"text\":\"  for h in auth.gram1.ru photos.gram1.ru git.gram1.ru n8n.vpn.gram1.ru mealie.vpn.gram1.ru karakeep.vpn.gram1.ru dozzle.gram1.ru npmplus.vpn.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782983009276325108,\"path\":\"/root/771_crowdsec_capi_ipv4_restore_or_fallback.sh\",\"sha256\":\"08d9244af7e18d88bfc59a63ba5cd33860ceb71a17f9e6ea883eda3c341b8a0d\",\"size\":16689,\"uid\":0},\"path\":\"/root/771_crowdsec_capi_ipv4_restore_or_fallback.sh\"},{\"lines\":[{\"line\":1,\"text\":\"https://<REDACTED_USER>:<REDACTED_PASSWORD>@git.gram1.ru\"}],\"metadata\":{\"content_hash_omitted\":true,\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1785483205055349494,\"path\":\"/root/.git-credentials\",\"size\":139,\"uid\":0},\"path\":\"/root/.git-credentials\"},{\"lines\":[{\"line\":236,\"text\":\"lines.append(\\\"- CrowdSec CAPI: добавить в «Мониторинг» или «Безопасность» карточку на https://backup.gram1.ru/crowdsec-capi-netbird-final.txt.\\\")\"},{\"line\":246,\"text\":\"lines.append(\\\"- Unbound1/Unbound2: добавить DNS health-only карточки через backup.gram1.ru или node health endpoint.\\\")\"},{\"line\":299,\"text\":\"for url in https://homepage.vpn.gram1.ru https://home.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783021548206715656,\"path\":\"/root/772b_homepage_russian_normalize_apply.sh\",\"sha256\":\"140b5504f63778803073986e16e4e3649b4db1d40995096ec90aba81158ce772\",\"size\":16891,\"uid\":0},\"path\":\"/root/772b_homepage_russian_normalize_apply.sh\"},{\"lines\":[{\"line\":379,\"text\":\"166:    - domain: turn.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1781514687748843826,\"path\":\"/root/diag-pve03-dns2-20260615T091114Z.txt\",\"sha256\":\"5fe5fec067c406a0649f4671c721e839bd8fe727da0ac444a57f6667727a37e9\",\"size\":21616,\"uid\":0},\"path\":\"/root/diag-pve03-dns2-20260615T091114Z.txt\"},{\"lines\":[{\"line\":542,\"text\":\"  for h in auth.gram1.ru photos.gram1.ru git.gram1.ru n8n.vpn.gram1.ru mealie.vpn.gram1.ru karakeep.vpn.gram1.ru dozzle.gram1.ru npmplus.vpn.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783014983710861835,\"path\":\"/root/771x_crowdsec_capi_mtu_hardfix.sh\",\"sha256\":\"e09ac869f7c522bcb603a635e498c6f8de59775674c7bcac06ab5876d1e7c8a6\",\"size\":22295,\"uid\":0},\"path\":\"/root/771x_crowdsec_capi_mtu_hardfix.sh\"},{\"lines\":[{\"line\":44,\"text\":\"- domain: gram1.ru\"},{\"line\":45,\"text\":\"- public Nextcloud domain: nc.gram1.ru\"},{\"line\":82,\"text\":\"14. Verify nc.gram1.ru externally.\"},{\"line\":98,\"text\":\"- Cloudflare is required for public nc.gram1.ru and DNS-01.\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1781451058832187681,\"path\":\"/root/create-initial-emergency-pack.sh\",\"sha256\":\"dba6586da93102525471a7c7e1ebf0a2139890648bb43f00517b453ee3140d75\",\"size\":5142,\"uid\":0},\"path\":\"/root/create-initial-emergency-pack.sh\"},{\"lines\":[{\"line\":19,\"text\":\"  ssh debian@[PRIVATE_IP] \\\"sudo docker ps --format '{{.Names}} {{.Status}} {{.Ports}}' | grep -E '^syncthing ' || true; curl -sk -H 'Host: syncthing.vpn.gram1.ru' -o /tmp/edge_syncthing_753.html -w 'EDGE_SYNCTHING_LOCAL=%{http_code}\\\\n' http://127.0.0.1:8384/ || true\\\"\"},{\"line\":80,\"text\":\"    direct=$(curl -sk -H 'Host: syncthing.vpn.gram1.ru' -o /tmp/syncthing_direct_753.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:8384/ || true)\"},{\"line\":81,\"text\":\"    npm=$(ssh debian@[PRIVATE_IP] \\\"sudo docker exec npmplus sh -lc \\\\\\\"curl -sk -H 'Host: syncthing.vpn.gram1.ru' -o /tmp/syncthing_753.html -w '%{http_code}' http://[PRIVATE_IP]:8384/ || true\\\\\\\"\\\" || true)\"},{\"line\":106,\"text\":\"    code=$(curl -sk --resolve \\\"syncthing.vpn.gram1.ru:443:[PRIVATE_IP]\\\" -o /tmp/syncthing_route_753.html -w \\\"%{http_code}\\\" \\\"https://syncthing.vpn.gram1.ru/\\\" || true)\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782977633368426751,\"path\":\"/root/753_syncthing_cutover.sh\",\"sha256\":\"3244d8440398e5814b4b50ca79966dd199a8fae2be3e39b1ac11dce4e069d5ca\",\"size\":7065,\"uid\":0},\"path\":\"/root/753_syncthing_cutover.sh\"},{\"lines\":[{\"line\":344,\"text\":\"  for h in auth.gram1.ru photos.gram1.ru git.gram1.ru n8n.vpn.gram1.ru mealie.vpn.gram1.ru karakeep.vpn.gram1.ru dozzle.gram1.ru npmplus.vpn.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783001270373283216,\"path\":\"/root/771f_crowdsec_capi_godebug_mss_fix.sh\",\"sha256\":\"e51752c99e24da58469c14b02fc6cc28a5cb2052adb0f599a86e3a9800da1d1a\",\"size\":15642,\"uid\":0},\"path\":\"/root/771f_crowdsec_capi_godebug_mss_fix.sh\"},{\"lines\":[{\"line\":19,\"text\":\"  ssh debian@[PRIVATE_IP] \\\"sudo docker ps --format '{{.Names}} {{.Status}} {{.Ports}}' | grep -E '^minio' || true; echo EDGE_MOUNTS; sudo docker inspect minio --format '{{range .Mounts}}{{println .Source}}{{end}}' 2>/dev/null | sort -u || true; curl -sk -H 'Host: minio.vpn.gram1.ru' -o /tmp/edge_minio_739.html -w 'EDGE_MINIO_CONSOLE_LOCAL=%{http_code}\\\\n' http://127.0.0.1:9003/ || true\\\"\"},{\"line\":45,\"text\":\"    console=$(curl -sk -H 'Host: minio.vpn.gram1.ru' -o /tmp/minio_console_739.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:9003/ || true)\"},{\"line\":46,\"text\":\"    npm=$(ssh debian@[PRIVATE_IP] \\\"sudo docker exec npmplus sh -lc \\\\\\\"curl -sk -H 'Host: minio.vpn.gram1.ru' -o /tmp/minio_739.html -w '%{http_code}' http://[PRIVATE_IP]:9003/ || true\\\\\\\"\\\" || true)\"},{\"line\":70,\"text\":\"    code=$(curl -sk --resolve \\\"minio.vpn.gram1.ru:443:[PRIVATE_IP]\\\" -o /tmp/minio_route_739.html -w \\\"%{http_code}\\\" \\\"https://minio.vpn.gram1.ru/\\\" || true)\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782974622096261298,\"path\":\"/root/739_minio_cutover.sh\",\"sha256\":\"08de56adfdc2a0bc93fdbd0d2341983bea0c8087cd5dbd9cc3fb3ee2e69f7dd7\",\"size\":6298,\"uid\":0},\"path\":\"/root/739_minio_cutover.sh\"},{\"lines\":[{\"line\":695,\"text\":\"  for h in auth.gram1.ru photos.gram1.ru git.gram1.ru n8n.vpn.gram1.ru mealie.vpn.gram1.ru karakeep.vpn.gram1.ru dozzle.gram1.ru npmplus.vpn.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783005045295356498,\"path\":\"/root/771l_crowdsec_capi_netbird_vps_egress.sh\",\"sha256\":\"401396a25d4a5cfa487f67b355b45b27140ed1ac6b49b41e342306cb618dfdb5\",\"size\":28134,\"uid\":0},\"path\":\"/root/771l_crowdsec_capi_netbird_vps_egress.sh\"},{\"lines\":[{\"line\":3,\"text\":\"generator_host=pve01.gram1.ru\"},{\"line\":17,\"text\":\"pve01.gram1.ru\"},{\"line\":144,\"text\":\"search netbird.selfhosted gram1.ru\"},{\"line\":146,\"text\":\"--- gram1.ru ---\"},{\"line\":147,\"text\":\"95.84.154.183   STREAM gram1.ru\"},{\"line\":150,\"text\":\"--- home.gram1.ru ---\"},{\"line\":151,\"text\":\"[PRIVATE_IP]   STREAM home.gram1.ru\"},{\"line\":154,\"text\":\"--- git.gram1.ru ---\"},{\"line\":155,\"text\":\"[PRIVATE_IP]   STREAM git.gram1.ru\"},{\"line\":158,\"text\":\"--- vault.gram1.ru ---\"},{\"line\":159,\"text\":\"[PRIVATE_IP]   STREAM vault.gram1.ru\"},{\"line\":162,\"text\":\"--- checks.vpn.gram1.ru ---\"},{\"line\":163,\"text\":\"95.84.154.183   STREAM checks.vpn.gram1.ru\"},{\"line\":166,\"text\":\"--- vikunja.vpn.gram1.ru ---\"},{\"line\":167,\"text\":\"100.100.60.182  STREAM vikunja.vpn.gram1.ru\"},{\"line\":170,\"text\":\"--- bookstack.vpn.gram1.ru ---\"},{\"line\":171,\"text\":\"100.100.60.182  STREAM bookstack.vpn.gram1.ru\"},{\"line\":174,\"text\":\"--- pdf.vpn.gram1.ru ---\"},{\"line\":175,\"text\":\"100.100.60.182  STREAM pdf.vpn.gram1.ru\"},{\"line\":178,\"text\":\"--- jellyfin.vpn.gram1.ru ---\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782234356985327222,\"path\":\"/root/homelab_network_equipment_audit_20260623T170441Z.txt\",\"sha256\":\"c074427226f44191cbd319a3c27fb12bbbf0dc16311f1b4a351678003137a42c\",\"size\":43330,\"uid\":0},\"path\":\"/root/homelab_network_equipment_audit_20260623T170441Z.txt\"},{\"lines\":[{\"line\":312,\"text\":\"    if code == \\\"000\\\" and \\\".vpn.gram1.ru\\\" in url:\"},{\"line\":326,\"text\":\"lines.append(\\\"- Если ломаются *.vpn.gram1.ru из контейнера Homepage, чинить DNS/маршрут контейнера или добавлять extra_hosts на edge [PRIVATE_IP].\\\")\"},{\"line\":387,\"text\":\"  \\\"https://home.gram1.ru\\\" \\\\\"},{\"line\":388,\"text\":\"  \\\"https://homepage.vpn.gram1.ru\\\" \\\\\"},{\"line\":389,\"text\":\"  \\\"https://uptime.gram1.ru\\\" \\\\\"},{\"line\":390,\"text\":\"  \\\"https://kuma.vpn.gram1.ru\\\" \\\\\"},{\"line\":391,\"text\":\"  \\\"https://grafana.vpn.gram1.ru\\\" \\\\\"},{\"line\":392,\"text\":\"  \\\"https://prometheus.vpn.gram1.ru\\\" \\\\\"},{\"line\":393,\"text\":\"  \\\"https://alertmanager.vpn.gram1.ru\\\" \\\\\"},{\"line\":394,\"text\":\"  \\\"https://checks.vpn.gram1.ru\\\" \\\\\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783024463461644211,\"path\":\"/root/772h_homepage_monitoring_red_badges_diagnose.sh\",\"sha256\":\"66b5b958bf9f4be92ba8a5a6fc1da5ec6a94635f1a65ad303d287cebc355b1bf\",\"size\":15011,\"uid\":0},\"path\":\"/root/772h_homepage_monitoring_red_badges_diagnose.sh\"},{\"lines\":[{\"line\":43,\"text\":\"    direct=$(curl -sk -H 'Host: bookstack.vpn.gram1.ru' -o /tmp/bookstack_direct_732.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:8017/ || true)\"},{\"line\":44,\"text\":\"    npm=$(ssh debian@[PRIVATE_IP] \\\"sudo docker exec npmplus sh -lc \\\\\\\"curl -sk -H 'Host: bookstack.vpn.gram1.ru' -o /tmp/bookstack_732.html -w '%{http_code}' http://[PRIVATE_IP]:8017/ || true\\\\\\\"\\\" || true)\"},{\"line\":66,\"text\":\"    code=$(curl -sk --resolve \\\"bookstack.vpn.gram1.ru:443:[PRIVATE_IP]\\\" -o /tmp/bookstack_route_732.html -w \\\"%{http_code}\\\" \\\"https://bookstack.vpn.gram1.ru/\\\" || true)\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782971038961614596,\"path\":\"/root/732_bookstack_cutover.sh\",\"sha256\":\"c2ee0c062b49986fb1151092a884d49bbf56634815871d23ebec74fc036ff803\",\"size\":5655,\"uid\":0},\"path\":\"/root/732_bookstack_cutover.sh\"},{\"lines\":[{\"line\":165,\"text\":\"searchdomain: gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1781515691187191390,\"path\":\"/root/run-pve02-pve03-manual-backups-20260615T092719Z.log\",\"sha256\":\"bc79c87800f065f6cf7deda9eb6ce8c91886e9d6aa1bb54b895c8c4d0f5e045a\",\"size\":10452,\"uid\":0},\"path\":\"/root/run-pve02-pve03-manual-backups-20260615T092719Z.log\"},{\"lines\":[{\"line\":57,\"text\":\"  curl -sk --connect-timeout 8 --max-time 20 --resolve \\\"backup.gram1.ru:443:[PRIVATE_IP]\\\" -o /tmp/770b_backup_route.html -w 'backup.gram1.ru HTTP=%{http_code}\\\\n' https://backup.gram1.ru/ || true\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782982598693292319,\"path\":\"/root/770b_clean_local_backup_staging_leftover.sh\",\"sha256\":\"0a3fcad4e2b2797adeb1795df420b32885907cb36ab7cc7432ef7e8acb987fc9\",\"size\":2560,\"uid\":0},\"path\":\"/root/770b_clean_local_backup_staging_leftover.sh\"},{\"lines\":[{\"line\":70,\"text\":\"    auth.gram1.ru photos.gram1.ru homeassistant.vpn.gram1.ru vault.gram1.ru git.gram1.ru paper.gram1.ru \\\\\"},{\"line\":71,\"text\":\"    n8n.vpn.gram1.ru node-red.vpn.gram1.ru syncthing.vpn.gram1.ru netbox.vpn.gram1.ru \\\\\"},{\"line\":72,\"text\":\"    grafana.vpn.gram1.ru prometheus.vpn.gram1.ru alertmanager.vpn.gram1.ru ntfy.vpn.gram1.ru \\\\\"},{\"line\":73,\"text\":\"    uptime.gram1.ru gotify.gram1.ru checks.vpn.gram1.ru home.gram1.ru actual-budget.vpn.gram1.ru \\\\\"},{\"line\":74,\"text\":\"    homebox.vpn.gram1.ru mealie.vpn.gram1.ru linkding.vpn.gram1.ru karakeep.vpn.gram1.ru \\\\\"},{\"line\":75,\"text\":\"    filebrowser.vpn.gram1.ru vikunja.vpn.gram1.ru bookstack.vpn.gram1.ru pdf.vpn.gram1.ru \\\\\"},{\"line\":76,\"text\":\"    jellyfin.vpn.gram1.ru audiobooks.vpn.gram1.ru books.vpn.gram1.ru minio.vpn.gram1.ru \\\\\"},{\"line\":77,\"text\":\"    searxng.vpn.gram1.ru it-tools.vpn.gram1.ru beszel.vpn.gram1.ru memos.gram1.ru \\\\\"},{\"line\":78,\"text\":\"    dozzle.gram1.ru dockge.gram1.ru npmplus.vpn.gram1.ru backup.gram1.ru\"},{\"line\":90,\"text\":\"    \\\"homeassistant.vpn.gram1.ru:/api/websocket\\\" \\\\\"},{\"line\":91,\"text\":\"    \\\"node-red.vpn.gram1.ru:/comms\\\" \\\\\"},{\"line\":92,\"text\":\"    \\\"syncthing.vpn.gram1.ru:/rest/events/disk\\\" \\\\\"},{\"line\":93,\"text\":\"    \\\"grafana.vpn.gram1.ru:/api/live/ws\\\" \\\\\"},{\"line\":94,\"text\":\"    \\\"n8n.vpn.gram1.ru:/rest/push\\\"\"},{\"line\":166,\"text\":\"  ssh debian@$EDGE \\\"echo EDGE_BACKUP_CONTAINERS; sudo docker ps --format '{{.Names}} {{.Status}} {{.Ports}}' | grep -Ei 'kopia|backup|rclone|restic' || true; echo KOPIA_STACK_FILES; sudo find /opt/stacks/kopia -maxdepth 3 -type f -printf '%p\\\\n' 2>/dev/null | sort | sed -n '1,100p' || true; echo POSSIBLE_RCLONE_MAILRU_CONFIGS; sudo find /root /home /opt -maxdepth 5 -type f \\\\\\\\( -name '[SENSITIVE_FILE]' -o -name '*rclone*' -o -iname '*mailru*' -o -iname '*mail.ru*' \\\\\\\\) -printf '%p\\\\n' 2>/dev/null | sed -n '1,100p' || true; echo BACKUP_ROUTE; curl -sk --resolve backup.gram1.ru:443:$EDGE -o /tmp/backup_767.html -w 'backup.gram1.ru HTTP=%{http_code}\\\\n' https://backup.gram1.ru/ || true\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782981212367908716,\"path\":\"/root/767_deep_tail_and_regression_audit.sh\",\"sha256\":\"f0178b9f5a0b4e8ea435ee44079bd942fb555785d2d439f22921d5471b8211c4\",\"size\":14071,\"uid\":0},\"path\":\"/root/767_deep_tail_and_regression_audit.sh\"},{\"lines\":[{\"line\":28,\"text\":\"  direct_host=$(curl -sk -H 'Host: homeassistant.vpn.gram1.ru' -o /tmp/ha_direct_host_755.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:8123/ || true)\"},{\"line\":29,\"text\":\"  route=$(curl -sk --resolve \\\"homeassistant.vpn.gram1.ru:443:[PRIVATE_IP]\\\" -o /tmp/ha_route_755.html -w \\\"%{http_code}\\\" https://homeassistant.vpn.gram1.ru/ || true)\"},{\"line\":30,\"text\":\"  api=$(curl -sk --resolve \\\"homeassistant.vpn.gram1.ru:443:[PRIVATE_IP]\\\" -o /tmp/ha_api_755.html -w \\\"%{http_code}\\\" https://homeassistant.vpn.gram1.ru/api/ || true)\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782977981241501248,\"path\":\"/root/755_homeassistant_route_postcheck.sh\",\"sha256\":\"f95cdf9c12464e399aa9e04a2608be5b20c3291108ea74e9d6ae9ed2198face5\",\"size\":3006,\"uid\":0},\"path\":\"/root/755_homeassistant_route_postcheck.sh\"},{\"lines\":[{\"line\":151,\"text\":\"searchdomain: gram1.ru\"},{\"line\":172,\"text\":\"searchdomain: gram1.ru\"},{\"line\":191,\"text\":\"searchdomain: gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1781514937993674718,\"path\":\"/root/backup-inventory-20260615T091534Z.txt\",\"sha256\":\"6ee806b8d23a9cfb07d589940aeff1dcd8a5417e3a181b359ec9f9d96e7a1a2b\",\"size\":7780,\"uid\":0},\"path\":\"/root/backup-inventory-20260615T091534Z.txt\"},{\"lines\":[{\"line\":3,\"text\":\"SOURCE_HOST=pve01.gram1.ru\"},{\"line\":5,\"text\":\"REMOTE_HOST=core-apps.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1784612726861618653,\"path\":\"/root/CR0019-gitea-runtime-bootstrap-v2.txt\",\"sha256\":\"d9edf6edd1e00b7ba56967af20360a00ec1e42cd29d73ba68cc23fe9092d79b4\",\"size\":1161,\"uid\":0},\"path\":\"/root/CR0019-gitea-runtime-bootstrap-v2.txt\"},{\"lines\":[{\"line\":3,\"text\":\"generator_host=pve01.gram1.ru\"},{\"line\":29,\"text\":\"pve01.gram1.ru\"},{\"line\":91,\"text\":\"search netbird.selfhosted gram1.ru\"},{\"line\":93,\"text\":\"--- gram1.ru ---\"},{\"line\":94,\"text\":\"95.84.154.183   STREAM gram1.ru\"},{\"line\":97,\"text\":\"--- nc.gram1.ru ---\"},{\"line\":98,\"text\":\"[PRIVATE_IP]   STREAM nc.gram1.ru\"},{\"line\":101,\"text\":\"--- git.gram1.ru ---\"},{\"line\":102,\"text\":\"[PRIVATE_IP]   STREAM git.gram1.ru\"},{\"line\":105,\"text\":\"--- home.gram1.ru ---\"},{\"line\":106,\"text\":\"[PRIVATE_IP]   STREAM home.gram1.ru\"},{\"line\":109,\"text\":\"--- checks.vpn.gram1.ru ---\"},{\"line\":110,\"text\":\"95.84.154.183   STREAM checks.vpn.gram1.ru\"},{\"line\":113,\"text\":\"--- pve01.vpn.gram1.ru ---\"},{\"line\":114,\"text\":\"100.100.131.41  STREAM pve01.vpn.gram1.ru\"},{\"line\":117,\"text\":\"--- pve02.vpn.gram1.ru ---\"},{\"line\":118,\"text\":\"100.100.7.2     STREAM pve02.vpn.gram1.ru\"},{\"line\":121,\"text\":\"--- pve03.vpn.gram1.ru ---\"},{\"line\":122,\"text\":\"100.100.34.141  STREAM pve03.vpn.gram1.ru\"},{\"line\":131,\"text\":\"node_hostname=pve01.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782243274715431566,\"path\":\"/root/homelab_cluster_audit_supplement_v2_20260623T193322Z.txt\",\"sha256\":\"fa2033eeedd323f766daad3f13969bf63a0c3d86705cbe70c884692ef96ba9c8\",\"size\":305483,\"uid\":0},\"path\":\"/root/homelab_cluster_audit_supplement_v2_20260623T193322Z.txt\"},{\"lines\":[{\"line\":6,\"text\":\"NETBOX_URL=https://netbox.vpn.gram1.ru\"},{\"line\":10,\"text\":\"PROMETHEUS_URL=https://prometheus.vpn.gram1.ru\"},{\"line\":11,\"text\":\"ALERTMANAGER_ENDPOINT=https://alertmanager.vpn.gram1.ru/api/v2/alerts\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1782658119627158427,\"path\":\"/root/.homelab-strict100-gates.env\",\"sha256\":\"26c8fe9a5b14f60ef490332d8e6f2846ff46b63974ad589fc1643520c210444e\",\"size\":849,\"uid\":0},\"path\":\"/root/.homelab-strict100-gates.env\"},{\"lines\":[{\"line\":19,\"text\":\"  ssh debian@[PRIVATE_IP] \\\"sudo docker ps --format '{{.Names}} {{.Status}} {{.Ports}}' | grep -E '^vaultwarden' || true; echo EDGE_MOUNTS; sudo docker inspect vaultwarden --format '{{range .Mounts}}{{println .Source}}{{end}}' 2>/dev/null | sort -u || true; curl -sk -H 'Host: vault.gram1.ru' -o /tmp/edge_vaultwarden_738.html -w 'EDGE_VAULT_LOCAL=%{http_code}\\\\n' http://127.0.0.1:8083/ || true\\\"\"},{\"line\":43,\"text\":\"    direct=$(curl -sk -H 'Host: vault.gram1.ru' -o /tmp/vaultwarden_direct_738.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:8083/ || true)\"},{\"line\":44,\"text\":\"    npm=$(ssh debian@[PRIVATE_IP] \\\"sudo docker exec npmplus sh -lc \\\\\\\"curl -sk -H 'Host: vault.gram1.ru' -o /tmp/vaultwarden_738.html -w '%{http_code}' http://[PRIVATE_IP]:8083/ || true\\\\\\\"\\\" || true)\"},{\"line\":68,\"text\":\"    code=$(curl -sk --resolve \\\"vault.gram1.ru:443:[PRIVATE_IP]\\\" -o /tmp/vaultwarden_route_738.html -w \\\"%{http_code}\\\" \\\"https://vault.gram1.ru/\\\" || true)\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782974510774530466,\"path\":\"/root/738_vaultwarden_cutover.sh\",\"sha256\":\"b69ccf642bda68d082fa70693ed409a417a0fb5dfcb939ea448f80cb666fbb78\",\"size\":6307,\"uid\":0},\"path\":\"/root/738_vaultwarden_cutover.sh\"},{\"lines\":[{\"line\":567,\"text\":\"  for h in auth.gram1.ru photos.gram1.ru git.gram1.ru n8n.vpn.gram1.ru mealie.vpn.gram1.ru karakeep.vpn.gram1.ru dozzle.gram1.ru npmplus.vpn.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783002384670531904,\"path\":\"/root/771j_crowdsec_capi_via_cloudflare_warp_proxy.sh\",\"sha256\":\"502198e7af3511c501f1b744037b71f22b04bb58fd95b526e0a499ee4ef92e1a\",\"size\":24487,\"uid\":0},\"path\":\"/root/771j_crowdsec_capi_via_cloudflare_warp_proxy.sh\"},{\"lines\":[{\"line\":21,\"text\":\"  ssh debian@[PRIVATE_IP] \\\"sudo docker ps --format '{{.Names}} {{.Status}} {{.Ports}}' | grep -E '^netbox' || true; curl -sk -H 'Host: netbox.vpn.gram1.ru' -o /tmp/edge_netbox_735.html -w 'EDGE_NETBOX_LOCAL=%{http_code}\\\\n' http://127.0.0.1:8000/ || true\\\"\"},{\"line\":48,\"text\":\"      code=\\\\$(curl -sk -H \\\\\\\"Host: netbox.vpn.gram1.ru\\\\\\\" -o /tmp/netbox_target_735.html -w \\\\\\\"%{http_code}\\\\\\\" http://127.0.0.1:8000/ || true)\"},{\"line\":77,\"text\":\"  ssh debian@[PRIVATE_IP] \\\"sudo docker ps --format '{{.Names}} {{.Status}} {{.Ports}}' | grep -E '^netbox' || true; curl -sk --resolve 'netbox.vpn.gram1.ru:443:[PRIVATE_IP]' -o /tmp/netbox_edge_after_735.html -w 'EDGE_ROUTE_NETBOX=%{http_code}\\\\n' https://netbox.vpn.gram1.ru/ || true\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782973982388519764,\"path\":\"/root/735_netbox_target_diagnose_pre_route.sh\",\"sha256\":\"2cdb82899800d7f994212654ab72c60d827e8e7a9f128b6219a7edce69460603\",\"size\":3991,\"uid\":0},\"path\":\"/root/735_netbox_target_diagnose_pre_route.sh\"},{\"lines\":[{\"line\":569,\"text\":\"  for h in auth.gram1.ru photos.gram1.ru git.gram1.ru n8n.vpn.gram1.ru mealie.vpn.gram1.ru karakeep.vpn.gram1.ru dozzle.gram1.ru npmplus.vpn.gram1.ru; do\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1783004642823028448,\"path\":\"/root/771k_fix_warp_register_or_clean.sh\",\"sha256\":\"7d28d00b3be2144960414c0657091de0e04ce5260e4e945ad56cddc3d4fd3a4b\",\"size\":25126,\"uid\":0},\"path\":\"/root/771k_fix_warp_register_or_clean.sh\"},{\"lines\":[{\"line\":40,\"text\":\"  ssh debian@[PRIVATE_IP] \\\"code=\\\\$(curl -sk --resolve 'photos.gram1.ru:443:[PRIVATE_IP]' -o /tmp/immich_edge_746.html -w '%{http_code}' https://photos.gram1.ru/ || true); title=\\\\$(grep -Eio '<title>[^<]+' /tmp/immich_edge_746.html 2>/dev/null | head -1 | sed 's/<title>//I' || true); echo EDGE_ROUTE_PHOTOS=\\\\$code TITLE=\\\\$title; curl -sk -H 'Host: photos.gram1.ru' -o /tmp/immich_local_746.html -w 'EDGE_LOCAL_2283=%{http_code}\\\\n' http://127.0.0.1:2283/ || true\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782975610198588794,\"path\":\"/root/746_immich_preflight_readonly.sh\",\"sha256\":\"b23a999f9338a84f6523b1fde2c609be2e5fce909cea8f5c3150315f8a2117c2\",\"size\":3257,\"uid\":0},\"path\":\"/root/746_immich_preflight_readonly.sh\"},{\"lines\":[{\"line\":25,\"text\":\"    pve_up=$(curl -sk -H 'Host: uptime.gram1.ru' -o /tmp/pve_up_721.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:3001/ || true)\"},{\"line\":26,\"text\":\"    pve_hc=$(curl -sk -H 'Host: checks.vpn.gram1.ru' -o /tmp/pve_hc_721.html -w \\\"%{http_code}\\\" http://[PRIVATE_IP]:8015/ || true)\"},{\"line\":27,\"text\":\"    edge_up=$(ssh debian@[PRIVATE_IP] \\\"curl -sk -H 'Host: uptime.gram1.ru' -o /tmp/edge_up_721.html -w '%{http_code}' http://[PRIVATE_IP]:3001/ || true\\\")\"},{\"line\":28,\"text\":\"    edge_hc=$(ssh debian@[PRIVATE_IP] \\\"curl -sk -H 'Host: checks.vpn.gram1.ru' -o /tmp/edge_hc_721.html -w '%{http_code}' http://[PRIVATE_IP]:8015/ || true\\\")\"},{\"line\":29,\"text\":\"    npm_up=$(ssh debian@[PRIVATE_IP] \\\"sudo docker exec npmplus sh -lc \\\\\\\"curl -sk -H 'Host: uptime.gram1.ru' -o /tmp/npm_up_721.html -w '%{http_code}' http://[PRIVATE_IP]:3001/ || true\\\\\\\"\\\" || true)\"},{\"line\":30,\"text\":\"    npm_hc=$(ssh debian@[PRIVATE_IP] \\\"sudo docker exec npmplus sh -lc \\\\\\\"curl -sk -H 'Host: checks.vpn.gram1.ru' -o /tmp/npm_hc_721.html -w '%{http_code}' http://[PRIVATE_IP]:8015/ || true\\\\\\\"\\\" || true)\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782969893522720935,\"path\":\"/root/721_uptime_healthchecks_npmplus_path_precheck.sh\",\"sha256\":\"5cd54765f47fe5b6a482fdb728b7a48f82c7ec488649485b1952ffc28161d352\",\"size\":3757,\"uid\":0},\"path\":\"/root/721_uptime_healthchecks_npmplus_path_precheck.sh\"},{\"lines\":[{\"line\":6,\"text\":\"EXPECTED_HOST=\\\"pve01.gram1.ru\\\"\"},{\"line\":173,\"text\":\"  printf 'HOST|pve01.gram1.ru|root|local\\\\n'\"},{\"line\":174,\"text\":\"  printf 'HOST|pve02.gram1.ru|root|cluster-node\\\\n'\"},{\"line\":175,\"text\":\"  printf 'HOST|pve03.gram1.ru|root|cluster-node\\\\n'\"},{\"line\":176,\"text\":\"  printf 'HOST|edge-vm.gram1.ru|debian|sudo-n\\\\n'\"},{\"line\":177,\"text\":\"  printf 'HOST|core-apps.gram1.ru|debian|sudo-n\\\\n'\"},{\"line\":178,\"text\":\"  printf 'HOST|monitoring.gram1.ru|debian|sudo-n\\\\n'\"},{\"line\":179,\"text\":\"  printf 'HOST|cluster-admin.gram1.ru|debian|sudo-n\\\\n'\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1784152143518174818,\"path\":\"/root/homelab-ops-bootstrap-audit-v1.sh\",\"sha256\":\"1627933aae4acec993026dc1b765cd1d497a9aeae21cc55f829c219b5b48d949\",\"size\":8452,\"uid\":0},\"path\":\"/root/homelab-ops-bootstrap-audit-v1.sh\"}],\"fqdn\":\"pve01.gram1.ru\",\"hostname\":\"pve01\",\"log_summaries\":{},\"log_summary_count\":0,\"source_inventory\":{\"extension_counts\":{\".20260710t080231z\":1,\".20260721t110932z\":1,\".20260721t111219z\":1,\".bak\":3,\".bak-20260626t172508z-sec02-4-to-3\":2,\".bak-20260626t172523z-sec03-3-to-2\":2,\".bak-20260626t172535z-sec04-2-to-1\":2,\".bak-20260626t172547z-sec05-1-to-0\":2,\".bak-20260709t085129z\":1,\".bak-20260709t100252z\":1,\".bak-20260709t102350z\":1,\".bak-20260709t121314z\":1,\".bak-20260709t124213z\":1,\".bak-20260709t160119z\":1,\".bak-20260709t161731z\":1,\".bak-20260722t212606z\":1,\".bak-20260722t212804z\":1,\".bak-chunkall-20260710t011410z\":7,\".bak-cluster-admin-backup-webpanel-20260709t051329z\":2,\".bak-cluster-admin-hardgate-20260709t044746z\":2,\".bak-docker-check-v2-20260710t050044z\":1,\".bak-dual-read-20260711t051924z\":2,\".bak-final-tailfix-20260707t182128z\":1,\".bak-fixed-v2-20260707t165551z\":1,\".bak-flat-read-20260711t052854z\":1,\".bak-flat-read-v2-20260711t053129z\":1,\".bak-global-chunkonly-20260710t011036z\":1,\".bak-isolated-ip-20260710t044331z\":1,\".bak-nocycle-20260707t184739z\":1,\".bak-owner-fix-20260707t184249z\":1,\".bak-pgdump-fix-20260710t224544z\":1,\".bak-short-canary-20260711t053555z\":1,\".bak-short-flat-20260711t054441z\":2,\".bak-short-flat-20260711t060400z\":2,\".bak-short-flat-20260711t061345z\":1,\".bak-short-flat-20260711t062544z\":1,\".bak-short-flat-20260711t063643z\":1,\".bak-short-flat-20260711t064757z\":1,\".bak-tailfix-20260707t180537z\":1,\".broken-20260730t153645z\":1,\".core\":1,\".csv\":2,\".env\":4,\".js\":1,\".json\":628,\".log\":14,\".md\":1939,\".py\":12,\".real-20260624t131702z\":1,\".realnet-20260624t140509z\":1,\".service\":106,\".sh\":11,\".state\":2,\".timer\":97,\".toml\":1,\".tsv\":57,\".txt\":1015,\".yaml\":51,\".yml\":12,\"<none>\":146},\"framework_markers\":[{\"marker\":\"Docker Compose\",\"path\":\"source/01_homelab-configs-worktree/stacks/edge/gotify/compose.yaml\"}],\"largest_files\":[{\"bytes\":2153064,\"path\":\"source/snapshots_manifest.json\"},{\"bytes\":528351,\"path\":\"source/01_homelab-configs-worktree/reports/npmplus-api-certificate-endpoint-preflight-20260621.md\"},{\"bytes\":504281,\"path\":\"source/01_homelab-configs-worktree/reports/mkdocs-refresh-discovery-20260621.md\"},{\"bytes\":250691,\"path\":\"source/01_homelab-configs-worktree/reports/existing-backup-mechanism-deep-audit-rerun-20260622.md\"},{\"bytes\":171784,\"path\":\"source/03_operations/p2-07-health-surface-readability-status-inventory-20260625T231646Z.json\"},{\"bytes\":171784,\"path\":\"source/02_docs/operations/p2-07-health-surface-readability-status-inventory-20260625T231646Z.json\"},{\"bytes\":171784,\"path\":\"source/01_homelab-configs-worktree/docs/operations/p2-07-health-surface-readability-status-inventory-20260625T231646Z.json\"},{\"bytes\":106031,\"path\":\"source/02_docs/99-current-state-summary.md\"},{\"bytes\":106031,\"path\":\"source/01_homelab-configs-worktree/docs/99-current-state-summary.md\"},{\"bytes\":103668,\"path\":\"source/03_operations/p2-23-health-surface-operator-response-intake-readiness-close-20260626T023851Z.json\"},{\"bytes\":103668,\"path\":\"source/02_docs/operations/p2-23-health-surface-operator-response-intake-readiness-close-20260626T023851Z.json\"},{\"bytes\":103668,\"path\":\"source/01_homelab-configs-worktree/docs/operations/p2-23-health-surface-operator-response-intake-readiness-close-20260626T023851Z.json\"},{\"bytes\":100600,\"path\":\"source/03_operations/p2-22-health-surface-final-operator-handoff-bundle-close-20260626T023210Z.json\"},{\"bytes\":100600,\"path\":\"source/02_docs/operations/p2-22-health-surface-final-operator-handoff-bundle-close-20260626T023210Z.json\"},{\"bytes\":100600,\"path\":\"source/01_homelab-configs-worktree/docs/operations/p2-22-health-surface-final-operator-handoff-bundle-close-20260626T023210Z.json\"},{\"bytes\":89904,\"path\":\"source/03_operations/p0-alert-routing-preflight-20260625T050439Z.md\"},{\"bytes\":89904,\"path\":\"source/02_docs/operations/p0-alert-routing-preflight-20260625T050439Z.md\"},{\"bytes\":89904,\"path\":\"source/01_homelab-configs-worktree/docs/operations/p0-alert-routing-preflight-20260625T050439Z.md\"},{\"bytes\":85971,\"path\":\"source/04_homelab-desired-state/sbin/homelab-command-adapter\"},{\"bytes\":85278,\"path\":\"source/03_operations/p0-restore-drill-matrix-quality-offhost-20260624T183931Z.md\"},{\"bytes\":85278,\"path\":\"source/02_docs/operations/p0-restore-drill-matrix-quality-offhost-20260624T183931Z.md\"},{\"bytes\":85278,\"path\":\"source/01_homelab-configs-worktree/docs/operations/p0-restore-drill-matrix-quality-offhost-20260624T183931Z.md\"},{\"bytes\":85189,\"path\":\"source/03_operations/homelab-cluster-context-live.md\"},{\"bytes\":85189,\"path\":\"source/02_docs/operations/homelab-cluster-context-live.md\"},{\"bytes\":85189,\"path\":\"source/01_homelab-configs-worktree/docs/operations/homelab-cluster-context-live.md\"},{\"bytes\":84145,\"path\":\"source/03_operations/p0-edge-cleanup-preflight-20260624T192250Z.md\"},{\"bytes\":84145,\"path\":\"source/02_docs/operations/p0-edge-cleanup-preflight-20260624T192250Z.md\"},{\"bytes\":84145,\"path\":\"source/01_homelab-configs-worktree/docs/operations/p0-edge-cleanup-preflight-20260624T192250Z.md\"},{\"bytes\":81129,\"path\":\"source/01_homelab-configs-worktree/reports/homelab-service-inventory-ru-detailed-20260618T225817Z.txt\"},{\"bytes\":75334,\"path\":\"source/03_operations/p2-05-crowdsec-lapi-monitoring-coverage-inventory-20260625T225709Z.json\"}],\"packages\":[],\"stored_bytes\":25135855,\"stored_files\":4163},\"source_snapshots\":[{\"source_root\":\"/root/homelab-configs-worktree\",\"stored_bytes\":9347306,\"stored_files\":1322,\"truncated\":false},{\"source_root\":\"/root/homelab-configs-worktree/docs\",\"stored_bytes\":6362627,\"stored_files\":764,\"truncated\":false},{\"source_root\":\"/root/homelab-configs-worktree/docs/operations\",\"stored_bytes\":5969079,\"stored_files\":699,\"truncated\":false},{\"source_root\":\"/srv/homelab-desired-state\",\"stored_bytes\":1274899,\"stored_files\":957,\"truncated\":false},{\"source_root\":\"/srv/homelab-desired-state/health\",\"stored_bytes\":231477,\"stored_files\":493,\"truncated\":false}],\"sqlite_database_count\":0,\"systemd_service_count\":12,\"webserver_probes\":{}},{\"candidate_source_roots\":[{\"markers\":[],\"path\":\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"reasons\":[\"domain_match_parent\"],\"score\":2},{\"markers\":[],\"path\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"reasons\":[\"domain_match_parent\"],\"score\":2},{\"markers\":[],\"path\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"reasons\":[\"domain_match_parent\"],\"score\":1},{\"markers\":[],\"path\":\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"reasons\":[\"domain_match_parent\"],\"score\":1},{\"markers\":[],\"path\":\"/root/evidence/forum-prod-recreate-20260629T030810Z\",\"reasons\":[\"domain_match_parent\"],\"score\":1},{\"markers\":[],\"path\":\"/srv/homelab-desired-state/routerguard-tuya\",\"reasons\":[\"domain_match_parent\"],\"score\":1}],\"certificate_reference_count\":0,\"container_count\":0,\"container_inventory\":{},\"deployment_evidence\":[{\"line\":22,\"path\":\"systemd/units/kmod-static-nodes.service.cat.txt\",\"text\":\"ExecStart=/usr/bin/kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/static-nodes.conf\"},{\"line\":1,\"path\":\"systemd/units/kmod-static-nodes.service.show.txt\",\"text\":\"ExecStart={ path=/usr/bin/kmod ; argv[]=/usr/bin/kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/static-nodes.conf ; ignore_errors=no ; start_time=[Tue 2026-07-28 14:05:03 MSK] ; stop_time=[Tue 2026-07-28 14:05:03 MSK] ; pid=304 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/kmod-static-nodes.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":8,\"path\":\"systemd/units/prometheus-node-exporter-apt.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/apt_info.py | sponge /var/lib/prometheus/node-exporter/apt.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-apt.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/apt_info.py | sponge /var/lib/prometheus/node-exporter/apt.prom ; ignore_errors=no ; start_time=[Fri 2026-07-31 10:35:25 MSK] ; stop_time=[Fri 2026-07-31 10:35:26 MSK] ; pid=1765199 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-apt.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":10,\"path\":\"systemd/units/prometheus-node-exporter-ipmitool-sensor.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/bin/ipmitool sensor | /usr/share/prometheus-node-exporter-collectors/ipmitool | sponge /var/lib/prometheus/node-exporter/ipmitool_sensor.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-ipmitool-sensor.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/bin/ipmitool sensor | /usr/share/prometheus-node-exporter-collectors/ipmitool | sponge /var/lib/prometheus/node-exporter/ipmitool_sensor.prom ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-ipmitool-sensor.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":9,\"path\":\"systemd/units/prometheus-node-exporter-mellanox-hca-temp.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/mellanox_hca_temp | sponge /var/lib/prometheus/node-exporter/mellanox_hca_temp.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-mellanox-hca-temp.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/mellanox_hca_temp | sponge /var/lib/prometheus/node-exporter/mellanox_hca_temp.prom ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-mellanox-hca-temp.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":8,\"path\":\"systemd/units/prometheus-node-exporter-nvme.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/nvme_metrics.py | sponge /var/lib/prometheus/node-exporter/nvme.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-nvme.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/nvme_metrics.py | sponge /var/lib/prometheus/node-exporter/nvme.prom ; ignore_errors=no ; start_time=[Fri 2026-07-31 10:36:25 MSK] ; stop_time=[Fri 2026-07-31 10:36:25 MSK] ; pid=1765583 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-nvme.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":8,\"path\":\"systemd/units/prometheus-node-exporter-smartmon.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/smartmon.sh | sponge /var/lib/prometheus/node-exporter/smartmon.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-smartmon.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/smartmon.sh | sponge /var/lib/prometheus/node-exporter/smartmon.prom ; ignore_errors=no ; start_time=[Fri 2026-07-31 10:37:22 MSK] ; stop_time=[Fri 2026-07-31 10:37:23 MSK] ; pid=1765901 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-smartmon.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":9,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"EnvironmentFile=/etc/default/prometheus-node-exporter\"},{\"line\":10,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"ExecStart=/usr/bin/prometheus-node-exporter $ARGS\"},{\"line\":20,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"ExecStart=\"},{\"line\":21,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"ExecStart=/usr/bin/prometheus-node-exporter --collector.textfile.directory=/var/lib/node_exporter/textfile_collector\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter.service.show.txt\",\"text\":\"ExecStart={ path=/usr/bin/prometheus-node-exporter ; argv[]=/usr/bin/prometheus-node-exporter --collector.textfile.directory=/var/lib/node_exporter/textfile_collector ; ignore_errors=no ; start_time=[Tue 2026-07-28 14:05:06 MSK] ; stop_time=[n/a] ; pid=725 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter.service.show.txt\",\"text\":\"EnvironmentFiles=/etc/default/prometheus-node-exporter (ignore_errors=no)\"},{\"line\":3,\"path\":\"systemd/units/prometheus-node-exporter.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":10,\"path\":\"systemd/units/proxmox-boot-cleanup.service.cat.txt\",\"text\":\"ExecStart=/usr/sbin/proxmox-boot-tool kernel unpin --next-boot\"},{\"line\":11,\"path\":\"systemd/units/proxmox-boot-cleanup.service.cat.txt\",\"text\":\"ExecStart=/usr/sbin/proxmox-boot-tool refresh\"},{\"line\":1,\"path\":\"systemd/units/proxmox-boot-cleanup.service.show.txt\",\"text\":\"ExecStart={ path=/usr/sbin/proxmox-boot-tool ; argv[]=/usr/sbin/proxmox-boot-tool kernel unpin --next-boot ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/proxmox-boot-cleanup.service.show.txt\",\"text\":\"ExecStart={ path=/usr/sbin/proxmox-boot-tool ; argv[]=/usr/sbin/proxmox-boot-tool refresh ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":3,\"path\":\"systemd/units/proxmox-boot-cleanup.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":24,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev-early.service.cat.txt\",\"text\":\"ExecStart=systemd-tmpfiles --prefix=/dev --create --boot --graceful\"},{\"line\":1,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev-early.service.show.txt\",\"text\":\"ExecStart={ path=systemd-tmpfiles ; argv[]=systemd-tmpfiles --prefix=/dev --create --boot --graceful ; ignore_errors=no ; start_time=[Tue 2026-07-28 14:05:03 MSK] ; stop_time=[Tue 2026-07-28 14:05:03 MSK] ; pid=323 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev-early.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":25,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev.service.cat.txt\",\"text\":\"ExecStart=systemd-tmpfiles --prefix=/dev --create --boot\"},{\"line\":1,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev.service.show.txt\",\"text\":\"ExecStart={ path=systemd-tmpfiles ; argv[]=systemd-tmpfiles --prefix=/dev --create --boot ; ignore_errors=no ; start_time=[Tue 2026-07-28 14:05:03 MSK] ; stop_time=[Tue 2026-07-28 14:05:04 MSK] ; pid=337 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":15,\"path\":\"source/01_forum-prod-diag-20260629T032514Z/cloudinit-network.txt\",\"text\":\"- 'gram1.ru'\"},{\"line\":4,\"path\":\"source/01_forum-prod-diag-20260629T032514Z/cloudinit-user.txt\",\"text\":\"fqdn: forum-prod.gram1.ru\"},{\"line\":1,\"path\":\"source/02_forum-prod-os-baseline-20260629T034119Z/ops-proof.txt\",\"text\":\"forum-prod.gram1.ru\"},{\"line\":259,\"path\":\"source/02_forum-prod-os-baseline-20260629T034119Z/root-baseline.txt\",\"text\":\"forum-prod.gram1.ru\"},{\"line\":1,\"path\":\"source/03_forum-prod-offline-fix2-20260629T033832Z/ssh-proof.txt\",\"text\":\"forum-prod.gram1.ru\"},{\"line\":18,\"path\":\"source/04_forum-prod-recover-20260629T025511Z/qm-config.txt\",\"text\":\"searchdomain: gram1.ru\"},{\"line\":18,\"path\":\"source/05_forum-prod-recreate-20260629T030810Z/qm-config.txt\",\"text\":\"searchdomain: gram1.ru\"}],\"detected_frameworks\":[],\"directory\":\"hosts/pve02\",\"domain_match_count\":16,\"domain_matches\":[{\"lines\":[{\"line\":13,\"text\":\"    \\\"pve01.gram1.ru\\\": \\\"pve01\\\",\"},{\"line\":14,\"text\":\"    \\\"pve02.gram1.ru\\\": \\\"pve02\\\",\"},{\"line\":15,\"text\":\"    \\\"pve03.gram1.ru\\\": \\\"pve03\\\",\"},{\"line\":16,\"text\":\"    \\\"edge-vm.gram1.ru\\\": \\\"edge\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1784020546000000000,\"path\":\"/opt/cluster-admin-probe-target/responder.py\",\"sha256\":\"3e7585050d734ef0e3ccec7f98bde3626db31a6fd05e60dfb6f9976b371dea3c\",\"size\":2648,\"uid\":0},\"path\":\"/opt/cluster-admin-probe-target/responder.py\"},{\"lines\":[{\"line\":6,\"text\":\"case \\\"$HOST\\\" in pve02.gram1.ru|pve02) ;; *) echo REMOTE_HOST_CHECK_FAILED=\\\"$HOST\\\"; exit 2;; esac\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1783806967597496107,\"path\":\"/srv/homelab-desired-state/routerguard-tuya/routerguard-hard-power-cycle\",\"sha256\":\"3e0e48c055264fffa741fa9c0ef2c973081cc9c592a0ec7866d068b30edc30d6\",\"size\":2264,\"uid\":0},\"path\":\"/srv/homelab-desired-state/routerguard-tuya/routerguard-hard-power-cycle\"},{\"lines\":[{\"line\":2,\"text\":\"remote_host=pve02.gram1.ru\"},{\"line\":9,\"text\":\"dns2.gram1.ru\"},{\"line\":69,\"text\":\"-rw-------|root:root|2026-06-15 21:58|/opt/AdGuardHome/AdGuardHome.yaml.before-backup.gram1.ru-20260616T033835Z\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782259800407032864,\"path\":\"/root/dns2-AdGuardHome-diagnostic-20260624T000953Z.txt\",\"sha256\":\"198c31f7f56ba91077e535e3f06410e720ab3dbc3e9f1c15ef4feb79e6c54e49\",\"size\":3288,\"uid\":0},\"path\":\"/root/dns2-AdGuardHome-diagnostic-20260624T000953Z.txt\"},{\"lines\":[{\"line\":6,\"text\":\"DOMAINS=\\\"dozzle.gram1.ru paper.gram1.ru memos.gram1.ru photos.gram1.ru auth.gram1.ru\\\"\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o700\",\"mtime_ns\":1781560689562602745,\"path\":\"/root/ag-add-new-service-rewrites.sh\",\"sha256\":\"77b2f72cc6887898c31ded5a6932b1ed4f2e8d386519f40e2ece7073a8ebe694\",\"size\":1648,\"uid\":0},\"path\":\"/root/ag-add-new-service-rewrites.sh\"},{\"lines\":[{\"line\":3,\"text\":\"pve02.gram1.ru\"},{\"line\":63,\"text\":\"[PRIVATE_IP] pve01.gram1.ru pve01\"},{\"line\":64,\"text\":\"[PRIVATE_IP] pve02.gram1.ru pve02\"},{\"line\":65,\"text\":\"[PRIVATE_IP] pve03.gram1.ru pve03\"},{\"line\":69,\"text\":\"search netbird.selfhosted gram1.ru\"},{\"line\":201,\"text\":\"searchdomain: gram1.ru\"},{\"line\":229,\"text\":\"searchdomain: gram1.ru\"},{\"line\":248,\"text\":\"searchdomain: gram1.ru\"},{\"line\":262,\"text\":\"searchdomain: gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782753340842274201,\"path\":\"/root/cluster-audit-20260629T201245/02_pve02_audit.txt\",\"sha256\":\"1fd6205a7f0cbc9097fb90cb60b65c17c0458ecf1d6dd9b03f630633a674f6cf\",\"size\":24786,\"uid\":0},\"path\":\"/root/cluster-audit-20260629T201245/02_pve02_audit.txt\"},{\"lines\":[{\"line\":13,\"text\":\"searchdomain: gram1.ru\"},{\"line\":18,\"text\":\"dns2.gram1.ru\"},{\"line\":36,\"text\":\"search gram1.ru\"},{\"line\":83,\"text\":\"/opt/AdGuardHome/AdGuardHome.yaml.before-backup.gram1.ru-20260616T033835Z\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782754881727248578,\"path\":\"/root/cluster-audit-20260629T201245/16_pve02_ct_111_audit.txt\",\"sha256\":\"38d3eaf0f8423e2fa997c6c588318525638ae7cd13db876590f43c1ec31d3b98\",\"size\":4758,\"uid\":0},\"path\":\"/root/cluster-audit-20260629T201245/16_pve02_ct_111_audit.txt\"},{\"lines\":[{\"line\":13,\"text\":\"searchdomain: gram1.ru\"},{\"line\":18,\"text\":\"unbound2.gram1.ru\"},{\"line\":36,\"text\":\"search gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782754884344262178,\"path\":\"/root/cluster-audit-20260629T201245/16_pve02_ct_113_audit.txt\",\"sha256\":\"7373f92fc5820ee30981764a0aadeb55ae15205d62f7b1d10b5a35998861b25d\",\"size\":4843,\"uid\":0},\"path\":\"/root/cluster-audit-20260629T201245/16_pve02_ct_113_audit.txt\"},{\"lines\":[{\"line\":10,\"text\":\"[PRIVATE_IP],forum-prod.gram1.ru ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIfJmXrEKDwKx50N0gQn6DhOGNjAl46lA2vPrlW1c1IM\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784142417367697254,\"path\":\"[SENSITIVE_PATH] ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIfJmXrEKDwKx50N0gQn6DhOGNjAl46lA2vPrlW1c1IM\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784142517352899074,\"path\":\"[SENSITIVE_PATH] gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782701714548111338,\"path\":\"/root/evidence/forum-prod-recover-20260629T025511Z/qm-config.txt\",\"sha256\":\"276a07fee699041e6c1468c8bf8c712308b30e0cb49d724e11c6c02d493352ac\",\"size\":1373,\"uid\":0},\"path\":\"/root/evidence/forum-prod-recover-20260629T025511Z/qm-config.txt\"},{\"lines\":[{\"line\":259,\"text\":\"forum-prod.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782704555400405080,\"path\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z/root-baseline.txt\",\"sha256\":\"e348fee67be7c81a9a0de9979bc4a6a920fa004d8e11bd8b8f11d966c24b8c61\",\"size\":14409,\"uid\":0},\"path\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z/root-baseline.txt\"},{\"lines\":[{\"line\":1,\"text\":\"forum-prod.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782704556627411307,\"path\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z/ops-proof.txt\",\"sha256\":\"c01181e5db2ba4ee512b826b3203780337c755e568039f87f8a862b1ca81f48e\",\"size\":86,\"uid\":0},\"path\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z/ops-proof.txt\"},{\"lines\":[{\"line\":18,\"text\":\"searchdomain: gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782702507057056227,\"path\":\"/root/evidence/forum-prod-recreate-20260629T030810Z/qm-config.txt\",\"sha256\":\"b7fe1a7e6838b4a12c435a3a09e5915eba6f182d42a13385761beebd81cebd9e\",\"size\":3425,\"uid\":0},\"path\":\"/root/evidence/forum-prod-recreate-20260629T030810Z/qm-config.txt\"},{\"lines\":[{\"line\":1,\"text\":\"forum-prod.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782704328177251854,\"path\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z/ssh-proof.txt\",\"sha256\":\"d5ec41ddb54be604240e4201cf55f3d90f81dc26051d55bd161c4386ee2e2232\",\"size\":161,\"uid\":0},\"path\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z/ssh-proof.txt\"},{\"lines\":[{\"line\":4,\"text\":\"fqdn: forum-prod.gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782703517302135262,\"path\":\"/root/evidence/forum-prod-diag-20260629T032514Z/cloudinit-user.txt\",\"sha256\":\"aaeb24e5cf66792fd3143dcd0c3714e5877d81a3a5acb60608c97dadb67077ee\",\"size\":360,\"uid\":0},\"path\":\"/root/evidence/forum-prod-diag-20260629T032514Z/cloudinit-user.txt\"},{\"lines\":[{\"line\":15,\"text\":\"      - 'gram1.ru'\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782703516506131218,\"path\":\"/root/evidence/forum-prod-diag-20260629T032514Z/cloudinit-network.txt\",\"sha256\":\"0dcc214f6dc501b413a3bbfd42372c160c020648782e44edde4c3e1f0ea8a63d\",\"size\":320,\"uid\":0},\"path\":\"/root/evidence/forum-prod-diag-20260629T032514Z/cloudinit-network.txt\"}],\"fqdn\":\"pve02.gram1.ru\",\"hostname\":\"pve02\",\"log_summaries\":{},\"log_summary_count\":0,\"source_inventory\":{\"extension_counts\":{\".err\":4,\".json\":2,\".txt\":11},\"framework_markers\":[],\"largest_files\":[{\"bytes\":14281,\"path\":\"source/02_forum-prod-os-baseline-20260629T034119Z/root-baseline.txt\"},{\"bytes\":8930,\"path\":\"source/snapshots_manifest.json\"},{\"bytes\":3425,\"path\":\"source/05_forum-prod-recreate-20260629T030810Z/qm-config.txt\"},{\"bytes\":1373,\"path\":\"source/04_forum-prod-recover-20260629T025511Z/qm-config.txt\"},{\"bytes\":370,\"path\":\"source/01_forum-prod-diag-20260629T032514Z/cloudinit-user.txt\"},{\"bytes\":320,\"path\":\"source/01_forum-prod-diag-20260629T032514Z/cloudinit-network.txt\"},{\"bytes\":162,\"path\":\"source/01_forum-prod-diag-20260629T032514Z/ping.txt\"},{\"bytes\":161,\"path\":\"source/03_forum-prod-offline-fix2-20260629T033832Z/ssh-proof.txt\"},{\"bytes\":86,\"path\":\"source/02_forum-prod-os-baseline-20260629T034119Z/ops-proof.txt\"},{\"bytes\":81,\"path\":\"source/03_forum-prod-offline-fix2-20260629T033832Z/ssh-proof.err\"},{\"bytes\":65,\"path\":\"source/05_forum-prod-recreate-20260629T030810Z/ssh-proof.err\"},{\"bytes\":65,\"path\":\"source/04_forum-prod-recover-20260629T025511Z/ssh-proof.err\"},{\"bytes\":3,\"path\":\"source/git_metadata.json\"},{\"bytes\":0,\"path\":\"source/05_forum-prod-recreate-20260629T030810Z/ssh-proof.txt\"},{\"bytes\":0,\"path\":\"source/04_forum-prod-recover-20260629T025511Z/ssh-proof.txt\"},{\"bytes\":0,\"path\":\"source/03_forum-prod-offline-fix2-20260629T033832Z/sshd-test.err\"},{\"bytes\":0,\"path\":\"source/02_forum-prod-os-baseline-20260629T034119Z/qga-ping.txt\"}],\"packages\":[],\"stored_bytes\":29322,\"stored_files\":17},\"source_snapshots\":[{\"source_root\":\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"stored_bytes\":852,\"stored_files\":3,\"truncated\":false},{\"source_root\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"stored_bytes\":14367,\"stored_files\":3,\"truncated\":false},{\"source_root\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"stored_bytes\":242,\"stored_files\":3,\"truncated\":false},{\"source_root\":\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"stored_bytes\":1438,\"stored_files\":3,\"truncated\":false},{\"source_root\":\"/root/evidence/forum-prod-recreate-20260629T030810Z\",\"stored_bytes\":3490,\"stored_files\":3,\"truncated\":false}],\"sqlite_database_count\":0,\"systemd_service_count\":10,\"webserver_probes\":{}},{\"candidate_source_roots\":[],\"certificate_reference_count\":0,\"container_count\":0,\"container_inventory\":{},\"deployment_evidence\":[{\"line\":22,\"path\":\"systemd/units/kmod-static-nodes.service.cat.txt\",\"text\":\"ExecStart=/usr/bin/kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/static-nodes.conf\"},{\"line\":1,\"path\":\"systemd/units/kmod-static-nodes.service.show.txt\",\"text\":\"ExecStart={ path=/usr/bin/kmod ; argv[]=/usr/bin/kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/static-nodes.conf ; ignore_errors=no ; start_time=[Mon 2026-04-13 22:38:05 MSK] ; stop_time=[Mon 2026-04-13 22:38:05 MSK] ; pid=360 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/kmod-static-nodes.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":8,\"path\":\"systemd/units/prometheus-node-exporter-apt.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/apt_info.py | sponge /var/lib/prometheus/node-exporter/apt.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-apt.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/apt_info.py | sponge /var/lib/prometheus/node-exporter/apt.prom ; ignore_errors=no ; start_time=[Fri 2026-07-31 10:36:26 MSK] ; stop_time=[Fri 2026-07-31 10:36:27 MSK] ; pid=1039571 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-apt.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":10,\"path\":\"systemd/units/prometheus-node-exporter-ipmitool-sensor.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/bin/ipmitool sensor | /usr/share/prometheus-node-exporter-collectors/ipmitool | sponge /var/lib/prometheus/node-exporter/ipmitool_sensor.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-ipmitool-sensor.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/bin/ipmitool sensor | /usr/share/prometheus-node-exporter-collectors/ipmitool | sponge /var/lib/prometheus/node-exporter/ipmitool_sensor.prom ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-ipmitool-sensor.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":9,\"path\":\"systemd/units/prometheus-node-exporter-mellanox-hca-temp.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/mellanox_hca_temp | sponge /var/lib/prometheus/node-exporter/mellanox_hca_temp.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-mellanox-hca-temp.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/mellanox_hca_temp | sponge /var/lib/prometheus/node-exporter/mellanox_hca_temp.prom ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-mellanox-hca-temp.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":8,\"path\":\"systemd/units/prometheus-node-exporter-nvme.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/nvme_metrics.py | sponge /var/lib/prometheus/node-exporter/nvme.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-nvme.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/nvme_metrics.py | sponge /var/lib/prometheus/node-exporter/nvme.prom ; ignore_errors=no ; start_time=[Fri 2026-07-31 10:36:26 MSK] ; stop_time=[Fri 2026-07-31 10:36:26 MSK] ; pid=1039574 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-nvme.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":8,\"path\":\"systemd/units/prometheus-node-exporter-smartmon.service.cat.txt\",\"text\":\"ExecStart=/bin/sh -o pipefail -c \\\"/usr/share/prometheus-node-exporter-collectors/smartmon.sh | sponge /var/lib/prometheus/node-exporter/smartmon.prom\\\"\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter-smartmon.service.show.txt\",\"text\":\"ExecStart={ path=/bin/sh ; argv[]=/bin/sh -o pipefail -c /usr/share/prometheus-node-exporter-collectors/smartmon.sh | sponge /var/lib/prometheus/node-exporter/smartmon.prom ; ignore_errors=no ; start_time=[Fri 2026-07-31 10:36:26 MSK] ; stop_time=[Fri 2026-07-31 10:36:26 MSK] ; pid=1039577 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter-smartmon.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":9,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"EnvironmentFile=/etc/default/prometheus-node-exporter\"},{\"line\":10,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"ExecStart=/usr/bin/prometheus-node-exporter $ARGS\"},{\"line\":20,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"ExecStart=\"},{\"line\":21,\"path\":\"systemd/units/prometheus-node-exporter.service.cat.txt\",\"text\":\"ExecStart=/usr/bin/prometheus-node-exporter --collector.textfile.directory=/var/lib/node_exporter/textfile_collector\"},{\"line\":1,\"path\":\"systemd/units/prometheus-node-exporter.service.show.txt\",\"text\":\"ExecStart={ path=/usr/bin/prometheus-node-exporter ; argv[]=/usr/bin/prometheus-node-exporter --collector.textfile.directory=/var/lib/node_exporter/textfile_collector ; ignore_errors=no ; start_time=[Mon 2026-04-13 22:38:08 MSK] ; stop_time=[n/a] ; pid=805 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/prometheus-node-exporter.service.show.txt\",\"text\":\"EnvironmentFiles=/etc/default/prometheus-node-exporter (ignore_errors=no)\"},{\"line\":3,\"path\":\"systemd/units/prometheus-node-exporter.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":10,\"path\":\"systemd/units/proxmox-boot-cleanup.service.cat.txt\",\"text\":\"ExecStart=/usr/sbin/proxmox-boot-tool kernel unpin --next-boot\"},{\"line\":11,\"path\":\"systemd/units/proxmox-boot-cleanup.service.cat.txt\",\"text\":\"ExecStart=/usr/sbin/proxmox-boot-tool refresh\"},{\"line\":1,\"path\":\"systemd/units/proxmox-boot-cleanup.service.show.txt\",\"text\":\"ExecStart={ path=/usr/sbin/proxmox-boot-tool ; argv[]=/usr/sbin/proxmox-boot-tool kernel unpin --next-boot ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":2,\"path\":\"systemd/units/proxmox-boot-cleanup.service.show.txt\",\"text\":\"ExecStart={ path=/usr/sbin/proxmox-boot-tool ; argv[]=/usr/sbin/proxmox-boot-tool refresh ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\"},{\"line\":3,\"path\":\"systemd/units/proxmox-boot-cleanup.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":24,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev-early.service.cat.txt\",\"text\":\"ExecStart=systemd-tmpfiles --prefix=/dev --create --boot --graceful\"},{\"line\":1,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev-early.service.show.txt\",\"text\":\"ExecStart={ path=systemd-tmpfiles ; argv[]=systemd-tmpfiles --prefix=/dev --create --boot --graceful ; ignore_errors=no ; start_time=[Mon 2026-04-13 22:38:05 MSK] ; stop_time=[Mon 2026-04-13 22:38:05 MSK] ; pid=382 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev-early.service.show.txt\",\"text\":\"WorkingDirectory=\"},{\"line\":25,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev.service.cat.txt\",\"text\":\"ExecStart=systemd-tmpfiles --prefix=/dev --create --boot\"},{\"line\":1,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev.service.show.txt\",\"text\":\"ExecStart={ path=systemd-tmpfiles ; argv[]=systemd-tmpfiles --prefix=/dev --create --boot ; ignore_errors=no ; start_time=[Mon 2026-04-13 22:38:05 MSK] ; stop_time=[Mon 2026-04-13 22:38:05 MSK] ; pid=392 ; code=exited ; status=0 }\"},{\"line\":2,\"path\":\"systemd/units/systemd-tmpfiles-setup-dev.service.show.txt\",\"text\":\"WorkingDirectory=\"}],\"detected_frameworks\":[],\"directory\":\"hosts/pve03\",\"domain_match_count\":6,\"domain_matches\":[{\"lines\":[{\"line\":13,\"text\":\"    \\\"pve01.gram1.ru\\\": \\\"pve01\\\",\"},{\"line\":14,\"text\":\"    \\\"pve02.gram1.ru\\\": \\\"pve02\\\",\"},{\"line\":15,\"text\":\"    \\\"pve03.gram1.ru\\\": \\\"pve03\\\",\"},{\"line\":16,\"text\":\"    \\\"edge-vm.gram1.ru\\\": \\\"edge\\\",\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o750\",\"mtime_ns\":1784020546000000000,\"path\":\"/opt/cluster-admin-probe-target/responder.py\",\"sha256\":\"3e7585050d734ef0e3ccec7f98bde3626db31a6fd05e60dfb6f9976b371dea3c\",\"size\":2648,\"uid\":0},\"path\":\"/opt/cluster-admin-probe-target/responder.py\"},{\"lines\":[{\"line\":17,\"text\":\"searchdomain: gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1781551729197506026,\"path\":\"/root/qm-130-config-before-resource-resize-20260615T192848Z.txt\",\"sha256\":\"d8322afb35c6cec30972916adeec6415460b57b1159093787d3bb95fe8aecf4c\",\"size\":710,\"uid\":0},\"path\":\"/root/qm-130-config-before-resource-resize-20260615T192848Z.txt\"},{\"lines\":[{\"line\":34,\"text\":\"searchdomain: gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1781515691185146730,\"path\":\"/root/run-pve03-manual-backups-20260615T092743Z.log\",\"sha256\":\"f7e62a23cfe0a28c2ec15c28fd74bb4801a3a1ba6eb403eb0409c105dc8fd601\",\"size\":4395,\"uid\":0},\"path\":\"/root/run-pve03-manual-backups-20260615T092743Z.log\"},{\"lines\":[{\"line\":61,\"text\":\"STATUS=\\\"OK\\\"; NOTES=\\\"none\\\"; timeout 90 ssh -o BatchMode=yes -o ConnectTimeout=30 -o ConnectionAttempts=1 debian@[PRIVATE_IP] 'sudo docker compose -f /opt/stacks/immich/docker-compose.yml stop >/tmp/recovery-stop-immich.log 2>&1 || true; if [ -d /opt/stacks/authentik ]; then cd /opt/stacks/authentik && sudo docker compose stop >/tmp/recovery-stop-authentik.log 2>&1 || true; fi; sudo docker ps --format \\\"{{.Names}} {{.Status}}\\\" | head -n 30; uptime; free -h' >/tmp/edge-ssh-recovery.log 2>&1; SSH_RECOVERY_RC=\\\"$?\\\"; sleep 20; PING_EDGE=\\\"$(ping -c 1 -W 2 [PRIVATE_IP] >/dev/null 2>&1 && echo ok || echo fail)\\\"; PORT22=\\\"$(timeout 2 bash -c '</dev/tcp/[PRIVATE_IP]/22' >/dev/null 2>&1 && echo open || echo closed)\\\"; PORT80=\\\"$(timeout 2 bash -c '</dev/tcp/[PRIVATE_IP]/80' >/dev/null 2>&1 && echo open || echo closed)\\\"; PORT443=\\\"$(timeout 2 bash -c '</dev/tcp/[PRIVATE_IP]/443' >/dev/null 2>&1 && echo open || echo closed)\\\"; SSH_TEST=\\\"$(timeout 20 ssh -o BatchMode=yes -o ConnectTimeout=10 debian@192\"},{\"line\":62,\"text\":\"VMID=130; STATUS=\\\"OK\\\"; NOTES=\\\"none\\\"; TS=\\\"$(date -u +%Y%m%dT%H%M%SZ)\\\"; CFG_BAK=\\\"/root/qm-${VMID}-config-before-resource-resize-${TS}.txt\\\"; TARGET_MEM=12288; TARGET_CORES=4; qm config \\\"$VMID\\\" > \\\"$CFG_BAK\\\"; BEFORE_STATUS=\\\"$(qm status \\\"$VMID\\\" 2>&1 | tr '\\\\n' ' ')\\\"; BEFORE_MEM=\\\"$(qm config \\\"$VMID\\\" | awk -F': ' '/^memory:/{print $2}')\\\"; BEFORE_CORES=\\\"$(qm config \\\"$VMID\\\" | awk -F': ' '/^cores:/{print $2}')\\\"; HOST_AVAIL_MB=\\\"$(free -m | awk '/Mem:/{print $7}')\\\"; if [ \\\"${HOST_AVAIL_MB:-0}\\\" -lt 16000 ]; then STATUS=\\\"ERROR\\\"; NOTES=\\\"host_available_ram_too_low_${HOST_AVAIL_MB}MB\\\"; STOP_RC=\\\"not_run\\\"; SET_RC=\\\"not_run\\\"; START_RC=\\\"not_run\\\"; else timeout 90 qm stop \\\"$VMID\\\" >/tmp/edge-vm-hard-stop.log 2>&1; STOP_RC=\\\"$?\\\"; sleep 5; STOP_STATUS=\\\"$(qm status \\\"$VMID\\\" 2>&1 | tr '\\\\n' ' ')\\\"; if ! echo \\\"$STOP_STATUS\\\" | grep -q \\\"stopped\\\"; then STATUS=\\\"ERROR\\\"; NOTES=\\\"hard_stop_failed\\\"; SET_RC=\\\"not_run\\\"; START_RC=\\\"not_run\\\"; else qm set \\\"$VMID\\\" --memory \\\"$TARGET_MEM\\\" --cores \\\"$TARGET_CORES\\\" >/tmp/edge-vm-resize.log 2>&\"},{\"line\":63,\"text\":\"cd /root; STATUS=\\\"OK\\\"; NOTES=\\\"none\\\"; SSH_EDGE=\\\"$(timeout 25 ssh -o BatchMode=yes -o ConnectTimeout=10 debian@[PRIVATE_IP] 'echo ok' 2>/tmp/edge-ssh-from-pve01.err || echo fail)\\\"; SSH_ERR=\\\"$(cat /tmp/edge-ssh-from-pve01.err 2>/dev/null | tail -n 5 | tr '\\\\n' ';' | cut -c1-500)\\\"; HOME_HTTP=\\\"$(curl -k -sS -o /dev/null -w '%{http_code}' --max-time 10 --resolve home.gram1.ru:443:[PRIVATE_IP] https://home.gram1.ru/ 2>/dev/null || echo error)\\\"; GIT_HTTP=\\\"$(curl -k -sS -o /dev/null -w '%{http_code}' --max-time 10 --resolve git.gram1.ru:443:[PRIVATE_IP] https://git.gram1.ru/ 2>/dev/null || echo error)\\\"; DOZZLE_HTTP=\\\"$(curl -sS -o /dev/null -w '%{http_code}' --max-time 5 http://[PRIVATE_IP]:9999/ 2>/dev/null || echo error)\\\"; PAPERLESS_HTTP=\\\"$(curl -sS -o /dev/null -w '%{http_code}' --max-time 5 http://[PRIVATE_IP]:8010/ 2>/dev/null || echo error)\\\"; MEMOS_HTTP=\\\"$(curl -sS -o /dev/null -w '%{http_code}' --max-time 5 http://[PRIVATE_IP]:5230/ 2>/dev/null || echo error)\\\"; IMMICH_HTTP=\\\"$(curl -s\"},{\"line\":67,\"text\":\"( set -Eeuo pipefail; umask 077; export SYSTEMD_PAGER=cat PAGER=cat SYSTEMD_LESS=FRXMK SYSTEMD_COLORS=0 GIT_PAGER=cat; printf 'SCOPE=READ_ONLY_VM160_PART_0108_EXACT_CLOUD_EOF_RCA_ACCOUNT_A_ACCOUNT_B_AND_LOCAL_SLICE\\\\nROLLBACK=NOT_REQUIRED_NO_WRITES_NO_DELETE_NO_WORKER_INSTALL_NO_PHASE_EXECUTION\\\\nVERIFY=PART_0108_OBJECT_SIZE_AND_SHA256_AGAINST_LOCAL_ARCHIVE_SLICE_WITH_ONE_BOUNDED_RETRY_PER_ACCOUNT_AND_ALL_STATE_UNCHANGED\\\\n'; MAIN=/srv/homelab-ops; COMMIT=25b275f96b54551e26f07516c72651d85f235ad0; ID=cluster-cloud-quorum-vm160-canary-v1; TASK=\\\"$MAIN/tasks/$ID\\\"; SRC=\\\"$TASK/assets/vm160-cloud-quorum-worker.sh\\\"; GENERATION=vm160-pve02-20260717T223819Z; ARCH=\\\"/mnt/staging/vzdump/$GENERATION/vzdump-qemu-160-20260717T223819Z.vma.zst\\\"; LINK=/mnt/staging/vzdump/vm160-pve02-latest; WORKER=/usr/local/libexec/homelab-vm160-cloud-quorum-worker; REMOTE_STATE=\\\"/var/lib/homelab-backup/cloud-quorum/vm160/$GENERATION.json\\\"; PART_NAME=part-0108; PART_INDEX=108; EXPECTED_ARCHIVE_SIZE=84995216465; SSH=(-o Bat\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o600\",\"mtime_ns\":1784404543977886435,\"path\":\"/root/.bash_history\",\"sha256\":\"6d2fea880793d82566f7f489ce4b8be8b0d4f8211c2cccc3d3478d39d9550222\",\"size\":25100,\"uid\":0},\"path\":\"/root/.bash_history\"},{\"lines\":[{\"line\":17,\"text\":\"searchdomain: gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1781552367226481311,\"path\":\"/root/qm-130-config-before-sshkey-20260615T193926Z.txt\",\"sha256\":\"2875eea619ee15143394c75c963d08d8a0d45a700331ec911288cd14e5dc2adc\",\"size\":711,\"uid\":0},\"path\":\"/root/qm-130-config-before-sshkey-20260615T193926Z.txt\"},{\"lines\":[{\"line\":3,\"text\":\"pve03.gram1.ru\"},{\"line\":55,\"text\":\"[PRIVATE_IP] pve01.gram1.ru pve01\"},{\"line\":56,\"text\":\"[PRIVATE_IP] pve02.gram1.ru pve02\"},{\"line\":57,\"text\":\"[PRIVATE_IP] pve03.gram1.ru pve03\"},{\"line\":61,\"text\":\"search netbird.selfhosted gram1.ru\"},{\"line\":184,\"text\":\"searchdomain: gram1.ru\"}],\"metadata\":{\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0o644\",\"mtime_ns\":1782753384220604944,\"path\":\"/root/cluster-audit-20260629T201245/03_pve03_audit.txt\",\"sha256\":\"d988a63859d8a9faac154ef84bb45bd28fadaa070d81256400bf37debe820744\",\"size\":16842,\"uid\":0},\"path\":\"/root/cluster-audit-20260629T201245/03_pve03_audit.txt\"}],\"fqdn\":\"pve03.gram1.ru\",\"hostname\":\"pve03\",\"log_summaries\":{},\"log_summary_count\":0,\"source_inventory\":{\"extension_counts\":{\".json\":2},\"framework_markers\":[],\"largest_files\":[{\"bytes\":3,\"path\":\"source/snapshots_manifest.json\"},{\"bytes\":3,\"path\":\"source/git_metadata.json\"}],\"packages\":[],\"stored_bytes\":6,\"stored_files\":2},\"source_snapshots\":[],\"sqlite_database_count\":0,\"systemd_service_count\":10,\"webserver_probes\":{}}],\"identity\":{\"branch\":\"site-gram1-ru-baseline-20260731\",\"capture_capsule_sha256\":\"a7ad06c722755f0398118f4e20383e339bf2dd48d24e26c451d8644a6be7f515\",\"capture_command_id\":\"GRAM1-SITE-BASELINE-CAPTURE-GITEA-V1-20260731T071400Z\",\"commit_sha\":\"f9d3ba8caf65005605aa8aee2ede7e4e7e94ee49\",\"contract_sha256\":\"25eda14e622fd33864289d1515b2d3c4a92de0a1073aae81093afaae5a98788e\",\"repo\":\"https://git.gram1.ru/homelab-admin/homelab-ops.git\",\"snapshot_path\":\"sites/gram1.ru/baseline/20260731T071400Z\"},\"mutation_outcome\":\"NO_MUTATION\",\"production_site_changed\":false,\"public_http\":{\"asset_count\":0,\"assets\":[],\"page_count\":15,\"pages\":[{\"body_bytes\":1088,\"body_sha256\":\"66b06909949879d84757d0f96be74eebf1db40f35de22b625ea67e85e1bbdae2\",\"canonicals\":[],\"content_type\":\"text/html; charset=utf-8\",\"error\":null,\"final_url\":\"https://gram1.ru/login\",\"forms\":[{\"action\":\"\",\"enctype\":\"\",\"inputs\":[{\"autocomplete\":\"current-password\",\"name\":\"password\",\"required\":\"True\",\"tag\":\"input\",\"type\":\"password\"},{\"autocomplete\":\"\",\"name\":\"\",\"required\":\"\",\"tag\":\"button\",\"type\":\"\"}],\"method\":\"post\"}],\"headings\":[{\"tag\":\"h1\",\"text\":\"Gram Crypto\"}],\"meta\":[{\"charset\":\"utf-8\"},{\"content\":\"width=device-width,initial-scale=1\",\"name\":\"viewport\"}],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"140\"],\"Content-Type\":[\"text/html\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Location\":[\"https://gram1.ru/\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":301,\"url\":\"http://gram1.ru/\"},{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"0\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"],\"location\":[\"/login\"],\"vary\":[\"Cookie\"]},\"status\":303,\"url\":\"https://gram1.ru/\"},{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"1088\"],\"Content-Type\":[\"text/html; charset=utf-8\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\",\"Cookie\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"],\"vary\":[\"Accept-Encoding\",\"Cookie\"]},\"status\":200,\"url\":\"https://gram1.ru/login\"}],\"requested_url\":\"http://gram1.ru/\",\"scripts\":[],\"status\":200,\"stored_body\":\"external/http/bodies/f1c7eeb4207a4757_root.txt\",\"styles\":[],\"title\":\"Gram Crypto\"},{\"body_bytes\":1088,\"body_sha256\":\"66b06909949879d84757d0f96be74eebf1db40f35de22b625ea67e85e1bbdae2\",\"canonicals\":[],\"content_type\":\"text/html; charset=utf-8\",\"error\":null,\"final_url\":\"https://www.gram1.ru/login\",\"forms\":[{\"action\":\"\",\"enctype\":\"\",\"inputs\":[{\"autocomplete\":\"current-password\",\"name\":\"password\",\"required\":\"True\",\"tag\":\"input\",\"type\":\"password\"},{\"autocomplete\":\"\",\"name\":\"\",\"required\":\"\",\"tag\":\"button\",\"type\":\"\"}],\"method\":\"post\"}],\"headings\":[{\"tag\":\"h1\",\"text\":\"Gram Crypto\"}],\"meta\":[{\"charset\":\"utf-8\"},{\"content\":\"width=device-width,initial-scale=1\",\"name\":\"viewport\"}],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"140\"],\"Content-Type\":[\"text/html\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Location\":[\"https://www.gram1.ru/\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":301,\"url\":\"http://www.gram1.ru/\"},{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"0\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"],\"location\":[\"/login\"],\"vary\":[\"Cookie\"]},\"status\":303,\"url\":\"https://www.gram1.ru/\"},{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"1088\"],\"Content-Type\":[\"text/html; charset=utf-8\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\",\"Cookie\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"],\"vary\":[\"Accept-Encoding\",\"Cookie\"]},\"status\":200,\"url\":\"https://www.gram1.ru/login\"}],\"requested_url\":\"http://www.gram1.ru/\",\"scripts\":[],\"status\":200,\"stored_body\":\"external/http/bodies/f8830a3e7b126322_root.txt\",\"styles\":[],\"title\":\"Gram Crypto\"},{\"body_bytes\":1088,\"body_sha256\":\"66b06909949879d84757d0f96be74eebf1db40f35de22b625ea67e85e1bbdae2\",\"canonicals\":[],\"content_type\":\"text/html; charset=utf-8\",\"error\":null,\"final_url\":\"https://gram1.ru/login\",\"forms\":[{\"action\":\"\",\"enctype\":\"\",\"inputs\":[{\"autocomplete\":\"current-password\",\"name\":\"password\",\"required\":\"True\",\"tag\":\"input\",\"type\":\"password\"},{\"autocomplete\":\"\",\"name\":\"\",\"required\":\"\",\"tag\":\"button\",\"type\":\"\"}],\"method\":\"post\"}],\"headings\":[{\"tag\":\"h1\",\"text\":\"Gram Crypto\"}],\"meta\":[{\"charset\":\"utf-8\"},{\"content\":\"width=device-width,initial-scale=1\",\"name\":\"viewport\"}],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"0\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"],\"location\":[\"/login\"],\"vary\":[\"Cookie\"]},\"status\":303,\"url\":\"https://gram1.ru/\"},{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"1088\"],\"Content-Type\":[\"text/html; charset=utf-8\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\",\"Cookie\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"],\"vary\":[\"Accept-Encoding\",\"Cookie\"]},\"status\":200,\"url\":\"https://gram1.ru/login\"}],\"requested_url\":\"https://gram1.ru/\",\"scripts\":[],\"status\":200,\"stored_body\":\"external/http/bodies/88ee3a1bbf568bf5_root.txt\",\"styles\":[],\"title\":\"Gram Crypto\"},{\"body_bytes\":1088,\"body_sha256\":\"66b06909949879d84757d0f96be74eebf1db40f35de22b625ea67e85e1bbdae2\",\"canonicals\":[],\"content_type\":\"text/html; charset=utf-8\",\"error\":null,\"final_url\":\"https://www.gram1.ru/login\",\"forms\":[{\"action\":\"\",\"enctype\":\"\",\"inputs\":[{\"autocomplete\":\"current-password\",\"name\":\"password\",\"required\":\"True\",\"tag\":\"input\",\"type\":\"password\"},{\"autocomplete\":\"\",\"name\":\"\",\"required\":\"\",\"tag\":\"button\",\"type\":\"\"}],\"method\":\"post\"}],\"headings\":[{\"tag\":\"h1\",\"text\":\"Gram Crypto\"}],\"meta\":[{\"charset\":\"utf-8\"},{\"content\":\"width=device-width,initial-scale=1\",\"name\":\"viewport\"}],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"0\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"],\"location\":[\"/login\"],\"vary\":[\"Cookie\"]},\"status\":303,\"url\":\"https://www.gram1.ru/\"},{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"1088\"],\"Content-Type\":[\"text/html; charset=utf-8\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\",\"Cookie\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"],\"vary\":[\"Accept-Encoding\",\"Cookie\"]},\"status\":200,\"url\":\"https://www.gram1.ru/login\"}],\"requested_url\":\"https://www.gram1.ru/\",\"scripts\":[],\"status\":200,\"stored_body\":\"external/http/bodies/183b8e2be9f07ccc_root.txt\",\"styles\":[],\"title\":\"Gram Crypto\"},{\"body_bytes\":1088,\"body_sha256\":\"66b06909949879d84757d0f96be74eebf1db40f35de22b625ea67e85e1bbdae2\",\"canonicals\":[],\"content_type\":\"text/html; charset=utf-8\",\"error\":null,\"final_url\":\"https://gram1.ru/login\",\"forms\":[{\"action\":\"\",\"enctype\":\"\",\"inputs\":[{\"autocomplete\":\"current-password\",\"name\":\"password\",\"required\":\"True\",\"tag\":\"input\",\"type\":\"password\"},{\"autocomplete\":\"\",\"name\":\"\",\"required\":\"\",\"tag\":\"button\",\"type\":\"\"}],\"method\":\"post\"}],\"headings\":[{\"tag\":\"h1\",\"text\":\"Gram Crypto\"}],\"meta\":[{\"charset\":\"utf-8\"},{\"content\":\"width=device-width,initial-scale=1\",\"name\":\"viewport\"}],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"1088\"],\"Content-Type\":[\"text/html; charset=utf-8\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:19 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\",\"Cookie\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"],\"vary\":[\"Accept-Encoding\",\"Cookie\"]},\"status\":200,\"url\":\"https://gram1.ru/login\"}],\"requested_url\":\"https://gram1.ru/login\",\"scripts\":[],\"status\":200,\"stored_body\":\"external/http/bodies/aff9673434bebfe5_login.txt\",\"styles\":[],\"title\":\"Gram Crypto\"},{\"body_bytes\":22,\"body_sha256\":\"37ec4665a8102d115ffd1ac20dae94c98b4dac64b0c1a68228aa2a531caeb35d\",\"canonicals\":[],\"content_type\":\"application/json\",\"error\":\"HTTPError:404\",\"final_url\":\"https://gram1.ru/robots.txt\",\"forms\":[],\"headings\":[],\"meta\":[],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"22\"],\"Content-Type\":[\"application/json\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:22 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":404,\"url\":\"https://gram1.ru/robots.txt\"}],\"requested_url\":\"https://gram1.ru/robots.txt\",\"scripts\":[],\"status\":404,\"stored_body\":\"external/http/bodies/edbbd7b271782d53_robots.txt.txt\",\"styles\":[],\"title\":\"\"},{\"body_bytes\":22,\"body_sha256\":\"37ec4665a8102d115ffd1ac20dae94c98b4dac64b0c1a68228aa2a531caeb35d\",\"canonicals\":[],\"content_type\":\"application/json\",\"error\":\"HTTPError:404\",\"final_url\":\"https://gram1.ru/sitemap.xml\",\"forms\":[],\"headings\":[],\"meta\":[],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"22\"],\"Content-Type\":[\"application/json\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:22 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":404,\"url\":\"https://gram1.ru/sitemap.xml\"}],\"requested_url\":\"https://gram1.ru/sitemap.xml\",\"scripts\":[],\"status\":404,\"stored_body\":\"external/http/bodies/52a1325278d3a13d_sitemap.xml.txt\",\"styles\":[],\"title\":\"\"},{\"body_bytes\":22,\"body_sha256\":\"37ec4665a8102d115ffd1ac20dae94c98b4dac64b0c1a68228aa2a531caeb35d\",\"canonicals\":[],\"content_type\":\"application/json\",\"error\":\"HTTPError:404\",\"final_url\":\"https://gram1.ru/.well-known/security.txt\",\"forms\":[],\"headings\":[],\"meta\":[],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"22\"],\"Content-Type\":[\"application/json\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:22 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":404,\"url\":\"https://gram1.ru/.well-known/security.txt\"}],\"requested_url\":\"https://gram1.ru/.well-known/security.txt\",\"scripts\":[],\"status\":404,\"stored_body\":\"external/http/bodies/c906cb4a0a35b417_.well-known_security.txt.txt\",\"styles\":[],\"title\":\"\"},{\"body_bytes\":22,\"body_sha256\":\"37ec4665a8102d115ffd1ac20dae94c98b4dac64b0c1a68228aa2a531caeb35d\",\"canonicals\":[],\"content_type\":\"application/json\",\"error\":\"HTTPError:404\",\"final_url\":\"https://gram1.ru/favicon.ico\",\"forms\":[],\"headings\":[],\"meta\":[],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"22\"],\"Content-Type\":[\"application/json\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:22 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":404,\"url\":\"https://gram1.ru/favicon.ico\"}],\"requested_url\":\"https://gram1.ru/favicon.ico\",\"scripts\":[],\"status\":404,\"stored_body\":\"external/http/bodies/9c05181266b58e78_favicon.ico.txt\",\"styles\":[],\"title\":\"\"},{\"body_bytes\":22,\"body_sha256\":\"37ec4665a8102d115ffd1ac20dae94c98b4dac64b0c1a68228aa2a531caeb35d\",\"canonicals\":[],\"content_type\":\"application/json\",\"error\":\"HTTPError:404\",\"final_url\":\"https://gram1.ru/manifest.json\",\"forms\":[],\"headings\":[],\"meta\":[],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"22\"],\"Content-Type\":[\"application/json\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:22 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":404,\"url\":\"https://gram1.ru/manifest.json\"}],\"requested_url\":\"https://gram1.ru/manifest.json\",\"scripts\":[],\"status\":404,\"stored_body\":\"external/http/bodies/08f529ca3577730d_manifest.json.txt\",\"styles\":[],\"title\":\"\"},{\"body_bytes\":22,\"body_sha256\":\"37ec4665a8102d115ffd1ac20dae94c98b4dac64b0c1a68228aa2a531caeb35d\",\"canonicals\":[],\"content_type\":\"application/json\",\"error\":\"HTTPError:404\",\"final_url\":\"https://gram1.ru/site.webmanifest\",\"forms\":[],\"headings\":[],\"meta\":[],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"22\"],\"Content-Type\":[\"application/json\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:22 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":404,\"url\":\"https://gram1.ru/site.webmanifest\"}],\"requested_url\":\"https://gram1.ru/site.webmanifest\",\"scripts\":[],\"status\":404,\"stored_body\":\"external/http/bodies/1d956b2695802e6c_site.webmanifest.txt\",\"styles\":[],\"title\":\"\"},{\"body_bytes\":66,\"body_sha256\":\"fd4986bd7a591f1af722b4ec29bedeb8b7137d0e296fe22f086a1122b61d94e0\",\"canonicals\":[],\"content_type\":\"application/json\",\"error\":null,\"final_url\":\"https://gram1.ru/health\",\"forms\":[],\"headings\":[],\"meta\":[],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"66\"],\"Content-Type\":[\"application/json\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:22 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":200,\"url\":\"https://gram1.ru/health\"}],\"requested_url\":\"https://gram1.ru/health\",\"scripts\":[],\"status\":200,\"stored_body\":\"external/http/bodies/b64f958427c2b88c_health.txt\",\"styles\":[],\"title\":\"\"},{\"body_bytes\":22,\"body_sha256\":\"37ec4665a8102d115ffd1ac20dae94c98b4dac64b0c1a68228aa2a531caeb35d\",\"canonicals\":[],\"content_type\":\"application/json\",\"error\":\"HTTPError:404\",\"final_url\":\"https://gram1.ru/status\",\"forms\":[],\"headings\":[],\"meta\":[],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"22\"],\"Content-Type\":[\"application/json\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:22 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":404,\"url\":\"https://gram1.ru/status\"}],\"requested_url\":\"https://gram1.ru/status\",\"scripts\":[],\"status\":404,\"stored_body\":\"external/http/bodies/51ed0c6c8fc0be64_status.txt\",\"styles\":[],\"title\":\"\"},{\"body_bytes\":22,\"body_sha256\":\"37ec4665a8102d115ffd1ac20dae94c98b4dac64b0c1a68228aa2a531caeb35d\",\"canonicals\":[],\"content_type\":\"application/json\",\"error\":\"HTTPError:404\",\"final_url\":\"https://gram1.ru/api\",\"forms\":[],\"headings\":[],\"meta\":[],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"22\"],\"Content-Type\":[\"application/json\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:22 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":404,\"url\":\"https://gram1.ru/api\"}],\"requested_url\":\"https://gram1.ru/api\",\"scripts\":[],\"status\":404,\"stored_body\":\"external/http/bodies/3b8355bc91b62cb9_api.txt\",\"styles\":[],\"title\":\"\"},{\"body_bytes\":22,\"body_sha256\":\"37ec4665a8102d115ffd1ac20dae94c98b4dac64b0c1a68228aa2a531caeb35d\",\"canonicals\":[],\"content_type\":\"application/json\",\"error\":\"HTTPError:404\",\"final_url\":\"https://gram1.ru/api/health\",\"forms\":[],\"headings\":[],\"meta\":[],\"redirect_chain\":[{\"headers\":{\"Connection\":[\"close\"],\"Content-Length\":[\"22\"],\"Content-Type\":[\"application/json\"],\"Date\":[\"Fri, 31 Jul 2026 07:37:22 GMT\"],\"Origin-Agent-Cluster\":[\"?1\"],\"Referrer-Policy\":[\"strict-origin-when-cross-origin\"],\"Vary\":[\"Accept-Encoding\"],\"X-Content-Type-Options\":[\"nosniff\"],\"X-DNS-Prefetch-Control\":[\"off\"],\"X-Parked-Domains\":[\"managed\"],\"X-Permitted-Cross-Domain-Policies\":[\"none\"]},\"status\":404,\"url\":\"https://gram1.ru/api/health\"}],\"requested_url\":\"https://gram1.ru/api/health\",\"scripts\":[],\"status\":404,\"stored_body\":\"external/http/bodies/b5da3bfec28e3a0f_api_health.txt\",\"styles\":[],\"title\":\"\"}],\"stored_asset_bytes\":0},\"public_security\":{\"responses\":[{\"final_url\":\"https://gram1.ru/login\",\"forms\":[{\"action\":\"\",\"enctype\":\"\",\"inputs\":[\"<dict:5>\",\"<dict:5>\"],\"method\":\"post\"}],\"headers\":{\"cache-control\":null,\"content-security-policy\":null,\"cross-origin-embedder-policy\":null,\"cross-origin-opener-policy\":null,\"cross-origin-resource-policy\":null,\"permissions-policy\":null,\"referrer-policy\":[\"strict-origin-when-cross-origin\"],\"strict-transport-security\":null,\"x-content-type-options\":[\"nosniff\"],\"x-frame-options\":null},\"missing_security_headers\":[\"strict-transport-security\",\"content-security-policy\",\"x-frame-options\",\"permissions-policy\",\"cross-origin-opener-policy\",\"cross-origin-resource-policy\",\"cross-origin-embedder-policy\"],\"powered_by\":null,\"server\":null,\"set_cookie_present\":\"<REDACTED>\",\"status\":200,\"url\":\"https://gram1.ru/\"},{\"final_url\":\"https://www.gram1.ru/login\",\"forms\":[{\"action\":\"\",\"enctype\":\"\",\"inputs\":[\"<dict:5>\",\"<dict:5>\"],\"method\":\"post\"}],\"headers\":{\"cache-control\":null,\"content-security-policy\":null,\"cross-origin-embedder-policy\":null,\"cross-origin-opener-policy\":null,\"cross-origin-resource-policy\":null,\"permissions-policy\":null,\"referrer-policy\":[\"strict-origin-when-cross-origin\"],\"strict-transport-security\":null,\"x-content-type-options\":[\"nosniff\"],\"x-frame-options\":null},\"missing_security_headers\":[\"strict-transport-security\",\"content-security-policy\",\"x-frame-options\",\"permissions-policy\",\"cross-origin-opener-policy\",\"cross-origin-resource-policy\",\"cross-origin-embedder-policy\"],\"powered_by\":null,\"server\":null,\"set_cookie_present\":\"<REDACTED>\",\"status\":200,\"url\":\"https://www.gram1.ru/\"},{\"final_url\":\"https://gram1.ru/login\",\"forms\":[{\"action\":\"\",\"enctype\":\"\",\"inputs\":[\"<dict:5>\",\"<dict:5>\"],\"method\":\"post\"}],\"headers\":{\"cache-control\":null,\"content-security-policy\":null,\"cross-origin-embedder-policy\":null,\"cross-origin-opener-policy\":null,\"cross-origin-resource-policy\":null,\"permissions-policy\":null,\"referrer-policy\":[\"strict-origin-when-cross-origin\"],\"strict-transport-security\":null,\"x-content-type-options\":[\"nosniff\"],\"x-frame-options\":null},\"missing_security_headers\":[\"strict-transport-security\",\"content-security-policy\",\"x-frame-options\",\"permissions-policy\",\"cross-origin-opener-policy\",\"cross-origin-resource-policy\",\"cross-origin-embedder-policy\"],\"powered_by\":null,\"server\":null,\"set_cookie_present\":\"<REDACTED>\",\"status\":200,\"url\":\"https://gram1.ru/login\"}]},\"quarantine\":[],\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"schema\":1,\"status\":\"OK\",\"tls\":{\"gram1.ru\":{\"leaf_sha256\":\"a220b18eb34ac86d8b788cd376cecc5fbd580e07813adf8bd6c4df13c723afe6\",\"s_client_rc\":0,\"s_client_sha256\":\"252948b384136b41faf17a21f655ba1147b6c44c207780e9a40584072882da1f\",\"x509\":\"subject=CN=gram1.ru\\nissuer=C=US, O=Let's Encrypt, CN=YE2\\nserial=052057227168416710CA1BAA064E96106D77\\nnotBefore=Jul  1 16:15:31 2026 GMT\\nnotAfter=Sep 29 16:15:30 2026 GMT\\nsha256 Fingerprint=C6:60:DE:36:30:D6:18:C9:CD:F0:19:DD:52:24:90:87:1F:70:0E:27:BD:E9:0E:5B:2A:6C:54:1E:65:49:39:9F\\nX509v3 CRL Distribution Points: \\n    Full Name:\\n      URI:http://ye2.c.lencr.org/120.crl\\n\\n\",\"x509_rc\":0},\"www.gram1.ru\":{\"leaf_sha256\":\"a220b18eb34ac86d8b788cd376cecc5fbd580e07813adf8bd6c4df13c723afe6\",\"s_client_rc\":0,\"s_client_sha256\":\"04bd359acaa02b5481d9812adbd06630e277423563455bddf7985b6434f1f6b2\",\"x509\":\"subject=CN=gram1.ru\\nissuer=C=US, O=Let's Encrypt, CN=YE2\\nserial=052057227168416710CA1BAA064E96106D77\\nnotBefore=Jul  1 16:15:31 2026 GMT\\nnotAfter=Sep 29 16:15:30 2026 GMT\\nsha256 Fingerprint=C6:60:DE:36:30:D6:18:C9:CD:F0:19:DD:52:24:90:87:1F:70:0E:27:BD:E9:0E:5B:2A:6C:54:1E:65:49:39:9F\\nX509v3 CRL Distribution Points: \\n    Full Name:\\n      URI:http://ye2.c.lencr.org/120.crl\\n\\n\",\"x509_rc\":0}},\"verification\":{\"anomalies\":[{\"basename_length\":36,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.tsv\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"03f2ff4c2e76505c2381f369a4e377442a546153331cf9dae7cb43247394a8df\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"1831ab715f1a23930712ec363c2df210519d9a8e63ab21050af976806c462319\",\"sensitive_path\":true,\"suffix\":\".tsv\"},{\"basename_length\":34,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.tsv\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"047676a85d8479d57bc3895ccfd651d02ee971b84338c80aab36bece3a52e3ee\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"c2068a915ab0f0cd8086e7251b2406b4de17cd813988229b179a71e6eea49a0c\",\"sensitive_path\":true,\"suffix\":\".tsv\"},{\"basename_length\":20,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/.gitignore:1:*.env\\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/docs/operations/ideal-cluster-run-state/ideal-cluster-20260626T054800Z-evidence/APP05-monitoring.env\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"66b5259ef62561b83fb0a2303c912122cbf5c014e6c31d8a626f7ea5e09a6633\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"eb860700333344be2f70c57bfab9fcdb5fc959fc241019e0e55898793e2c530c\",\"sensitive_path\":true,\"suffix\":\".env\"},{\"basename_length\":30,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/.gitignore:26:*.log\\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/docs/operations/ideal-cluster-run-state/ideal-cluster-20260626T054800Z-evidence/CIQ03-shellcheck-repo-scan.log\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"1a221a76afc8ec4b5704e76e1108ac709b5ad35c55ec0a59e747ab77f81accb9\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"f1a246ef882c692f3e7676d2009a5a0738904f4aee2e5b23ac832e6442e23159\",\"sensitive_path\":true,\"suffix\":\".log\"},{\"basename_length\":19,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/.gitignore:26:*.log\\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/docs/operations/ideal-cluster-run-state/ideal-cluster-20260626T054800Z-evidence/CIQ04-yaml-scan.log\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"5935691291c6ab9f8eca95314af9ea915a8bed577fae6d1e2df310518cdb3b4f\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"46c726ae03ab26e7d67c925492f53ea0fa143a2d93f9fc91f4766da8cadb865e\",\"sensitive_path\":true,\"suffix\":\".log\"},{\"basename_length\":30,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:26:*.log\\tsites/gram1.<REDACTED_TOKEN>.log\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"c99ff35147a0efb6f140e5b87bc960634c887ecc4218581429a5ef73976bd664\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"683a786ccd0903852c34e18b2ee47a3270fc44a8a174c7ae37d27260ed35d870\",\"sensitive_path\":true,\"suffix\":\".log\"},{\"basename_length\":30,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.tsv\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"808fd4bfc3df94d117481ba3a3a8a630079251d1e76a3e7514c64b6995828e9a\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"d70b5961cf40d476336611938313bf4f984caa86367034f982e63f4f335ff9af\",\"sensitive_path\":true,\"suffix\":\".tsv\"},{\"basename_length\":21,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/.gitignore:26:*.log\\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/docs/operations/ideal-cluster-run-state/ideal-cluster-20260626T054800Z-evidence/CIQ06-dotenv-scan.log\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"1c47dd82be44861aa786c9aa2589d9641c1126e6e1fbd44a54648c53f737b8b6\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"87fddbce4d9ee1002e548ca86665cb89db8d789c1df8ef3b0cc60ea183d7477e\",\"sensitive_path\":true,\"suffix\":\".log\"},{\"basename_length\":40,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/.gitignore:26:*.log\\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/docs/operations/ideal-cluster-run-state/ideal-cluster-20260626T054800Z-evidence/CIQ08-precommit-config-syntax-review.log\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"119530731ea7e805303a0998f971cf40bceba98d06ddaa8a4a18ec56b3721e13\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"206c0b2917281b76b3cc6113e55545a2d037982a20970eefdb7ae7bbbae71443\",\"sensitive_path\":true,\"suffix\":\".log\"},{\"basename_length\":42,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/.gitignore:26:*.log\\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/docs/operations/ideal-cluster-run-state/ideal-cluster-20260626T054800Z-evidence/CIQ08R2-precommit-config-syntax-review.log\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"67831af293e57808753270db02a81ca060194fcf195d87cf2fe7105427416395\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"89150ce2e53b3a822590fac08a069419a5fe087dadb20c07f54d7574935d3bd0\",\"sensitive_path\":true,\"suffix\":\".log\"},{\"basename_length\":33,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/.gitignore:26:*.log\\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/docs/operations/ideal-cluster-run-state/ideal-cluster-20260626T054800Z-evidence/CIQ08R3-precommit-yaml-repair.log\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"4e3e110774e148db6e2a0b25465caf1b4adf220ffe7fd258c9199ca2c79f0652\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"325d9502c86190630eb0c655b0c9d84c4bf098e6ba4a6f8faf93d0cc2bde5b40\",\"sensitive_path\":true,\"suffix\":\".log\"},{\"basename_length\":42,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.tsv\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"aa4d5dd3a43785dbfad1e76726bcdee209cc4b96b39601d2135d0a9af8dcdbec\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"f192560f9e1fb9fad21ad81749d8f69aaecd79bb442735aa5c01d42d8f18f3d9\",\"sensitive_path\":true,\"suffix\":\".tsv\"},{\"basename_length\":41,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.tsv\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"650c68d3d7f9c5237028a8c4966350b8e1b59ba1e7d4eeb39ad92d48661ac5ee\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"b76d9833fe6db3eacc435aa2903d5a66cc477cbcd49300bec1fdd4190eb0d66e\",\"sensitive_path\":true,\"suffix\":\".tsv\"},{\"basename_length\":36,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.tsv\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"d9ede7c80ced2339333a1fe0eb7593387ba71fed69ce9c0e344d21b2c002e844\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"0a37f3428e86c3b86e72e2ff56aabd60e73f01f9970cf50962c1295636e805d8\",\"sensitive_path\":true,\"suffix\":\".tsv\"},{\"basename_length\":29,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.tsv\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"7f59ba740e83a41db3384eae87e82169322bbee48ba12e1c7b4f56660bcaeea0\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"a2ac117952ccea622345bb6148acbff3ef5ed20a3e5ec4d9925190dac39f26f3\",\"sensitive_path\":true,\"suffix\":\".tsv\"},{\"basename_length\":39,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.txt\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"6cd44b62ad80d0f9338ac669ea5984b8d32ab261140e07cd2f6d9bf95470835e\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"262f0dc79b7997d36058b3937c925c85d21784c07ab6b5ba4043cb11e6a762f0\",\"sensitive_path\":true,\"suffix\":\".txt\"},{\"basename_length\":43,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.tsv\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"02514e588fc1d8bbf50242cb78c45cbfc23cd4508c4d65f6d7fbab1ff3806a89\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"55d7edc8a6446a60ce484b35c64c88647508903264c20a2188c959d4498620ce\",\"sensitive_path\":true,\"suffix\":\".tsv\"},{\"basename_length\":41,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.md\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"8a03fa69b7bfe09c8b2c0e5f4defb12245ed51faf2bd2c03099ab13919cbd968\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"1f146757dd427ba94db10f8cb7a28b442f7dfbc3dc7db97738faa37bbd6cab64\",\"sensitive_path\":true,\"suffix\":\".md\"},{\"basename_length\":42,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\\tsites/gram1.<REDACTED_TOKEN>.tsv\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"9b282098628ad289a6f4bdea7ea04a28a473545ab44f5823faf1af34c0945355\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"b3b3d8296f1af449d288c2736bfbfa2accbcde10ae34b0efe8bde8375c9388ec\",\"sensitive_path\":true,\"suffix\":\".tsv\"},{\"basename_length\":39,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:4:*SECRET*\\tsites/gram1.<REDACTED_TOKEN>.state\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"b0c5d1d773fa3f1844f1f3cfa309082cc8672c2c78289d5f1752f480242040a0\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"12f015430ad9424a19dfe30db5b95dad23ecf63e7815f10af4ceb815267d5cc9\",\"sensitive_path\":true,\"suffix\":\".state\"},{\"basename_length\":73,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:4:*SECRET*\\tsites/gram1.<REDACTED_TOKEN>.state.bak-20260626T172508Z-SEC02-4-to-3\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"d5b8b7ddf4135fe2e4a84563c2904c5108fed062c880d2ef7fd3d7ce0a25437e\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"f8e733dec894be535a3f55bec4243442f1b90fac15fef5356ebdf9c912d9923d\",\"sensitive_path\":true,\"suffix\":\".bak-20260626t172508z-sec02-4-to-3\"},{\"basename_length\":73,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:4:*SECRET*\\tsites/gram1.<REDACTED_TOKEN>.state.bak-20260626T172523Z-SEC03-3-to-2\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"3123820d65de7be54ccf53e5ccc4ea06f36cfe74772031c3ea2bf60785d5a90e\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"8c29698be41912729278dacb43ab65afecfd575c1b4f2e2b4c36b43da49c8247\",\"sensitive_path\":true,\"suffix\":\".bak-20260626t172523z-sec03-3-to-2\"},{\"basename_length\":73,\"depth\":9,\"display\":\"<SENSITIVE_PATH_REDACTED>\",\"git_ignore\":{\"evidence\":\"sites/gram1.<REDACTED_TOKEN>.gitignore:4:*SECRET*\\tsites/gram1.<REDACTED_TOKEN>.state.bak-20260626T172535Z-SEC04-2-to-1\\n\",\"matched\":true,\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"58390eebf40c037ad26ed36255abe05677080000eb99a32e9e61c4cf99e2a523\"},\"kind\":\"missing_from_checkout\",\"path_sha256\":\"aaf18ffde71b6473596bb7c92040719cbfc119ecc93fa87487250a9d071fb301\",\"sensitive_path\":true,\"suffix\":\".bak-20260626t172535z-sec04-2-to-1\"},{\"basename_length\":73,\"depth\":9,\"display\":\"<SENSITIVE_PA"
}
