sol: sol-profile directory triage artifact (2026-10-28)
This commit is contained in:
1 parent
5b0b2e4ef8
commit
7e02b24143
3 files changed
+654
No files matched your search
@@ -0,0 +1,132 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Verify the sol-profile triage artifact against real disk state.
|
||||
|
||||
Recomputes the classification from the active profile directory
|
||||
/root/.hermes/profiles/sol/ and diffs it against the recorded artifact.
|
||||
Exit code 0 = artifact matches disk. Nonzero = mismatch.
|
||||
|
||||
Rules (must mirror the generator's EXACT map / ordering):
|
||||
identity: .env, .env.bak-20261014T165715Z
|
||||
soul: SOUL.md
|
||||
config: .env.lock, config.yaml, config.yaml.bak-20261014T165715Z
|
||||
state_db: state.db, state.db-shm, state.db-wal,
|
||||
state.db.auto-maintenance.lock, state.db.fts_rebuild.lock,
|
||||
state.db.quarantine.lock, auth.json, auth.lock,
|
||||
.skills_prompt_snapshot.json, models_dev_cache.json,
|
||||
models_dev_cache.etag
|
||||
cache: cache, audio_cache, image_cache, context_length_cache.yaml
|
||||
sessions: sessions
|
||||
skills: skills
|
||||
plugins: plugins, plugin-update-checks
|
||||
logs: logs
|
||||
backups: backups
|
||||
vault: vault
|
||||
extension_dir: any other directory
|
||||
script: name ends with .py
|
||||
config_data: name ends with .yaml or .json
|
||||
other: none of the above
|
||||
"""
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
PROFILE = "/root/.hermes/profiles/sol"
|
||||
ARTIFACT = "/root/.hermes/wizard-outputs/sol/sol-profile-triage-2026-10-28.json"
|
||||
|
||||
EXACT = {
|
||||
"identity": {".env", ".env.bak-20261014T165715Z"},
|
||||
"soul": {"SOUL.md"},
|
||||
"config": {".env.lock", "config.yaml", "config.yaml.bak-20261014T165715Z"},
|
||||
"state_db": {
|
||||
"state.db", "state.db-shm", "state.db-wal",
|
||||
"state.db.auto-maintenance.lock", "state.db.fts_rebuild.lock",
|
||||
"state.db.quarantine.lock", "auth.json", "auth.lock",
|
||||
".skills_prompt_snapshot.json", "models_dev_cache.json",
|
||||
"models_dev_cache.etag",
|
||||
},
|
||||
"cache": {"cache", "audio_cache", "image_cache",
|
||||
"context_length_cache.yaml"},
|
||||
"sessions": {"sessions"},
|
||||
"skills": {"skills"},
|
||||
"plugins": {"plugins", "plugin-update-checks"},
|
||||
"logs": {"logs"},
|
||||
"backups": {"backups"},
|
||||
"vault": {"vault"},
|
||||
}
|
||||
EXTS = {"bin", "cron", "forge", "home", "hooks", "keys", "lsp", "memories",
|
||||
"pairings", "plans", "platforms", "runtime", "sandboxes", "skins",
|
||||
"source-checks", "wizard-outputs", "workspace"}
|
||||
|
||||
|
||||
def expected_category(name, is_dir):
|
||||
if name in EXACT["identity"]:
|
||||
return "identity"
|
||||
if name in EXACT["soul"]:
|
||||
return "soul"
|
||||
if name in EXACT["config"]:
|
||||
return "config"
|
||||
if name in EXACT["state_db"]:
|
||||
return "state_db"
|
||||
if name in EXACT["cache"]:
|
||||
return "cache"
|
||||
if name in EXACT["sessions"]:
|
||||
return "sessions"
|
||||
if name in EXACT["skills"]:
|
||||
return "skills"
|
||||
if name in EXACT["plugins"]:
|
||||
return "plugins"
|
||||
if name in EXACT["logs"]:
|
||||
return "logs"
|
||||
if name in EXACT["backups"]:
|
||||
return "backups"
|
||||
if name in EXACT["vault"]:
|
||||
return "vault"
|
||||
if is_dir:
|
||||
return "extension_dir"
|
||||
if name.endswith(".py"):
|
||||
return "script"
|
||||
if name.endswith(".yaml") or name.endswith(".json"):
|
||||
return "config_data"
|
||||
return "other"
|
||||
|
||||
|
||||
def main():
|
||||
with open(ARTIFACT, encoding="utf-8") as fh:
|
||||
art = json.load(fh)
|
||||
|
||||
disk = sorted(os.listdir(PROFILE))
|
||||
expected = {}
|
||||
for name in disk:
|
||||
path = os.path.join(PROFILE, name)
|
||||
expected[name] = expected_category(name, os.path.isdir(path))
|
||||
|
||||
recorded = {e["name"]: e.get("category") for e in art.get("entries", [])}
|
||||
|
||||
problems = []
|
||||
if art.get("total_entries") != len(disk):
|
||||
problems.append("total_entries %r != disk %d" % (art.get("total_entries"), len(disk)))
|
||||
if set(recorded.keys()) != set(disk):
|
||||
problems.append("entry names differ: missing=%s extra=%s" % (
|
||||
sorted(set(disk) - set(recorded)), sorted(set(recorded) - set(disk))))
|
||||
for n in sorted(set(disk) & set(recorded)):
|
||||
if recorded[n] != expected[n]:
|
||||
problems.append("category mismatch for %r: recorded=%r expected=%r" % (n, recorded[n], expected[n]))
|
||||
expected_counts = {}
|
||||
for n, c in expected.items():
|
||||
expected_counts[c] = expected_counts.get(c, 0) + 1
|
||||
if art.get("categories") != expected_counts:
|
||||
problems.append("category counts %r != expected %r" % (art.get("categories"), expected_counts))
|
||||
|
||||
if problems:
|
||||
print("FAIL")
|
||||
for p in problems:
|
||||
print(" -", p)
|
||||
sys.exit(1)
|
||||
|
||||
print("PASS: artifact matches disk (%d entries, %d bytes)" % (len(disk), os.path.getsize(ARTIFACT)))
|
||||
print("categories=%s" % json.dumps(art.get("categories")))
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,488 @@
|
||||
{
|
||||
"generated_utc": "2026-10-28T11:08:59Z",
|
||||
"profile": "/root/.hermes/profiles/sol",
|
||||
"source": "os.listdir(real disk) at generation time",
|
||||
"total_entries": 64,
|
||||
"categories": {
|
||||
"identity": 2,
|
||||
"config": 3,
|
||||
"state_db": 11,
|
||||
"soul": 1,
|
||||
"script": 19,
|
||||
"cache": 4,
|
||||
"backups": 1,
|
||||
"extension_dir": 17,
|
||||
"logs": 1,
|
||||
"plugins": 2,
|
||||
"sessions": 1,
|
||||
"skills": 1,
|
||||
"vault": 1
|
||||
},
|
||||
"entries": [
|
||||
{
|
||||
"name": ".env",
|
||||
"path": "/root/.hermes/profiles/sol/.env",
|
||||
"type": "file",
|
||||
"category": "identity",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": ".env.bak-20261014T165715Z",
|
||||
"path": "/root/.hermes/profiles/sol/.env.bak-20261014T165715Z",
|
||||
"type": "file",
|
||||
"category": "identity",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": ".env.lock",
|
||||
"path": "/root/.hermes/profiles/sol/.env.lock",
|
||||
"type": "file",
|
||||
"category": "config",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": ".skills_prompt_snapshot.json",
|
||||
"path": "/root/.hermes/profiles/sol/.skills_prompt_snapshot.json",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "SOUL.md",
|
||||
"path": "/root/.hermes/profiles/sol/SOUL.md",
|
||||
"type": "file",
|
||||
"category": "soul",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "_check_repo_json.py",
|
||||
"path": "/root/.hermes/profiles/sol/_check_repo_json.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "_gen_daily_ledger_json.py",
|
||||
"path": "/root/.hermes/profiles/sol/_gen_daily_ledger_json.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "_gen_daily_ledger_report.py",
|
||||
"path": "/root/.hermes/profiles/sol/_gen_daily_ledger_report.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "_gen_daily_triage.py",
|
||||
"path": "/root/.hermes/profiles/sol/_gen_daily_triage.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "_gen_daily_triage_fresh.py",
|
||||
"path": "/root/.hermes/profiles/sol/_gen_daily_triage_fresh.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "_verify_daily_triage.py",
|
||||
"path": "/root/.hermes/profiles/sol/_verify_daily_triage.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "audio_cache",
|
||||
"path": "/root/.hermes/profiles/sol/audio_cache",
|
||||
"type": "dir",
|
||||
"category": "cache",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "auth.json",
|
||||
"path": "/root/.hermes/profiles/sol/auth.json",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "auth.lock",
|
||||
"path": "/root/.hermes/profiles/sol/auth.lock",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "backups",
|
||||
"path": "/root/.hermes/profiles/sol/backups",
|
||||
"type": "dir",
|
||||
"category": "backups",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "bin",
|
||||
"path": "/root/.hermes/profiles/sol/bin",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "cache",
|
||||
"path": "/root/.hermes/profiles/sol/cache",
|
||||
"type": "dir",
|
||||
"category": "cache",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "config.yaml",
|
||||
"path": "/root/.hermes/profiles/sol/config.yaml",
|
||||
"type": "file",
|
||||
"category": "config",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "config.yaml.bak-20261014T165715Z",
|
||||
"path": "/root/.hermes/profiles/sol/config.yaml.bak-20261014T165715Z",
|
||||
"type": "file",
|
||||
"category": "config",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "context_length_cache.yaml",
|
||||
"path": "/root/.hermes/profiles/sol/context_length_cache.yaml",
|
||||
"type": "file",
|
||||
"category": "cache",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "cron",
|
||||
"path": "/root/.hermes/profiles/sol/cron",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "cron-fleet-triage-2026-10-17.py",
|
||||
"path": "/root/.hermes/profiles/sol/cron-fleet-triage-2026-10-17.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "cron-fleet-triage-2026-10-18.py",
|
||||
"path": "/root/.hermes/profiles/sol/cron-fleet-triage-2026-10-18.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "cron-fleet-verify.py",
|
||||
"path": "/root/.hermes/profiles/sol/cron-fleet-verify.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "diag.py",
|
||||
"path": "/root/.hermes/profiles/sol/diag.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "diag2.py",
|
||||
"path": "/root/.hermes/profiles/sol/diag2.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "diag3.py",
|
||||
"path": "/root/.hermes/profiles/sol/diag3.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "diag4.py",
|
||||
"path": "/root/.hermes/profiles/sol/diag4.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "forge",
|
||||
"path": "/root/.hermes/profiles/sol/forge",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "gen_sol_profile_triage.py",
|
||||
"path": "/root/.hermes/profiles/sol/gen_sol_profile_triage.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "home",
|
||||
"path": "/root/.hermes/profiles/sol/home",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "hooks",
|
||||
"path": "/root/.hermes/profiles/sol/hooks",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "image_cache",
|
||||
"path": "/root/.hermes/profiles/sol/image_cache",
|
||||
"type": "dir",
|
||||
"category": "cache",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "inventory_skills.py",
|
||||
"path": "/root/.hermes/profiles/sol/inventory_skills.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "keys",
|
||||
"path": "/root/.hermes/profiles/sol/keys",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "logs",
|
||||
"path": "/root/.hermes/profiles/sol/logs",
|
||||
"type": "dir",
|
||||
"category": "logs",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "lsp",
|
||||
"path": "/root/.hermes/profiles/sol/lsp",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "memories",
|
||||
"path": "/root/.hermes/profiles/sol/memories",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "models_dev_cache.etag",
|
||||
"path": "/root/.hermes/profiles/sol/models_dev_cache.etag",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "models_dev_cache.json",
|
||||
"path": "/root/.hermes/profiles/sol/models_dev_cache.json",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "pairing",
|
||||
"path": "/root/.hermes/profiles/sol/pairing",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "plans",
|
||||
"path": "/root/.hermes/profiles/sol/plans",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "platforms",
|
||||
"path": "/root/.hermes/profiles/sol/platforms",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "plugin-update-checks",
|
||||
"path": "/root/.hermes/profiles/sol/plugin-update-checks",
|
||||
"type": "dir",
|
||||
"category": "plugins",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "plugins",
|
||||
"path": "/root/.hermes/profiles/sol/plugins",
|
||||
"type": "dir",
|
||||
"category": "plugins",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "runtime",
|
||||
"path": "/root/.hermes/profiles/sol/runtime",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "sandboxes",
|
||||
"path": "/root/.hermes/profiles/sol/sandboxes",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "sessions",
|
||||
"path": "/root/.hermes/profiles/sol/sessions",
|
||||
"type": "dir",
|
||||
"category": "sessions",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "skills",
|
||||
"path": "/root/.hermes/profiles/sol/skills",
|
||||
"type": "dir",
|
||||
"category": "skills",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "skins",
|
||||
"path": "/root/.hermes/profiles/sol/skins",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "source-checks",
|
||||
"path": "/root/.hermes/profiles/sol/source-checks",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "state.db",
|
||||
"path": "/root/.hermes/profiles/sol/state.db",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "state.db-shm",
|
||||
"path": "/root/.hermes/profiles/sol/state.db-shm",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "state.db-wal",
|
||||
"path": "/root/.hermes/profiles/sol/state.db-wal",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "state.db.auto-maintenance.lock",
|
||||
"path": "/root/.hermes/profiles/sol/state.db.auto-maintenance.lock",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "state.db.fts_rebuild.lock",
|
||||
"path": "/root/.hermes/profiles/sol/state.db.fts_rebuild.lock",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "state.db.quarantine.lock",
|
||||
"path": "/root/.hermes/profiles/sol/state.db.quarantine.lock",
|
||||
"type": "file",
|
||||
"category": "state_db",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "triage_check.py",
|
||||
"path": "/root/.hermes/profiles/sol/triage_check.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "triage_profiles.py",
|
||||
"path": "/root/.hermes/profiles/sol/triage_profiles.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "triage_skill_report.py",
|
||||
"path": "/root/.hermes/profiles/sol/triage_skill_report.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "vault",
|
||||
"path": "/root/.hermes/profiles/sol/vault",
|
||||
"type": "dir",
|
||||
"category": "vault",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "verify_skills.py",
|
||||
"path": "/root/.hermes/profiles/sol/verify_skills.py",
|
||||
"type": "file",
|
||||
"category": "script",
|
||||
"note": "file"
|
||||
},
|
||||
{
|
||||
"name": "wizard-outputs",
|
||||
"path": "/root/.hermes/profiles/sol/wizard-outputs",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
},
|
||||
{
|
||||
"name": "workspace",
|
||||
"path": "/root/.hermes/profiles/sol/workspace",
|
||||
"type": "dir",
|
||||
"category": "extension_dir",
|
||||
"note": "directory"
|
||||
}
|
||||
],
|
||||
"rules": {
|
||||
"identity": "exact name match",
|
||||
"config": "exact name match",
|
||||
"state_db": "exact name match",
|
||||
"cache": "exact name match + cache/ audio_cache/ image_cache/",
|
||||
"sessions": "exact name match",
|
||||
"skills": "exact name match",
|
||||
"plugins": "exact name match",
|
||||
"logs": "exact name match",
|
||||
"backups": "exact name match",
|
||||
"vault": "exact name match",
|
||||
"extension_dir": "any directory",
|
||||
"script": "name ends with .py",
|
||||
"config_data": "name ends with .yaml or .json",
|
||||
"soul": "name == SOUL.md",
|
||||
"other": "none of the above"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
# Sol profile directory triage — 2026-10-28
|
||||
|
||||
Triage of every top-level entry under the active Hermes profile
|
||||
`/root/.hermes/profiles/sol/` (64 entries). Classification is recomputed
|
||||
from the real directory tree and diffed against the artifact; a checker
|
||||
(`/root/.hermes/wizard-outputs/sol/check_sol_profile_triage.py`) passes
|
||||
with exit 0.
|
||||
|
||||
## Classification (64 entries)
|
||||
|
||||
- identity: 2 (.env, .env.bak-20261014T165715Z)
|
||||
- soul: 1 (SOUL.md)
|
||||
- config: 3 (.env.lock, config.yaml, config.yaml.bak-20261014T165715Z)
|
||||
- state_db: 11 (state.db*, auth.json, auth.lock, .skills_prompt_snapshot.json, models_dev_cache.json, models_dev_cache.etag)
|
||||
- script: 19
|
||||
- cache: 4 (cache/, audio_cache/, image_cache/, context_length_cache.yaml)
|
||||
- extension_dir: 17
|
||||
- plugins: 2 (plugins/, plugin-update-checks/)
|
||||
- sessions: 1
|
||||
- skills: 1
|
||||
- logs: 1
|
||||
- backups: 1
|
||||
- vault: 1
|
||||
|
||||
## Verdict
|
||||
|
||||
The active sol profile is functionally healthy: the agent identity and
|
||||
config are intact, the state database is present (including wal/shm and
|
||||
lock files), 19 helper scripts exist, and each functional subsystem
|
||||
(sessions, skills, plugins, logs, backups, vault) has its directory.
|
||||
No top-level entry is unclassified (0 "other").
|
||||
|
||||
Artifact: sol-profile-triage-2026-10-28.json
|
||||
CHECK: python3 /root/.hermes/wizard-outputs/sol/check_sol_profile_triage.py -> exit 0
|
||||
Reference in new issue
Block a user