|
Download docs/research/CHAT_DELIVERY.md from nmarshall/urt-rs: direct link, hf CLI and curl.
- Browser
- Download file 7 kB
-
https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/CHAT_DELIVERY.md
- Command line
-
hf download hf://nmarshall/urt-rs/docs/research/CHAT_DELIVERY.md
-
curl -L -o CHAT_DELIVERY.md https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/CHAT_DELIVERY.md
7 kB
| # Chat policy, formats and delivery calls | |
| Static pass, 2026-10-11. Reproduce with `python3 scripts/analyze_chat_delivery.py`; check with `python3 scripts/test_chat_delivery.py`. [Generated evidence](chat-delivery.json) includes the verified qagame hash, function partitions, initialized-data mode table, 512 policy paths and bounded argument/field/call traces. No original process or complete QVM executes. Recorded CALLs return zero placeholders; formatting, cleanup and delivery callees are not entered. These slices extend the [recipient front gates](CHAT_PATHS.md), without composing a complete recipient decision. | |
| ## DEL-001: classification and dead-chat policy | |
| Helper 186721 derives five boolean locals from sender/recipient record pointers at object offset 520. Exact raw predicates are: | |
| | Flag used below | Local | Record predicate | | |
| | --- | ---: | --- | | |
| | S, label-supported SUB interpretation | 56 | sender offset 3740 equals 1 | | |
| | P, label-supported SPEC interpretation | 44 | sender offset 3096 equals 3 | | |
| | D, label-supported DEAD interpretation | 60 | sender offset 4 equals 3 OR offset 4324 is nonzero | | |
| | T, recipient spectator-like predicate | 64 | recipient offset 3096 is signed >=3 | | |
| | U, recipient dead-like predicate | 68 | recipient offset 4 equals 3 OR offset 4324 is nonzero | | |
| Names are provisional field interpretations. In particular, recipient T accepts values greater than 3 whereas sender P requires exactly 3. Offset 4324 supplies an alternative condition rather than replacing the offset-4 comparison. Five bounded raw-field fixtures exercise each flag and both death alternatives. Global 34999596 can skip classification and policy before this slice; its identity, initialized flag values and lifecycle remain open. | |
| At instruction 187058, nonzero global **34999652** bypasses the following policy. Otherwise registered **g_deadchat** integer mirror **34067996** selects these acceptance predicates. Let A = S OR P OR D, G = game-type mirror 34090788 equals 9, and M = incoming channel mode equals 1: | |
| | g_deadchat | Acceptance within this policy slice | | |
| | --- | --- | | |
| | 1 | (NOT P OR T OR G) AND (NOT A OR T OR U OR M OR G) | | |
| | 2 | NOT P OR T OR G | | |
| | Other observed values 0 and 3 | NOT A OR T OR U OR G | | |
| Mode 1's exception in policy 1 does not override the first spectator restriction. For example, spectator-to-nonspectator remains rejected even if the recipient satisfies U; a dead nonspectator-to-live nonspectator can pass mode 1. Game-type value 9 permits every tested combination at this slice. It does not override earlier mute/ignore/state/team gates. | |
| The collector enumerates policies 0/1/2/3, modes 0/1, game types 0/9 and all 32 flag vectors. Accepted counts are respectively **114/109/112/114**, out of 128 per policy. Each trace reaches actual acceptance instruction 187154 or rejection instruction 187379. This is bounded instruction evidence with synthetic memory, not a runtime server capture or a claim about every cvar domain. | |
| ## DEL-002: modes, labels and formatter arguments | |
| Send helper 187381 reads a five-entry table at VM address **29376**. Modes 0/1/2/3/4 dispatch to instructions **187423/187476/187565/187423/187643**. Signed values outside 0–4 take the mode-0 target. These are name/prefix construction destinations, distinct from the later formatting decisions in delivery helper 186721. | |
| The delivery formatter selects an integer channel value: mode 3 forces 3; otherwise sender-record offset 3096 equal to 2 or 1 produces 2 or 1, with other values producing 0. Exact string templates and argument routing are: | |
| | Mode | Template / routing | | |
| | --- | --- | | |
| | 0, ordinary | `%s "%d" "%s%s%s%c%c%s"`, command `cchat` | | |
| | 1, team | Same template, command `tcchat` | | |
| | 2, private | `cchat "%d" "%s[pm] %s %s%s%c%c%s"` | | |
| | 3 | Ordinary template, command `tcchat`, integer channel 3 | | |
| | 4, emote | `me "%d" "%s%c%c%s"` | | |
| Ordinary arguments after the command/channel are SUB-or-DEAD label, SPEC label, name prefix, caret byte 94, supplied color byte and text pointer. `(SUB) ` takes precedence over `(DEAD) ` when both flags are set; `(SPEC) ` is independent. Missing labels use the actual empty string. Private arguments include `^3`, direction **`->` for sender-to-self** or **`<-` for a different recipient**, `^7`, name prefix, caret/color and text. Emote forwards name prefix/caret/color/text without those ordinary labels. | |
| Prefix strings at VM addresses 77696/77653/77619/77589 contain **byte 25 (0x19)**: respectively `%s%c%c\x19: `, `%s%c%c\x19\x19: `, `\x19%s%c%c\x19: ` and `*%s%c%c\x19 `. The JSON preserves the control bytes. Their client parsing/rendering meaning remains open; do not normalize them to spaces or confuse them with the cleanup helper's byte 31. | |
| Seven fixtures record exact formatter-70458 argument words. The following trap **17**, encoded CALL target **-18**, receives signed recipient index `(object - 34091368) / 880`. Aligned fixture objects verify recipient slot 3 and sender echo slot 2. Its command pointer is **zero only because the evaluator supplies a placeholder formatter return**; no formatted command, string escaping, actual NULL send or rendered output is established. | |
| ## DEL-003: explicit recipient echo and slot fanout | |
| The explicit-recipient tail first calls delivery helper 186721 with the recipient and prefix at local 196. Sender-to-self receives one call. A different recipient receives a second call toward the sender, using prefix local 264, unless **sender object offset 424 AND 8** is nonzero. The fixtures yield call counts 1/2/1 for self / other with zero flags / other with bit 8. The bit's full field identity and every flag mutation remain open. | |
| The fanout tail visits `34091368 + i * 880` for indices below signed count global **34992524**, calling 186721 per visited slot. Count-zero and count-three fixtures record zero/three delivery calls. With cleanup local 192 zero, text pointer is local 40. With it nonzero, helper 70241 is called **per iteration**, and its placeholder zero return is forwarded to delivery. These observations do not establish effective recipients: each recorded delivery callee can reject through its own gates. Count lifetime, ownership, real cleanup mutation, reliable queues and client rendering remain incomplete. | |
| ## Remaining work | |
| RE-265–267 record these bounded milestones. RE-264 stays open for the complete chat contract; RE-268 adds specific follow-ups: text-expansion helper 186435 and key lookup 185212, all raw flag/global writers, prefix construction/copy/escaping, private-message callers and client command consumption, plus original-runtime and macOS/Linux comparison fixtures. Rust/Bevy behavior should be specified from these predicates while retaining the unresolved field identities and output contracts as explicit dependencies. | |
| The [EXP-001–003 follow-up](CHAT_EXPANSION.md) recovers parser states, key comparisons and health/momo branches. Full text-expansion/copy/output behavior remains open under RE-268/272. | |