Code-addressed node IDs and remove JSON index files

- Compiler now generates SHA3-256 hashes for node IDs
- Each hash includes type, config, and input hashes (Merkle tree)
- Same plan = same hashes = automatic cache reuse

Cache changes:
- Remove index.json - filesystem IS the index
- Files at {cache_dir}/{hash}/output.* are source of truth
- Per-node metadata.json for optional stats (not an index)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
gilesb
2026-01-12 22:38:50 +00:00
parent faf794ef35
commit 3e3df6ff2a
2 changed files with 17 additions and 116 deletions

View File

@@ -522,10 +522,11 @@ class RunService:
if not run:
return None
plan_cache_id = run.get("plan_cache_id")
if plan_cache_id:
# Check plan_cid (stored in database) or plan_cache_id (legacy)
plan_cid = run.get("plan_cid") or run.get("plan_cache_id")
if plan_cid:
# Get plan from cache by content hash
plan_path = self.cache.get_by_cid(plan_cache_id)
plan_path = self.cache.get_by_cid(plan_cid)
if plan_path and plan_path.exists():
with open(plan_path) as f:
content = f.read()