Skip to content

[M13] Establish native OSTW project and syntax frontend foundation #117

Description

@Teakowa

Parent: #90
Depends on: #115

Goal

Establish the Wright-owned OSTW frontend boundary and project-loading path needed to parse the first accepted corpus without depending on the upstream .NET runtime.

This issue owns syntax/project infrastructure only. It does not own semantic lowering or Workshop emission.

Context

#115 stabilized the pinned OSTW v3.4.0 oracle and initial corpus. The corrected evidence makes protect-ban the first accepted end-to-end reference project. Its immutable corpus contains 19 licensed files and exercises project settings, imports, rules, macros, arrays, and Workshop calls.

MOBAwatch is reference-rejected under the pinned canonical runtime and is therefore structural evidence only for this phase, not a compile-success gate.

Scope

  • Add a Wright-owned wright-ostw frontend crate/module with clear lexer/parser/CST responsibilities and no dependency on upstream implementation code.
  • Add SourceKind::Ostw and recognize .ostw / .del inputs through the existing driver/session source model.
  • Implement the minimal ds.toml project contract evidenced by protect-ban, starting with entry_point.
  • Resolve quoted OSTW imports relative to project/source location and build the complete project source graph through Wright's existing file registry/provenance model.
  • Implement lexer/parser coverage for the syntax forms present in the committed protect-ban corpus, preserving exact source spans and file identity.
  • Produce deterministic structured syntax/project diagnostics for malformed syntax, missing imports, invalid entry points, and unsupported project configuration.
  • Add corpus-driven parse tests over the full pinned protect-ban source closure plus focused negative fixtures.

Non-goals

  • Semantic/type/name resolution or HIR lowering; tracked separately.
  • OSTW -> Workshop emission.
  • Classes, generics, lambdas, pattern matching, or other MOBAwatch-only/advanced semantics merely for surface breadth.
  • Workshop -> OSTW reconstruction.
  • Copying/mechanically translating the unlicensed OSTW compiler/parser implementation.
  • Requiring the pinned oracle in production workflows.
  • Designing a generic plugin/content registry ([v0.2 workshop-rs] Define Workshop catalog, locale, extension, and version boundaries #96 remains deferred).

Acceptance criteria

  • Wright can discover and load the pinned protect-ban project from its ds.toml entry point and complete import closure without upstream runtime support.
  • Every committed protect-ban .ostw / .del source is lexed and parsed through the native frontend under the declared syntax boundary.
  • Parser/project failures are deterministic, structured, source-located, and use Wright's existing provenance/file registry contracts.
  • SourceKind::Ostw participates in the same driver/session input model as Workshop and OPY rather than introducing an OSTW-specific transport/session path.
  • No semantic-support claim is made merely because syntax parses.
  • Existing tests and CI remain green; the pinned [M13 baseline] Pin the OSTW oracle and acquire the initial real-world corpus #115 oracle/corpus baseline remains unchanged.

Relationships

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

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions