Minecraft Players Cloud integration addendum (integration.1)

Reviewed source integration only; no automatic updater, enrollment or runtime start.
The existing bridge core and Node lock/runtime dependencies remain unchanged.

Adopt agent/minecraft_players.py, NEW agent/minecraft_player_dispatch.py and
api/routes_game_players.py under matching coordinated Cloud source ownership.
The existing app.py player router and current_inventory capability hook remain.
Apply ONLY the supplied MAIN-PLAYER-BRANCH.py.txt and MAIN-ONCE-DRAIN.py.txt hunks
to the matching existing agent/main.py. The latter preserves --once client custody.
Do not replace an unrelated/running Cloud installation or entire main.py blindly.

The new dispatcher moves the existing frozen run_player_command call off the
heartbeat thread; ordinary stop_workload and other node controls keep their normal
path. The existing helper still serializes all Minecraft bridge I/O under one
lock with a 90-second receipt wait per call. A second Minecraft command does not
bypass that lock. At most four active worker calls and one call per player are
admitted; there is no alternate mission/job ledger or automatic execution retry.
The 1024 in-memory command fences are not evicted into permission to repeat an ID;
admission busy/capacity refusals are fenced too. A changed body under the original
ID neither executes nor overwrites the original receipt. Restart does not turn an
uncertain effect into safe retry: the frozen bridge has its own durable ID journal.

The reporting callback retains the current authorized httpx client and an immutable
snapshot of the same node/tenant/credential for the existing signed result API.
Only public node+tenant binding enters the player runner; no Cloud credential enters
Minecraft stdin. Runner exceptions or ambiguous/malformed receipts report failed
with outcome_known=false (UNKNOWN_EFFECT), never succeeded/accepted. Lost signed
result delivery is not automatically retried or interpreted as an ACK.

--once shares the original total 600-second drain deadline with workloads and
waits for active player result delivery before leaving the current client context.
If that bound expires it logs minecraft_player_reports_pending and returns without
claiming a completed effect. Normal long-lived agent operation keeps heartbeat
progress independent of a slow player join. Refusal-report HTTP calls retain the
existing bounded client timeout, as ordinary command reports do.

Qualification: 52 isolated Python checks PASS (25 API + 13 frozen-helper + 14
new async dispatch checks); Ruff PASS. Actual protocol/Node/DPAPI tests remain in
the prior bridge acceptance receipt, not rerun here. No real account, bridge process,
modern node agent, Minecraft server/world, service, Core or production DB was started.
Actual licensed join, physical Dell and full mission completion remain unqualified.
Old 0.1.0 kit/archive/public bytes must stay immutable; publish this integration
addition only as a separately identified archive after Root review.
