sol: re-verify sol-profile file class (ACTIVE 7961/STALE 267/ARTIFACT 133) with CHECK exit 0
This commit is contained in:
1 parent
4ccc642253
commit
809236eb70
2 files changed
+74
No files matched your search
@@ -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)
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user