Files
will 25592fa6c2
ci / test (push) Successful in 6m14s
WillTools 2026-09-09 -- clean snapshot of the development repo for review
History-free snapshot of the private development repository at 77a82eb.
Code, docs and the public catalogue only: no plant or job knowledge
layers, no client, job or producer names (tools/scrub.py clean against
the widened term list; a second word-level grep clean). The intro deck is
left out because its slide images cannot be checked for job drawings.
2026-09-09 08:35:15 -05:00
..

knowledge/ in this checkout

The plant layer and the job layer are not here — never were, never will be in a colleague distribution. catalogue.yaml is here, but it is a carve-out, not the owner's real file: tools/make_dist.py's build_catalogue_carveout() reads the real one and re-emits only the branches that are trade-standard or that are this tool's own built-in configuration, never a manufacturer's product rating. Read the header at the top of catalogue.yaml itself for the exact list of what's in and what's out, and why. catalogue.yaml.template is a separate thing: a blank-value authoring template for building a real knowledge layer from scratch, not what this carve-out is built from.

Why

WillTools reads its facts in layers, each overriding the one before it:

layer where what it is
knowledge.DEFAULTS in the code what the tool assumes when nobody has said
knowledge/catalogue.yaml here, carved out published hardware ratings — manufacturer data
plant layer %APPDATA%\WillTools\knowledge.yaml one office's naming conventions, casting-bed rails, parameter names
job layer <model folder>/_ticketqc/knowledge.yaml what this job does differently
project config wherever the engineer put it the pinned, merged answer for one job

The plant and job layers, and catalogue-rationale.md, are either a specific office's private template or narrate real measured incidents — neither belongs in a colleague trial. The catalogue's two real capacity tables (catalogue.inserts, connectors.products) ship empty for the same reason a manufacturer's rating is not this tool's to redistribute. Ask whoever gave you this checkout for the real layers, and the real catalogue, once you are ready to point the tools at a real job.

What runs without the missing pieces

Everything that does not need a lookup: unit conversion, the ribbon itself, Self Check, and — outside Revit entirely — panellift's handling calculations, which read a frozen job file and never touch knowledge/ at all (see examples/example-panel.job.json).

Everything the shipped carve-out covers also runs for real: face designations, the up-end orientation rule, ASTM rebar grades, and the whole shop-ticket QC checklist (row ids, grades, which check answers which row) — none of that needs the real, private file. What stands down cleanly is only what actually needs a manufacturer's number: a lifting insert's rated capacity, a sandwich-wall tie's rated capacity, and anything downstream of either. python tools/setup_machine.py --check reports this state as a pass, not a failure — a distribution with the carve-out and no product data is an expected, first-class state, not a broken one. Self Check reports the same thing inside Revit, row by row.

Running the test suites here

CONTRIBUTING.md's "What does not run in a trial install" has the full accounting. Short version: both suites' tests/conftest.py carries an appended, auto-detecting block (written by tools/make_dist.py's append_test_exclusions()) that skips, by name and with a reason, the handful of tests that assert the owner's real published numbers rather than this tool's logic. Drop in the real knowledge/catalogue.yaml and those tests un-skip on their own — nothing to edit.

Getting real knowledge layers

Ask the owner. They come from a second, private repository that is not part of this one on purpose — see the top of .gitignore in the repo root for why the split exists at all.