Skip to content

Evaluate residual behavior and add Starlark only if justified #60

Description

@zoeyrose

Outcome

Make a formal go/no-go decision after native services, compiled actions, and CEL have migrated representative and full-corpus behavior. Closing this issue with no Starlark is the preferred valid result.

Scope and invariants

  • Review every residual manifest row and explain why native Go, compiled typed data/action graphs, or CEL is insufficient.
  • Quantify authoring frequency, deployment need, determinism, testability, performance, security, persistence, editor support, and operational cost.
  • If approved, define one tiny versioned Starlark host over immutable snapshots and typed command results; scripts never receive mutable Go objects.
  • Forbid filesystem, network, environment, process, native extension, dynamic import, wall time, ambient randomness, and unbounded output.
  • Provide deterministic clock/RNG inputs plus step, recursion, call-depth, memory, string/collection, output, and cancellation budgets.

Acceptance criteria

  • A written decision either closes Starlark as unnecessary or names exact approved use cases and why alternatives failed.
  • Any host fails closed, validates/compiles before catalog publication, supports deterministic replay, and exposes capability/version metadata.
  • Adversarial tests cover infinite loops, recursion, huge allocation/output, host panics, cancellation, serialization, stale identities, and permission bypass.
  • Starlark cannot define core quest/dialogue/economy/property/combat semantics or perform effects directly.
  • Adding a new host API requires protocol-like compatibility/security review and its own issue.

Dependencies and parallelization

Blocked until #57-#59 and the migration manifest provide evidence. It is not on the M3 critical path and must not become a convenience shortcut.

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.

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