65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
"""Verify the sol: Hermes local-LLM free-tier triage digest.
|
|
|
|
Exit 0 iff:
|
|
- wizard-work/sol/triage.json parses, holds 15 items, and the bucket
|
|
distribution is HOT=3 / FOUNDATIONAL=10 / NOISE=2.
|
|
- every item has bucket, verdict, evidence and url.
|
|
- wizard-work/sol/triage.md exists and is non-empty.
|
|
"""
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
HERE = os.path.dirname(os.path.abspath(__file__))
|
|
JSON_PATH = os.path.join(HERE, "triage.json")
|
|
MD_PATH = os.path.join(HERE, "triage.md")
|
|
EXPECTED_BUCKETS = {"HOT": 3, "FOUNDATIONAL": 10, "NOISE": 2}
|
|
|
|
|
|
def main():
|
|
errors = []
|
|
try:
|
|
with open(JSON_PATH, "r", encoding="utf-8") as fh:
|
|
data = json.load(fh)
|
|
except Exception as exc: # noqa: BLE001
|
|
print("FAIL: cannot load %s: %s" % (JSON_PATH, exc))
|
|
return 1
|
|
|
|
if data.get("total") != 15 or len(data.get("items", [])) != 15:
|
|
errors.append(
|
|
"total/items mismatch: %s / %s"
|
|
% (data.get("total"), len(data.get("items", [])))
|
|
)
|
|
|
|
buckets = {}
|
|
for item in data.get("items", []):
|
|
b = item.get("bucket")
|
|
buckets[b] = buckets.get(b, 0) + 1
|
|
for key in ("bucket", "verdict", "evidence", "url"):
|
|
if not item.get(key):
|
|
errors.append("item %s missing %s" % (item.get("index"), key))
|
|
|
|
if buckets != EXPECTED_BUCKETS:
|
|
errors.append("bucket distribution mismatch: %s" % buckets)
|
|
|
|
if not os.path.isfile(MD_PATH) or os.path.getsize(MD_PATH) == 0:
|
|
errors.append("triage.md missing or empty")
|
|
|
|
if errors:
|
|
print("FAIL:")
|
|
for err in errors:
|
|
print(" -", err)
|
|
return 1
|
|
|
|
print(
|
|
"OK: triage digest verified "
|
|
"(15 items, %d HOT / %d FOUNDATIONAL / %d NOISE)."
|
|
% (EXPECTED_BUCKETS["HOT"], EXPECTED_BUCKETS["FOUNDATIONAL"], EXPECTED_BUCKETS["NOISE"])
|
|
)
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|