Skip to content

Implement the transactional gameplay event and action foundation #41

Description

@zoeyrose

Outcome

Give every gameplay mutation one typed, deterministic preflight/commit/cancel path and one bounded event publication model.

Scope and invariants

  • Define immutable action requests/context, captured stable identities, authorization, costs, target/shape data, and source attribution.
  • Preflight is pure and repeatable; commit is atomic against one simulation owner; cancellation and retry semantics are explicit.
  • Order nested events deterministically, bound recursion/fan-out, prevent accidental reentrancy, and attach idempotency keys where external retries occur.
  • Separate domain events, durable metrics, client projections, and operational telemetry; consumers cannot mutate the transaction in callbacks.
  • Provide common inventory/currency/state effect primitives with rollback-safe error handling.

Acceptance criteria

Dependencies and parallelization

Depends on #32 and #37; persistence/event adapters may be stubbed. Domain systems can design typed requests in parallel once the contract is approved.

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    Status
    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions