Skip to content

J2: plugin-hostd H1-H5 (#126) into the contract one-pass wave - #127

Merged
linuxnow merged 13 commits into
wave/contract-one-passfrom
cluster/plugin-hostd-126-cluster
Oct 20, 2026
Merged

linuxnow merged 13 commits into
wave/contract-one-passfrom
cluster/plugin-hostd-126-cluster

Conversation

@linuxnow

Copy link
Copy Markdown
Contributor

Reviewed (opus) at a1ff637: scope H1-H5 as #126 asks; transforms, coverage, describe, verbs_contract green against omx-contract 3.0.0 (wave tip, unreleased). test-socket needs omx-clap-core's installed socket_conformance.py (environmental). Refs #126.

…ed by make install-contract (#126)

The L1 tables (docs/formats.md), kind formatMap: every term of omx-contract's
CLAP and LV2 TERM files and the struct fields and predicates a scan reads,
each one row of one class. CLAP 330 rows, LV2 457.

make install-contract installs them with omx-contract-devel's
install-contract-dir.sh at <contractdir>/3/plugin-hostd/formats/{clap,lv2}.json
with a MANIFEST.json; plugin-hostd-devel and plugin-hostd-dev ship them.

Proof: omx-contract (wave/contract-one-pass 1539b6a) validate --contract-dir
over its own package and these at schema major 2, floor rewritten to the
2.20.0 reader: 131 items in 105 files from 2 packages, valid; one term renamed
furlong: map-term red. omx-contract fmt --check: in the one formatting.
…e test-transforms (#126)

src/transforms.{c,h}: identity, lookup, scale-by, flag, scale-points,
group-path, port-group, each an inbound function and its inverse
(docs/formats.md#the-transforms); transforms_lookup_check refuses a lookup
whose keys or values repeat.

Proof: make test-transforms: 7 transforms, 17 vectors (in, out, back in,
equal) and 18 edges pass, a lookup not one to one refused; group-path's
inverse separator sabotaged: 2 red, restored green.
…age arms (#126)

tests/format_coverage.py, once per format (docs/formats.md#the-coverage-test):
the fields are every term of the installed TERM files plus every row with a
from; per field mapped/extension/dropped, then the counts. Red for a field
with no row, a row covering no field, a word the schema lacks, a transform not
in TRANSFORMS(X), a used TERM dropped, an outbound-read row on another
transform than identity or lookup, a unit row off its TERM's word.

Proof (omx-contract wave/contract-one-pass 1539b6a installed, its TERM files
at schema major 2): make test-format-coverage CONTRACT_SCHEMA_MAJOR=2:
clap 330 fields (mapped 37, extension 271, dropped 22) OK, lv2 457 (62, 346,
49) OK; --self-test: row removed, word misspelt, transform renamed each red
naming the field, both tables green, FORMAT-COVERAGE SELF-TEST OK. By hand: a
used TERM dropped, lv2:toggled on flag, units:db to dBFS, units:pc to a
non-unit: each red.
…for describe (#126)

Moved as they were, made extern; the probe runner links src/json.c
(PROBE_SRC), and tests/contract_derived.py builds the runner from PROBE_SRC.

Proof (omx-contract wave/contract-one-pass 1539b6a in the prefix):
make test-probe: plugin-hostd probe tests ok (the real-prober arms skip,
no plugin-qualify build); make test-contract: contract: ok; make
test-probe-schema test-vocabulary: vocabulary: ok.
…e.from (#126)

Proof: omx-contract validate --data with both tables beside its data:
131 items, valid; make test-format-coverage CONTRACT_SCHEMA_MAJOR=2: clap
331 fields (mapped 38) OK, lv2 458 (mapped 63) OK, self-test OK.
…iptor through the format table (#126)

plugin-hostd-probe describe runs omx-clap-scan --fields in a child under
run's limits (run_child), or reads a recorded dump (--fields-from), applies
the format's table and the transforms it names (src/describe.c), and writes
the scanned descriptor (docs/formats.md#the-descriptor-describe-writes).
make test-describe feeds recorded dumps (tests/fixtures/fields/*.tsv), so the
check needs no newer omx-clap-core.

Proof (omx-contract wave/contract-one-pass 1539b6a in the prefix): make
test-describe: describe: ok; both recorded descriptors equal, valid against
the installed schema and read valid by omx-contract validate (129 items, with
OMX_CONTRACT_CLI); 9 refusals each exit 2 naming the field, row or line; a
stand-in child gives the same descriptor, a failing one exit 3. Value-row
precedence sabotaged: both goldens and the child arm red. make test-probe,
test-contract, test-transforms green.
…#126)

Version 0.7.0 in the spec, debian/changelog, src/main.c and both manual
pages; no tag (the batch releases after the whole-set gate).

Proof: tools/protocol-gen splice/json/probe-schema: README.md,
doc/plugin-hostd.1, protocol/plugin-hostd.json and the probe schema
current; tests/no_pins.py and tests/ci_guards.py ok.
@linuxnow
linuxnow merged commit 42fa242 into wave/contract-one-pass Oct 20, 2026
13 of 27 checks passed
@linuxnow
linuxnow deleted the cluster/plugin-hostd-126-cluster branch October 20, 2026 21:14
linuxnow added a commit that referenced this pull request Oct 21, 2026
J2: plugin-hostd H1-H5 (#126) into the contract one-pass wave
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant