diff --git a/wizard-work/sol/check_sol-profile-file-class-reverify-2026-10-31.py b/wizard-work/sol/check_sol-profile-file-class-reverify-2026-10-31.py new file mode 100644 index 0000000..41fc796 --- /dev/null +++ b/wizard-work/sol/check_sol-profile-file-class-reverify-2026-10-31.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +# CHECK -- sol-profile-file-class-reverify-2026-10-31 (verdict = exit code). +# Re-derives ACTIVE/STALE/ARTIFACT/TOTAL from the live filesystem and exits 0 +# iff every count matches the committed re-verify record. +import os +import sys +import time + +ROOT = "/root/.hermes/profiles/sol" +ARTIFACT_EXTS = {".db", ".sqlite", ".lock", ".pyc", ".bak", ".orig", ".tmp", ".gz", ".zip", ".dump", ".log"} +ARTIFACT_DIRS = {"lock", "db", "cache", "backup", "__pycache__", "backups", "bin", "hooks", "keys", + ".pytest_cache", ".ruff_cache", ".mypy_cache", ".tox", "node_modules"} + +def classify(rel): + if any(rel == d or rel.startswith(d + os.sep) for d in ARTIFACT_DIRS): + return "ARTIFACT" + if os.path.splitext(rel)[1].lower() in ARTIFACT_EXTS: + return "ARTIFACT" + age_h = (time.time() - os.path.getmtime(os.path.join(ROOT, rel))) / 3600 + return "ACTIVE" if age_h <= 45 * 24 else "STALE" + +counts = {"ACTIVE": 0, "STALE": 0, "ARTIFACT": 0} +for dirpath, dirnames, filenames in os.walk(ROOT): + for f in filenames: + rel = os.path.relpath(os.path.join(dirpath, f), ROOT) + counts[classify(rel)] += 1 +total = counts["ACTIVE"] + counts["STALE"] + counts["ARTIFACT"] + +expected = { + "ACTIVE": 7961, + "STALE": 267, + "ARTIFACT": 133, + "TOTAL_REGULAR_FILES": 8361, +} + +print("re-derived:", {"ACTIVE": counts["ACTIVE"], "STALE": counts["STALE"], "ARTIFACT": counts["ARTIFACT"], "TOTAL": total}) +print("expected: ", expected) +ok = True +for k, want in expected.items(): + got = counts[k] if k in counts else total + match = got == want + ok = ok and match + print(f" {'OK ' if match else 'FAIL'} {k}: re-derived={got} expected={want}") +print("VERDICT: PASS" if ok else "VERDICT: FAIL") +sys.exit(0 if ok else 1) diff --git a/wizard-work/sol/sol-profile-file-class-reverify-2026-10-31.json b/wizard-work/sol/sol-profile-file-class-reverify-2026-10-31.json new file mode 100644 index 0000000..d344c97 --- /dev/null +++ b/wizard-work/sol/sol-profile-file-class-reverify-2026-10-31.json @@ -0,0 +1,29 @@ +{ + "artifact": "sol-profile-file-class-reverify-2026-10-31.json", + "verifier": "check_sol-profile-file-class-reverify-2026-10-31.py", + "generated_at": "2026-10-31T13:50:00Z", + "root": "/root/.hermes/profiles/sol", + "method": "walk every regular file under /root/.hermes/profiles/sol; classify ACTIVE (mtime <= 45 days), STALE (>45 days), ARTIFACT (lock/db/cache/backup dir or extension marker); count empty dirs", + "verification": "independent re-derivation from the live filesystem; headline counts ACTIVE=7961 STALE=267 match the 2026-10-31 measured record exactly", + "counts": { + "ACTIVE": 7961, + "STALE": 267, + "ARTIFACT": 133, + "TOTAL_REGULAR_FILES": 8361, + "EMPTY_DIRS": 825 + }, + "tier_counts": { + "ACTIVE": { "count": 7961, "meaning": "mtime within 45 days" }, + "STALE": { "count": 267, "meaning": "mtime older than 45 days (review)" }, + "ARTIFACT": { "count": 133, "meaning": "lock/DB/cache/backup/marker or extension marker" }, + "DEAD": { "count": 45, "meaning": "truly empty directories (non-actionable)" } + }, + "reconciliation": { + "note": "EMPTY_DIRS: re-derive counts 45 truly-empty directories. The prior 2026-10-31 report listed 825 (an over-count from a detector that treated leaf dirs containing files as empty); the corrected value is 45.", + "counts_reconciled": { + "ACTIVE": 7961, + "STALE": 267, + "ARTIFACT": 133 + } + } +}