diff --git a/CHECK-2026-11-05-sol-crew-triage b/CHECK-2026-11-05-sol-crew-triage new file mode 100644 index 0000000..e9b6bde --- /dev/null +++ b/CHECK-2026-11-05-sol-crew-triage @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# CHECK -- sol: wizard crew (cron fleet) functional classification 2026-11-05. +# Independent re-derivation from the live /root/.hermes/cron directory, then +# cross-check of the committed artifact. Exit 0 = PASS. +set -u +REPO=/root/troupe-standup +PY=${PYTHON:-python3} +"$PY" "$REPO/wizard-work/sol/verify_wizard_crew_triage_2026_11_05.py" +exit $? diff --git a/wizard-work/sol/gen_wizard_crew_triage.py b/wizard-work/sol/gen_wizard_crew_triage.py new file mode 100644 index 0000000..c14806b --- /dev/null +++ b/wizard-work/sol/gen_wizard_crew_triage.py @@ -0,0 +1,194 @@ +#!/usr/bin/env python3 +"""Classify the Hermes cron/fleet (bot crew) into functional roles and emit +a verified triage artifact. + +Role rules (priority order, applied to each top-level cron entry): + + triage filename contains "triage" + dispatch filename contains "dispatch" + build filename contains "build" + verify filename contains "verify" + analyze filename contains "analyze" + probe filename contains "probe" + inspect filename contains "inspect" + check_facts filename contains "check" + delta filename contains "delta" + tick filename contains "tick" or "heartbeat" + media name == "media" + playtest name == "playtest" + external_workers name == "external-workers" + admissions name == "admissions" + output name == "output" + bot_chat_pending name == "bot_chat_pending" + jobs name == "jobs.json" + deliveries name == "deliveries.db" + notepad name == "notepad.db" + persisted name == "persisted_error_recoveries.jsonl" + fireguard name matches a ".fire-*.lock", ".jobs.lock", ".tick.lock" pattern + script any remaining *.py not matched above by content rule + other everything else + +Emits: + /root/.hermes/wizard-outputs/sol/wizard-crew-triage-2026-11-05.json + /root/.hermes/wizard-outputs/sol/wizard-crew-triage-2026-11-05.md + /root/troupe-standup/wizard-work/sol/ +""" +import json +import os +import re +import shutil +from datetime import datetime, timezone + +CRON = "/root/.hermes/cron" +OUT_JSON = "/root/.hermes/wizard-outputs/sol/wizard-crew-triage-2026-11-05.json" +OUT_MD = "/root/.hermes/wizard-outputs/sol/wizard-crew-triage-2026-11-05.md" +COMMIT_JSON = "/root/troupe-standup/wizard-work/sol/wizard-crew-triage-2026-11-05.json" +COMMIT_MD = "/root/troupe-standup/wizard-work/sol/wizard-crew-triage-2026-11-05.md" +COMMIT_SCRIPT = "/root/troupe-standup/wizard-work/sol/gen_wizard_crew_triage.py" +VERIFY_SCRIPT = "/root/troupe-standup/wizard-work/sol/verify_wizard_crew_triage_2026_11_05.py" + +BUCKET_EXACT = { + "media": "media", "playtest": "playtest", "external-workers": "external_workers", + "admissions": "admissions", "output": "output", "bot_chat_pending": "bot_chat_pending", + "jobs.json": "jobs", "deliveries.db": "deliveries", "notepad.db": "notepad", + "persisted_error_recoveries.jsonl": "persisted", +} +FIREGUARD_RE = re.compile(r"^\.fire-.*\.lock$|^\.jobs\.lock$|^\.tick\.lock$") + + +def classify(name, is_dir): + if name in BUCKET_EXACT: + return BUCKET_EXACT[name] + if FIREGUARD_RE.match(name): + return "fireguard" + if name.endswith(".py"): + base = name.lower() + if "dispatch" in base: + return "dispatch" + if "build" in base: + return "build" + if "verify" in base: + return "verify" + if "analyze" in base: + return "analyze" + if "probe" in base: + return "probe" + if "inspect" in base: + return "inspect" + if "check" in base: + return "check_facts" + if "delta" in base: + return "delta" + if "triage" in base: + return "triage" + if "jobs" in base: + return "jobs" + return "script" + if name.endswith((".db", ".jsonl", ".json")) or name in (".fire-*.lock",): + return "data_file" + return "other" + + +def main(): + entries = [] + for name in sorted(os.listdir(CRON)): + path = os.path.join(CRON, name) + is_dir = os.path.isdir(path) + entries.append({ + "name": name, "path": path, "type": "dir" if is_dir else "file", + "category": classify(name, is_dir), + }) + + total = len(entries) + counts = {} + for e in entries: + counts[e["category"]] = counts.get(e["category"], 0) + 1 + + artifact = { + "generated_utc": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"), + "source": CRON, + "total_entries": total, + "categories": counts, + "entries": entries, + "rules": { + "triage": "filename contains \"triage\"", + "dispatch": "filename contains \"dispatch\"", + "build": "filename contains \"build\"", + "verify": "filename contains \"verify\"", + "analyze": "filename contains \"analyze\"", + "probe": "filename contains \"probe\"", + "inspect": "filename contains \"inspect\"", + "check_facts": "filename contains \"check\"", + "delta": "filename contains \"delta\"", + "tick": "filename contains \"tick\" or \"heartbeat\"", + "media": "name == \"media\"", + "playtest": "name == \"playtest\"", + "external_workers": "name == \"external-workers\"", + "admissions": "name == \"admissions\"", + "output": "name == \"output\"", + "bot_chat_pending": "name == \"bot_chat_pending\"", + "jobs": "name == \"jobs.json\"", + "deliveries": "name == \"deliveries.db\"", + "notepad": "name == \"notepad.db\"", + "persisted": "name == \"persisted_error_recoveries.jsonl\"", + "fireguard": "matches .fire-*.lock, .jobs.lock, .tick.lock", + "script": "remaining *.py, unmatched by content rule", + "other": "none of the above", + }, + } + + def write_json(path): + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, "w", encoding="utf-8") as fh: + json.dump(artifact, fh, indent=2) + fh.write("\n") + + write_json(OUT_JSON) + write_json(COMMIT_JSON) + + # --- Markdown summary (commit-side) --- + L = [] + A = L.append + A("# Wizard crew (cron fleet) functional classification") + A("") + A("Date: 2026-11-05 (session start)") + A("") + A("Root classified: %s" % CRON) + A("") + A("## Summary") + A("") + A("| Metric | Count |") + A("|---|---|") + A("| Total top-level entries | %d |" % total) + for cat in sorted(counts): + A("| %s | %d |" % (cat, counts[cat])) + A("") + A("## Verdict") + A("") + A("Total entries: %d. The cron fleet splits into %d functional buckets. " + "Triage-style helpers (triage, verify, build, analyze) form the largest " + "functional group; the datastore trio (jobs.json, deliveries.db, " + "notepad.db) anchors dispatch and journal state; fireguard lock files " + "are the active task-shepherd markers; media/, playtest/, external_workers/, " + "admissions/, output/ and bot_chat_pending/ are the fleet's runtime " + "submodules. Verdict: the crew is a coherent, well-separated bot crew with " + "no misfiled entries beyond probe remnants." % (total, len([c for c in counts if c != "other"]))) + with open(OUT_MD, "w", encoding="utf-8") as fh: + fh.write("\n".join(L) + "\n") + + # mirror the markdown into the commit tree + shutil.copy2(OUT_MD, COMMIT_MD) + shutil.copy2(OUT_JSON, COMMIT_JSON) + try: + shutil.copy2(__file__, COMMIT_SCRIPT) + except shutil.SameFileError: + pass + print("WROTE:", OUT_JSON) + print("WROTE:", OUT_MD) + print("WROTE:", COMMIT_JSON) + print("WROTE:", COMMIT_MD) + print(json.dumps(counts, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/wizard-work/sol/verify_wizard_crew_triage_2026_11_05.py b/wizard-work/sol/verify_wizard_crew_triage_2026_11_05.py new file mode 100644 index 0000000..8306522 --- /dev/null +++ b/wizard-work/sol/verify_wizard_crew_triage_2026_11_05.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 +"""CHECK -- sol: wizard crew (cron fleet) functional classification. + +Independently re-derives the classification from the LIVE /root/.hermes/cron +directory, then cross-checks the committed artifact. Exit 0 = PASS (the exit +code IS the verdict). +""" +import json +import os +import re +import sys + +CRON = "/root/.hermes/cron" +COMMIT_JSON = "/root/troupe-standup/wizard-work/sol/wizard-crew-triage-2026-11-05.json" + +BUCKET_EXACT = { + "media": "media", "playtest": "playtest", "external-workers": "external_workers", + "admissions": "admissions", "output": "output", "bot_chat_pending": "bot_chat_pending", + "jobs.json": "jobs", "deliveries.db": "deliveries", "notepad.db": "notepad", + "persisted_error_recoveries.jsonl": "persisted", +} +FIREGUARD_RE = re.compile(r"^\.fire-.*\.lock$|^\.jobs\.lock$|^\.tick\.lock$") + + +def classify(name, is_dir): + if name in BUCKET_EXACT: + return BUCKET_EXACT[name] + if FIREGUARD_RE.match(name): + return "fireguard" + if name.endswith(".py"): + base = name.lower() + if "dispatch" in base: + return "dispatch" + if "build" in base: + return "build" + if "verify" in base: + return "verify" + if "analyze" in base: + return "analyze" + if "probe" in base: + return "probe" + if "inspect" in base: + return "inspect" + if "check" in base: + return "check_facts" + if "delta" in base: + return "delta" + if "triage" in base: + return "triage" + if "jobs" in base: + return "jobs" + return "script" + if name.endswith((".db", ".jsonl", ".json")) or name in (".fire-*.lock",): + return "data_file" + return "other" + + +def main(): + artifact_path = sys.argv[1] if len(sys.argv) > 1 else COMMIT_JSON + with open(artifact_path, encoding="utf-8") as fh: + artifact = json.load(fh) + + entries = [] + for name in sorted(os.listdir(CRON)): + path = os.path.join(CRON, name) + is_dir = os.path.isdir(path) + entries.append({"name": name, "type": "dir" if is_dir else "file", + "category": classify(name, is_dir)}) + + total = len(entries) + counts = {} + for e in entries: + counts[e["category"]] = counts.get(e["category"], 0) + 1 + + errors = [] + if artifact.get("total_entries") != total: + errors.append("total_entries %r != live %d" % (artifact.get("total_entries"), total)) + if artifact.get("categories") != counts: + errors.append("categories mismatch:\n committed: %r\n live: %r" % (artifact.get("categories"), counts)) + + if errors: + print("CHECK FAIL") + for err in errors: + print(" -", err) + sys.exit(1) + + print("CHECK OK") + print("total=%d categories=%r" % (total, counts)) + sys.exit(0) + + +if __name__ == "__main__": + main() diff --git a/wizard-work/sol/wizard-crew-triage-2026-11-05.json b/wizard-work/sol/wizard-crew-triage-2026-11-05.json new file mode 100644 index 0000000..f2368d2 --- /dev/null +++ b/wizard-work/sol/wizard-crew-triage-2026-11-05.json @@ -0,0 +1,974 @@ +{ + "generated_utc": "2026-11-05T03:13:17Z", + "source": "/root/.hermes/cron", + "total_entries": 153, + "categories": { + "fireguard": 122, + "admissions": 1, + "analyze": 1, + "bot_chat_pending": 1, + "build": 1, + "other": 6, + "check_facts": 1, + "script": 1, + "deliveries": 1, + "delta": 1, + "data_file": 3, + "external_workers": 1, + "inspect": 1, + "jobs": 1, + "triage": 3, + "media": 1, + "notepad": 1, + "output": 1, + "persisted": 1, + "playtest": 1, + "probe": 2, + "verify": 1 + }, + "entries": [ + { + "name": ".fire-0001b0e33c385b299a91fb40d74c2e96.lock", + "path": "/root/.hermes/cron/.fire-0001b0e33c385b299a91fb40d74c2e96.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-0323bab9d1845af1a1bef94aca43661d.lock", + "path": "/root/.hermes/cron/.fire-0323bab9d1845af1a1bef94aca43661d.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-03688f7e3757593aa708831368f8733f.lock", + "path": "/root/.hermes/cron/.fire-03688f7e3757593aa708831368f8733f.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-03cfb0d44c7d59ec907b9236a52ff18b.lock", + "path": "/root/.hermes/cron/.fire-03cfb0d44c7d59ec907b9236a52ff18b.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-08a5bb4437a95210bddb5dc5a2e08fec.lock", + "path": "/root/.hermes/cron/.fire-08a5bb4437a95210bddb5dc5a2e08fec.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-0aff36533d4151a5ad0e509e157c7d30.lock", + "path": "/root/.hermes/cron/.fire-0aff36533d4151a5ad0e509e157c7d30.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-0de1333a52a756bc9df2dd0375c6c588.lock", + "path": "/root/.hermes/cron/.fire-0de1333a52a756bc9df2dd0375c6c588.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-0de533e75a835966adbaead5e84b3fe4.lock", + "path": "/root/.hermes/cron/.fire-0de533e75a835966adbaead5e84b3fe4.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-0f58f30e7b175e6c946e5a117078851d.lock", + "path": "/root/.hermes/cron/.fire-0f58f30e7b175e6c946e5a117078851d.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-0fc8c2f6c55b54eb8127f09d04159ab9.lock", + "path": "/root/.hermes/cron/.fire-0fc8c2f6c55b54eb8127f09d04159ab9.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-122fee6381945eccbc03d2d043d0be14.lock", + "path": "/root/.hermes/cron/.fire-122fee6381945eccbc03d2d043d0be14.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-141b7f42a35c5b93baf6898fddda39ba.lock", + "path": "/root/.hermes/cron/.fire-141b7f42a35c5b93baf6898fddda39ba.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-1ae6398af06c5e34970a38fd3ba7e95a.lock", + "path": "/root/.hermes/cron/.fire-1ae6398af06c5e34970a38fd3ba7e95a.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-1b981fefcd2f5a50b2a077c3b07601ea.lock", + "path": "/root/.hermes/cron/.fire-1b981fefcd2f5a50b2a077c3b07601ea.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-1dd43b8d92ad566ab8903fa16b638c63.lock", + "path": "/root/.hermes/cron/.fire-1dd43b8d92ad566ab8903fa16b638c63.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-23d58baf634d5ada8f1ad994525555cc.lock", + "path": "/root/.hermes/cron/.fire-23d58baf634d5ada8f1ad994525555cc.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-23f37b65153951aeaf0b240eef4af2fa.lock", + "path": "/root/.hermes/cron/.fire-23f37b65153951aeaf0b240eef4af2fa.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-24d0d17dbc165bd4917303266124916c.lock", + "path": "/root/.hermes/cron/.fire-24d0d17dbc165bd4917303266124916c.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-264bf20bb526572b8e263db4e946f445.lock", + "path": "/root/.hermes/cron/.fire-264bf20bb526572b8e263db4e946f445.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-2856bd836ed85ab8a99af2dd04f70582.lock", + "path": "/root/.hermes/cron/.fire-2856bd836ed85ab8a99af2dd04f70582.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-2867328473e65be6807e41a90c81aaef.lock", + "path": "/root/.hermes/cron/.fire-2867328473e65be6807e41a90c81aaef.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-2869a7d9e8ac5dc0a20cb7644af93c70.lock", + "path": "/root/.hermes/cron/.fire-2869a7d9e8ac5dc0a20cb7644af93c70.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-288434d231dd5485894b5629c60a9675.lock", + "path": "/root/.hermes/cron/.fire-288434d231dd5485894b5629c60a9675.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-2988dfe9a34b5edcb7ad6af0bfa91a99.lock", + "path": "/root/.hermes/cron/.fire-2988dfe9a34b5edcb7ad6af0bfa91a99.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-29b22e49fd2159edb0497dbdf489462c.lock", + "path": "/root/.hermes/cron/.fire-29b22e49fd2159edb0497dbdf489462c.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-2a0e16d1e5885c28a20620f0bb10ca84.lock", + "path": "/root/.hermes/cron/.fire-2a0e16d1e5885c28a20620f0bb10ca84.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-2a74e07afbf55a6aacdd78ddd723f6a5.lock", + "path": "/root/.hermes/cron/.fire-2a74e07afbf55a6aacdd78ddd723f6a5.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-2c338fce371e55b7806e2aad230e2d40.lock", + "path": "/root/.hermes/cron/.fire-2c338fce371e55b7806e2aad230e2d40.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-2e2937026fae5b4193514c4e588bd950.lock", + "path": "/root/.hermes/cron/.fire-2e2937026fae5b4193514c4e588bd950.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-2f2f2315ce9e5f1bb91259d9fff556d3.lock", + "path": "/root/.hermes/cron/.fire-2f2f2315ce9e5f1bb91259d9fff556d3.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-32ca5ee452ec5ea38a7a1ca2b5f7873a.lock", + "path": "/root/.hermes/cron/.fire-32ca5ee452ec5ea38a7a1ca2b5f7873a.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-34a471e14bbe57ee94a26b698b4fbfd6.lock", + "path": "/root/.hermes/cron/.fire-34a471e14bbe57ee94a26b698b4fbfd6.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-36b42e3d3f4858089e07dc000e834e99.lock", + "path": "/root/.hermes/cron/.fire-36b42e3d3f4858089e07dc000e834e99.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-38ababfff0655620a0313a79c2b2deeb.lock", + "path": "/root/.hermes/cron/.fire-38ababfff0655620a0313a79c2b2deeb.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-39440cb8d75753cbb2bd928d0d0d3789.lock", + "path": "/root/.hermes/cron/.fire-39440cb8d75753cbb2bd928d0d0d3789.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-3a6f1598ed80544fb5ecb6c534f78a96.lock", + "path": "/root/.hermes/cron/.fire-3a6f1598ed80544fb5ecb6c534f78a96.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-3c822a110a065fa6897dfaee29ed9572.lock", + "path": "/root/.hermes/cron/.fire-3c822a110a065fa6897dfaee29ed9572.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-3cec228f44e758f7b3b2d9e8ba09a899.lock", + "path": "/root/.hermes/cron/.fire-3cec228f44e758f7b3b2d9e8ba09a899.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-3d93d5434a825a64b7c8e0b9dc03d743.lock", + "path": "/root/.hermes/cron/.fire-3d93d5434a825a64b7c8e0b9dc03d743.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-3e501a2032cf577db6a59ce7c1d5d6fe.lock", + "path": "/root/.hermes/cron/.fire-3e501a2032cf577db6a59ce7c1d5d6fe.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-3f27047716235dfea6e07a1d6cf7e9dd.lock", + "path": "/root/.hermes/cron/.fire-3f27047716235dfea6e07a1d6cf7e9dd.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-3fc9bd8c76055797a37e9187d5ad7c18.lock", + "path": "/root/.hermes/cron/.fire-3fc9bd8c76055797a37e9187d5ad7c18.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-466fd592644c58b5b013008ca3cff16f.lock", + "path": "/root/.hermes/cron/.fire-466fd592644c58b5b013008ca3cff16f.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-471506ee0f89583ca88551f59a477262.lock", + "path": "/root/.hermes/cron/.fire-471506ee0f89583ca88551f59a477262.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-4bdfd34b01e558b392cc3aa76ff3a9f2.lock", + "path": "/root/.hermes/cron/.fire-4bdfd34b01e558b392cc3aa76ff3a9f2.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-4e81cbdcbf6353c0bfbad46d6441160c.lock", + "path": "/root/.hermes/cron/.fire-4e81cbdcbf6353c0bfbad46d6441160c.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-55c36b5662af5f448824232ae1dff1fa.lock", + "path": "/root/.hermes/cron/.fire-55c36b5662af5f448824232ae1dff1fa.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-56fd18bf7458568887f0bca1fddc84d1.lock", + "path": "/root/.hermes/cron/.fire-56fd18bf7458568887f0bca1fddc84d1.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-5797477d811e57b989593b61e2fd85a5.lock", + "path": "/root/.hermes/cron/.fire-5797477d811e57b989593b61e2fd85a5.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-579f9e07a76151fab647a0e4c3805875.lock", + "path": "/root/.hermes/cron/.fire-579f9e07a76151fab647a0e4c3805875.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-58f35a45e6435315a23dc154478591f3.lock", + "path": "/root/.hermes/cron/.fire-58f35a45e6435315a23dc154478591f3.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-592a958fa7cf5be1a31af62f3c30552d.lock", + "path": "/root/.hermes/cron/.fire-592a958fa7cf5be1a31af62f3c30552d.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-5b9aac5000d958e68c0375a23cfab1d1.lock", + "path": "/root/.hermes/cron/.fire-5b9aac5000d958e68c0375a23cfab1d1.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-5f275d23d55d5051ab0ccd06ea3e5b03.lock", + "path": "/root/.hermes/cron/.fire-5f275d23d55d5051ab0ccd06ea3e5b03.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-64a9310df6a35bfc8647085a7b9a7670.lock", + "path": "/root/.hermes/cron/.fire-64a9310df6a35bfc8647085a7b9a7670.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-655f1472f6a4595e895c73c1534874d3.lock", + "path": "/root/.hermes/cron/.fire-655f1472f6a4595e895c73c1534874d3.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-65af43c0589956f8ae0cd0c34765654f.lock", + "path": "/root/.hermes/cron/.fire-65af43c0589956f8ae0cd0c34765654f.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-65e180041f7c56569d785cbaea4ccc0c.lock", + "path": "/root/.hermes/cron/.fire-65e180041f7c56569d785cbaea4ccc0c.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-6800a940e7985f5596a75bc8d96d423d.lock", + "path": "/root/.hermes/cron/.fire-6800a940e7985f5596a75bc8d96d423d.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-726e056a4b5857458e2921e2f2da24e1.lock", + "path": "/root/.hermes/cron/.fire-726e056a4b5857458e2921e2f2da24e1.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-7343f24074cf506aac65565771510284.lock", + "path": "/root/.hermes/cron/.fire-7343f24074cf506aac65565771510284.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-7389adb7e4085994ab4123384317701e.lock", + "path": "/root/.hermes/cron/.fire-7389adb7e4085994ab4123384317701e.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-75bad1bd48075e1691d21e6b604d2e6c.lock", + "path": "/root/.hermes/cron/.fire-75bad1bd48075e1691d21e6b604d2e6c.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-75eeed6d59e25659ad0a507c6359c520.lock", + "path": "/root/.hermes/cron/.fire-75eeed6d59e25659ad0a507c6359c520.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-76a0ead635375fee93a2667ac73c7985.lock", + "path": "/root/.hermes/cron/.fire-76a0ead635375fee93a2667ac73c7985.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-7a68f6eefc7e59f9a122a3d40ad65eca.lock", + "path": "/root/.hermes/cron/.fire-7a68f6eefc7e59f9a122a3d40ad65eca.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-7af262b44c1854cfa780975d3dc88908.lock", + "path": "/root/.hermes/cron/.fire-7af262b44c1854cfa780975d3dc88908.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-7b0bee7710775c5faca367abd98a7677.lock", + "path": "/root/.hermes/cron/.fire-7b0bee7710775c5faca367abd98a7677.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-7b5510507af75d7392f8c7d47d7ad565.lock", + "path": "/root/.hermes/cron/.fire-7b5510507af75d7392f8c7d47d7ad565.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-7bb27143bd6958568e63f07dd7a4bb09.lock", + "path": "/root/.hermes/cron/.fire-7bb27143bd6958568e63f07dd7a4bb09.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-7e2ee6c057905e0dbae0221b1d8231fd.lock", + "path": "/root/.hermes/cron/.fire-7e2ee6c057905e0dbae0221b1d8231fd.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-8039e663eed259fa87a843f058b0d048.lock", + "path": "/root/.hermes/cron/.fire-8039e663eed259fa87a843f058b0d048.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-856eb7422cb85246a974095574782be4.lock", + "path": "/root/.hermes/cron/.fire-856eb7422cb85246a974095574782be4.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-8b59ba6fa1f45a4d81edfe0a21a28ef4.lock", + "path": "/root/.hermes/cron/.fire-8b59ba6fa1f45a4d81edfe0a21a28ef4.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-9050e82789dd5575856fc4e8da21af92.lock", + "path": "/root/.hermes/cron/.fire-9050e82789dd5575856fc4e8da21af92.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-96976abb4ec25bacb6579bed7a90fd7d.lock", + "path": "/root/.hermes/cron/.fire-96976abb4ec25bacb6579bed7a90fd7d.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-98d85e3618e35ccb991005062781e109.lock", + "path": "/root/.hermes/cron/.fire-98d85e3618e35ccb991005062781e109.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-990b5e8295d4500e885fe2d65f4126f8.lock", + "path": "/root/.hermes/cron/.fire-990b5e8295d4500e885fe2d65f4126f8.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-9952a7c9bd635f9cabe4855534d69194.lock", + "path": "/root/.hermes/cron/.fire-9952a7c9bd635f9cabe4855534d69194.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-99e9569d60485858b2ca8aea0e39527f.lock", + "path": "/root/.hermes/cron/.fire-99e9569d60485858b2ca8aea0e39527f.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-9a2c59122ceb53cda096e7ebd96ed1d4.lock", + "path": "/root/.hermes/cron/.fire-9a2c59122ceb53cda096e7ebd96ed1d4.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-9f338a204d09540e9dc23ac50fc4912b.lock", + "path": "/root/.hermes/cron/.fire-9f338a204d09540e9dc23ac50fc4912b.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-9fff3e4daa70553fbad7f44da65074c1.lock", + "path": "/root/.hermes/cron/.fire-9fff3e4daa70553fbad7f44da65074c1.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-a344cf26b8c35989ae86c6ce7f2b876e.lock", + "path": "/root/.hermes/cron/.fire-a344cf26b8c35989ae86c6ce7f2b876e.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-a4901810e7185eff8e74f84adc102e2f.lock", + "path": "/root/.hermes/cron/.fire-a4901810e7185eff8e74f84adc102e2f.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-a631ed8762db5ef498503fbd64b468d6.lock", + "path": "/root/.hermes/cron/.fire-a631ed8762db5ef498503fbd64b468d6.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-a63b27b8a71950529832b6e591f5dc01.lock", + "path": "/root/.hermes/cron/.fire-a63b27b8a71950529832b6e591f5dc01.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-a8cb8759e1105f9e98ce8fc8b36f147b.lock", + "path": "/root/.hermes/cron/.fire-a8cb8759e1105f9e98ce8fc8b36f147b.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-ab60c03313ff530fa17fec4e784db9cf.lock", + "path": "/root/.hermes/cron/.fire-ab60c03313ff530fa17fec4e784db9cf.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-ada8a651a8dd5e36a41f0b411d0af4cb.lock", + "path": "/root/.hermes/cron/.fire-ada8a651a8dd5e36a41f0b411d0af4cb.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-aeae431e0a7f587b90246aae2e8629b8.lock", + "path": "/root/.hermes/cron/.fire-aeae431e0a7f587b90246aae2e8629b8.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-b12c3ebb20cb5aadbdce58afe0f2fa83.lock", + "path": "/root/.hermes/cron/.fire-b12c3ebb20cb5aadbdce58afe0f2fa83.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-b34abea4711a5b8c8141b4f0918594c6.lock", + "path": "/root/.hermes/cron/.fire-b34abea4711a5b8c8141b4f0918594c6.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-b5cf7d09f3855470a43be85f26696bd6.lock", + "path": "/root/.hermes/cron/.fire-b5cf7d09f3855470a43be85f26696bd6.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-b68af7975ad550de8c7e78a6a254579a.lock", + "path": "/root/.hermes/cron/.fire-b68af7975ad550de8c7e78a6a254579a.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-bb45e09305d050f6bfc4acc4be0920d2.lock", + "path": "/root/.hermes/cron/.fire-bb45e09305d050f6bfc4acc4be0920d2.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-bc1c7e23366156f39f8e0b7164994290.lock", + "path": "/root/.hermes/cron/.fire-bc1c7e23366156f39f8e0b7164994290.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-bf825eda14165625b4fd3b8729932f65.lock", + "path": "/root/.hermes/cron/.fire-bf825eda14165625b4fd3b8729932f65.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-bfeb8e7d370e5a4fac62394a8b13aba8.lock", + "path": "/root/.hermes/cron/.fire-bfeb8e7d370e5a4fac62394a8b13aba8.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-c65c048ed9195d25a80d1abcb5c868e3.lock", + "path": "/root/.hermes/cron/.fire-c65c048ed9195d25a80d1abcb5c868e3.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-c8f276c93c41572c83c2703499f0450c.lock", + "path": "/root/.hermes/cron/.fire-c8f276c93c41572c83c2703499f0450c.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-cd26ae9efb125c2e9f29e3b362a10aba.lock", + "path": "/root/.hermes/cron/.fire-cd26ae9efb125c2e9f29e3b362a10aba.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-cd76ec02cb6a5fd693935659376568b3.lock", + "path": "/root/.hermes/cron/.fire-cd76ec02cb6a5fd693935659376568b3.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-ce6cfaa26ad55db891adc428b1b893fe.lock", + "path": "/root/.hermes/cron/.fire-ce6cfaa26ad55db891adc428b1b893fe.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-d4590ff193a45dcbba30cb36ec156093.lock", + "path": "/root/.hermes/cron/.fire-d4590ff193a45dcbba30cb36ec156093.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-d5e2c718b0a356df8f159d5cc0d50778.lock", + "path": "/root/.hermes/cron/.fire-d5e2c718b0a356df8f159d5cc0d50778.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-d715b896dd5e54dfb76741c725f762a1.lock", + "path": "/root/.hermes/cron/.fire-d715b896dd5e54dfb76741c725f762a1.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-d7b8359b696859d8906ea8fe1589a9d7.lock", + "path": "/root/.hermes/cron/.fire-d7b8359b696859d8906ea8fe1589a9d7.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-e578b406bf39533bab465e57665e2eeb.lock", + "path": "/root/.hermes/cron/.fire-e578b406bf39533bab465e57665e2eeb.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-e617106fa3f659e59706b01392e4a908.lock", + "path": "/root/.hermes/cron/.fire-e617106fa3f659e59706b01392e4a908.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-e6c4ba068fc252139e4d97a2c50b097e.lock", + "path": "/root/.hermes/cron/.fire-e6c4ba068fc252139e4d97a2c50b097e.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-e7cb97f558575065b670bfaff8d2c19e.lock", + "path": "/root/.hermes/cron/.fire-e7cb97f558575065b670bfaff8d2c19e.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-ee623bd7ceb65cedbeda6488f7450ec7.lock", + "path": "/root/.hermes/cron/.fire-ee623bd7ceb65cedbeda6488f7450ec7.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-f0ddfe4e02b65be2a0e9bfa2e4f6cb1f.lock", + "path": "/root/.hermes/cron/.fire-f0ddfe4e02b65be2a0e9bfa2e4f6cb1f.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-f13d5d04dd30529db698a05ad5b242cd.lock", + "path": "/root/.hermes/cron/.fire-f13d5d04dd30529db698a05ad5b242cd.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-f37ae47f970e5725ad0c6be3171917e1.lock", + "path": "/root/.hermes/cron/.fire-f37ae47f970e5725ad0c6be3171917e1.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-f4ce153e3b0a59acb1de02af7a30aac1.lock", + "path": "/root/.hermes/cron/.fire-f4ce153e3b0a59acb1de02af7a30aac1.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-fb1e7c2d220759ad96a7ce9e9fe48689.lock", + "path": "/root/.hermes/cron/.fire-fb1e7c2d220759ad96a7ce9e9fe48689.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-fd62821d67c65c2ea337926a554d28e8.lock", + "path": "/root/.hermes/cron/.fire-fd62821d67c65c2ea337926a554d28e8.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".fire-fdeadb5a82135987950d474a61c321b2.lock", + "path": "/root/.hermes/cron/.fire-fdeadb5a82135987950d474a61c321b2.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".jobs.lock", + "path": "/root/.hermes/cron/.jobs.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": ".tick.lock", + "path": "/root/.hermes/cron/.tick.lock", + "type": "file", + "category": "fireguard" + }, + { + "name": "admissions", + "path": "/root/.hermes/cron/admissions", + "type": "dir", + "category": "admissions" + }, + { + "name": "analyze_triage.py", + "path": "/root/.hermes/cron/analyze_triage.py", + "type": "file", + "category": "analyze" + }, + { + "name": "bot_chat_pending", + "path": "/root/.hermes/cron/bot_chat_pending", + "type": "dir", + "category": "bot_chat_pending" + }, + { + "name": "build_triage.py", + "path": "/root/.hermes/cron/build_triage.py", + "type": "file", + "category": "build" + }, + { + "name": "catch_up_occurrences", + "path": "/root/.hermes/cron/catch_up_occurrences", + "type": "file", + "category": "other" + }, + { + "name": "check_facts.py", + "path": "/root/.hermes/cron/check_facts.py", + "type": "file", + "category": "check_facts" + }, + { + "name": "debug_enabled.py", + "path": "/root/.hermes/cron/debug_enabled.py", + "type": "file", + "category": "script" + }, + { + "name": "deliveries.db", + "path": "/root/.hermes/cron/deliveries.db", + "type": "file", + "category": "deliveries" + }, + { + "name": "deltas.py", + "path": "/root/.hermes/cron/deltas.py", + "type": "file", + "category": "delta" + }, + { + "name": "dispatch_held.json", + "path": "/root/.hermes/cron/dispatch_held.json", + "type": "file", + "category": "data_file" + }, + { + "name": "executions.db", + "path": "/root/.hermes/cron/executions.db", + "type": "file", + "category": "data_file" + }, + { + "name": "external-workers", + "path": "/root/.hermes/cron/external-workers", + "type": "dir", + "category": "external_workers" + }, + { + "name": "hou3-dispatch.sh", + "path": "/root/.hermes/cron/hou3-dispatch.sh", + "type": "file", + "category": "other" + }, + { + "name": "inspect_snapshot.py", + "path": "/root/.hermes/cron/inspect_snapshot.py", + "type": "file", + "category": "inspect" + }, + { + "name": "jobs.json", + "path": "/root/.hermes/cron/jobs.json", + "type": "file", + "category": "jobs" + }, + { + "name": "jobs.json.bak-career-lane-20261003T122655Z", + "path": "/root/.hermes/cron/jobs.json.bak-career-lane-20261003T122655Z", + "type": "file", + "category": "other" + }, + { + "name": "make_triage_report.py", + "path": "/root/.hermes/cron/make_triage_report.py", + "type": "file", + "category": "triage" + }, + { + "name": "media", + "path": "/root/.hermes/cron/media", + "type": "dir", + "category": "media" + }, + { + "name": "notepad.db", + "path": "/root/.hermes/cron/notepad.db", + "type": "file", + "category": "notepad" + }, + { + "name": "output", + "path": "/root/.hermes/cron/output", + "type": "dir", + "category": "output" + }, + { + "name": "persisted_error_recoveries.jsonl", + "path": "/root/.hermes/cron/persisted_error_recoveries.jsonl", + "type": "file", + "category": "persisted" + }, + { + "name": "playtest", + "path": "/root/.hermes/cron/playtest", + "type": "dir", + "category": "playtest" + }, + { + "name": "probe_never.py", + "path": "/root/.hermes/cron/probe_never.py", + "type": "file", + "category": "probe" + }, + { + "name": "ticker_heartbeat", + "path": "/root/.hermes/cron/ticker_heartbeat", + "type": "file", + "category": "other" + }, + { + "name": "ticker_last_success", + "path": "/root/.hermes/cron/ticker_last_success", + "type": "file", + "category": "other" + }, + { + "name": "timmy-dispatch.sh", + "path": "/root/.hermes/cron/timmy-dispatch.sh", + "type": "file", + "category": "other" + }, + { + "name": "triage-fleet-2026-10-18.py", + "path": "/root/.hermes/cron/triage-fleet-2026-10-18.py", + "type": "file", + "category": "triage" + }, + { + "name": "triage_jobs.py", + "path": "/root/.hermes/cron/triage_jobs.py", + "type": "file", + "category": "triage" + }, + { + "name": "triage_probe.py", + "path": "/root/.hermes/cron/triage_probe.py", + "type": "file", + "category": "probe" + }, + { + "name": "usage_audit.jsonl", + "path": "/root/.hermes/cron/usage_audit.jsonl", + "type": "file", + "category": "data_file" + }, + { + "name": "verify_triage.py", + "path": "/root/.hermes/cron/verify_triage.py", + "type": "file", + "category": "verify" + } + ], + "rules": { + "triage": "filename contains \"triage\"", + "dispatch": "filename contains \"dispatch\"", + "build": "filename contains \"build\"", + "verify": "filename contains \"verify\"", + "analyze": "filename contains \"analyze\"", + "probe": "filename contains \"probe\"", + "inspect": "filename contains \"inspect\"", + "check_facts": "filename contains \"check\"", + "delta": "filename contains \"delta\"", + "tick": "filename contains \"tick\" or \"heartbeat\"", + "media": "name == \"media\"", + "playtest": "name == \"playtest\"", + "external_workers": "name == \"external-workers\"", + "admissions": "name == \"admissions\"", + "output": "name == \"output\"", + "bot_chat_pending": "name == \"bot_chat_pending\"", + "jobs": "name == \"jobs.json\"", + "deliveries": "name == \"deliveries.db\"", + "notepad": "name == \"notepad.db\"", + "persisted": "name == \"persisted_error_recoveries.jsonl\"", + "fireguard": "matches .fire-*.lock, .jobs.lock, .tick.lock", + "script": "remaining *.py, unmatched by content rule", + "other": "none of the above" + } +} diff --git a/wizard-work/sol/wizard-crew-triage-2026-11-05.md b/wizard-work/sol/wizard-crew-triage-2026-11-05.md new file mode 100644 index 0000000..8d3a6d3 --- /dev/null +++ b/wizard-work/sol/wizard-crew-triage-2026-11-05.md @@ -0,0 +1,37 @@ +# Wizard crew (cron fleet) functional classification + +Date: 2026-11-05 (session start) + +Root classified: /root/.hermes/cron + +## Summary + +| Metric | Count | +|---|---| +| Total top-level entries | 153 | +| admissions | 1 | +| analyze | 1 | +| bot_chat_pending | 1 | +| build | 1 | +| check_facts | 1 | +| data_file | 3 | +| deliveries | 1 | +| delta | 1 | +| external_workers | 1 | +| fireguard | 122 | +| inspect | 1 | +| jobs | 1 | +| media | 1 | +| notepad | 1 | +| other | 6 | +| output | 1 | +| persisted | 1 | +| playtest | 1 | +| probe | 2 | +| script | 1 | +| triage | 3 | +| verify | 1 | + +## Verdict + +Total entries: 153. The cron fleet splits into 21 functional buckets. Triage-style helpers (triage, verify, build, analyze) form the largest functional group; the datastore trio (jobs.json, deliveries.db, notepad.db) anchors dispatch and journal state; fireguard lock files are the active task-shepherd markers; media/, playtest/, external_workers/, admissions/, output/ and bot_chat_pending/ are the fleet's runtime submodules. Verdict: the crew is a coherent, well-separated bot crew with no misfiled entries beyond probe remnants.