Schemas
JSON Schemas for the reports, records and files RDMBench writes, each served at its $id.
These are the schemas for the JSON RDMBench writes: the reports
rdmbench-cli prints with --json, the records the bench keeps in its
captures folder, and the files a fixture library is made of. Each one is
generated from the app’s own types, so it changes when the JSON does.
A schema’s $id is the address it is served from, so a validator can
fetch it by its $id. Its description says how the bench reads the
document, over and above what each field means.
Where a report says something in words, it carries { id, args, text }.
text is the sentence in the bench’s language, for a person to read.
Compare on id, never on text.
An assistant connected to the bench reads the same schemas as the MCP
resources rdmbench://schema/<name>. fixture-profile.json and
manufacturer-pid-file.json are also in
rdmbench-pids, the public
fixture library, with the same $id.
Documents
RDMBench template apply report
What applying a settings template did: per unit, each setting’s
before/wanted/afterwith itsoutcome(matched,changed,would_changeon a dry run,refused,unreadable,unverified) and the refusal’s sentence, or theskippedsentence saying why the unit was left alone (another model, other firmware, the reference unit itself, silent).template --jsonwrites it.RDMBench backup manifest
backup.jsonat the root of anrdmbench-backup-<time>.zip, which is laid out exactly like the bench’s data folder:captures/(the repair history, whole),manufacturer-pids/andgdtf/*.gdtf.countsis files per part;skippedis what was in the data folder and left out, each with itsreason(link,unknown,credentials,backup) — the Share password is never in a backup.settingsis the app’s own preferences, opaque to the core and absent from a CLI backup. A restore merges: it adds what is missing and never replaces a file that is there.RDMBench behavior check
Whether one responder follows the rules of E1.20, as
behaviour --jsonwrites it: one entry per rule with its stableid, the clause it cites assection, what the clause requires (name) and what the unit actually did (detail), eachoutcomebeingpassed,failedorskipped. Conformance, not health — a unit can fail one of these and be perfectly serviceable, so nothing here feeds a snapshot’s severity rollup.RDMBench snapshot comparison
Two snapshots of a fixture compared, earlier first: each
changesentry is a typeddifferencewith its own severity and a renderedtext.worstisokwhen nothing got worse.RDMBench diagnostic snapshot
One fixture’s full diagnostic report, as
rdmbench-cli snapshot --jsonand the app write it.rollupis the overall verdict; everyfindingslist,statusentry andproblemsline carries{ id, args, text }— compare onid, readtext. Text the fixture wrote itself (labels, descriptions) is never translated.RDMBench finish record
What Finish Repair did to a unit —
<UID>/<time>-finish.jsonin the captures folder, beside the closing report it was taken with (finished_at_unix_msis that report’staken_at_unix_ms): the counters reset with what they read before, what RECORD_SENSORS reached, and what the fixture refused. It marks where one repair ends, which is how the repair sheet finds the report the next one opened with.RDMBench fixture profile
What a model is, captured from one unit of it: identity, product category and details, firmware, every DMX personality (name, footprint, E1.37-5 stable ID where the fixture has one), every sensor’s definition, and the PIDs it lists — the file format under the library’s
profiles/directory and whatexport-profile --outwrites. Harvested self-description: no values, no current state, no slot tables (reading those means switching the fixture’s mode).RDMBench DMX hold
What the bench is holding on the wire, as
dmx --jsonwrites it: every channel that is up with its absolute DMX number, its number counted from the fixture’s start address where a fixture’s channels were asked for, and its level. The frame is held across RDM exchanges until it is released;notessays when a channel is past the fixture’s footprint, which is on the wire but not read by it.RDMBench load report
A fixture driven in order to measure it — its footprint held at
level(withslots, the profile’s plan and the channels its own slot tablerestedon top), read while it was up, and output ended inside the same call (output_ended).movementsis every sensor’sbefore,afterandpeak, the ones that moved first;status_appearedwhat it reported under load that it did not at idle;outcomemovedornothing_moved, which is inconclusive rather than a fault. What theloadtool andrdmbench-cli load --jsonreturn, and what each run is filed as under its unit —<UID>/<time>-load.jsonin the captures folder, stamped when output came down (ended_ms), whether the CLI, the MCP tool or the app’s Monitor tab ran it. The repair sheet reads every run inside the repair.RDMBench manufacturer PID table
One brand’s manufacturer-specific PID names and types — the file format under
manufacturer-pids/and whatexport-pids --outwrites. Sourced from manuals, the fixture’s own PARAMETER_DESCRIPTION, or sniffing; never from OLA’s PID store.RDMBench monitor stream line
One line of a
monitor --jsonfile (JSON Lines): the first line is{ baseline }, then one{ t, events, sample }per poll withtin seconds since the start, and finally{ summary }.RDMBench manufacturer PID export
The result of
export-pids: a proposedmanufacturer-pids/file (file) holding only what the fixture described that the loaded tables lack, with thenew/changed/known/undescribedaccounting.RDMBench fixture profile export
The result of
export-profile: the profile (file), where it belongs underprofiles/(suggested_path), why it cannot be published if it cannot (problems), what a curator should settle (warnings), and the per-PID reads that failed on the way (read_problems).RDMBench fixture quirk report
What a reported unit’s model is known to get wrong, read off the
quirkson its fixture profile: each quirk with the bench observation behind it, the findings in the stored report it contradicts, and — for a model that inverts IDENTIFY_DEVICE — what the flag means as against what the fixture reported. Produced beside a snapshot and never folded into it: the report keeps what the fixture said, and this says what it means.RDMBench repair note
What the bench did to a unit, in the technician’s words —
<UID>/<time>-note.jsonin the captures folder, beside the reports.about_unix_msis thetaken_at_unix_msof the report it was written against (absent for a note about the unit in general). Never part of a snapshot, and nothing that leaves the machine.RDMBench repair sheet
What goes back to the customer with a unit: its latest repair read for someone who is not a tech, from the captures folder alone — the report it opened with (
opened, the first since the previous Finish Repair) and the one it leaves with (closed), the complaint read against the opening report, what wasfound, the tech’snotes, what the benchdone, the channel walk it wascheckedwith, each load rununder_load, how it isleaving, andremarksabout the sheet itself (finished: falsewhen Finish Repair was not run).rdmbench-cli sheet --jsonprints it. Every sentence is{ id, args, text }, so a stored sheet renders again in the customer’s language; the notes and the fixture’s own text are quoted as written.RDMBench monitor session summary
What a live-monitoring session saw: per-sensor min/max/avg/worst, the timestamped events (sensor threshold crossings, status messages appearing and clearing, config changes, comms error counts rising, the device going silent), and the status conditions still active when it ended.
RDMBench settings template
The writable configuration of one known-good unit — personality, lamp-on mode, the pan/tilt flags, the E1.37-1 no-signal modes and dimmer settings, never the DMX address — as
template --outwrites it andtemplate --filereads it back, to bring other units of the same model and firmware to (model_idandsoftware_version_idgate that). Eachvalueis tagged bykindin the form its SET takes;readingis the reference unit’s own words for it.RDMBench channel walk record
A channel walk — a person checking a fixture’s channels by eye, one at a time — as
<UID>/<time>-walk.jsonin the captures folder. Each channel the walk showed, with the name it was shown under and whose word that name is (name_source), the tech’sverdict(pass,fail,skip; absent when the walk ended first) and theirnote, verbatim.about_unix_msis thetaken_at_unix_msof the report it was taken against. The repair sheet reads the repair’s last walk.RDMBench wire log line
One line of a wire log (JSON Lines) —
wire/<time>-wire.jsonlin the captures folder, or the file--record=FILEnames. The first line is{ header }; every line after it is one exchange with an interface, in order: itskind(request,patient,discovery,dmx_hold,dmx_stop), the bytes sent and the bytes that came back as hex,outcome(on_time,late,none,error), andat_us/elapsed_usin microseconds. The bytes are the record: nothing in the file is a decoded reading of them, so it can be checked against E1.20 directly and attached to a report to a manufacturer.