L1.5 · the BUNDLE identity (yjy): the stamped, content-addressed identity of the model-facing world a session runs under — {harness, doctrine stamp, surface stamps, normalized capability}. The bundle is the general form of rehydration: a head produced under bundle B can only be trusted as an attach/ resume basis when the caller re-presents a compatible world. Surface impls are fns and can never be serialized, so rehydration is IDENTITY VERIFICATION
Compatibility is component-wise, mirroring existing semantics:
L1.5 · the BUNDLE identity (yjy): the stamped, content-addressed identity of
the model-facing world a session runs under — {harness, doctrine stamp,
surface stamps, normalized capability}. The bundle is the general form of
rehydration: a head produced under bundle B can only be trusted as an attach/
resume basis when the caller re-presents a compatible world. Surface impls
are fns and can never be serialized, so rehydration is IDENTITY VERIFICATION
+ RE-PRESENTATION (the embedder supplies the world again; the engine checks
the stamps), never deserialization.
Compatibility is component-wise, mirroring existing semantics:
- surfaces must MATCH exactly (typed :bundle/surface-mismatch) — restored
vars were created against those namespaced fns;
- doctrine must MATCH on RESUME (the session's own conversation continues
under the words it ran with) but is NOT checked on attach (a derived child
is a fresh conversation under the caller's doctrine);
- capability is NEVER matched here — it follows the clamp lattice (narrowing
is legal and handled by session/capability).
Sessions recorded before bundles existed (no :session/bundle) skip
verification (the legacy path, like the capability-profile fallback).(assert-attach-compatible! recorded computed allow-mismatch?)ATTACH verification: the derived child must re-present the SOURCE's surfaces
(restored vars were created against them); doctrine/capability are the
caller's concern (fresh conversation / clamp lattice). allow-mismatch?
skips the check explicitly — divergence becomes the embedder's stated
choice instead of a silent wrong-world rehydration. nil recorded ⇒ no-op.
Returns the computed bundle.
ATTACH verification: the derived child must re-present the SOURCE's surfaces (restored vars were created against them); doctrine/capability are the caller's concern (fresh conversation / clamp lattice). `allow-mismatch?` skips the check explicitly — divergence becomes the embedder's stated choice instead of a silent wrong-world rehydration. nil recorded ⇒ no-op. Returns the computed bundle.
(assert-resume-compatible! recorded computed)RESUME verification: surfaces AND doctrine must match the recorded bundle. nil recorded (legacy session) ⇒ no-op. Returns the computed bundle.
RESUME verification: surfaces AND doctrine must match the recorded bundle. nil recorded (legacy session) ⇒ no-op. Returns the computed bundle.
(describe cfg profile)The bundle description for a cfg + resolved profile — pure data, suitable for persistence on the session row.
The bundle description for a cfg + resolved profile — pure data, suitable for persistence on the session row.
(stamp cfg profile)describe + the content-addressed :bundle/hash over the description.
describe + the content-addressed :bundle/hash over the description.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |