Skip to content

Adopt content-toolkit across the authored corpus and retire duplicate parsers #8

Description

@zoeyrose

Architecture amendment — one authored content source (2026-08-13)

Initiative atrinik/atrinik#357 supersedes every future live-branch instruction below. atrinik/content@main is the sole mutable authored source for replacement and Classic targets. Future authored changes land only on main; supported Classic artifacts are deterministically derived from the same immutable main revision. Do not create, restore, author, backport, validate, or publish through a live 1.x branch.

Exact historical 1.x commits, tags, releases, assets, preserved local snapshots, provenance, parity records, and comparisons remain valid immutable evidence. This amendment changes no other feature, balance, lore, compatibility, licensing, validation, or ownership acceptance criterion.

Important

The gameplay/authored-content decisions in this issue are preserved. This revision changes only the technical implementation path for the fresh MIT Go/Rust replacement program. atrinik/content remains separately/mixed licensed data; MIT engine/tooling code does not relicense the corpus.

Replacement implementation contract

Migrate authored sources and supported workflows to released MIT content-toolkit schemas/model/transactions/compiler. Verified original tools by a listed approved MIT provenance grantor may be copied or translated only through the merged registry and complete-history evidence policy in atrinik/atrinik#275. Retire old Python parsers group-by-group after semantic/whole-corpus parity; Go and Rust production consumers read compiled artifacts.

Common migration gates

  • Stable authored identities and behavior remain the source of truth; localized/rendered text and filesystem order are never identity.
  • Content is parsed, validated, transacted, and compiled by released content-toolkit; production Go/Rust consumers do not add private source parsers.
  • Runtime authority belongs to native Go services and bounded compiled definitions/CEL; Starlark is considered only through the residual go/no-go issue.
  • Verification uses deterministic compiler/conformance fixtures and wrapper-managed Go-server/Rust-client scenarios.
  • Verified original past work by an approved MIT provenance grantor may be copied, migrated, translated, or relicensed under MIT only through the merged complete-history provenance directive; all asset/data notices remain exact.

Content release-line contract

  • This migration applies to content@main and the replacement stack. main may adopt JSONL or another separately approved replacement authoring format.
  • content@1.x retains classic map/archetype/interface formats and classic collection for its support lifetime.
  • “Remove legacy formats/parsers” means remove them from replacement main and replacement consumers, never erase them from the intentionally maintained 1.x line.
  • After formats diverge, never merge branches mechanically. A behavior/content fix required on both lines receives linked, independently validated pull requests preserving the same stable identity and attribution.
  • Future features target main; 1.x accepts only the approved classic maintenance classes in Establish replacement main and maintained content 1.x release lines #45.
  • M5 requires one canonical authoring path on main, not deletion of the preserved maintenance branch.
Preserved product/design specification and historical implementation notes

Parent and roadmap

Outcome

Convert the complete authored map/archetype corpus in reviewable groups and move every in-repository content consumer to the common schema/model.

Scope

  • Provide deterministic convert, format, validate, compile, inspect, semantic-diff, and cache verify/prune commands.
  • Convert .arc and map sources while preserving comments, attribution, IDs, references, nested inventory, multipart structure, coordinates, custom data, and authored order.
  • Migrate map checkers, audits, mapset, farming analyzer, bot/navigation tools, worldviewer, collection, and packaging to the common core or versioned JSON API.
  • Compile the whole world in CI/release packaging and support narrow editor/playtest compilation.

Superseded path / cleanup target

After every current consumer moves, remove the legacy authored-source format and independent partial parsers/writers. Retain only mutable persistence readers still owned by Phase 4.

Acceptance criteria

  • Every map/archetype converts with zero unexplained fields and semantic diffs are clean.
  • All current tools consume one model/API and generated artifacts have one authoritative input/check command.
  • Release packages contain validated compiled content and can omit authored source.
  • No permanent dual authoring path or duplicated parser remains.

Validation baseline

Before: several tools implement inconsistent grammar subsets and authored files use the legacy line format.

After: one schema-driven source format and content core own all authoring, checking, automation, and compilation.

Run whole-corpus conversion/semantic diff, all migrated tool tests, deterministic formatting/artifact checks, whole-world collection, server checks, and Linux/MinGW builds.

This issue is a bounded child of atrinik/atrinik#166. The parent remains open until every sibling child is complete.

Registered feature-field migrations

Migrate the authoritative metadata and authored inputs introduced by atrinik/server#34, atrinik/server#35, atrinik/server#10, atrinik/server#9, and atrinik/server#6 through #15's shared schema/field source. Remove their superseded Flex-loader, editor XML, documentation-table, and checker/parser duplicates only after the migrated consumers pass parity and reference validation.

Baseline identity and whole-pack gate

Maintain an immutable transformation/identity ledger between the shared classic baseline on content@1.x and its replacement representation on content@main. After formats diverge, equivalence is established by stable authored identity and semantic compiler/runtime evidence, never matching paths or bytes alone. Publish whole-corpus results through atrinik#279; this issue is a native blocker of atrinik#280. Content added only after the branch point remains tested replacement content but is not misreported as a classic parity row.

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

    Fields

    Priority

    None yet

    Start date

    None yet

    Target date

    None yet

    Effort

    None yet

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions