Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 2 additions & 12 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,8 @@ the workspace-level `AGENTS.md` first, then this repository's local ownership,
architecture, validation, and delivery rules.

`opy-rs` is WrightKit's standalone Rust implementation of the OverPy `.opy`
language. It is not an internal Wright frontend repository. Wright is a
consumer that may integrate `opy-rs` through native APIs or LPP, while
`opy-rs` must remain independently usable as a library and CLI.

Terminology:

- **frontend** means the internal Workshop-independent source → syntax →
semantic/HIR stage inside `opy-rs`;
- **provider** means an integration role exposed through LPP or another
reviewed boundary;
- neither term replaces the repository's identity as an independent OverPy
implementation.
language. Wright is a consumer that may integrate `opy-rs` through native APIs
or LPP, while `opy-rs` must remain independently usable as a library and CLI.

## Ownership boundary

Expand Down
14 changes: 7 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ license = "AGPL-3.0-or-later"
repository = "https://github.com/wrightkit/opy-rs"

[workspace.dependencies]
opy-frontend = { path = "crates/opy-frontend" }
opy-rs = { path = "crates/opy-rs" }
serde = "1"
serde_json = "1"
workshop-rs = "=0.1.11"
Expand Down
10 changes: 4 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ reconstructing supported OverPy projects.

Wright is a downstream consumer that integrates `opy-rs` with broader tooling
such as linting, analysis, source editing, agent workflows, CI, and language
services. The term **frontend** in this repository refers only to the
Workshop-independent source-to-semantic stage inside the implementation; it is
not the product identity of the repository. Likewise, an LPP **provider** is an
services. An LPP **provider** in this repository is an
integration role that `opy-rs` may expose to Wright and other tooling clients,
not the reason this repository exists.

Expand All @@ -23,7 +21,7 @@ and emission.
```text
OPY source
opy-rs source frontend
opy-rs parsing, preprocessing, and semantic HIR
OPY semantic model / HIR
Expand Down Expand Up @@ -66,7 +64,7 @@ opy-cli completion bash
opy-cli version
```

The Rust library surface lives in `crates/opy-frontend`, while Workshop-dependent
The Rust library surface lives in `crates/opy-rs`, while Workshop-dependent
compilation lives in `crates/opy-compiler`. See the
[tooling API reference](docs/opy/tooling-api.md) and
[implementation role](docs/opy/implementation-role.md) for the durable boundary.
Expand All @@ -91,7 +89,7 @@ compatibility corpus and pinned OverPy reference evidence.
| Builtin actions & values | 🟡 Partial | Declared semantic subset works; full catalog-backed breadth is still being closed |
| Receiver/member functions | 🟡 Partial | Declared members work; full member breadth is not yet complete |
| Enums & constants | 🟡 Partial | Declared domains resolve; full domain breadth is not yet complete |
| Advanced directives, translations & optimizer controls | 🟡 Partial | Frontend state exists; Workshop-dependent effects remain incomplete |
| Advanced directives, translations & optimizer controls | 🟡 Partial | Source state exists; Workshop-dependent effects remain incomplete |
| OPY → Workshop compilation | 🟡 Partial | The compiler boundary exists and lowering is expanding through `workshop-rs`; full real-project compilation is not yet claimed |
| Workshop → OPY reconstruction | ⏳ Not yet | Will consume canonical `workshop-rs` semantics and remain owned by `opy-rs` |

Expand Down
16 changes: 8 additions & 8 deletions compatibility/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
This directory contains the reproducible compatibility harness described by
[`docs/opy/tooling-notes.md`](../docs/opy/tooling-notes.md). It is evaluation
tooling, not a dependency of the opy-rs core, and it is fully independent of
the Rust crates: no Node toolchain and no frontend crate is required to run
the Rust crates: no Node toolchain and no source implementation crate is required to run
the harness tests or the fixture snapshot checks.

## Pinned oracle
Expand Down Expand Up @@ -95,18 +95,18 @@ The harness tests (`compatibility/tests/`) run without the oracle installed:
(the machine-readable support matrix structure and evidence paths).
The wright-side npm-packaging tests are not ported (they test wright's release
tooling). The manifest probe validator
(`crates/opy-frontend/src/manifest/probes/validate.py`) is frontend-owned and
(`crates/opy-rs/src/manifest/probes/validate.py`) is source implementation-owned and
runs standalone against the pinned oracle (Node + pnpm required), like
`run_oracle.py`; it is not part of the oracle-less harness suite.

## Native differential runner (issue #7)

The native frontend side of the differential contract lives in
`crates/opy-frontend/tests/differential.rs` and runs in `cargo test` with no
The native source implementation side of the differential contract lives in
`crates/opy-rs/tests/differential.rs` and runs in `cargo test` with no
Node or OverPy installed:

```sh
cargo test -p opy-frontend --test differential
cargo test -p opy-rs --test differential
```

It compiles every fixture through the native pipeline (preprocess → parse →
Expand Down Expand Up @@ -146,8 +146,8 @@ python3 compatibility/diff.py \
```

`your-producer` is a placeholder: this repository ships no producer for
`diff.py`. The native frontend comparison runs inside `cargo test`
(`crates/opy-frontend/tests/differential.rs`) against the recorded oracle
`diff.py`. The native source implementation comparison runs inside `cargo test`
(`crates/opy-rs/tests/differential.rs`) against the recorded oracle
snapshots directly.

The producer must write a result with the same schema as the oracle's
Expand All @@ -174,7 +174,7 @@ and exit 2 by default, so a CI job cannot silently pass without a producer.
Use `--allow-inconclusive` only for local contract checks.

The opy-rs producer side of the differential contract is the native Rust
suite (`crates/opy-frontend/tests/differential.rs`), which runs in `cargo test`
suite (`crates/opy-rs/tests/differential.rs`), which runs in `cargo test`
with no Node or OverPy installed; `diff.py` remains the
generic external-producer contract for other producers, exercised locally via
`run_oracle.py` and the corpus snapshots.
Loading