Archived
d3495476f4
El SDK Release / build-and-release (push) Failing after 13m0s
The generated C, amalgams, vendored runtime pins, and compiled binaries from the Claude Code era are removed from the worktree. The El sources survive; this tree is now source-only for the first-principles rebuild. Per Principal direction 2026-08-19.
238 lines
16 KiB
Plaintext
238 lines
16 KiB
Plaintext
=== A. The source of the figures: docs/architecture/el-language-design.md §6, at 4f7568b ===
|
|
|
|
---
|
|
|
|
## 6. The residue map
|
|
|
|
What each construct must absorb, from §18.0 plus measured state:
|
|
|
|
| Residue | Count | Absorbed by |
|
|
|---|---|---|
|
|
| persist-after-mutate | 62 sites | `hold` (after-crossing) |
|
|
| auth-per-route | 10 sites | `hold` (before-crossing) |
|
|
| index-after-append | 9 of 9 failed | `hold` (after-crossing) |
|
|
| env var defaults | 20 | configuration declared once |
|
|
| process identity | 0 guards | `hold` (before-crossing) |
|
|
| `geometry_free` at every call site | every site | ownership follows from `semel` |
|
|
| five ingest functions where there is one | 5 → 1 | `protocol` / `impl` |
|
|
| `el_runtime.c` | 20,504 lines | faculty decomposition, ordered after `semel` |
|
|
|
|
---
|
|
|
|
## 7. Notes carried forward
|
|
|
|
**`el-architecture.html` §04 needs its numbers sourced or cut.** An audit found the
|
|
faculty scoreboard — `Ingest 2 min → 0 nodes`, `Recall self ranked 8th`,
|
|
`Body CC 356 / 1,626 ln`, `the verifier answers in 2.9s`, `5 of 13 native suites
|
|
failing` — has no supporting evidence in the repository, under a footer asserting
|
|
*"nothing is inferred and presented as fact."* Against a corpus whose documents
|
|
supersede their own conclusions in place, that is the one file that would not survive
|
|
scrutiny. Fix or remove.
|
|
|
|
**Source as a projection surface is claimed and unimplemented.** `el-architecture.html`
|
|
§147/§150: *"if source is a surface, then emitting a corrected file is projection."*
|
|
Greps for `surface_profile_code`, `emit_source` → zero hits.
|
|
|
|
It is not unbacked. **It was demonstrated on 2026-08-14** — three faculties (phonetic,
|
|
semantic, procedural) projected into TypeScript, a surface the system had never used,
|
|
with the network severed. Recovered at
|
|
`~/Development/neuron-technologies/andre-server-recovered/` and copied into
|
|
`evidence/03-andre-demo/`. The claim needs bringing home to El, not proving.
|
|
|
|
**`hold` is the highest-leverage construct after `semel`** — it collapses 62 + 10 + 9
|
|
sites and unblocks the runtime extraction. §19.3 names the prologue/epilogue seam as
|
|
the prerequisite and its stated blocker has expired.
|
|
|
|
---
|
|
|
|
## 8. What is not decided and must not be guessed
|
|
|
|
|
|
=== B. Upstream population statement: lang/spec/language.md §18.0 / §19.1 / §19.2, at 4f7568b ===
|
|
El's units of encapsulation are the function and the module. Neither can hold a concern like that. So each one had been expressed the only way it could be — as a **convention**: *call this at every site.* Conventions of that shape do not hold. They are not enforced by anything, they are invisible in review, and they fail silently at the one site somebody forgot.
|
|
|
|
Measured in this codebase before this section existed:
|
|
|
|
| Concern | State | What the convention was |
|
|
|---|---|---|
|
|
| process identity | **zero** guards anywhere — no pidfile, no lock, no already-running check, at any layer | "check nothing is already running first" |
|
|
| configuration | **20** distinct environment variables in one program, each with its default written inline at the read site | "remember the right default here" |
|
|
| durability | **62** `persist_*` / `engram_save` / `wal_*` / `checkpoint` call sites | "after you mutate, remember to persist" |
|
|
| request auth | **10** per-route `_auth` checks | "check the token in this handler too" |
|
|
|
|
These are not four problems. They are one absence, four times.
|
|
|
|
That the convention form fails is observed, not predicted. Process identity failed three times in a single day: twice, two engram processes ran simultaneously against the same data directory; twice, a stale binary held a port and answered probes while a fresh build was believed to be under test, because `pkill -f` had silently failed to match its argv — which nearly produced a false "the fix does not work" conclusion. Configuration failed structurally: `ENGRAM_DATA_DIR` was read at six sites, five of them dead bindings, and the sixth defaulted to `/tmp/engram` — contradicting the canonical resolver's `$HOME/.neuron/engram` and landing a pre-destructive safety backup on ephemeral storage.
|
|
|
|
The `program` block is where a concern of this shape is declared once and enforced by the compiler at the process boundary.
|
|
---- §19.1 ----
|
|
Sections 19.1 and 19.2 specify the two remaining concerns from the table in 18.0. Both are **designed and deliberately unimplemented.** The reason is stated in 19.3 and it is not difficulty.
|
|
|
|
### 19.1 Durability as an epilogue effect
|
|
|
|
**The defect.** 62 call sites carry the convention *"after you mutate, remember to persist."* This is structurally the same defect as the index bug being fixed elsewhere in this tree — *"after you append, remember to index"* — which failed at **9 of 9** sites. A convention that failed at 100% of its sites is the strongest available evidence about what this class of convention is worth.
|
|
|
|
**Why the existing seam cannot express it.** §9's injection is a prologue. Durability is inherently an *epilogue*: persist after the mutation succeeds, and not at all if it threw. The seam has no epilogue.
|
|
|
|
**Design.** Extend the decorator seam from prologue-only to prologue/epilogue, then declare durability as an effect on the mutating function:
|
|
|
|
---- §19.2 ----
|
|
**Enforcement, and this is the part that actually fixes it.** Mirroring §9's `#error` for `dharma_emit`: a function that calls a mutating primitive without carrying `@durable` is a **compile error**. Otherwise this is a 63rd thing to remember rather than a replacement for 62.
|
|
|
|
### 19.2 Request authorization as a route effect
|
|
|
|
**The defect.** 10 per-route `_auth` checks. The HTTP layer has no concept of authorization, so a new route is unauthenticated by default and silently so — the failure mode is a route that forgot, and nothing anywhere reports it.
|
|
|
|
**Design.** Authorization becomes an argument to the `@route` decorator, which already takes arguments and already builds a dispatch table:
|
|
|
|
```
|
|
|
|
=== C. Attempted re-derivation of '62 persist-after-mutate sites' ===
|
|
The stated pattern set is: persist_* / engram_save / wal_* / checkpoint call sites.
|
|
No directory, glob, language, commit or call-vs-declaration rule is stated. Trying several scopes:
|
|
scope=. all-files=302 (*.el only under it: 69)
|
|
scope=engram all-files=151 (*.el only under it: 53)
|
|
scope=engram/src all-files=52 (*.el only under it: 52)
|
|
scope=lang all-files=122 (*.el only under it: 3)
|
|
scope=ql all-files=0 (*.el only under it: 0)
|
|
scope=peripheral all-files=5 (*.el only under it: 5)
|
|
--- tree-wide, *.el only ---
|
|
69
|
|
--- tree-wide, *.el only, per-symbol breakdown ---
|
|
12 persist_canonical(
|
|
10 engram_save(
|
|
7 wal_on(
|
|
7 persist_node(
|
|
6 persist_edges_since(
|
|
6 checkpoint(
|
|
4 wal_maybe_compact(
|
|
3 persist_resume(
|
|
3 persist_bulk(
|
|
2 wal_node_put(
|
|
2 wal_edges_since(
|
|
2 persist_now(
|
|
2 persist_hebb_batch(
|
|
1 wal_hebb_batch(
|
|
1 wal_compact(
|
|
1 wal_boot(
|
|
|
|
=== D. Attempted re-derivation of '10 per-route _auth checks' ===
|
|
occurrences of _auth tree-wide at 4f7568b:
|
|
4f7568b:engram/dist/engram:3
|
|
4f7568b:engram/dist/engram.c:4
|
|
4f7568b:engram/spec/grounded-edge-propagation/awareness.beat.patch.el:2
|
|
4f7568b:engram/spec/grounded-edge-propagation/server.route.patch.el:2
|
|
4f7568b:engram/src/server.el:11
|
|
4f7568b:ide/vessels/el-ide-server/src/el-ide-server:2
|
|
4f7568b:ide/vessels/el-ide-server/src/el-ide-server-asan:2
|
|
4f7568b:ide/vessels/el-ide-server/src/el-ide-server-asan.dSYM/Contents/Resources/DWARF/el-ide-server-asan:2
|
|
4f7568b:ide/vessels/el-lsp/src/el-lsp:2
|
|
4f7568b:ide/vessels/el-plugin-host/src/el-plugin-host:2
|
|
4f7568b:ingest/src/ingest.el:2
|
|
4f7568b:lang/BOOTSTRAP.md:1
|
|
4f7568b:lang/dist/elc-bootstrap.c:1
|
|
4f7568b:lang/dist/elc-new.c:1
|
|
4f7568b:lang/dist/platform/elb:2
|
|
4f7568b:lang/dist/platform/elb-darwin-arm64:2
|
|
4f7568b:lang/dist/platform/elb-linux-amd64:1
|
|
4f7568b:lang/dist/platform/elc:3
|
|
4f7568b:lang/dist/platform/elc-asan:3
|
|
4f7568b:lang/dist/platform/elc-asan.dSYM/Contents/Resources/DWARF/elc-asan:2
|
|
4f7568b:lang/dist/platform/elc-darwin-arm64:3
|
|
4f7568b:lang/dist/platform/elc-linux-amd64:2
|
|
4f7568b:lang/dist/platform/elc.20260502-0130-self-host:3
|
|
4f7568b:lang/dist/platform/elc.20260502-1104-self-host:3
|
|
4f7568b:lang/dist/platform/elc.20260502-1231-self-host:3
|
|
4f7568b:lang/dist/platform/elc.20260502-1249-self-host:3
|
|
4f7568b:lang/dist/platform/elc.20260502-1256-self-host:3
|
|
4f7568b:lang/dist/platform/elc.20260502-1321-self-host:3
|
|
4f7568b:lang/dist/platform/elc.20260502-1916-self-host:3
|
|
4f7568b:lang/dist/platform/elc.20260503-1555-post-sprint:3
|
|
4f7568b:lang/dist/platform/elc.20260503-1603-post-lsp:3
|
|
4f7568b:lang/dist/platform/elc.c:1
|
|
4f7568b:lang/dist/platform/elc.prelaunch.bak:3
|
|
4f7568b:lang/dist/platform/elc.preselfhost:3
|
|
4f7568b:lang/dist/platform/elc.prev5:2
|
|
4f7568b:lang/dist/platform/elc.prev6:2
|
|
4f7568b:lang/dist/platform/elc.prev7:3
|
|
4f7568b:lang/dist/platform/elc.prev8:3
|
|
4f7568b:lang/dist/platform/elc.prev9:3
|
|
4f7568b:lang/el-compiler/src/codegen.el:3
|
|
4f7568b:lang/elc-combined.el:1
|
|
4f7568b:lang/elc.c:1
|
|
4f7568b:lang/examples/browser-auth.el:3
|
|
4f7568b:lang/runtime/el_capture_darwin.m:7
|
|
4f7568b:lang/runtime/el_runtime.c:4
|
|
4f7568b:lang/runtime/el_runtime.h:1
|
|
4f7568b:lang/runtime/el_runtime_win32.c:1
|
|
4f7568b:lang/runtime/http.el:3
|
|
4f7568b:lang/spec/language.md:2
|
|
4f7568b:lang/swarm/primitives.el:2
|
|
4f7568b:lang/swarm/reshape_surface.el:3
|
|
4f7568b:lang/swarm/worktrack.el:1
|
|
4f7568b:lang/tests/native/test_compiler.el:8
|
|
4f7568b:lang/tools/lsp/dist/el-lsp:2
|
|
4f7568b:peripheral/src/organ_cli.el:1
|
|
4f7568b:tools/api-reshape/agentic_loop.el:6
|
|
4f7568b:tools/api-reshape/parity.sh:3
|
|
4f7568b:tools/neuron-sandbox/nsbx:3
|
|
4f7568b:ui/examples/native-hello-android/app/src/main/jni/el_runtime.c:2
|
|
4f7568b:ui/examples/native-hello-android/app/src/main/jni/el_runtime.h:1
|
|
4f7568b:ui/examples/native-hello-ios/NativeHello/el_runtime.c:2
|
|
4f7568b:ui/examples/native-hello-ios/NativeHello/el_runtime.h:1
|
|
4f7568b:ui/examples/native-hello/build-docker/runtime/el_runtime.c:2
|
|
4f7568b:ui/examples/native-hello/build-docker/runtime/el_runtime.h:1
|
|
4f7568b:ui/examples/native-hello/build-gtk4/.rt_T.txt:1
|
|
4f7568b:ui/examples/native-hello/build-gtk4/.rt_keep.txt:1
|
|
4f7568b:ui/examples/native-hello/build-gtk4/el_runtime.o:1
|
|
4f7568b:ui/examples/native-hello/build-gtk4/native-hello-gtk4:2
|
|
4f7568b:ui/examples/native-hello/build-win32/el_runtime_win32.o:1
|
|
4f7568b:ui/examples/native-hello/build-win32/native-hello.exe:2
|
|
4f7568b:ui/examples/native-hello/build/.rt_T.txt:1
|
|
4f7568b:ui/examples/native-hello/build/.rt_keep.txt:1
|
|
4f7568b:ui/examples/native-hello/build/el_runtime.o:1
|
|
4f7568b:ui/examples/native-hello/build/native-hello:2
|
|
4f7568b:ui/examples/native-hello/build/native-hello-linux-arm64:1
|
|
4f7568b:ui/examples/native-hello/build/native-hello-linux-x86_64:1
|
|
4f7568b:ui/examples/native-hello/build/native-hello-pi-arm64:1
|
|
4f7568b:ui/examples/native-hello/build/native-hello-sdl2:2
|
|
4f7568b:ui/vessels/el-aop/src/main.el:3
|
|
4f7568b:ui/vessels/el-identity/src/main.el:4
|
|
4f7568b:ui/vessels/el-platform/src/main.el:2
|
|
4f7568b:ui/vessels/el-services/src/main.el:2
|
|
lines matching _auth in engram/src:
|
|
4f7568b:engram/src/server.el:49: // Default "" leaves auth DISABLED (check_auth_ok short-circuits to true on an
|
|
4f7568b:engram/src/server.el:809:// "preserve_edges": true, "_auth": "<key>"}
|
|
4f7568b:engram/src/server.el:899:// Auth: exempt (internal endpoint, soul daemon on same host, no _auth needed).
|
|
4f7568b:engram/src/server.el:900:// The soul's ise_post() sends {"content":"..."} without _auth; enforcing auth
|
|
4f7568b:engram/src/server.el:950:// Endpoint: POST /api/neuron/knowledge/capture (auth required: "_auth" in body)
|
|
4f7568b:engram/src/server.el:953:// "_auth": "<key>"}
|
|
4f7568b:engram/src/server.el:1958:fn check_auth_ok(method: String, body: String) -> Bool {
|
|
4f7568b:engram/src/server.el:1963: // requests must include "_auth": "<key>" in the JSON body.
|
|
4f7568b:engram/src/server.el:1965: let provided: String = json_get_string(body, "_auth")
|
|
4f7568b:engram/src/server.el:1982: // ISE posting is auth-exempt (internal soul daemon, same host, no _auth key)
|
|
4f7568b:engram/src/server.el:1988: if !check_auth_ok(method, body) {
|
|
|
|
=== E. Attempted re-derivation of 'index-after-append failed at 9 of 9' ===
|
|
--- searching for: index-after-append
|
|
4f7568b:docs/architecture/el-language-design.md:199:| index-after-append | 9 of 9 failed | `hold` (after-crossing) |
|
|
4f7568b:lang/el-compiler/src/codegen.el:4224:// persist-after-mutate sites and 9-of-9 failed index-after-append sites — every
|
|
--- searching for: 9 of 9
|
|
4f7568b:design/completing-el.html:97:<tr><td class="f">Index-after-append</td><td class="m">9 of 9 failed</td><td>"after you append, remember to index"</td></tr>
|
|
4f7568b:docs/architecture/el-architecture.html:105:<tr><td class="f">Index-after-append</td><td class="m">9 of 9 failed</td><td>"after you append, remember to index"</td></tr>
|
|
4f7568b:docs/architecture/el-language-design.md:25:| Index-after-append | 9 of 9 failed | "after you append, remember to index" |
|
|
4f7568b:docs/architecture/el-language-design.md:199:| index-after-append | 9 of 9 failed | `hold` (after-crossing) |
|
|
4f7568b:lang/spec/language.md:1237:**The defect.** 62 call sites carry the convention *"after you mutate, remember to persist."* This is structurally the same defect as the index bug being fixed elsewhere in this tree — *"after you append, remember to index"* — which failed at **9 of 9** sites. A convention that failed at 100% of its sites is the strongest available evidence about what this class of convention is worth.
|
|
--- searching for: 9-of-9
|
|
4f7568b:lang/el-compiler/src/codegen.el:4224:// persist-after-mutate sites and 9-of-9 failed index-after-append sites — every
|
|
--- searching for: remember to index
|
|
4f7568b:design/completing-el.html:97:<tr><td class="f">Index-after-append</td><td class="m">9 of 9 failed</td><td>"after you append, remember to index"</td></tr>
|
|
4f7568b:docs/architecture/el-architecture.html:105:<tr><td class="f">Index-after-append</td><td class="m">9 of 9 failed</td><td>"after you append, remember to index"</td></tr>
|
|
4f7568b:docs/architecture/el-language-design.md:25:| Index-after-append | 9 of 9 failed | "after you append, remember to index" |
|
|
4f7568b:lang/spec/language.md:1237:**The defect.** 62 call sites carry the convention *"after you mutate, remember to persist."* This is structurally the same defect as the index bug being fixed elsewhere in this tree — *"after you append, remember to index"* — which failed at **9 of 9** sites. A convention that failed at 100% of its sites is the strongest available evidence about what this class of convention is worth.
|
|
--- searching for: after you append
|
|
4f7568b:design/completing-el.html:97:<tr><td class="f">Index-after-append</td><td class="m">9 of 9 failed</td><td>"after you append, remember to index"</td></tr>
|
|
4f7568b:docs/architecture/el-architecture.html:105:<tr><td class="f">Index-after-append</td><td class="m">9 of 9 failed</td><td>"after you append, remember to index"</td></tr>
|
|
4f7568b:docs/architecture/el-language-design.md:25:| Index-after-append | 9 of 9 failed | "after you append, remember to index" |
|
|
4f7568b:lang/spec/language.md:1237:**The defect.** 62 call sites carry the convention *"after you mutate, remember to persist."* This is structurally the same defect as the index bug being fixed elsewhere in this tree — *"after you append, remember to index"* — which failed at **9 of 9** sites. A convention that failed at 100% of its sites is the strongest available evidence about what this class of convention is worth.
|