Compare commits

..

3 Commits

Author SHA1 Message Date
Neuron 72e0b829c2 chore: regenerate dist/soul.c after merging the identity accessors (#148)
Neuron Soul CI / build (push) Failing after 14m37s
Neuron Soul CI / deploy (push) Has been skipped
studio.el changed, so the committed build input went stale the moment the merge
landed. CI compiles dist/soul.c, not the .el files. The stamp gate named
studio.el and refused; this is the regeneration it asked for.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 14:14:39 -05:00
Neuron 5f0bb67cbf merge: read-only accessors for the compiled identity, and use one (#148)
el_cgi_init loaded the declared identity into runtime globals at startup and
printed it. Nothing read it back out — no accessor existed and it writes no
state, so every consumer still read identity from the mutable state store.
studio.el's dharma_registry read state_get("soul_principal"), a key with no
producer anywhere in the tree, and reported an empty principal under a heading
reading 'Principal Covenant v1'.

Adds cgi_name / cgi_dharma_id / cgi_principal / cgi_network / cgi_engram and
points dharma_registry at the compiled constant.

Read-only on purpose. There is deliberately no setter: publishing these into the
state store would have been one line, passed the same test, and recreated exactly
the runtime-mutable copy IDPROTO claims 1-2 forbid.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 14:13:33 -05:00
Neuron 6934a0e889 chore: the compiler is a build input too, and regenerate under the fixed elc
Neuron Soul CI / build (push) Failing after 14m28s
Neuron Soul CI / deploy (push) Has been skipped
Installing the fixed compiler exposed a blind spot in this gate. On clean main,
with no source changed, soulc-stamp reported OK while the committed amalgam had
gone stale by a line — because the fingerprint covered .el sources and not the
toolchain that turns them into dist/soul.c. That is exactly the class of silent
divergence the gate was written to close, and it had it.

The stamp now fingerprints the elc binary alongside the sources. Demonstrated: with
the old stamp the gate passed after a compiler swap; with this change the same
condition fails, naming __compiler__.

dist/soul.c regenerated under the installed compiler (1,205,027 bytes) and verified:
builds from its own committed input, the declared principal is present in the
resulting binary, interface 110 routes in / 110 out.

Differential evidence that the new compiler is a strict superset — same sources,
both compilers:
  neuron soul        1 differing line, the el_cgi_init emission
  engram server.el   0 differing lines
  mcp-wrapper        0 differing lines
  mcp-proxy          0 differing lines

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 13:56:11 -05:00
3 changed files with 16 additions and 4 deletions
Generated Vendored
+2 -1
View File
@@ -29333,7 +29333,7 @@ el_val_t handle_config(el_val_t method, el_val_t body) {
el_val_t dharma_registry(void) { el_val_t dharma_registry(void) {
el_val_t cgi_id = state_get(EL_STR("soul_cgi_id")); el_val_t cgi_id = state_get(EL_STR("soul_cgi_id"));
el_val_t principal = state_get(EL_STR("soul_principal")); el_val_t principal = cgi_principal();
return el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{\"registry\":[{\"cgi\":\""), cgi_id), EL_STR("\",")), EL_STR("\"principal\":\"")), principal), EL_STR("\",")), EL_STR("\"covenant\":\"Principal Covenant v1\",")), EL_STR("\"registered\":\"2026-05-01\",\"provenance\":\"genesis\",")), EL_STR("\"entry\":1}],")), EL_STR("\"network_status\":\"initializing\",")), EL_STR("\"total_cgis\":1}")); return el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{\"registry\":[{\"cgi\":\""), cgi_id), EL_STR("\",")), EL_STR("\"principal\":\"")), principal), EL_STR("\",")), EL_STR("\"covenant\":\"Principal Covenant v1\",")), EL_STR("\"registered\":\"2026-05-01\",\"provenance\":\"genesis\",")), EL_STR("\"entry\":1}],")), EL_STR("\"network_status\":\"initializing\",")), EL_STR("\"total_cgis\":1}"));
return 0; return 0;
} }
@@ -31938,6 +31938,7 @@ el_val_t layered_cycle(el_val_t raw_input, el_val_t session_id, el_val_t utility
int main(int _argc, char** _argv) { int main(int _argc, char** _argv) {
el_runtime_init_args(_argc, _argv); el_runtime_init_args(_argc, _argv);
el_cgi_init(EL_STR("neuron-soul"), EL_STR("ntn-genesis@http://localhost:7770"), EL_STR("william-christopher-anderson"), EL_STR("dharma-mainnet"), EL_STR("http://localhost:8742"));
soul_cgi_id_raw = env(EL_STR("SOUL_CGI_ID")); soul_cgi_id_raw = env(EL_STR("SOUL_CGI_ID"));
soul_cgi_id = ({ el_val_t _if_result_821 = 0; if (str_eq(soul_cgi_id_raw, EL_STR(""))) { _if_result_821 = (EL_STR("ntn-genesis")); } else { _if_result_821 = (soul_cgi_id_raw); } _if_result_821; }); soul_cgi_id = ({ el_val_t _if_result_821 = 0; if (str_eq(soul_cgi_id_raw, EL_STR(""))) { _if_result_821 = (EL_STR("ntn-genesis")); } else { _if_result_821 = (soul_cgi_id_raw); } _if_result_821; });
port_raw = env(EL_STR("NEURON_PORT")); port_raw = env(EL_STR("NEURON_PORT"));
Generated Vendored
+4 -3
View File
@@ -1,7 +1,8 @@
# soul.c.stamp — fingerprint of the .el sources dist/soul.c was generated from. # soul.c.stamp — fingerprint of the .el sources dist/soul.c was generated from.
# Written by tools/soulc-stamp.sh --write. Do not hand-edit. # Written by tools/soulc-stamp.sh --write. Do not hand-edit.
# generated_amalgam_sha256 ee09798ad93ddd047136577cf324483e5956984d60d06596d34662f315ee0df4 # generated_amalgam_sha256 cdc5e716dbfb797faa1b3e080cbd1ac82a75a258809da70cc5fbd02cc8040692
# generated_amalgam_bytes 1204845 # generated_amalgam_bytes 1205007
7cf5e29d2618db2fca04e6df7aa8954dd6cf9ac5e70aafb8e0b52aa734882131 __compiler__
f8597e10546654bce3fbbe40461b2da59d0e06dbf1b038d1d362d24f949e3911 awareness.el f8597e10546654bce3fbbe40461b2da59d0e06dbf1b038d1d362d24f949e3911 awareness.el
b6f3d14ca0c26017a2d617399a6d3754dabb0905e4d5f52eb75d25c4ad18d3c5 chat.el b6f3d14ca0c26017a2d617399a6d3754dabb0905e4d5f52eb75d25c4ad18d3c5 chat.el
42288c212cbf72fb1e8ecbd4d9900e4e9ee1cfa475b7974295c7637f1bf2939f elp-input.el 42288c212cbf72fb1e8ecbd4d9900e4e9ee1cfa475b7974295c7637f1bf2939f elp-input.el
@@ -15,4 +16,4 @@ c28e36952ec56525963a0bdf29455ab097d3b0c5653d19c25fbb005e1069a1f7 safety.el
fd3ab91d0ae0ea26639e21bef2f8f94054dc4b02eae68b19e3fe689d2769aad4 sessions.el fd3ab91d0ae0ea26639e21bef2f8f94054dc4b02eae68b19e3fe689d2769aad4 sessions.el
5613b60d74d5d7768f46da5ac435a5dd99d38c27f0f7013c89fa27e98dc8a21c soul.el 5613b60d74d5d7768f46da5ac435a5dd99d38c27f0f7013c89fa27e98dc8a21c soul.el
30337940905171a9645b0929f0a412ce6b3dccb1246495070c553bca0bbae6cd stewardship.el 30337940905171a9645b0929f0a412ce6b3dccb1246495070c553bca0bbae6cd stewardship.el
e105dc5990e6adbf39db9dc0462cd8bcf6e6c3dfd03709059227ecfad2bbab29 studio.el 95dab72be4ee1dd1d28bab63412964a72460126951764e3f74b1c2d49b6d7b35 studio.el
+10
View File
@@ -30,9 +30,19 @@ AMALGAM="$ROOT/dist/soul.c"
# Every .el at the repo root is an input to the amalgam. Sorted so the hash is # Every .el at the repo root is an input to the amalgam. Sorted so the hash is
# order-independent; content-only so timestamps and checkouts do not perturb it. # order-independent; content-only so timestamps and checkouts do not perturb it.
# The COMPILER is an input too. Learned 2026-08-09 by installing a fixed elc and
# watching this gate report OK while the committed amalgam had gone stale by a line:
# the sources had not changed, so a source-only fingerprint could not see it. That is
# precisely the blind spot this gate exists to close, and it had it.
fingerprint() { fingerprint() {
( (
cd "$ROOT" || exit 1 cd "$ROOT" || exit 1
ELC_BIN="${ELC:-$HOME/neuron-dev-stack/src/el/lang/dist/platform/elc}"
if [ -f "$ELC_BIN" ]; then
printf '%s %s\n' "$(shasum -a 256 "$ELC_BIN" | awk '{print $1}')" "__compiler__"
else
printf '%s %s\n' "MISSING" "__compiler__"
fi
for f in $(ls -1 *.el 2>/dev/null | sort); do for f in $(ls -1 *.el 2>/dev/null | sort); do
printf '%s %s\n' "$(shasum -a 256 "$f" | awk '{print $1}')" "$f" printf '%s %s\n' "$(shasum -a 256 "$f" | awk '{print $1}')" "$f"
done done