fix(core): green tree + continuum start execs installed server + retire k3-serving fixtures - #2280
Merged
Merged
Conversation
… 21 sites Second slice of the id-typing migration. All ten `commands/memory/*` params plus the `MemoryManager` API they call now carry `PersonaRef` instead of `String`/`&str`: append_memory, append_event, load_corpus, has_corpus, get_corpus, multi_layer_recall, consciousness_context, persona_db_handle, hydrate_corpus_if_missing. Types went DOWN into the layer rather than being unwrapped at each call — the whole point of the previous slice. `.as_str()` now appears only where the value is genuinely being USED as text (a map key, a `starts_with` shape check, a directory handle), never to satisfy a signature one call later. Two `Default` derives removed (`ConsciousnessContextParams`, `LoadCorpusParams`) rather than giving `PersonaRef` a default. No caller used `::default()` on either, and an empty persona reference is a nonsense value that reads as a real answer — same reasoning as the eval result field held in the previous commit. What this makes visible, and does not yet fix: these commands still never RESOLVE. They accept a reference and hand it straight to the storage layer as a key, so a name or short-id reaches the DB unresolved. That was invisible while everything was `String`; it is now legible in the signatures. Wiring `resolve_persona` into the memory command path is the next slice (#164/#396). Tests: memory 219, rag 150 — all pass. Full lib test build clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo
…rce path carries it down Fourth slice. `CognitionTraceParams`, the four other introspect params, `CognitionReplayParams` + result, `RagComposeRequest`, and `DatasetFromTurnsParams` now carry `PersonaRef`. The RAG one went two levels deep rather than stopping at the param: `load_source`, `load_memory_source`, and `load_consciousness_source` all take `&PersonaRef` now, which deleted the two `&persona_id.into()` conversions the memory slice had left at those call sites. That is the shape to aim for — when the type reaches the bottom, the adapters in the middle disappear rather than accumulating. `persona_id: String` in continuum-core: 55 → 8. Every remaining one is an internal RECORD (memory/types, should_respond's AIDecisionContext, live/types, projection, shell_types, ai/types, sentinel) holding a value copied from a param. Those are deliberately NOT converted to `PeerId` yet. They hold whatever the caller sent, and nothing on those paths resolves — typing them as an identity today would assert something the code does not do, which is worse than leaving them `String`. They become `PeerId` in the same slice that wires `resolve_persona` into those paths, not before (#164/#396). Tests: replay 3, rag 18, full lib test build clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo
joelteply
force-pushed
the
feat/recipe-id-registry-274
branch
from
August 15, 2026 03:31
29990b7 to
cae9b10
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three fixes, all verified.
continuum startexecs the installed server. It shelled unconditionally intotools/scripts/start-server.sh— a full cargo build — which meant a binary-only install could not start a core at all, and the CLI went silent for the length of a compile (called hung three times). Now: locatecontinuum-core-serverand exec it; building is an explicit--from-source; the no-binary fallback says why it fell back instead of quietly compiling.Tree is GREEN: 7081 passed, 0 failed. The
peer_id → PeerIdconversion was half-done — production converted, fixtures left holding&str, so the crate compiled and the test target did not. Fixtures now derive a real UUID from the literal they carried, preserving every cross-site equality.Two things that fell out of doing it:
contracts/verificationhad the manifest keyed by a derivedPeerIdwhile the event still claimed a raw-string signer — and the lookup is by that signer. Converting one side made every verification test fail asMissingPeerManifest. One helper now feeds both sides.AircPeerManifest::validatehad dropped its empty-id check on the theory that typing the field made it impossible. Typing killed""; it did not killUuid::nil(), which is still constructible and still means nobody. The type narrowed the hole rather than closing it. Guard restored at the remaining expressible form.loose_id_guardcorrectly went red on four now-stale declarations. Removed — a declaration list that can rot into a graveyard is worth nothing.k3-serving retired from fixtures. It was a room named for a SUBSYSTEM, so it had no lifetime and never died. Fixtures are the transmission vector: one naming a room after a subsystem teaches that convention to the next reader. Renamed to
bench-swe-run-1. The two remaining mentions are the incident record, annotated RETIRED.Note: the middle commit is large (~717 files) because it carries the accumulated session tree — the Operator fixture sweep, ts-rs regen, and rustfmt — alongside the identity typing. The commit message says so.
🤖 Generated with Claude Code
https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo