It never resolves a value it cannot read
A revised figure rendered over the one it replaced reads as 2412 months. It is either 24 or 12. Both are returned, neither is chosen, and the report says why.
A regression suite is not a quality badge. It is a list of the ways a tool has been wrong, written down so it cannot be wrong that way again. This is ours, in full.
Run 15 October 2026. Node v24.19.0. Engine version 0.2.0. Generated from the run, not typed.
The suite runs on a contract that ships with the software, so it passes on a clean copy with no private files present. Anyone holding the software package reproduces this page with npm test.
| Group | Checks |
|---|---|
| It knows what it is looking at | 4 |
| It refuses clause verdicts on an unsigned document | 4 |
| Parties are not swapped | 6 |
| Appendix table | 9 |
| Collisions are reported, never resolved | 7 |
| An appendix that opens with a label above its first numbered row | 3 |
| Payment milestones | 5 |
| Terms survive the merge into the profile | 4 |
| Compliance plan | 7 |
| Replan, the delay scenario | 8 |
| Risk register on an adversarial subcontract | 19 |
| The register does not cry wolf | 2 |
| It says so when it cannot analyse something | 2 |
| Arabic survives the PDF reader | 2 |
| A short form contract that announces itself is not refused | 3 |
| The readability test measures whitespace, not a letter | 4 |
| Workforce, Saudi Labour Law pack | 9 |
| Article 117, the sick leave year | 6 |
| Article 80(7), consecutive absence | 9 |
| Article 80(7), intermittent absence | 6 |
| Live countdown before anything is breached | 3 |
| Excused absence does not start the clock | 1 |
| Sick leave banding, Article 117 | 2 |
| Nothing wrong, nothing raised | 1 |
| Report renders | 4 |
| Nothing private is reachable from the test path | 16 |
| Group | Checks |
|---|---|
| Classification: an enquiry is a tender even without tender vocabulary | 5 |
| Requirements: the three readers | 9 |
| The clock | 10 |
| Scope drift between revisions | 7 |
| Nothing about the bidder is invented | 10 |
| Arabic | 14 |
| A tender we issued is refused, not analysed backwards | 3 |
2 checks were skipped on this run because the optional database link was not running. Skipped checks are not counted.
| Group | Checks |
|---|---|
| Both libraries validate | 10 |
| Every verified article meets the sourcing rule | 6 |
| Amended articles carry the text in force, not the repealed one | 6 |
| Spot checks against the official wording | 4 |
| The validator catches what it is there to catch | 6 |
| Moving the traps into data changed nothing | 12 |
| Every trap still fires on its own wording | 31 |
| The phase 2 patterns stay quiet on fair drafting | 22 |
| Moving the bid stage traps into data changed nothing | 6 |
| Bid stage findings cite the Tenders Law | 12 |
| Citations are present and resolvable | 8 |
| The labour pack carries its articles | 2 |
| The new Tenders Law (Royal Decree M/76) is recorded and cited by tender date | 28 |
| The Arbitration Law is in the library and the dispute clauses cite it | 10 |
| Wordings found in public contracts the matchers had never seen | 11 |
| Arabic presentation forms are folded back to letters on the way in | 11 |
| A contract that is not a construction subcontract says so, and is not refused | 13 |
| An employment contract is named as one, and is not scanned as a subcontract | 11 |
| Local OCR stays on this computer | 6 |
| House rules | 6 |
| Group | Checks |
|---|---|
| Each trap now reads the meaning, not only the demo wording | 52 |
| Tightened after reading the new findings on the four public contracts | 5 |
| A restarting defects period with an aggregate cap is not "no end date" | 2 |
| Terms incorporated by reference and not supplied | 8 |
| Text is repaired before any pattern reads it | 8 |
| Word files: hyphens, field codes and automatic numbering | 7 |
| Short form instruments are contracts | 10 |
| Contents pages and annexures are not clause number clashes | 3 |
| A conditions file that quotes appendix rows is still the conditions | 1 |
| A forfeiture in the plan reaches the risk register | 3 |
| A pack missing the documents it incorporates is not complete | 3 |
A risk register that cannot point at the law is an opinion. 123 articles from 5 Saudi laws sit behind the findings, each one read from the official consolidated text at laws.boe.gov.sa, with the amendment marker checked and, where the article was amended, the wording in force taken from the amending decree. An article that has not been read that way is recorded as unverified with no text, and nothing cites it. Library last updated 2026-10-13.
| Law | Instrument | Articles |
|---|---|---|
| Civil Transactions Law | Royal Decree M/191 dated 29/11/1444H | 45 |
| Government Tenders and Procurement Law | Royal Decree M/128 dated 13/11/1440H | 27 |
| Government Tenders and Procurement Law (1448H) | Royal Decree M/76 dated 27/02/1448H | 29 |
| Labour Law | Royal Decree M/51 dated 23/8/1426H | 7 |
| Arbitration Law | Royal Decree M/34 dated 24/5/1433H | 15 |
The Implementing Regulations of the Tenders Law are not published as text on the official site, so they are recorded as unverified and carry no articles here. The new Tenders Law was read from the Official Gazette and every citation from it says so on its face until it appears on the official site.
A revised figure rendered over the one it replaced reads as 2412 months. It is either 24 or 12. Both are returned, neither is chosen, and the report says why.
Drafts, redlines and comparisons are detected. The plan still compiles so the work is not wasted, but nothing is presented as settled.
It is the negotiated document. Where it disagrees with the printed conditions, it wins, because that is what the parties actually agreed.
ok an excused absence raises nothing under 80(7) Sick leave banding, Article 117 ok 45 days sits in the three quarter band ok and it is flagged so payroll stops paying full Nothing wrong, nothing raised ok a clean record returns OK Report renders ok the report names the source file ok collisions are visible in the report ok no undefined leaks into the output ok the report is substantial ================================================================ 146 passed, 0 failed all green ok the Arabic deadline is read, in the afternoon not the morning ok the governing language warning reaches the verdict ok an Arabic month name parses ok a bare hour with no meridiem is flagged rather than assumed ok an explicit pm is resolved ok an Arabic afternoon marker is resolved ok an English-only document is not given an Arabic warning A tender we issued is refused, not analysed backwards ok an outgoing enquiry is detected ok and the module says it is the wrong tool rather than inverting every obligation ok silence about direction is reported as unknown, not assumed SilentBase link ============================================================ 58 passed, 0 failed ok it needs no API key ok a port setting cannot point it at another machine ok KONTRA_OCR=on still means the hosted provider ok and it is off unless asked for House rules ok src/kb uses only fs, path, https and its own files ok no node:sqlite, so Node 18 still runs it ok data/law/README.md exists ok and states its update date ok with the local server down it reads nothing ok and asks nothing of any address but 127.0.0.1 ================================================================ 221 passed, 0 failed all green ok a number used twice for different text in the same part still is A conditions file that quotes appendix rows is still the conditions ok two files that both carry appendix rows are labelled conditions and appendix A forfeiture in the plan reaches the risk register ok a notice that, if missed, means the time "shall not be extended" is raised as a time bar ok and the headline counts it as critical ok an insurance duty with a "waiver of subrogation" is not A pack missing the documents it incorporates is not complete ok completeness says the pack is incomplete ok and names what is missing ok a complete pack is not marked incomplete ================================================================ 102 passed, 0 failed all green
The confidentiality checks run on every build. The engine was developed against live subcontracts, and this is how we prove none of them travel with the code. Their own output is left out of the tail above, because it names what it checks for.
The NDA is signed before anything is sent. We reply the same working day.