This repository has been archived on 2026-08-20. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
el-retired/docs/v1/experiments/evidence/cycles/06-the-crossing-resolves-at-emission/0326-strip-table-verification-28d19da.out
T
will d3495476f4
El SDK Release / build-and-release (push) Failing after 13m0s
kill: purge old-paradigm dist/platform binaries from tree
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.
2026-08-19 19:46:15 -05:00

141 lines
6.4 KiB
Plaintext

CLAIM (28d19da): injects_at_entry removed, guards_at_entry removed,
injects_at_exit STRUCTURAL, wraps_body structural, prohibits_outside #error.
=== occurrences of each declaration kind in codegen.el, parent -> commit ===
kind 886626a 28d19da
injects_at_entry 2 1
guards_at_entry 2 1
injects_at_exit 2 2
wraps_body 1 1
prohibits_outside 2 2
=== same, in the whole compiler src tree ===
kind 886626a 28d19da
injects_at_entry 2 1
guards_at_entry 2 1
injects_at_exit 2 2
wraps_body 1 1
prohibits_outside 2 2
=== the 65 removed / 4 added lines of codegen.el at 28d19da ===
diff --git a/lang/el-compiler/src/codegen.el b/lang/el-compiler/src/codegen.el
index 5fd5761b..8f71d368 100644
--- a/lang/el-compiler/src/codegen.el
+++ b/lang/el-compiler/src/codegen.el
@@ -3205,38 +3205,11 @@ fn fn_has_decorator(stmt: Map<String, Any>, name: String) -> Bool {
// applies both); injection is topmost-wins, matching the VBD role convention,
// because a role is singular and a refusal is not.
fn cg_entry_seam(stmt: Map<String, Any>, fn_name: String) -> Void {
- // RUNTIME SEAM: codegen cannot know which constructs will be bound to this
- // fn after the binary exists, so the indirection is unconditional. What
- // applies is resolved at execution against a table written later.
+ // The crossing is resolved at EXECUTION. One refusable indirection replaces
+ // the compile-time guard loop and injection loop: which constructs apply,
+ // and whether any of them refuses, is read from a table written after the
+ // binary exists.
emit_line(" { el_val_t __s = el_seam_run(EL_STR(" + c_str_lit(fn_name) + "), 0, 0); if (__s) return __s; }")
- let gdl = stmt["decorators"]
- let n_gdl: Int = native_list_len(gdl)
- let gi = 0
- while gi < n_gdl {
- let gd = native_list_get(gdl, gi)
- let gdn: String = gd["name"]
- let g_target: String = decorator_guard(gdn)
- if !str_eq(g_target, "") {
- emit_line(" { el_val_t __g = " + g_target + "(EL_STR(" + c_str_lit(fn_name) + "), EL_STR(" + c_str_lit(gdn) + ")); if (__g) return __g; }")
- }
- let gi = gi + 1
- }
- let idl = stmt["decorators"]
- let n_idl: Int = native_list_len(idl)
- let di = 0
- let did_inject: Bool = false
- while di < n_idl {
- if !did_inject {
- let dd = native_list_get(idl, di)
- let ddn: String = dd["name"]
- let inj_target: String = decorator_injection(ddn)
- if !str_eq(inj_target, "") {
- emit_line(" " + inj_target + "(EL_STR(" + c_str_lit(fn_name) + "), EL_STR(" + c_str_lit(ddn) + "));")
- let did_inject = true
- }
- }
- let di = di + 1
- }
}
// cg_exit_target / cg_exit_construct — the first construct on this fn that
@@ -4310,13 +4283,7 @@ fn program_has_routes(recs: [Map<String, Any>]) -> Bool {
// inside this boundary" is a query over program structure and there is nothing
// yet to ask.
-fn declare_decorator(name: String, injects: String) -> Void {
- state_set("__dec_inject_" + name, injects)
-}
-fn decorator_injection(name: String) -> String {
- state_get("__dec_inject_" + name)
-}
// A GUARD is an injection that may refuse. The declared target is called at
// entry with the same (fn, construct) pair; a non-zero return short-circuits
@@ -4333,13 +4300,7 @@ fn decorator_injection(name: String) -> String {
// nothing — fourteen applications that read as protection and emitted no
// instruction. The compiler still knows nothing about authentication: the
// program points the construct at its own function.
-fn declare_guard(name: String, guards: String) -> Void {
- state_set("__dec_guard_" + name, guards)
-}
-fn decorator_guard(name: String) -> String {
- state_get("__dec_guard_" + name)
-}
// An EXIT injection runs after the fn returns and receives the result:
// target(<fn>, <construct>, <result>)
@@ -4419,14 +4380,8 @@ fn prohibiting_constructs() -> String {
// the streaming backend discards per-fn ASTs and there is no whole-program AST
// to walk.
fn scan_declared_decorators(tokens: [Any]) -> Void {
- declare_decorator("manager", "engram_boundary_beat")
- declare_decorator("accessor", "engram_boundary_beat")
declare_prohibition("manager", "dharma_emit,dharma_field")
let total: Int = native_list_len(tokens) / 2
- let has_pending: Bool = false
- let pending_target: String = ""
- let has_pending_g: Bool = false
- let pending_guard: String = ""
let has_pending_x: Bool = false
let pending_exit: String = ""
let has_pending_w: Bool = false
@@ -4471,14 +4426,6 @@ fn scan_declared_decorators(tokens: [Any]) -> Void {
if str_eq(dname, "decorator") {
if native_list_len(args) >= 2 {
let dkind: String = native_list_get(args, 0)
- if str_eq(dkind, "injects_at_entry") {
- let has_pending = true
- let pending_target = native_list_get(args, 1)
- }
- if str_eq(dkind, "guards_at_entry") {
- let has_pending_g = true
- let pending_guard = native_list_get(args, 1)
- }
if str_eq(dkind, "injects_at_exit") {
let has_pending_x = true
let pending_exit = native_list_get(args, 1)
@@ -4497,14 +4444,6 @@ fn scan_declared_decorators(tokens: [Any]) -> Void {
} else {
if str_eq(k, "Fn") {
let fname: String = tok_value(tokens, pos + 1)
- if has_pending {
- declare_decorator(fname, pending_target)
- let has_pending = false
- }
- if has_pending_g {
- declare_guard(fname, pending_guard)
- let has_pending_g = false
- }
if has_pending_x {
declare_exit(fname, pending_exit)
let has_pending_x = false