Skip to content

Implement the compiled content-package loader and immutable catalog #36

Description

@zoeyrose

Outcome

Load only versioned, bounded artifacts produced by content-toolkit, validate the entire package before publication, and expose an immutable stable-ID catalog to simulation domains.

Scope and invariants

  • Define package/version/capability negotiation, content and resource digests, dependency ordering, and atomic catalog replacement.
  • Validate magic/version, lengths, nesting, counts, string sizes, references, uniqueness, coordinate bounds, and semantic invariants before allocating unbounded data or touching live state.
  • Keep parsing and validation in an adapter; gameplay packages consume typed immutable views, never legacy source syntax or toolkit internals.
  • Support deterministic diagnostics with artifact/path/span identity but no partial live application.
  • Define hot-reload policy explicitly: reject it initially or use a generation boundary with safe entity/reference behavior.

Acceptance criteria

  • Golden artifacts and malformed corpus are shared with content-toolkit; Go independently decodes every boundary case.
  • Fuzzing covers truncation, oversize, duplicate IDs, bad references, unknown required features, corrupt digests, and allocation pressure.
  • A package either becomes the complete active catalog or leaves the prior catalog untouched.
  • Production startup never imports Python, reads legacy Flex/source formats, or invokes a compiler.
  • Catalog lookup and load-time budgets are measured on the whole authored corpus.

Dependencies and parallelization

Depends on content-toolkit artifact specifications and the provenance policy. Simulation, persistence, and protocol work can use a small generated fixture before whole-corpus compilation exists.

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