Skip to content

Migrate map-local, item, monster, and global-event Python behavior #59

Description

@zoeyrose

Outcome

Eliminate the residual runtime Python domains after generic engines/services are proven, using bounded action definitions or explicit native Go handlers.

Scope and invariants

  • Cover portals/exits, puzzles, environmental triggers, item use, monster-specific behavior, connection/message hooks, scheduled/global events, spawn/encounter behavior, and map-local scripts from the manifest.
  • Prefer Implement generic map/object triggers and authored action graphs #54 typed triggers/action graphs and existing Go services; create a focused handler only when behavior has durable domain semantics that cannot be expressed safely as data.
  • For each explicit handler, define stable inputs, state, authorization, event/effect contract, persistence, bounds, and independent acceptance fixtures.
  • Do not grow reflection, dynamic module loading, arbitrary host calls, or a shadow general-purpose scripting API.
  • Preserve authored map/item/monster designs and licenses; only the independent runtime implementation is MIT.

Acceptance criteria

  • All targeted manifest rows are migrated/retired/blocked explicitly and grouped by domain/location for parallel review.
  • Fuzz/property tests cover authored graph/handler inputs, recursion/fan-out, stale objects, map unload, persistence failure, and event storms.
  • No production package searches for or dispatches .py files.
  • Bespoke handlers have direct unit/scenario coverage and are registered through typed catalogs.
  • The residual list feeding Starlark Evaluate residual behavior and add Starlark only if justified #60 contains only genuinely irreducible orchestration, with evidence.

Dependencies and parallelization

Depends on #38, #41, #50, #54 and relevant domain services. Parallelize by behavior family, not by copying directory structure.

Licensing and migration rule

Replacement Go code is MIT and independently implemented. Preserve existing gameplay/content design choices and separately licensed data; do not translate GPL runtime source or tests unless an exact contribution has a documented rights-holder MIT grant.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions