Outcome
Create the small stable value vocabulary shared across every Game Protocol 1 domain without serializing internal pointers, enum positions, localized text, or ambiguous coordinate/time units.
Types to specify
- Stable account/character/entity/session/map-instance/content/resource/action/request/transaction IDs and which are persistent, opaque, scoped, or generational.
- Tile/map/physical-level/surface coordinates, directions, offsets, viewport/profile dimensions, and numeric ranges.
- Catalog/content/resource digests and version/revision/generation semantics.
- Simulation ticks, action timestamps/durations, wall/calendar timestamps where truly required, and clock-origin/unit rules.
- Bounded text/bytes/list/map/page/cursor types, localized text keys versus authored text, semantic color/material/role tokens, and structured diagnostic IDs.
- Money/quantity/stat/formula scalar representations, overflow/rounding, optional/presence semantics, and unknown enum behavior.
Rules
- Define protobuf field presence/default behavior explicitly.
- Reserve removed field numbers/names and never reuse stable enum values.
- Every collection/string/bytes field has Atrinik-specific semantic bounds beyond generated parser limits.
- IDs are never inferred from display names or filesystem paths.
- Validation helpers may be generated, but server/client still enforce state/authorization context.
Acceptance criteria
- Go/Rust conformance fixtures cover minima/maxima, absent/default, unknown enum/field, invalid UTF-8 where applicable, overflow, stale generations/revisions, and coordinate transformations.
- Domain schemas import one common type rather than duplicate near-equivalents.
- Stable IDs survive save/reconnect/catalog reload according to their documented scope.
- Internal database/runtime/GPU handles cannot cross the wire.
- The type set remains narrow; domain-specific semantics stay in domain schemas.
Outcome
Create the small stable value vocabulary shared across every Game Protocol 1 domain without serializing internal pointers, enum positions, localized text, or ambiguous coordinate/time units.
Types to specify
Rules
Acceptance criteria