CHAT_OUTPUT_BEGIN
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
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83
COMMAND_SHA256=7ddb77a54bc2cfa4a70442acb26bb500fb7935c9e9ea20d4b7a300899163a533
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=fa76687f4f69125ebd086d16fb3fb4557a90d0f1574208b1e12a131672cb2795
SANITIZED_OUTPUT_SHA256=e88e9c4ec4ed17c27e5aa30d0bc61ed9a0c0aec30145dda307a4718069698a4c
OUTPUT_BEGIN
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}
{"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_PATH_REDACTED>","git_ignore":{"evidence":"sites/gram1.<REDACTED_TOKEN>.gitignore:4:*SECRET*\tsites/gram1.<REDACTED_TOKEN>.state.bak-20260626T172547Z-SEC05-1-to-0\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"d6a967aa21691825de7e26409a894c8f9b4d33dd016cb1792ca12c38a23ee4e2"},"kind":"missing_from_checkout","path_sha256":"e62fcb5f18e96be2401274c6e4bfe4a00b083e06433909d6b39f4b20351476cb","sensitive_path":true,"suffix":".bak-20260626t172547z-sec05-1-to-0"},{"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":"26add47b447812492386a7841eaff1600964beb7d9ee32d8487ee0ccba7eca23"},"kind":"missing_from_checkout","path_sha256":"221cbee473501ee3e126b8e29602ad5fbf9842b9746137aff0a33eb30d6c2ed4","sensitive_path":true,"suffix":".tsv"},{"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":"1c3b1c497c5b3f915a056adf6fc8057d251e4564a4c1bb84ac7bf9d184164846"},"kind":"missing_from_checkout","path_sha256":"99565b640d90eb8ddbd13d276ab6aa01aad1ea72771cd5a2b12e928723171ba6","sensitive_path":true,"suffix":".tsv"},{"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":"8385fcbff8e32b20a491f241d44139451a2d01e42da23e02adc916206d718b81"},"kind":"missing_from_checkout","path_sha256":"315926ca6f4f110ee475ea3392cc3e34f03856f87fdd1e1c23b6c013f3f7ae20","sensitive_path":true,"suffix":".tsv"},{"basename_length":38,"depth":7,"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":"95f3a9ad4434bae963aa8571d12482f456bf6e625c5d6a5bd2eea0f6ab5811b6"},"kind":"missing_from_checkout","path_sha256":"d0a1f552e44ee3cc70c58a889001f15abab3d5105c7392997bbfe052379c42c9","sensitive_path":true,"suffix":".md"},{"basename_length":34,"depth":8,"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":"0b40be06fa1569553dfcb1268f259bc244e3e9749962c310c902ea585bf6aed6"},"kind":"missing_from_checkout","path_sha256":"72a8c29f3c2e8e99a038a3447e7f459881cafb9be6b59ccbdb87b5056613a21a","sensitive_path":true,"suffix":".md"},{"basename_length":24,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p0-restore-drill-20260624T122122Z/edge-health-redacted.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"1d5c441b47ab4c8ce70ad3d8da8ad8e4f63b55ac276a68134aad17f915e81378"},"kind":"missing_from_checkout","path_sha256":"b5dba4d253ce4cfce27a99d1a2cc7aeeb4eb607bfc628c6e7d5e49498fa6eda1","sensitive_path":true,"suffix":".txt"},{"basename_length":29,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p0-restore-drill-20260624T122122Z/nextcloud-health-redacted.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"8ffa9e5091874e8dc2ab0ee11c77d4e0991f0e8968aa9276ab3c6bb1c45ee349"},"kind":"missing_from_checkout","path_sha256":"8b6160f09289bf95e9011d5d2532bdfdace7151018bf14cddc167f61f39a05eb","sensitive_path":true,"suffix":".txt"},{"basename_length":23,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-disk-retention-20260624T122906Z/edge-disk-retention.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"88184ac4e6712127751e95a372fea3c4a962dcbb1b6f337479d96d9fd80ab9ab"},"kind":"missing_from_checkout","path_sha256":"7491d29ffb10110b9780e4c7b17379e5c92cc8b3b13a4cec215977c362aa7d89","sensitive_path":true,"suffix":".txt"},{"basename_length":26,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-gotify-bind-local-20260624T142534Z/edge-gotify-bind-local.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"b539d8ab20e1c3d7ae183e62a758517970c84e1526eacd74ca52e16821c698c7"},"kind":"missing_from_checkout","path_sha256":"c7a26319f7ce7a28a5d2652b0971d750620337110fb656676c98c5ed76f2d9ae","sensitive_path":true,"suffix":".txt"},{"basename_length":23,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-gotify-bind-local-20260624T142534Z/pve01-gotify-checks.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"0f7f7148f79dd4ebb21c675c7148338706c14059f639f83635ac5adb9410c70f"},"kind":"missing_from_checkout","path_sha256":"a7bee84809250a23b6e273c1663691bb7aa08f1f6e41dc2241bf6fd664220dca","sensitive_path":true,"suffix":".txt"},{"basename_length":27,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-npmplus-admin-bind-20260624T141458Z/edge-npmplus-admin-bind.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"2282ec1067cddacb51705ed0ed31c14136871dd45abad0220a409aa4eee553d2"},"kind":"missing_from_checkout","path_sha256":"af4f654bca9d5e77acb1ac87dc25551aace1adc3a1530bbeb3dd201177034d3d","sensitive_path":true,"suffix":".txt"},{"basename_length":27,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-private-vpn-real-fix-20260624T140710Z/edge-private-vpn-health.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"edec1d3140869a10e9b292b7fc2160ad7635b535b7148a499cb9ab18d87ca3ba"},"kind":"missing_from_checkout","path_sha256":"0926fcd8278044b8e3e7ac54865790187ca3ba21c304055b9632f4e656bf0c66","sensitive_path":true,"suffix":".txt"},{"basename_length":28,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-private-vpn-real-fix-20260624T140710Z/pve01-private-vpn-health.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"66c2985c8bc9946d9c9a5e6933690564f0237b887f1e172b69897ddfa579fb72"},"kind":"missing_from_checkout","path_sha256":"df2357b50958070a518d8712dda0d0b0ff4dba9c56562ccc208b7e76e8fd9107","sensitive_path":true,"suffix":".txt"},{"basename_length":21,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-repo-hygiene-20260624T133115Z/edge-final-health.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"a85ae485f382cee6a2b0bb9aacc17a7efd24b47da313633cf927ba357a42ca7f"},"kind":"missing_from_checkout","path_sha256":"d5a2d14f9ee2d03202d4a9f9d75e4c09264e896aa470af23471a3e5a4c0e62c5","sensitive_path":true,"suffix":".txt"},{"basename_length":21,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-repo-hygiene-20260624T133115Z/pve01-final-state.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"019e69a626941daf634eda8a19d0456d017143f98db96091c4eeab77bc833ae0"},"kind":"missing_from_checkout","path_sha256":"536ebafe24b85ae222b2a5af56cb5cb5c876d5d73509bb938f7338d563e31ac8","sensitive_path":true,"suffix":".txt"},{"basename_length":15,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-repo-hygiene-kuma-fix-20260624T133456Z/edge-health.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"fd15af0ea3cbe0e2b3d6155b4900d95744ca386450aa388c03e321f097274fbf"},"kind":"missing_from_checkout","path_sha256":"c5684c73fe33566cba19bfc41131dd3794e305cfc3690e97ec47b83b802f6e55","sensitive_path":true,"suffix":".txt"},{"basename_length":27,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-repo-hygiene-kuma-fix-20260624T133456Z/pve01-private-vpn-hosts.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"025d903f5f632e06c2e383d5bf57b25ad34138b913e5ccda38f7ece8f8ab01be"},"kind":"missing_from_checkout","path_sha256":"9cfbd1460ca38ec3f446d9f3d0ee0cc596e930c3fad3296308b8516e2ba6d43c","sensitive_path":true,"suffix":".txt"},{"basename_length":22,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-router-audit-20260624T144403Z/edge-router-health.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"0942367c3059c732b0b573aa92f1953bf1a06264e5f8c2942ccb3e374a4a19c2"},"kind":"missing_from_checkout","path_sha256":"1a2815578e337b7334268bd26030da8ad67dab65e7b05995d3f2884d868f0c31","sensitive_path":true,"suffix":".txt"},{"basename_length":31,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-router-audit-20260624T144403Z/nextcloud-turn-router-state.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"4e00d28ba20e8271c7791515143b9d9d01a23e8ec54a4b1348dfdb5309a1a16a"},"kind":"missing_from_checkout","path_sha256":"ac066c46b9e0b9ea72d698ed93c6b54ae2471412551fd147e207df6cf863ba59","sensitive_path":true,"suffix":".txt"},{"basename_length":31,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-router-audit-20260624T144403Z/pve01-router-hairpin-probes.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"26116733b46159e8fd195f2b63902401234fffec19bd8d479933cd96d689f5b2"},"kind":"missing_from_checkout","path_sha256":"0dbd50676c80dca8ab0c5fda3529a2827908092d046fb6ae41413db3d7693fbc","sensitive_path":true,"suffix":".txt"},{"basename_length":28,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-router-audit-20260624T144403Z/targeted-udp-tag-summary.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"96efef84756c9eede803867db1385590f67db29052a2d761b345afffa21e0172"},"kind":"missing_from_checkout","path_sha256":"603499f9228d7bff75161418bd6edd568d5333e6406abd87915f2d6262329189","sensitive_path":true,"suffix":".txt"},{"basename_length":25,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-router-hardening-20260624T125534Z/edge-router-hardening.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"92ecf926a745ba9ba3417d86b19e7531683e82b223b20a4888521c4627834ca1"},"kind":"missing_from_checkout","path_sha256":"3b602efd8d7209b2fb372b830ebc57ab10647ed060b3538d35e44cb009c5fc39","sensitive_path":true,"suffix":".txt"},{"basename_length":31,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.<REDACTED_TOKEN>.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"720f06b9c143aa5b7c076b595302eee0e9c7b11e328c78220480112036f3f61f"},"kind":"missing_from_checkout","path_sha256":"aa93d47b4e8337b1eb74f195cb5fc25a51d821f0d4fbd17bebda61e25e645884","sensitive_path":true,"suffix":".txt"},{"basename_length":30,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.<REDACTED_TOKEN>.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"0a2e2b004aea530f98353fd1970302d7dbca63f45fc0e79b61069edd198e419d"},"kind":"missing_from_checkout","path_sha256":"5b40627afbcc850a12211e2c4486456b84075a3e45e2a16a96f94a6e817f427e","sensitive_path":true,"suffix":".txt"},{"basename_length":20,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-turn-3478-20260624T143023Z/edge-turn-health.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"0602b60258928991089d7c408309cc1b12386a1b9ca4744d0cbdaf2181a45755"},"kind":"missing_from_checkout","path_sha256":"aeb6473b0194be1ee5311743ff57e751d2a1e65377c1be7417c04937eea5ff9e","sensitive_path":true,"suffix":".txt"},{"basename_length":24,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-turn-3478-20260624T143023Z/nextcloud-turn-state.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"a4c1926f01dc80bd1995968ebedb218c86ba90d0ef44fb196bfcbea0f709e06b"},"kind":"missing_from_checkout","path_sha256":"2b6e5bfb31cce087b75cc373f2fe676d84a4e09a5de1028aa47c9a280fcddbd4","sensitive_path":true,"suffix":".txt"},{"basename_length":18,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-20260624T130007Z/backup-summary.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"5b988574d368c653a905be750f9126d128c3693bc9b75f7f58faa2a8ed203924"},"kind":"missing_from_checkout","path_sha256":"911a07e99ec8925526151a0183830f33a6e183fbe3066ce6eb8140f4c89fff66","sensitive_path":true,"suffix":".txt"},{"basename_length":24,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-20260624T130007Z/current-fingerprints.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"21aa40c6b652a0fe7e97d9ad89ad6291b1591de6f4368f085a33cb28732815df"},"kind":"missing_from_checkout","path_sha256":"11efcb2cdb6caa4bc0d7cf2f5082d511a60e203034c7838355f5544f227cdf74","sensitive_path":true,"suffix":".txt"},{"basename_length":24,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-20260624T130007Z/current-known-hosts.scan\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"b896fc8c0ee39a86615c06725f20457f74c453fc7b93532af86dfcf4e2eeffe6"},"kind":"missing_from_checkout","path_sha256":"ea1bbc4d7326bf99f603aea2fc69219e183114138222164c1fa34425f701ae2b","sensitive_path":true,"suffix":".scan"},{"basename_length":25,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-20260624T130007Z/old-alias-known-hosts.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"9d826962f206a6098a00be141ddfa1524b179e9f58449feceb16ce79af38d4d4"},"kind":"missing_from_checkout","path_sha256":"0a60da401257e8d3d62622d35675b0aeeaa5b0c9987ae470f389bb9a84f67107","sensitive_path":true,"suffix":".txt"},{"basename_length":20,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-20260624T130007Z/old-fingerprints.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"cf597d287845f317164b4f3c4820f2bd66e5c0aeddae242ff237e7e7d583c7dd"},"kind":"missing_from_checkout","path_sha256":"4eae326a00f039ed3f44104064c4c2fdea14fe9d76e3af66e3379669d2916022","sensitive_path":true,"suffix":".txt"},{"basename_length":22,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-20260624T130007Z/old-ip-known-hosts.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"c4dcbfa2ce0571f34143c736f4f9472ede1fdeb4919af4c3228bc2a9e26caa56"},"kind":"missing_from_checkout","path_sha256":"fe70268e02c773df3fbb87dba01c95c40da5d948585327ec65fd5290860aa913","sensitive_path":true,"suffix":".txt"},{"basename_length":19,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-20260624T130007Z/old-known-hosts.raw\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"f5e2ae1ac3302e9947120b1e49e7365406c3495170767fe7c137197f5127ac06"},"kind":"missing_from_checkout","path_sha256":"639767b08819a36ef1d907e1934e6bbd354e621488194f75aa06ced3e854074d","sensitive_path":true,"suffix":".raw"},{"basename_length":22,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-20260624T130007Z/vps-identity-audit.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"4ddb0c2029d99c580cc682650c6c79f7644b7d1b73d8ecbad8868e7288a7e122"},"kind":"missing_from_checkout","path_sha256":"fcf87d70165391a6f54c5d6b1fe815822c9469a81287680eaee9ebd1d832ea16","sensitive_path":true,"suffix":".txt"},{"basename_length":22,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-closure-20260624T130435Z/vps-identity-audit.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"2fd7bf68b51afd18f259fc90ba3895a9cae6ea843df35bdaafef822f03b588c8"},"kind":"missing_from_checkout","path_sha256":"4f4cdc4688bc2f146c33ec604a925e52063653b83ca317a59436b246b8694443","sensitive_path":true,"suffix":".txt"},{"basename_length":31,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-closure-20260624T130435Z/vps-identity-final-evidence.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"2c1b158668e4fe2672bac68ce1cb071e550cb4aec018c4f8ecc63f9d081372dd"},"kind":"missing_from_checkout","path_sha256":"d0aa3459b11ba93537c86181bee9d357fdec62098c580a6d1c0cea83d2852d75","sensitive_path":true,"suffix":".txt"},{"basename_length":31,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":".gitignore:9:evidence/\tsites/gram1.ru/baseline/20260731T071400Z/hosts/local/source/01_homelab-configs-worktree/evidence/p1-vps-identity-closure-20260624T130435Z/vps-identity-peer-discovery.txt\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"1b423c085d60c40f192b2678dbeb9d7782a5039bd2ff46ab2bac94c5803491a5"},"kind":"missing_from_checkout","path_sha256":"d1e501c34794fae94b0636e4df7638d766f5114ff2e5fcf5f7c0b52143368354","sensitive_path":true,"suffix":".txt"},{"basename_length":56,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":"sites/gram1.<REDACTED_TOKEN>.gitignore:7:*token*\tsites/gram1.<REDACTED_TOKEN>.md\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"073ca6c91b04c783635be196a401f7b215611e8ea26e3d16996a5320c3099884"},"kind":"missing_from_checkout","path_sha256":"cf0a58341719e872b49bc4b02cd11e7d83b548e3581c8c8cd26cbd228b1e1d46","sensitive_path":true,"suffix":".md"},{"basename_length":49,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":"sites/gram1.<REDACTED_TOKEN>.gitignore:7:*token*\tsites/gram1.<REDACTED_TOKEN>.md\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"a41753864159c835e8400ef003eb23c1d539eb0b2868b68eb233c963adc5c126"},"kind":"missing_from_checkout","path_sha256":"e9d73c2c02c4b77e4d1a1e9ca03a3f5a29318aa80c4de6c5ac17763b36aa135d","sensitive_path":true,"suffix":".md"},{"basename_length":57,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":"sites/gram1.<REDACTED_TOKEN>.gitignore:7:*token*\tsites/gram1.<REDACTED_TOKEN>.md\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"c233f7881d2c4ca39f986a7e2d40b6bee169c8295ec1141ee62bef961cababdb"},"kind":"missing_from_checkout","path_sha256":"dab0b2de30b5cbe7ddb7c0af562cad07f3a08a463f77b7d7a3c464ef17c4b32d","sensitive_path":true,"suffix":".md"},{"basename_length":51,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":"sites/gram1.<REDACTED_TOKEN>.gitignore:7:*token*\tsites/gram1.<REDACTED_TOKEN>.md\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"470407ef09a236e66b2aa41a5b7bf3b923aae05baf7ea3e276e89046d2de1f6d"},"kind":"missing_from_checkout","path_sha256":"4db3c5f77435bc717163e8571e894eabf122de91be97b532ca5b93d322d82f62","sensitive_path":true,"suffix":".md"},{"basename_length":43,"depth":6,"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":"330700b68162ec69d2c2984a09d8f4ecde481de627fbc2a2d2f4523682b01845"},"kind":"missing_from_checkout","path_sha256":"6a1ee1d3f3c2e845f44b24f8c4ebf1607aa47a7eaf7d7b51672e88a5b035e342","sensitive_path":true,"suffix":".md"},{"basename_length":43,"depth":6,"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":"44d895e37c4d7efb5b2a940d8427d58f95ac085a5f47f0de32ae9f6a37095764"},"kind":"missing_from_checkout","path_sha256":"32416b898e71d162602268191d7cb0aed22e9d5788fd96945c496759ca555875","sensitive_path":true,"suffix":".md"},{"basename_length":28,"depth":6,"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":"d82c5c23ede0b4952bf49c531772ce2c450eb5c32d1c3e1112632099c3cecc3c"},"kind":"missing_from_checkout","path_sha256":"6335de79a3ccf4b63c70083a7ad96b5654143ca78290afca3a40f836f4a199b4","sensitive_path":true,"suffix":".md"},{"basename_length":26,"depth":6,"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":"6bed7eb9432a31b217f0e34b25fcb715631bc05f3e1949e7678f06cc6cc6e993"},"kind":"missing_from_checkout","path_sha256":"6a0f236132211b9633e1af76a22dc681b2a0a5c3127cff28fb273c23c696e9ba","sensitive_path":true,"suffix":".md"},{"basename_length":33,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\tsites/gram1.<REDACTED_TOKEN>\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"03a40752aff61bc454e2087a0b32de4dfc8441d8dcf968d1a5ca726995e0e8df"},"kind":"missing_from_checkout","path_sha256":"d7a9c39ea6d0c8a7a32946ad5f6ea9d5c05f9d043fb2fac37d35fae7f7db2135","sensitive_path":true,"suffix":""},{"basename_length":9,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":"sites/gram1.<REDACTED_TOKEN>.gitignore:47:secrets/*\tsites/gram1.<REDACTED_TOKEN>.md\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"497890c3ee641ac24cb043e3d1c4d3097e785f90541fd6f46fc58a94cf1fad59"},"kind":"missing_from_checkout","path_sha256":"3c04304cd1f920c5da0b385e24e0c58089655809ecf01afdb4118da559a0bff0","sensitive_path":true,"suffix":".md"},{"basename_length":16,"depth":8,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\tsites/gram1.<REDACTED_TOKEN>.sh\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"9658a5115eee789ce42083a24b49f428846e564cd8dc50efe3fdce5955b4f6cd"},"kind":"missing_from_checkout","path_sha256":"535e8fd31db685820b50c7d2b39ef39231de37a09ba5721896bfe93ef6e4caad","sensitive_path":true,"suffix":".sh"},{"basename_length":22,"depth":8,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\tsites/gram1.<REDACTED_TOKEN>.sh\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"65f40742fc1ec0d09a9acb6877eb0b147d7ade8ae13d54a35af65602f843096f"},"kind":"missing_from_checkout","path_sha256":"e7a87f3d36d8f47b6bb474e00c9a58d6559461add004344555b2dc54ae4a7712","sensitive_path":true,"suffix":".sh"},{"basename_length":36,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","git_ignore":{"evidence":"sites/gram1.<REDACTED_TOKEN>.gitignore:3:*secret*\tsites/gram1.<REDACTED_TOKEN>.py\n","matched":true,"rc":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_sha256":"09ee779100f326a11557a44c8046d16e2134c5d530e9ccb4c9c17b59ea6e9d3c"},"kind":"missing_from_checkout","path_sha256":"b9e6fb675276fcc5dd88fc842e96ccc14c53b610ed0cd9822864f686fc4eb03b","sensitive_path":true,"suffix":".py"}],"anomalies_truncated":0,"commit_tree_matches_capture_report":false,"expected_file_count":4383,"expected_total_bytes":28903906,"expected_tree_sha256":"ee05dc5ea7ab8ad354a66a5c5ffee7a982734125719d94d351d677ca75674062","file_count":4309,"file_count_matches_capture_report":false,"ignored_missing_count":74,"manifest_command_id":"GRAM1-SITE-BASELINE-CAPTURE-GITEA-V1-20260731T071400Z","manifest_consistent_with_commit":false,"manifest_entries":4382,"manifest_invalid_paths":0,"manifest_missing_files":74,"manifest_only_count":74,"manifest_only_path_hashes":[{"basename_length":36,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"1831ab715f1a23930712ec363c2df210519d9a8e63ab21050af976806c462319","sensitive_path":true,"suffix":".tsv"},{"basename_length":34,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"c2068a915ab0f0cd8086e7251b2406b4de17cd813988229b179a71e6eea49a0c","sensitive_path":true,"suffix":".tsv"},{"basename_length":20,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"eb860700333344be2f70c57bfab9fcdb5fc959fc241019e0e55898793e2c530c","sensitive_path":true,"suffix":".env"},{"basename_length":30,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"f1a246ef882c692f3e7676d2009a5a0738904f4aee2e5b23ac832e6442e23159","sensitive_path":true,"suffix":".log"},{"basename_length":19,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"46c726ae03ab26e7d67c925492f53ea0fa143a2d93f9fc91f4766da8cadb865e","sensitive_path":true,"suffix":".log"},{"basename_length":30,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"683a786ccd0903852c34e18b2ee47a3270fc44a8a174c7ae37d27260ed35d870","sensitive_path":true,"suffix":".log"},{"basename_length":30,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"d70b5961cf40d476336611938313bf4f984caa86367034f982e63f4f335ff9af","sensitive_path":true,"suffix":".tsv"},{"basename_length":21,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"87fddbce4d9ee1002e548ca86665cb89db8d789c1df8ef3b0cc60ea183d7477e","sensitive_path":true,"suffix":".log"},{"basename_length":40,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"206c0b2917281b76b3cc6113e55545a2d037982a20970eefdb7ae7bbbae71443","sensitive_path":true,"suffix":".log"},{"basename_length":42,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"89150ce2e53b3a822590fac08a069419a5fe087dadb20c07f54d7574935d3bd0","sensitive_path":true,"suffix":".log"},{"basename_length":33,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"325d9502c86190630eb0c655b0c9d84c4bf098e6ba4a6f8faf93d0cc2bde5b40","sensitive_path":true,"suffix":".log"},{"basename_length":42,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"f192560f9e1fb9fad21ad81749d8f69aaecd79bb442735aa5c01d42d8f18f3d9","sensitive_path":true,"suffix":".tsv"},{"basename_length":41,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"b76d9833fe6db3eacc435aa2903d5a66cc477cbcd49300bec1fdd4190eb0d66e","sensitive_path":true,"suffix":".tsv"},{"basename_length":36,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"0a37f3428e86c3b86e72e2ff56aabd60e73f01f9970cf50962c1295636e805d8","sensitive_path":true,"suffix":".tsv"},{"basename_length":29,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"a2ac117952ccea622345bb6148acbff3ef5ed20a3e5ec4d9925190dac39f26f3","sensitive_path":true,"suffix":".tsv"},{"basename_length":39,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"262f0dc79b7997d36058b3937c925c85d21784c07ab6b5ba4043cb11e6a762f0","sensitive_path":true,"suffix":".txt"},{"basename_length":43,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"55d7edc8a6446a60ce484b35c64c88647508903264c20a2188c959d4498620ce","sensitive_path":true,"suffix":".tsv"},{"basename_length":41,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"1f146757dd427ba94db10f8cb7a28b442f7dfbc3dc7db97738faa37bbd6cab64","sensitive_path":true,"suffix":".md"},{"basename_length":42,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"b3b3d8296f1af449d288c2736bfbfa2accbcde10ae34b0efe8bde8375c9388ec","sensitive_path":true,"suffix":".tsv"},{"basename_length":39,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"12f015430ad9424a19dfe30db5b95dad23ecf63e7815f10af4ceb815267d5cc9","sensitive_path":true,"suffix":".state"},{"basename_length":73,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"f8e733dec894be535a3f55bec4243442f1b90fac15fef5356ebdf9c912d9923d","sensitive_path":true,"suffix":".bak-20260626t172508z-sec02-4-to-3"},{"basename_length":73,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"8c29698be41912729278dacb43ab65afecfd575c1b4f2e2b4c36b43da49c8247","sensitive_path":true,"suffix":".bak-20260626t172523z-sec03-3-to-2"},{"basename_length":73,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"aaf18ffde71b6473596bb7c92040719cbfc119ecc93fa87487250a9d071fb301","sensitive_path":true,"suffix":".bak-20260626t172535z-sec04-2-to-1"},{"basename_length":73,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"e62fcb5f18e96be2401274c6e4bfe4a00b083e06433909d6b39f4b20351476cb","sensitive_path":true,"suffix":".bak-20260626t172547z-sec05-1-to-0"},{"basename_length":29,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"221cbee473501ee3e126b8e29602ad5fbf9842b9746137aff0a33eb30d6c2ed4","sensitive_path":true,"suffix":".tsv"},{"basename_length":43,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"99565b640d90eb8ddbd13d276ab6aa01aad1ea72771cd5a2b12e928723171ba6","sensitive_path":true,"suffix":".tsv"},{"basename_length":30,"depth":9,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"315926ca6f4f110ee475ea3392cc3e34f03856f87fdd1e1c23b6c013f3f7ae20","sensitive_path":true,"suffix":".tsv"},{"basename_length":38,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"d0a1f552e44ee3cc70c58a889001f15abab3d5105c7392997bbfe052379c42c9","sensitive_path":true,"suffix":".md"},{"basename_length":34,"depth":8,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"72a8c29f3c2e8e99a038a3447e7f459881cafb9be6b59ccbdb87b5056613a21a","sensitive_path":true,"suffix":".md"},{"basename_length":24,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"b5dba4d253ce4cfce27a99d1a2cc7aeeb4eb607bfc628c6e7d5e49498fa6eda1","sensitive_path":true,"suffix":".txt"},{"basename_length":29,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"8b6160f09289bf95e9011d5d2532bdfdace7151018bf14cddc167f61f39a05eb","sensitive_path":true,"suffix":".txt"},{"basename_length":23,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"7491d29ffb10110b9780e4c7b17379e5c92cc8b3b13a4cec215977c362aa7d89","sensitive_path":true,"suffix":".txt"},{"basename_length":26,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"c7a26319f7ce7a28a5d2652b0971d750620337110fb656676c98c5ed76f2d9ae","sensitive_path":true,"suffix":".txt"},{"basename_length":23,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"a7bee84809250a23b6e273c1663691bb7aa08f1f6e41dc2241bf6fd664220dca","sensitive_path":true,"suffix":".txt"},{"basename_length":27,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"af4f654bca9d5e77acb1ac87dc25551aace1adc3a1530bbeb3dd201177034d3d","sensitive_path":true,"suffix":".txt"},{"basename_length":27,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"0926fcd8278044b8e3e7ac54865790187ca3ba21c304055b9632f4e656bf0c66","sensitive_path":true,"suffix":".txt"},{"basename_length":28,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"df2357b50958070a518d8712dda0d0b0ff4dba9c56562ccc208b7e76e8fd9107","sensitive_path":true,"suffix":".txt"},{"basename_length":21,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"d5a2d14f9ee2d03202d4a9f9d75e4c09264e896aa470af23471a3e5a4c0e62c5","sensitive_path":true,"suffix":".txt"},{"basename_length":21,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"536ebafe24b85ae222b2a5af56cb5cb5c876d5d73509bb938f7338d563e31ac8","sensitive_path":true,"suffix":".txt"},{"basename_length":15,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"c5684c73fe33566cba19bfc41131dd3794e305cfc3690e97ec47b83b802f6e55","sensitive_path":true,"suffix":".txt"},{"basename_length":27,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"9cfbd1460ca38ec3f446d9f3d0ee0cc596e930c3fad3296308b8516e2ba6d43c","sensitive_path":true,"suffix":".txt"},{"basename_length":22,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"1a2815578e337b7334268bd26030da8ad67dab65e7b05995d3f2884d868f0c31","sensitive_path":true,"suffix":".txt"},{"basename_length":31,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"ac066c46b9e0b9ea72d698ed93c6b54ae2471412551fd147e207df6cf863ba59","sensitive_path":true,"suffix":".txt"},{"basename_length":31,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"0dbd50676c80dca8ab0c5fda3529a2827908092d046fb6ae41413db3d7693fbc","sensitive_path":true,"suffix":".txt"},{"basename_length":28,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"603499f9228d7bff75161418bd6edd568d5333e6406abd87915f2d6262329189","sensitive_path":true,"suffix":".txt"},{"basename_length":25,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"3b602efd8d7209b2fb372b830ebc57ab10647ed060b3538d35e44cb009c5fc39","sensitive_path":true,"suffix":".txt"},{"basename_length":31,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"aa93d47b4e8337b1eb74f195cb5fc25a51d821f0d4fbd17bebda61e25e645884","sensitive_path":true,"suffix":".txt"},{"basename_length":30,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"5b40627afbcc850a12211e2c4486456b84075a3e45e2a16a96f94a6e817f427e","sensitive_path":true,"suffix":".txt"},{"basename_length":20,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"aeb6473b0194be1ee5311743ff57e751d2a1e65377c1be7417c04937eea5ff9e","sensitive_path":true,"suffix":".txt"},{"basename_length":24,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"2b6e5bfb31cce087b75cc373f2fe676d84a4e09a5de1028aa47c9a280fcddbd4","sensitive_path":true,"suffix":".txt"},{"basename_length":18,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"911a07e99ec8925526151a0183830f33a6e183fbe3066ce6eb8140f4c89fff66","sensitive_path":true,"suffix":".txt"},{"basename_length":24,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"11efcb2cdb6caa4bc0d7cf2f5082d511a60e203034c7838355f5544f227cdf74","sensitive_path":true,"suffix":".txt"},{"basename_length":24,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"ea1bbc4d7326bf99f603aea2fc69219e183114138222164c1fa34425f701ae2b","sensitive_path":true,"suffix":".scan"},{"basename_length":25,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"0a60da401257e8d3d62622d35675b0aeeaa5b0c9987ae470f389bb9a84f67107","sensitive_path":true,"suffix":".txt"},{"basename_length":20,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"4eae326a00f039ed3f44104064c4c2fdea14fe9d76e3af66e3379669d2916022","sensitive_path":true,"suffix":".txt"},{"basename_length":22,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"fe70268e02c773df3fbb87dba01c95c40da5d948585327ec65fd5290860aa913","sensitive_path":true,"suffix":".txt"},{"basename_length":19,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"639767b08819a36ef1d907e1934e6bbd354e621488194f75aa06ced3e854074d","sensitive_path":true,"suffix":".raw"},{"basename_length":22,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"fcf87d70165391a6f54c5d6b1fe815822c9469a81287680eaee9ebd1d832ea16","sensitive_path":true,"suffix":".txt"},{"basename_length":22,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"4f4cdc4688bc2f146c33ec604a925e52063653b83ca317a59436b246b8694443","sensitive_path":true,"suffix":".txt"},{"basename_length":31,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"d0aa3459b11ba93537c86181bee9d357fdec62098c580a6d1c0cea83d2852d75","sensitive_path":true,"suffix":".txt"},{"basename_length":31,"depth":7,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"d1e501c34794fae94b0636e4df7638d766f5114ff2e5fcf5f7c0b52143368354","sensitive_path":true,"suffix":".txt"},{"basename_length":56,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"cf0a58341719e872b49bc4b02cd11e7d83b548e3581c8c8cd26cbd228b1e1d46","sensitive_path":true,"suffix":".md"},{"basename_length":49,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"e9d73c2c02c4b77e4d1a1e9ca03a3f5a29318aa80c4de6c5ac17763b36aa135d","sensitive_path":true,"suffix":".md"},{"basename_length":57,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"dab0b2de30b5cbe7ddb7c0af562cad07f3a08a463f77b7d7a3c464ef17c4b32d","sensitive_path":true,"suffix":".md"},{"basename_length":51,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"4db3c5f77435bc717163e8571e894eabf122de91be97b532ca5b93d322d82f62","sensitive_path":true,"suffix":".md"},{"basename_length":43,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"6a1ee1d3f3c2e845f44b24f8c4ebf1607aa47a7eaf7d7b51672e88a5b035e342","sensitive_path":true,"suffix":".md"},{"basename_length":43,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"32416b898e71d162602268191d7cb0aed22e9d5788fd96945c496759ca555875","sensitive_path":true,"suffix":".md"},{"basename_length":28,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"6335de79a3ccf4b63c70083a7ad96b5654143ca78290afca3a40f836f4a199b4","sensitive_path":true,"suffix":".md"},{"basename_length":26,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"6a0f236132211b9633e1af76a22dc681b2a0a5c3127cff28fb273c23c696e9ba","sensitive_path":true,"suffix":".md"},{"basename_length":33,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"d7a9c39ea6d0c8a7a32946ad5f6ea9d5c05f9d043fb2fac37d35fae7f7db2135","sensitive_path":true,"suffix":""},{"basename_length":9,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"3c04304cd1f920c5da0b385e24e0c58089655809ecf01afdb4118da559a0bff0","sensitive_path":true,"suffix":".md"},{"basename_length":36,"depth":6,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"b9e6fb675276fcc5dd88fc842e96ccc14c53b610ed0cd9822864f686fc4eb03b","sensitive_path":true,"suffix":".py"},{"basename_length":16,"depth":8,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"535e8fd31db685820b50c7d2b39ef39231de37a09ba5721896bfe93ef6e4caad","sensitive_path":true,"suffix":".sh"},{"basename_length":22,"depth":8,"display":"<SENSITIVE_PATH_REDACTED>","path_sha256":"e7a87f3d36d8f47b6bb474e00c9a58d6559461add004344555b2dc54ae4a7712","sensitive_path":true,"suffix":".sh"}],"manifest_sha256":"e561f275b7d1c6656e1fa80ee77b6fe4858d1178b4d8a592450ac4036adec459","manifest_sha_mismatches":0,"manifest_size_mismatches":0,"manifest_snapshot_id":"20260731T071400Z","manifest_symlinks":0,"manifest_verified_files":4308,"nonignored_missing_count":0,"total_bytes":28684549,"total_bytes_matches_capture_report":false,"tracked_only_count":1,"tracked_only_path_hashes":[{"basename_length":19,"depth":1,"display":"manifest.final.json","path_sha256":"7e4eafd21b9aade5cc9f63c802f08c1efee3bd6fb0e7225c0e69179e7ac31adb","sensitive_path":false,"suffix":".json"}],"tree_sha256":"fdac2c317221e056500efb4c4750c5cf0b4325102f99f67bb566f818bca9d231","tree_sha_matches_capture_report":false,"unexpected_tracked_only_count":0}}

OUTPUT_END
CHAT_OUTPUT_END
