Skip to content

Content tooling: build the lossless core and safe headless CLI #14

Description

@zoeyrose

Parent and roadmap

Outcome

Implement the single lossless authored-content core and versioned headless CLI used by editors, checkers, scripts, and AI automation.

Scope

  • Implement lossless parsing, typed semantic views, source spans, targeted serialization, project indexing, asset/catalog lookup, and common diagnostics.
  • Provide bounded JSON inspection, validation, semantic diff, and primitive patch operations with meaningful exit codes.
  • Require digest/node preconditions, dry-run review, all-or-nothing multi-file transactions, and same-directory atomic replacement.
  • Refuse generated, collected, packaged, and mutable runtime write targets by default; migrate one representative checker/audit consumer to prove the API.

Superseded path / cleanup target

Remove a duplicated parser only after its complete rules pass the shared parity corpus. Do not link authoring tools to live server objects or new_save_map().

Acceptance criteria

  • Unchanged files serialize byte-for-byte and targeted edits do not churn unrelated tokens or objects.
  • Comments, unknown custom data, multiline text, nesting, attribution, and authored order survive supported edits.
  • Stale or invalid multi-file patches fail before any source file changes.
  • CLI JSON is deterministic and schema-valid on Linux and Windows.
  • At least one existing checker/audit path consumes the common model with parity tests.

Validation baseline

Before: tools parse and rewrite overlapping subsets independently and machine edits lack a common transaction contract.

After: one reusable core and CLI safely serve human and automated authored-content workflows.

Run the corpus round trips, transaction failure injection, JSON-schema tests, migrated checker tests, and targeted Python/native builds.

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

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

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions