Skip to content

Build deterministic scenario, replay, property, and fuzz testing #47

Description

@zoeyrose

Outcome

Make replacement behavior verifiable without copying GPL tests or relying on manual observation alone.

Scope and invariants

  • Provide headless scenario fixtures with fake clocks, seeded RNG, generated protocol clients, isolated SQLite state, and compiled mini-content packages.
  • Record typed input commands and authoritative events/state digests for replay; exclude secrets and unstable telemetry.
  • Add reusable property-test generators for identities, containers, maps, actions, persistence transactions, and content/protocol boundaries.
  • Organize fuzz targets for QUIC framing/messages, Protobuf validation, compiled artifacts, CEL, persistence import, and domain state machines.
  • Integrate wrapper-native account/character scenarios and exact failure artifacts for CI/local reproduction.

Acceptance criteria

  • A single command runs deterministic unit/property/scenario suites with no display or network dependency.
  • Every parser/decoder has seed corpus, explicit resource limits, and continuously buildable fuzz targets.
  • Failure output contains seed, content/protocol versions, commands, and state digest sufficient for replay.
  • Classic behavior may be observed externally to write a specification, but no GPL test or expected-output corpus is copied without a verified grant.
  • The M3 vertical slice runs both headless and through the Rust client using the same fixture identities.

Dependencies and parallelization

Starts after bootstrap and expands continuously. Each domain issue owns its scenarios; this issue owns the reusable harness, conventions, and wrapper handoff.

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