28 lines
1,000 B
Markdown
28 lines
1,000 B
Markdown
|
|
# ADR 0001: Host-authoritative shared state
|
||
|
|
|
||
|
|
Status: accepted
|
||
|
|
|
||
|
|
## Context
|
||
|
|
|
||
|
|
NETfishing supports private hosts, open hosts, and joined clients. Catches,
|
||
|
|
currency, owned items, jobs, mail, drawings, profiles, and moderation affect
|
||
|
|
state that cannot safely trust a client's local presentation.
|
||
|
|
|
||
|
|
## Decision
|
||
|
|
|
||
|
|
The host validates requests against registered peers and host-owned context,
|
||
|
|
then performs the authoritative mutation. Clients receive results and replicated
|
||
|
|
presentation state. Client evidence is bounded and reconstructed where
|
||
|
|
possible; it is not treated as authority.
|
||
|
|
|
||
|
|
Private single-player uses the same host path. Presentation-only state does not
|
||
|
|
add RPCs or persistence.
|
||
|
|
|
||
|
|
## Consequences
|
||
|
|
|
||
|
|
- Shared behavior is consistent across private, open-host, and joined-client
|
||
|
|
modes.
|
||
|
|
- Tests must cover local-host and paired host/client paths.
|
||
|
|
- Stable protocol payloads and rejection cleanup require explicit handling.
|
||
|
|
- UI activation cannot be used as proof that a server-side mutation succeeded.
|