Machine-readable models

The requirements, values, and provenance records behind the specification clauses. CAD, BOM, and requirements tools read these files, not the PDF tables.

File Holds Generator
document.json The document model: parts and clauses with their pages, identifier prefixes, roles and interfaces, features, annexes, data files, and design references tools/model.py loads it with every other file here; every generator, builder, card, test, and the site read the model
requirements.json The requirements register: every requirement's level, product types, feature, the role or interface it binds, how it is verified (Annex G), clause, provenance, and rationale (Annex P) tools/requirements.py validates it, cross-checks every clause citation, and writes spec/requirements.md; tools/document.py writes the structure tables of the front matter and the annexes
register.lock.json The identifiers and text as last locked: an identifier is never reused or resequenced, and a changed requirement gets a new one python tools/model.py --lock rewrites it deliberately; the checks fail on any other change
standards.json, module.json, rail.json, insert.json, screw.json, screw-fits.json Mechanical figures and their provenance tools/standards.py, module.py, rail.py, insert.py, insert_card.py, screw.py check them and draw the figure cards
signals.json Patch and bus signal classes and their ranges; the external port names of Annex I are marked normative: false tools/signals.py injects the class tables into clauses 6.6 and 7.2 and Annex I
video_timings.json The video timing formats; the raster figures match the timing contract in tests/fixtures/ tools/video_timings.py injects clause 7.3
video_75.json, dc_12.json the VID-75 video reference ports (COAX-IN, COAX-OUT, COAX-PASSTHRU, COAX-LOOPTHRU) and star topology; PWR-DC12 entry variants, multi-pin pin maps, and distribution outputs tools/video_75.py, dc_12.py inject clauses 7.4 and 6.5
power_domains.json The power domains of clause 6.1: rails and their claim-file keys, how each is made, distributed, and taken, the clauses, and each domain's ripple limit (SUP-007) tools/power_domains.py injects the tables of clauses 6.1 and 6.2; claim.py and row_budget.py read the rails
analog_6.json PWR-A6: the voltage windows, ripple and entry limits, cable limits, and the A6-VH3 connector tools/analog_6.py injects the tables of clause 6.8
power_ribbon.json The ribbon length and conductor limits of BUS-015
claim.schema.json, examples/claim-*.yaml The claim file a product publishes: product type, features, and every figure the register requires; a worked example per product type tools/claim.py --check validates a claim file and prints the claim line
survey/ A copy of the eis-reference module, case, supply, and bus board survey, with source.json naming the commit it was copied at; informative, no requirement reads it tools/survey.py writes Annex F and the depth card from it; --pull refreshes the copy from an eis-reference checkout, and --check fails when Annex F is stale or a clause quotes a figure the data no longer gives
row_budget.schema.json, examples/row_budget_two_row.yaml Informative row-budget worksheet, budgeted per power domain: schema and example tools/row_budget.py --check

License: CC BY 4.0 on the curated data and expression (see COPYRIGHT.md and LICENSE). Code that reads or renders these files (tools/*.py) is MIT (LICENSE-CODE).