4.4 KiB
M-INTEROCEPTION — flags, defaults, and reversal runbook
Branch engram-tiered-storage (worktree /tmp/engram-tiered-wt), on trunk
f6a0777. Six faces, each its own commit. Every behavior-changing feature is
behind an env flag default OFF = byte-identical to trunk (proven per face);
the read-only builtins are purely additive. NOT pushed, NOT tagged. The live
:8742 daemon, ~/.neuron/engram, and launchctl were never touched — all
verification ran on copies with throwaway HOME + /tmp dirs.
The server binary was rebuilt from the byte-unchanged engram/dist/engram.c
plus the modified runtime and links cleanly, so these changes integrate into the
real server without regenerating dist. Two HTTP routes are deferred to cutover
because regenerating dist from server.el drifts ~285 lines with no source
change (the prebuilt elc is a Linux x86-64 binary; a locally-built elc is a
different compiler revision). The C builtins behind those routes are complete
and tested via pure-C harnesses.
Flags
| Flag | Default | Face | Effect when set |
|---|---|---|---|
ENGRAM_CONSOLIDATION |
0 (off) |
P1 | Enables the two-threshold promotion layer (ISE connection edges + permanence marking). |
ENGRAM_CONSOL_CONN_MIN |
0.6 |
P1 | ISE salience needed to form connection edges. |
ENGRAM_CONSOL_PERM_MIN |
0.9 |
P1 | ACT-R base-level needed to mark a node durable. |
ENGRAM_CONSOL_WM_TOPK |
5 |
P1 | Max wm_top nodes a strong ISE wires to. |
ENGRAM_CHRONOCEPTION |
0 (off) |
P2 | Enables field aging (engram_age_field) + reboot catch-up. |
ENGRAM_CHRONO_TC |
3600 (s) |
P2 | Field cooling time-constant for exp(-dt/TC). |
| (none) | — | P0, P3, P4, P5 | Additive read-only builtins / observability; no flag. |
With all flags unset the runtime is byte-identical to trunk except for P4, which
adds five backward-compatible fields to /api/act-stats (pure observability).
Faces, commits, and how to disable / revert
| Face | Commit | Disable (no revert) | Revert |
|---|---|---|---|
P0 embeddings builtin engram_scan_nodes_emb_json |
c20cb3b |
n/a (additive, unused until route wired) | git revert c20cb3b |
| P1 two-threshold consolidation | 5f6ce5c |
leave ENGRAM_CONSOLIDATION unset |
git revert 5f6ce5c |
| P2 chronoception field aging | 0af39df |
leave ENGRAM_CHRONOCEPTION unset |
git revert 0af39df |
P3 drift-sensor primitive engram_geo_displacement |
816b258 |
n/a (pure fn, only called if wired) | git revert 816b258 |
| P4 afferent counters in act-stats | 65ca0a3 |
n/a (always on; observability only) | git revert 65ca0a3 |
P5 dream-recall builtin engram_dreams_json |
77a4bc9 |
n/a (additive, unused until route wired) | git revert 77a4bc9 |
Reverts are independent and can be applied in any order (no cross-face code dependencies; each touches distinct functions).
Data-side reversibility
- P1 connection edges carry
relation="hebbian-associate",metadata{"origin":"consolidated-from-ISE"}. Remove all with one query over that marker. They are also swept automatically with their ISE at the 48h prune unless the ISE was promoted to permanence. - P1 permanence marks a node durable via the metadata marker
consolidated-from-ISE. Demote by clearing the marker; the node then becomes prunable again. No struct/schema change — the marker rides in existing metadata and survives the store round-trip. - P2 last-tick persists to a sidecar file
chrono_last_tickin the data dir. Delete it to reset catch-up; it is written only when the flag is set.
Deferred to cutover (elc-drift blocker)
GET /api/embeddingsandGET /api/graph/dump→ back ontoengram_scan_nodes_emb_json(P0).GET /api/dreams?since=→ back ontoengram_dreams_json(P5).
Wire by hand-patching engram/dist/engram.c surgically (mirror an existing
route like route_scan_nodes), leaving all other dist lines byte-identical, and
editing server.el as source of truth. Do NOT full-regenerate dist.
Known follow-up (P3, honestly flagged)
The drift sensor primitive is complete and tested, but a live self-drift
reading needs a persisted SelfAnchor baseline descriptor to compare "now"
against, and no persisted self node / anchored self-neighborhood exists yet.
A self was NOT fabricated. Capturing a durable SelfAnchor snapshot and wiring an
ENGRAM_DRIFT_SENSOR live reading is the remaining work before P3 goes live.