The CultLib pin makes a pull carry unregistered records instead of refusing; the writer guards like the heartbeat store does.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The workspace's one CultLib pin moves 8fc74c70 -> 75188fdefa0b4baf131dbfd94e77d06a965f0cc6
(cultcache-rs 0.2.0 -> 0.3.1, cultnet-rs 0.1.0 -> 0.3.0 in the lock; the lock drops
the crates the old revision alone needed and gains sha2/stacker for the new one).
Adaptations the new cultcache-rs forces:
- CacheBackingStore::push/push_all return the stamps written; the five test
stores follow (store.rs, receipt.rs, read_tests.rs).
- A pull now carries a record no registered type claims instead of refusing it,
so the heartbeat writer's open() checks foreign_records() and keeps its
fail-closed refusal of an old initiative store.
- A cache refuses writes until it has pulled, and a zero-byte file is not a
store: two test fixtures pull first / plant a real store.
Not deployed.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A flush answer never showed her the revision, so spending it acked a batch she
had not answered. final_reply stays the send-basis switch.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
usage_line reads model_usage_since_last_result (never the cumulative modelUsage);
write_result writes it after the result line, so Self runs and Persona turns share it.
Unreported usage says "not reported", never zeros.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A mouth that restarts keeps its seq counter but loses its pending, so its unacked events come back from the homeserver under fresh,
higher seqs. The client keyed everything on seq and told them twice. Progress now remembers the answered event ids; a delivery whose event
was answered is dropped from the poll and acked through (leading run only).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- ElementVisitor reads newtype-struct, some and enum shapes (msgpack ext, timestamp) as Other, so that delivery's reply link drops with the
warning and the message is delivered unchanged. Lists inside the link are skipped, not recursed into.
- The excerpt strip also removes U+034F, U+115F, U+1160, U+17B4, U+17B5, U+180B-180D, U+2800, U+3164; the header and the ReplyTo doc say an
emptied excerpt reads as no text.
- trace_inputs records the quote line she was shown under the message.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Exactly "1" is on, anything else is off, nothing is echoed.
Spec: gamecult-chat:cut_spec:cut-chat-reply-link-decode.r4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The quote is data on its own line after its message, every variable part
quoted, role derived from the sender id. Dropped links never render.
Spec: gamecult-chat:cut_spec:cut-chat-reply-link-decode.r4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
RudpChat::with_reply_link asks the v4 kind first and steps down one rung per
UnknownKind refusal (v4 -> v2 -> v1); flag off sends today's bytes. The
dropped-reply warning prints once per event id and reply_defects counts them.
Spec: gamecult-chat:cut_spec:cut-chat-reply-link-decode.r4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
ChatDelivery gains reply_to (tuple index 14): Absent, Quote(ReplyTo) or
Dropped(ReplyViolation). A reply_to outside the contract is dropped whole and
never fails the poll; reply_warnings words and deduplicates the organ-side
warning. Sender and event id are held to Matrix id shapes; the excerpt is
bounded at 240 code points as sent, then stripped of invisible characters.
Adds the v4 consts and the unicode-general-category direct dependency
(already in Cargo.lock).
Spec: gamecult-chat:cut_spec:cut-chat-reply-link-decode.r4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Userinfo is everything before the last @ of the authority, which ends at / ? # backslash, quotes,
brackets, angle brackets or ASCII whitespace; a path @ (github.com/@user, pkg@1.2.3, a//b@c) is left
alone, non-ASCII stays inside userinfo. Protocol-relative // opens an authority only at a word start.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
NBSP, U+2028 and other Unicode whitespace stay inside userinfo, so a secret holding them is redacted whole.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Candidate run is everything to the next whitespace, userinfo up to its last @; protocol-relative
// and the narrow word:secret@host.tld/ shape are covered; scanning no longer slices inside a
multibyte character. persona::structured_output redacts each string through the same function.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
One function, redact_url_userinfo, owned by result_text: the journal line and the admitted
PipelineReply both read the result through it, and redaction runs before the reply is chunked.
scheme://user:tok@h and http(s)/ftp(s)://tok@h become scheme://<redacted>@h; ssh://git@h stays.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Bifrost b2e0bb2 sends [persona, deliveries, tail, tail_gaps]; a three-field decode failed LengthMismatch. The field defaults empty, so three-field answers still decode, and render_tail splits unknown (named) from quiet (unnamed, no line).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Soul s1 findings trace-and-render-wiring-unpinned and tail-and-earlier-role-unpinned:
trace inputs, earlier and tail lines, tail and burst size measures, the tell's
people and open_direct refusal now fail when handed an empty table.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The hold's unit list is one owner (held_templates); the operator line is printed from stop_args.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
KitProjector sends one tool-less kit turn per tick as caller <instance>; OllamaStream's /api/chat Projector and StreamModel are deleted, replaced by the Projector and Continuer ports.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Config::sender is deleted; sender_role over the session's addressing decides a
sender's role on message, earlier and tail lines, trace inputs, the names a
memory may be about, and who she may open a direct with.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>