The contract now reports each object's description header, so the item
record carries the words the original's framework filed from it: the weenie
and second header flags, the physics description flags, the setup id, the
scale key (0.0 whenever a scale was sent, as recorded), the hook type, the
parent and parent location, and the framework's own summary word (key
218103831: stackable, has a position, lockable, inscribable, usable,
container), derived from the header by a rule that matches all 2,220 recorded
items carrying both words. With the header flags known, key presence follows
the header exactly instead of guessing from non-zero values: a recorded
Pyreal Mote now rebuilds key for key.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
record listens where the plugin is pointed (/mm ws url) and writes every
frame to a JSON-lines file; compare reports, per frame type, whether two
recordings have the same fields in the same order with the same JSON types.
A live headless run against the local server recorded register, telemetry,
vitals, chat, combat_stats, character_stats and the share_* frames, and the
unsubscribe at logout. The same tool records the DECAL plugin (point its
endpoint here) so the two can be compared.
Also ships Newtonsoft.Json beside the plugin (a class library does not copy
its package dependencies by default; the plugin failed to load without it).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The socket connects with the shared-secret header, registers first, reassembles
incoming frames of any size (the original dropped anything over 4 KiB) and
reconnects two seconds after a failure. Incoming share_* frames go to the
vital-sharing handlers; any other frame is a chat-box command for this
character, run one per tick through the chat bar as if typed. Frames are
written with Newtonsoft.Json defaults, the original's serializer, so the
backend sees the same bytes. The secret lives in the character's settings.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>