vendor: pull OPSL schemas and examples at v0.3.0 #1

Merged
peterswimm merged 6 commits from feat/vendor-opsl-0.3 into stock-rnbo-runner 2026-10-04 21:40:19 +00:00
Owner

Scope

Phase 3 of the OPSL alignment: vendor the now-released OPSL schemas at tag
v0.3.0 (commit 730919c) instead of a single hand-pinned device schema,
and stop keeping separate local copies of the movemap schemas now that OPSL
publishes them.

  • Replace vendor/opsl/schemas/device.schema.json with the v0.3.0 copy and
    add vendor/opsl/schemas/movemap.{bundle,layout,session}.schema.json from
    the same tag. schema_version accepts both 0.2 and 0.3.
  • Add vendor/opsl/examples/* for Access Virus, Ensoniq SQ-80 and the o1nk
    devices (device, layout, session and bundle documents), beyond the two
    device examples already vendored.
  • Add vendor/opsl/VERSION (v0.3.0 730919c) and rewrite
    vendor/opsl/README.md with the re-vendor steps.
  • Delete schemas/movemap.{layout,bundle,session}.schema.json and point
    compiler/src/validate.rs (schema_for) and the
    every_example_validates test list at vendor/opsl/schemas/ instead.
  • Give the three schemas that stay local
    (movemap.surface, oplsdt.lpp-map, oplsdt.lpp-project) their own $id
    namespace, https://toilville.dev/schemas/oplsdt/<file>, so they no
    longer collide with the OPSL-owned $ids.
  • Add a drift guard (vendored_schemas_match_recorded_hashes in
    compiler/src/tests.rs): it hashes every file under
    vendor/opsl/schemas/ with a plain FNV-1a and compares against hashes
    recorded in the test, so a hand-edit to a vendored schema fails
    cargo test instead of silently drifting from the pinned OPSL release.
  • Update README.md's repository-layout table and the OPSL/Oplsdt
    paragraph to describe the new split.

Branch base: stock-rnbo-runner (this repo's working branch).

Testing

All run from the repo root, working tree clean before and after:

  • cargo test — 35 passed, 0 failed (34 pre-existing + the new drift-guard
    test).
  • cargo run -p oplsdt-compile -- validate — every example under
    examples/, data/, projects/ and vendor/opsl/examples/ validates,
    including all the newly-vendored OPSL examples.
  • cargo run -p oplsdt-compile -- build --check — exits 0 (only the
    pre-existing "no CC/NRPN binding" warnings, unrelated to this change).
  • cargo run -p oplsdt-compile -- lint rnbo — 16 Max/RNBO files checked, 0
    problems.
  • npm test — 52 passed, 0 failed.

Drift-guard fail proof: appended a stray line to
vendor/opsl/schemas/device.schema.json, reran
cargo test vendored_schemas_match_recorded_hashes, and it failed with
device.schema.json: hash does not match the recorded vendor hash. ...
naming the tampered file. Reverted the file (confirmed byte-identical to
the v0.3.0 tag again) and reran cargo test to confirm it is back to
35/35 green.

Impact Statement

  • Existing features: none changed; this only moves where movemap schemas
    are sourced from and adds a test. No RNBO patcher, codebox or runtime
    behavior changes.
  • Public APIs: none. oplsdt-compile CLI surface (validate, build,
    lint) is unchanged.
  • Schemas: schemas/movemap.{layout,bundle,session}.schema.json removed
    (replaced by the equivalent files under vendor/opsl/schemas/, same
    shape, now OPSL-owned and versioned); $id changed on
    schemas/movemap.surface.schema.json, schemas/oplsdt.lpp-map.schema.json
    and schemas/oplsdt.lpp-project.schema.json (new namespace, no schema
    content change).
  • Data / artifacts: vendor/opsl/examples/ gains new example documents;
    the two previously-vendored device examples are byte-for-byte the
    v0.3.0 tag copies (their schema_version reverts from a locally-bumped
    "0.3" to the upstream tag's "0.2", which the 0.3 schema still
    accepts). No generated rnbo/patchers/* output changed
    (generated_files_are_current still passes).
  • Integrations / mappings: none changed. rnbo/oplsdt.build.json's
    repos.Toilville/opsl -> vendor/opsl mapping is unchanged.
  • Backward compatibility: local 0.2 examples under examples/ are
    untouched and still validate (0.3 schemas accept 0.2 documents). Anything
    reading schemas/movemap.*.schema.json directly (nothing in this repo
    does, per grep) would need to move to vendor/opsl/schemas/.

Docs

  • README.md: repository-layout table and the OPSL/Oplsdt model paragraph
    now describe schemas/ as Oplsdt-only and vendor/opsl/ as owning the
    device and movemap schemas.
  • vendor/opsl/README.md: rewritten with the v0.3.0 source, file list,
    and copy-paste re-vendor steps, plus a note about the new drift-guard
    test.
  • CONTRIBUTING.md and OPLSDT_0.2_ARCHITECTURE.md were checked; their
    existing schema references did not need changes (CONTRIBUTING.md's
    provenance note is path-agnostic, and OPLSDT_0.2_ARCHITECTURE.md only
    names schemas/movemap.surface.schema.json, which stays put).
## Scope Phase 3 of the OPSL alignment: vendor the now-released OPSL schemas at tag `v0.3.0` (commit `730919c`) instead of a single hand-pinned device schema, and stop keeping separate local copies of the movemap schemas now that OPSL publishes them. - Replace `vendor/opsl/schemas/device.schema.json` with the v0.3.0 copy and add `vendor/opsl/schemas/movemap.{bundle,layout,session}.schema.json` from the same tag. `schema_version` accepts both `0.2` and `0.3`. - Add `vendor/opsl/examples/*` for Access Virus, Ensoniq SQ-80 and the o1nk devices (device, layout, session and bundle documents), beyond the two device examples already vendored. - Add `vendor/opsl/VERSION` (`v0.3.0 730919c`) and rewrite `vendor/opsl/README.md` with the re-vendor steps. - Delete `schemas/movemap.{layout,bundle,session}.schema.json` and point `compiler/src/validate.rs` (`schema_for`) and the `every_example_validates` test list at `vendor/opsl/schemas/` instead. - Give the three schemas that stay local (`movemap.surface`, `oplsdt.lpp-map`, `oplsdt.lpp-project`) their own `$id` namespace, `https://toilville.dev/schemas/oplsdt/<file>`, so they no longer collide with the OPSL-owned `$id`s. - Add a drift guard (`vendored_schemas_match_recorded_hashes` in `compiler/src/tests.rs`): it hashes every file under `vendor/opsl/schemas/` with a plain FNV-1a and compares against hashes recorded in the test, so a hand-edit to a vendored schema fails `cargo test` instead of silently drifting from the pinned OPSL release. - Update `README.md`'s repository-layout table and the OPSL/Oplsdt paragraph to describe the new split. Branch base: `stock-rnbo-runner` (this repo's working branch). ## Testing All run from the repo root, working tree clean before and after: - `cargo test` — 35 passed, 0 failed (34 pre-existing + the new drift-guard test). - `cargo run -p oplsdt-compile -- validate` — every example under `examples/`, `data/`, `projects/` and `vendor/opsl/examples/` validates, including all the newly-vendored OPSL examples. - `cargo run -p oplsdt-compile -- build --check` — exits 0 (only the pre-existing "no CC/NRPN binding" warnings, unrelated to this change). - `cargo run -p oplsdt-compile -- lint rnbo` — 16 Max/RNBO files checked, 0 problems. - `npm test` — 52 passed, 0 failed. Drift-guard fail proof: appended a stray line to `vendor/opsl/schemas/device.schema.json`, reran `cargo test vendored_schemas_match_recorded_hashes`, and it failed with `device.schema.json: hash does not match the recorded vendor hash. ...` naming the tampered file. Reverted the file (confirmed byte-identical to the `v0.3.0` tag again) and reran `cargo test` to confirm it is back to 35/35 green. ## Impact Statement - Existing features: none changed; this only moves where movemap schemas are sourced from and adds a test. No RNBO patcher, codebox or runtime behavior changes. - Public APIs: none. `oplsdt-compile` CLI surface (`validate`, `build`, `lint`) is unchanged. - Schemas: `schemas/movemap.{layout,bundle,session}.schema.json` removed (replaced by the equivalent files under `vendor/opsl/schemas/`, same shape, now OPSL-owned and versioned); `$id` changed on `schemas/movemap.surface.schema.json`, `schemas/oplsdt.lpp-map.schema.json` and `schemas/oplsdt.lpp-project.schema.json` (new namespace, no schema content change). - Data / artifacts: `vendor/opsl/examples/` gains new example documents; the two previously-vendored device examples are byte-for-byte the `v0.3.0` tag copies (their `schema_version` reverts from a locally-bumped `"0.3"` to the upstream tag's `"0.2"`, which the 0.3 schema still accepts). No generated `rnbo/patchers/*` output changed (`generated_files_are_current` still passes). - Integrations / mappings: none changed. `rnbo/oplsdt.build.json`'s `repos.Toilville/opsl -> vendor/opsl` mapping is unchanged. - Backward compatibility: local 0.2 examples under `examples/` are untouched and still validate (0.3 schemas accept 0.2 documents). Anything reading `schemas/movemap.*.schema.json` directly (nothing in this repo does, per grep) would need to move to `vendor/opsl/schemas/`. ## Docs - `README.md`: repository-layout table and the OPSL/Oplsdt model paragraph now describe `schemas/` as Oplsdt-only and `vendor/opsl/` as owning the device and movemap schemas. - `vendor/opsl/README.md`: rewritten with the `v0.3.0` source, file list, and copy-paste re-vendor steps, plus a note about the new drift-guard test. - `CONTRIBUTING.md` and `OPLSDT_0.2_ARCHITECTURE.md` were checked; their existing schema references did not need changes (`CONTRIBUTING.md`'s provenance note is path-agnostic, and `OPLSDT_0.2_ARCHITECTURE.md` only names `schemas/movemap.surface.schema.json`, which stays put).
The Takeover reads a show request's first number as the view's position
among loaded views, not its view meta, so lpp-move's fixed 1 only worked
with oplsdt-surface loaded; otherwise the display froze on its first frame.
param takeover_position sets it. Nothing sends /active_view without
move-view-controller, so param start_active (default on) shows the view
~3 s after loading and resends until the Takeover reads the display.

RELEASING: build the graph as a saved set, unload before reloading a slot,
check the set's wiring after a fresh load; drop move-view-controller.
Pull device.schema.json and the newly-published movemap.{bundle,layout,
session}.schema.json from Toilville/opsl tag v0.3.0 (commit 730919c), plus
the device/layout/session/bundle examples for Access Virus, Ensoniq SQ-80
and the o1nk devices. schema_version accepts 0.2 and 0.3 and top-level `x-`
fields are allowed, so nothing downstream needs to change yet.
Point oplsdt-compile schema_for() and the every_example_validates test list
at vendor/opsl/schemas/movemap.{layout,bundle,session}.schema.json now that
OPSL publishes them, and delete the local copies in schemas/ they replace.
The three schemas that stay local (movemap.surface, oplsdt.lpp-map,
oplsdt.lpp-project) move their $id under
https://toilville.dev/schemas/oplsdt/ so they no longer share a namespace
with the OPSL-owned ones.
vendored_schemas_match_recorded_hashes hashes every file under
vendor/opsl/schemas with a plain FNV-1a and compares it against hashes
recorded in the test, so hand-editing a vendored schema fails `cargo test`
instead of silently drifting from the pinned OPSL release. Verified the
guard actually fails: appended a byte to vendor/opsl/schemas/device.schema.json,
reran the test (failed with a hash mismatch naming the file), then reverted.
docs: point schema locations at vendor/opsl
Some checks failed
ci / codebox (pull_request) Failing after 0s
ci / max-lint (pull_request) Failing after 10m56s
ci / compiler (pull_request) Failing after 10m56s
bb0863dce1
README.md repository-layout table and the device/movemap paragraph now
describe schemas/ as Oplsdt-only and vendor/opsl/ as owning the OPSL
device and movemap.* schemas, matching the previous two commits.
peterswimm merged commit cf5ebab7f2 into stock-rnbo-runner 2026-10-04 21:40:19 +00:00
peterswimm deleted branch feat/vendor-opsl-0.3 2026-10-04 21:40:19 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
peterswimm/oplsdt-stock-runner!1
No description provided.