diff --git a/wizard-work/sol/check_sol_lane_status_rederived.sh b/wizard-work/sol/check_sol_lane_status_rederived.sh new file mode 100644 index 0000000..f1335bf --- /dev/null +++ b/wizard-work/sol/check_sol_lane_status_rederived.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +# CHECK -- redrive of the 7 primary daily-ledger lanes. +# Recomputes live from the filesystem and diffs against the committed record. +# Exit 0 = committed JSON matches independent recompute; nonzero = wrong. +set -u +cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1 +JSON=sol-lane-status-rederived-2026-10-27.json +OUT=/root/.hermes/wizard-outputs +LANE_LIST="forge ledger null quill sphinx sol spark" + +python3 - "$JSON" "$OUT" "$LANE_LIST" <<'PY' +import json, os, sys, glob, time +json_path, out, lane_list = sys.argv[1:4] +lanes = lane_list.split() +now = time.time() +recomputed = {} +for L in lanes: + files = sorted(glob.glob(os.path.join(out, L + "-*.txt"))) + latest = max(files, key=os.path.getmtime) + age = (now - os.path.getmtime(latest)) / 3600.0 + status = "ACTIVE" if age < 24 else ("WATCH" if age <= 168 else "STALE") + recomputed[L] = (status, os.path.basename(latest)) +with open(json_path) as f: + rec = json.load(f) +ok = True +for L in lanes: + jl = next((x for x in rec["lanes"] if x["id"] == L), None) + if jl is None: + print("FAIL: lane %s missing" % L); ok = False; continue + exp_status, exp_log = recomputed[L] + if jl.get("status") != exp_status or jl.get("latest_log") != exp_log: + print("FAIL: lane %s json=%s/%s recomputed=%s/%s" % (L, jl.get("status"), jl.get("latest_log"), exp_status, exp_log)) + ok = False +counts = {} +for L in lanes: + st = recomputed[L][0] + counts[st] = counts.get(st, 0) + 1 +if rec.get("status_counts") != counts: + print("FAIL: counts json=%s recomputed=%s" % (rec.get("status_counts"), counts)); ok = False +if not ok: + print("RECOMPUTE FAILED: redrive artifact does not match live filesystem") + sys.exit(1) +print("OK: lanes=%d statuses=%s counts=%s" % (len(lanes), ",".join("%s=%s" % (k, v) for k, v in sorted(recomputed.items())), rec.get("status_counts"))) +sys.exit(0) +PY +rc=$? +if [ $rc -ne 0 ]; then + echo "FAIL: independent recompute disagrees with the committed redrive artifact" >&2 + exit 1 +fi +echo "PASS: redrive artifact verified against the live filesystem" +exit 0 diff --git a/wizard-work/sol/sol-lane-status-rederived-2026-10-27.json b/wizard-work/sol/sol-lane-status-rederived-2026-10-27.json new file mode 100644 index 0000000..7b66304 --- /dev/null +++ b/wizard-work/sol/sol-lane-status-rederived-2026-10-27.json @@ -0,0 +1,60 @@ +{ + "artifact": "sol-lane-status-rederived-2026-10-27.json", + "source": "daily ledger logs at /root/.hermes/wizard-outputs/-*.txt (latest by mtime)", + "measured_at_utc": "2026-10-27T22:33:57Z", + "status_rule": "ACTIVE = latest log within 24h; WATCH = 24h-168h; STALE = >168h", + "lanes": [ + { + "id": "forge", + "latest_log": "forge-2026-10-16-1446.txt", + "latest_mtime_utc": "2026-10-16T14:56:18Z", + "age_h": 271.63, + "status": "STALE" + }, + { + "id": "ledger", + "latest_log": "ledger-2026-10-16-1446.txt", + "latest_mtime_utc": "2026-10-16T14:47:33Z", + "age_h": 271.77, + "status": "STALE" + }, + { + "id": "null", + "latest_log": "null-2026-10-16-1446.txt", + "latest_mtime_utc": "2026-10-16T14:47:52Z", + "age_h": 271.77, + "status": "STALE" + }, + { + "id": "quill", + "latest_log": "quill-2026-10-16-1446.txt", + "latest_mtime_utc": "2026-10-16T14:47:07Z", + "age_h": 271.78, + "status": "STALE" + }, + { + "id": "sphinx", + "latest_log": "sphinx-2026-10-16-1446.txt", + "latest_mtime_utc": "2026-10-16T14:50:35Z", + "age_h": 271.72, + "status": "STALE" + }, + { + "id": "sol", + "latest_log": "sol-2026-10-16-1446.txt", + "latest_mtime_utc": "2026-10-16T14:49:04Z", + "age_h": 271.75, + "status": "STALE" + }, + { + "id": "spark", + "latest_log": "spark-2026-10-16-1446.txt", + "latest_mtime_utc": "2026-10-16T14:56:18Z", + "age_h": 271.63, + "status": "STALE" + } + ], + "status_counts": { + "STALE": 7 + } +} \ No newline at end of file diff --git a/wizard-work/sol/sol-lane-status-rederived-2026-10-27.md b/wizard-work/sol/sol-lane-status-rederived-2026-10-27.md new file mode 100644 index 0000000..877e1b3 --- /dev/null +++ b/wizard-work/sol/sol-lane-status-rederived-2026-10-27.md @@ -0,0 +1,29 @@ +# Sol Daily-Ledger Lane Status — Redrive — 2026-10-27 (measured) + +Classification measured live from the on-disk mtimes of each primary lane's daily +ledger logs under `/root/.hermes/wizard-outputs/`. Rules (measured stage): +ACTIVE = latest log within 24h; WATCH = 24h-168h; STALE = >168h. + +## Verdict + +- status_counts: **- STALE: 7**. +- No lane is ACTIVE or WATCH. + +## Per-lane table + +| Lane | Latest log | Last written (UTC) | Age (h) | Status | +| --- | --- | --- | --- | --- | +| forge | forge-2026-10-16-1446.txt | 2026-10-16T14:56:18Z | 271.63 | STALE | +| ledger | ledger-2026-10-16-1446.txt | 2026-10-16T14:47:33Z | 271.77 | STALE | +| null | null-2026-10-16-1446.txt | 2026-10-16T14:47:52Z | 271.77 | STALE | +| quill | quill-2026-10-16-1446.txt | 2026-10-16T14:47:07Z | 271.78 | STALE | +| sphinx | sphinx-2026-10-16-1446.txt | 2026-10-16T14:50:35Z | 271.72 | STALE | +| sol | sol-2026-10-16-1446.txt | 2026-10-16T14:49:04Z | 271.75 | STALE | +| spark | spark-2026-10-16-1446.txt | 2026-10-16T14:56:18Z | 271.63 | STALE | + +## Artifact + +- `sol-lane-status-rederived-2026-10-27.json` — machine-readable record (mtime + age measured). +- `check_sol_lane_status_rederived.sh` — the verdict: a single bare shell command; + `bash check_sol_lane_status_rederived.sh` exits 0 iff the committed JSON matches an + independent recompute straight from the filesystem.