102 lines
3.8 KiB
Plaintext
102 lines
3.8 KiB
Plaintext
CHAT_OUTPUT_BEGIN
|
|
COMMAND_ID=CLUSTER-REFERENCE-PUBLISHER-CONTRACT-AUDIT-171
|
|
STATUS=OK
|
|
RC=0
|
|
HOST=pve01
|
|
MODE=read-only
|
|
COMPONENT=cluster-audit
|
|
REFERENCE_REGISTER_CHECK=OK
|
|
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
|
|
ERROR_REGISTER_CHECK=OK
|
|
ERROR_REGISTER_SHA256=08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752
|
|
COMMAND_SHA256=1299fe30eb30386fec901e120ab525ece490edc5eca767d9216466ecd225bef5
|
|
DUPLICATE_FAILED_COMMAND_BLOCKED=false
|
|
EXECUTION_STARTED=true
|
|
CHANGES_MADE=false
|
|
SANITIZED=yes
|
|
SECRETS_INCLUDED=no
|
|
PRIVATE_ADDRESSES_INCLUDED=no
|
|
RAW_EVIDENCE_SHA256=ced96ca03c186b7a4b64cc4939add95121ad329963b7fddde6c5fcde8c47940f
|
|
SANITIZED_OUTPUT_SHA256=ced96ca03c186b7a4b64cc4939add95121ad329963b7fddde6c5fcde8c47940f
|
|
OUTPUT_BEGIN
|
|
PREVIOUS_RESULT=VERIFIED
|
|
=== OPERATIONS_PUBLISH_CONTEXT ===
|
|
1-# Operations
|
|
2-
|
|
3-List: homelab-reference list
|
|
4-Read: homelab-reference get SECTION ID --layer effective
|
|
5-Add: homelab-reference add SECTION JSON
|
|
6-Edit: homelab-reference edit SECTION ID --set key=value
|
|
7-Remove: homelab-reference remove SECTION ID
|
|
8-Validate: homelab-reference validate
|
|
9-Merge: homelab-reference merge
|
|
10-Refresh: homelab-reference-refresh
|
|
11:Publish: homelab-reference-publish
|
|
12-
|
|
13-Immutable runtime history for the exact COMMAND_ID is authoritative. latest.json is not authoritative.
|
|
=== ACTIVE_CODE_REFERENCES ===
|
|
=== REFRESH_RELEVANT_LINES ===
|
|
5:S=json.loads((R/"manifest.json").read_text())["sections"]
|
|
34: f=int(json.loads((R/"manifest.json").read_text()).get("freshness_seconds",{}).get(s,3600));z=(t+datetime.timedelta(seconds=f)).isoformat()
|
|
131: st=load("state","current") if False else json.loads((R/"state/current.json").read_text());st.update({"schema_version":2,"status":"AUTO_REFRESH_READY","updated_at":t.isoformat(),"last_snapshot":str(snap),"observed_counts":cnt,"effective_counts":eff,"public_index":str(R/"public/index.json"),"collector":str(pathlib.Path(__file__))});atom(R/"state/current.json",st)
|
|
=== CLI_RELEVANT_LINES ===
|
|
43: manifest = json.loads((ROOT / "manifest.json").read_text(encoding="utf-8"))
|
|
44: return manifest.get("sections", [])
|
|
65:def validate_section(layer, section):
|
|
105:def cmd_status(args):
|
|
106: state_path = ROOT / "state" / "current.json"
|
|
108: print("status=" + str(state.get("status", "UNKNOWN")))
|
|
120: print(str(record.get("id")) + "\t" + str(record.get("name", "")) + "\t" + str(record.get("status", "")))
|
|
176:def cmd_validate(args):
|
|
182: errors.extend(validate_section(layer, section))
|
|
205:p = sub.add_parser("status"); p.set_defaults(func=cmd_status)
|
|
211:p = sub.add_parser("validate"); p.add_argument("section", nargs="?"); p.add_argument("--layer", choices=LAYERS); p.set_defaults(func=cmd_validate)
|
|
=== UNIT_FILES ===
|
|
# /etc/systemd/system/homelab-reference-refresh.service
|
|
[Unit]
|
|
Description=Refresh homelab cluster reference
|
|
After=network-online.target pve-cluster.service
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart=/usr/local/sbin/homelab-reference-refresh
|
|
User=root
|
|
Group=root
|
|
Nice=10
|
|
IOSchedulingClass=best-effort
|
|
IOSchedulingPriority=7
|
|
NoNewPrivileges=true
|
|
PrivateTmp=true
|
|
ProtectSystem=strict
|
|
ReadWritePaths=/etc/homelab/reference /var/backups/homelab-reference
|
|
ProtectHome=read-only
|
|
|
|
# /etc/systemd/system/homelab-reference-refresh.timer
|
|
[Unit]
|
|
Description=Periodic homelab reference refresh
|
|
|
|
[Timer]
|
|
OnBootSec=10min
|
|
OnUnitActiveSec=30min
|
|
RandomizedDelaySec=5min
|
|
Persistent=true
|
|
Unit=homelab-reference-refresh.service
|
|
|
|
[Install]
|
|
WantedBy=timers.target
|
|
=== MANIFEST_CONTRACT ===
|
|
2: "schema_version": 2,
|
|
4: "updated_at": "2026-07-22T08:12:10+00:00",
|
|
=== STATE_CONTRACT ===
|
|
2: "schema_version": 2,
|
|
3: "status": "AUTO_REFRESH_READY",
|
|
4: "updated_at": "2026-07-22T10:01:14+00:00",
|
|
REFERENCE_CHECK=OK
|
|
ERROR_REGISTER_CHECK=OK
|
|
SECRET_PRINTED=NO
|
|
PUBLISHER_CONTRACT_AUDIT=COMPLETE
|
|
|
|
OUTPUT_END
|
|
CHAT_OUTPUT_END
|