Reconcile ship-soul (hotfix) into main + pin CI runtime #97
Open
will.anderson
wants to merge 12 commits from
reconcile/hotfix-to-main-launch into main
pull from: reconcile/hotfix-to-main-launch
merge into: :main
:main
:reconcile/hotfix-to-main-launch
:hotfix/elc-source-typos
:fix/safety-contact-truncation
:fix/genesis-boot-crash
:fix/immutable-on-hotfix
:feat/bounded-persona-floor
:ci/rdynamic-http-handler
:ci/harden-gate-boot
:feat/neuron-dev-setup
:feat/immutable-engram-deletes
:feat/agent-phase1-soul
:salvage/elh-state-20260704
:hotfix/trackb-threat-to-others
:feat/soul-model-self-report
:feat/openai-format-providers
:feat/plan-mode-endpoint
:fix/operator-identity-home-resolution
:fix/wrapper-backlog-endpoints
:fix/list-typed-slice-offset
:feat/connectors-call-route
:fix/chat-vision-attachments
:fix/prevent-engram-corruption
:fix/emergency-regressions
:fix/session-continuity-hook
:fix/context-dedup-shared-ids
:fix/engram-float-parser
:improve/recall-context-format
:improve/recall-context-dedup
:improve/recall-cross-session-continuity
:improve/recall-emotional-recall
:improve/recall-activation-seed
:improve/recall-recall-completeness
:improve/recall-temporal-precision
:improve/recall-engram-scoring
:improve/recall-recall-reliability
:improve/recall-session-start-recall
:improve/reliability-engram-write
:improve/reliability-state-management
:improve/soul-memory-formation
:improve/safety-crisis-detection
:improve/reliability-route-error-recovery
:improve/reliability-llm-retry
:improve/reliability-session-boundary
:improve/reliability-safety-resilience
:improve/reliability-engram-connection
:improve/soul-routes-api
:improve/reliability-cross-session-affective
:propose/agent-workspace-root-read
:improve/reliability-conv-history
:improve/soul-strip
:improve/soul-chat-pipeline
:docs/conversation-retrieval-design
:propose/no-fake-tools-in-chat-mode
:fix/ci-soul-build-single-file
:fix/canonical-self-bridge
:feat/agent-tool-workspace-scope
:fix/agentic-tools-duplicate-web-search
:green/agentic-fixes
:feat/connectors-soul
:feat/layer-safety
:feat/layer-imprint
:feat/layer-stewardship
:test/layer-composition
:test/layer-safety
:test/layer-stewardship
:test/layer-imprint
:feat/memory-delete-update
:feat/native-web-search
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "reconcile/hotfix-to-main-launch"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Makes main the single authoritative launch branch.
Reconcile (hotfix/elc-source-typos -> main)
Per-file resolution favoring the complete/fixed source:
Every soul-composing .el source is identical between the merged tree and hotfix (main's immutability was superseded by #94), so hotfix's dist/soul.c is the faithful artifact.
CI pin (2nd commit)
Vendored release runtime v1.0.0-20260501 and pinned the soul build to it. Latest AR runtime no longer defines engram_prune_telemetry (called by the ship-soul), so an unpinned build fails to link. The verify-soul-contract HARD-BLOCK gate already runs before Publish.
Verified locally (built against the vendored runtime)
A customer DMG install ships the full graph but presents a named, bounded assistant that must never claim the imprint's human past. The neuron-ui retrieval fence keeps the imprint's biography out of the ENGRAM CONTEXT; this is the second half - it stops confabulation ("tell me about your childhood") from inventing a human life or naming Will, even if biography leaks into context. bounded_persona_floor() gates on SOUL_PERSONA_NAME: the customer DMG sets it, owner (Will's) builds leave it unset so the real self is completely unchanged. Applied at every generation path - chat, agentic (tools), vision, plan, soul, dharma - so no path can leak. Verified against claude-sonnet-4-5: with the floor on and Will's biography deliberately leaked into the identity context, all probes (childhood / creator / family) return the bounded-entity answer and explicitly refuse to claim the leaked life; with the floor off the same context is fully confabulated as its own. NOTE: dist/soul.c must be regenerated on a build host - local link is blocked by a pre-existing el_runtime mismatch (engram_prune_telemetry), unrelated to this change.Saving the 988 crisis-line contact returned truncated, unparseable JSON — cut mid-"set_at" at the file's byte length (e.g. 178 of a 218-byte response). The contact written to disk was complete; only the HTTP response was clipped, so a real customer's crisis-contact save came back corrupt. Root cause is in the el runtime's response writer, not a handler buffer: fs_read stores the file's byte count in a thread-local (_tl_fs_read_len) for binary-safe file serving, and the response writer uses that length when non-zero instead of strlen(body) (el_runtime.c:1409). Both safety-contact handlers call fs_read (the POST read-back verify; the GET file read) and then return a LONGER wrapped JSON string, so the response is capped to the file size. Soul-source fix (no runtime change needed): - POST: verify persistence via fs_write's return (1 = all bytes written) instead of an fs_read read-back — removes the fs_read, so nothing caps the response. - GET: fs_read is required, so reset the thread-local after it with a no-op fs_read("") (fs_read zeroes the length before it opens a path) so the wrapped response is sent in full. Verified: POST (crisis-line + custom) and GET now return complete, valid JSON (parses cleanly, full contact incl. set_at). Regenerated dist/soul.c + dist/safety.c (3GB RSS watchdog, release el_runtime v1.0.0-20260501). Full suite still green: verify-soul-contract GATE PASS (PRESENCE + IMMUTABILITY), genesis boot survives (/health 200, no segfault), bounded- persona floor still compiled in. NOTE: the underlying runtime leak (any handler that fs_reads then returns a longer string) is worth a proper fix in el_runtime.c (use the max of strlen and _tl_fs_read_len) so this class can't recur.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.