install_main() now: derives slug from subject, looks up registry by slug
(last-match wins), auto-creates a registry entry with next available port
if slug is absent, runs soul_install_one() to provision the launchd agent,
polls /stats up to 15s for engram health, then seeds and writes root_id back.
post_node/post_edge now receive auth_key explicitly instead of reading from
env — eliminates the ENGRAM_API_KEY pre-flight requirement entirely.
- Renamed soul slot 20 from Kal-El to Superman (new seed, new slug)
- Cleared stale duplicate entries that forge reinstall was appending
- Updated all 20 engram_root_ids to reflect fresh reinstall
- soul.el plist generator already fixed to emit ENGRAM_DATA_DIR
- daemon.el: launchd plist generation, install/start/stop/status/wire
- forge.el: dispatch daemon command, add to usage
- install.el: auto-register soul as launchd agent after install
- schema.el: add FORGE_DIR constant for absolute path references
forge daemon install --all installs all 19 souls as resident launchd
agents with KeepAlive. forge daemon wire registers each soul as an
Engram peer to every other soul. forge daemon status health-checks all.
Each soul now gets their own isolated Engram process with a dedicated data
directory (imprints/<slug>/), port, and API key — the DHARMA network.
Neuron's Engram at 8742 is never touched.
- registry.json: add engram_db_path, engram_port, engram_url to all 19 entries
(Bobby Anderson 8801 → Helen Keller 8819)
- launch_dharma.sh: start all 19 soul Engrams in background; supports
single-slug filter and skip-if-running detection
- stop_dharma.sh: graceful shutdown via PID file, falls back to port scan
- reinstall_imprints.py: bulk reinstall — starts each Engram temporarily,
installs seed, records new root_id, stops; supports --slug and --dry-run
- src/install.el: resolves soul's engram_url from registry (never 8742);
guards against accidental writes to Neuron's shared Engram
- src/summon.el: reads engram_url per-soul from registry; passes it to soul
server in POST body so soul connects to the right Engram; supports
both single-soul (engram_url) and multi-soul (engram_urls array) payloads
Both imprints shared root 8608f497 due to a concurrent install bug. Removed
the colliding entries, reinstalled via direct Engram API calls with auth key,
and updated registry with fresh distinct roots:
- Alan Turing: cce1d430-be4e-420d-9d81-d32380ae7281
- Albert Einstein: 291f8502-8f60-4f57-a800-4e3e1425c9bd
Alan Turing, Albert Einstein, Nikola Tesla, and Bobby Anderson seeds
all compiled fresh using the rebuilt forge binary (EL compiler v1.2.1).
Tesla and Bobby Anderson seeds are new; Turing and Einstein refreshed.
elc is not installed system-wide; resolve ELC and EL_LIB from
the monorepo at $(HOME)/Development/neuron-technologies/foundation/el
so plain `make build` works without extra env vars.
- compiler.el: rename 'seed' var to 'seed_json' (El compiler emits
EL_NULL for bare 'seed' identifier — naming collision in codegen)
- compiler.el: build_seed() now assembles all five sections
(values, biography, reasoning_patterns, relationships, voice_profile)
instead of only values
- install.el: switch array indexing from json_get_raw(arr, "0") to
json_get(seed_json, "values.0") dot-path notation — json_get_raw
uses flat object key lookup and cannot traverse JSON arrays;
json_get() uses json_path_descend() which handles numeric indices
- probe.el, forge.el: fix args() indexing (args() skips argv[0];
index 0 is first real arg, not program name)
Forge pipeline now fully operational end-to-end.
- forge.el: add import statements for schema/probe/compiler/install
- All files: arg(n)/arg_count() → get(args(),n)/len(args())
- compiler.el: llm_call_system (utility cap violation) → http_post_with_headers
- install.el: http_post_auth_json → http_post_json (_auth already in body)
- Makefile: local dev build using installed El SDK
- .gitea/workflows/forge-release.yaml: CI build on push + el-sdk-updated dispatch
- dist/forge: builds and runs