This is the most important paragraph on this page, so it is worth being blunt about the architecture.
A language model drafts the design. It is good at reading a messy brief and turning it into zones, counts and sensible equipment types. That is a language problem and it solves it well.
A separate rules engine runs the compatibility check. It is ordinary deterministic code matching against a hand-written list. The model cannot add to that list, cannot edit it, and cannot talk its way past it. Every rule was written from a manufacturer's own documentation, carries a link to that source, and is switched off until a person with the trade knowledge to judge it has signed it off by name.
The practical consequence: a warning you see is a warning somebody stood behind. Here is a real one, exactly as it is held in the rules file.
Blocking
Verified · live
access-control
Gallagher HBUS bus will not talk to a third-party reader
Gallagher's native HBUS reader bus only communicates with Gallagher's own readers. A third-party reader (for example HID) cannot connect over HBUS.
Requirement: an OSDP or Wiegand interface module must be ordered alongside the controller to bridge the third-party reader.
Rules currently written
38, across access control, CCTV, network and UK compliance
Rules a user can see
Only those signed off. An unreviewed rule is invisible to everyone, including the person who wrote it
Who can sign one off
A person, in a review step, on the record — never the model, and never automatically
What happens with no matching rule
The report says the combination is not covered, and names what it did check
Why this design and not a bigger model
Because the failure mode of a confident wrong answer in this trade is expensive and slow to surface. A tool that is silent where it doesn't know is more useful than one that is fluent everywhere. The rules list grows slowly and deliberately, one signed-off entry at a time. That is a feature.