Outcome
Replace Python command discovery/dispatch with typed Go registries that reuse the same services as protocol and gameplay actions.
Scope and invariants
- Define command IDs, aliases, typed arguments, permission/role metadata, contexts, help/localization keys, audit policy, and rate limits.
- Separate player chat commands, operator/admin commands, console commands, and automation APIs while sharing parsing and authorization primitives.
- Handlers submit typed service/action requests; they cannot bypass simulation ownership, persistence transactions, or disclosure rules.
- Generate discoverable help and machine-readable command catalogs without leaking hidden commands or internal data.
- Define deterministic quoting/escaping, error categories, cancellation, pagination, and remote-console security.
Acceptance criteria
- Inventory maps all current runtime Python commands to native command, protocol action, tooling command, or explicit retirement.
- Tests cover ambiguous prefixes, malformed arguments, permission changes, injection/escaping, rate limits, audit redaction, disconnect, and transaction failure.
- Critical operator commands require auditable identities and cannot be invoked through player context.
- Command help and automation schemas derive from the registry rather than hand-maintained duplicates.
- M3 exercises representative player and operator commands with zero Python.
Dependencies and parallelization
Depends on #33, #40, and #41. Individual command batches can migrate in parallel after the registry contract freezes.
Independent implementation
New code and tests are MIT-licensed independent work. Preserve public behavior and issue-level design choices, but do not copy or mechanically translate GPL server/Python implementation or tests. Mixed-license content remains external data with its own notices.
Outcome
Replace Python command discovery/dispatch with typed Go registries that reuse the same services as protocol and gameplay actions.
Scope and invariants
Acceptance criteria
Dependencies and parallelization
Depends on #33, #40, and #41. Individual command batches can migrate in parallel after the registry contract freezes.
Independent implementation
New code and tests are MIT-licensed independent work. Preserve public behavior and issue-level design choices, but do not copy or mechanically translate GPL server/Python implementation or tests. Mixed-license content remains external data with its own notices.