R02 · Artifact architecture
The replay protocol must not be the demo protocol.
Valve can change demo framing, protobuf messages, serializers, string tables, user commands, or entity rules. The browser should not need to know. It consumes a stable Subticked replay contract.
The browser is not the parser.
Original demos remain private on server infrastructure. Dedicated parser compute produces a normalized replay artifact. The browser receives only validated, versioned, signed output designed for visualization.
Artifact family
One replay is a manifest plus independently useful objects.
ReplayArtifact/
manifest.jcs.json
manifest.sig
index.pb
segments/core/000000.pb
overlays/visibility/...
overlays/research/...
map-pack -> content-addressed referenceThe small canonical manifest is signed. Dense tracks live in compact binary chunks. Optional overlays are independently fetched so normal playback does not pay for every research model.
Segments
Seek by object boundary, not by replaying the match.
Each temporal segment begins with a complete normalized keyframe and contains ordered deltas and events. Seeking restores the keyframe and applies changes through the target coordinate. Backward seek is reconstruction, not reverse simulation.
Integrity
Authorization and artifact authenticity solve different problems.
A short-lived capability permits a browser to fetch an artifact. A manifest signature proves which publication pipeline produced the bytes. Per-object hashes bind every chunk and map pack. Browser resource ceilings remain mandatory even after signature verification.
Evolution
Migrate on the server.
Parser build, artifact compiler, replay schema, map pack, and analysis model have separate identities. Older replay artifacts can be recompiled server-side. The browser supports a bounded schema window instead of accumulating generations of Source 2 compatibility logic.
The browser may decode the Subticked artifact schema. That is not permission to include `.dem` framing, Source 2 protobuf descriptors, field paths, PacketEntities, user-command grammar, or parser profiles.