Rules
Specifications, not weights
Each rule is a written condition with a version. A finding names the rule and the version that produced it, and a change to any rule is visible in the rule-set version stamped on the next run.
The rule set in this build
| Rule | Name | Category | Severity | Version |
|---|---|---|---|---|
| RULE-IL-001 | Allocation number for input VAT deduction | Allocation numbers | Critical | 1.0.0 |
| RULE-IL-002 | VAT rate in force on the transaction date | VAT | Critical | 1.0.0 |
| RULE-WHT-001 | Withholding above the highest rate the regulations set | VAT | Anomaly | 2.0.0 |
| RULE-WHT-002 | Withholding recorded on a document the uniform file reserves for receipts | VAT | Anomaly | 1.0.0 |
| RULE-001 | Duplicate supplier invoice | Duplication | Critical | 1.2.0 |
| RULE-003 | Repeated journal line | Duplication | Review | 1.0.1 |
| RULE-004 | VAT arithmetic inconsistency | VAT | Critical | 2.0.0 |
| RULE-031 | Non-standard VAT rate | VAT | Anomaly | 1.1.0 |
| RULE-012 | Missing allocation number | Allocation numbers | Critical | 1.3.0 |
| RULE-013 | Malformed allocation number | Allocation numbers | Anomaly | 1.1.0 |
| RULE-007 | Invoice sequence gap | Invoice integrity | Review | 1.4.0 |
| RULE-009 | Credit note without matching invoice | Invoice integrity | Anomaly | 1.0.0 |
| RULE-017 | Material manual journal at period end | Journal integrity | Anomaly | 1.5.0 |
| RULE-021 | Dormant account reactivated | Journal integrity | Review | 1.0.2 |
| RULE-023 | Document dated outside the period | Period controls | Review | 1.2.0 |
| RULE-026 | Negative expense posting | Period controls | Review | 1.0.0 |
| RULE-034 | Counterparty identity conflict | Counterparty identity | Anomaly | 1.0.0 |
| RULE-F-001 | Manual journal at period end, large against the client's own journals | Journal integrity | Anomaly | 1.0.0 |
| RULE-F-002 | Counterparty appears for the first time and is immediately material | Counterparty identity | Review | 1.0.0 |
| RULE-F-003 | Account dormant in the previous period becomes materially active | Journal integrity | Review | 1.0.0 |
| RULE-F-004 | The same period-end adjustment appears in consecutive periods | Journal integrity | Review | 1.0.0 |
Versioning
- A rule's version changes whenever its conditions change.
- A finding stores the rule version it was produced by, so findings from an earlier run remain attributable to the specification that raised them.
- The rule-set version on a run is derived from every enabled rule's id and version, so enabling or disabling a rule also changes it.
Configuration
Thresholds are configuration, editable per workspace and shown next to the findings they produced. When the configuration differs from the run on screen, VLDTION shows the difference and offers to re-validate; review notes and statuses are carried forward.
| Setting | Default in this build |
|---|---|
| Standard VAT rate | 18% |
| VAT rounding tolerance | ₪1.00 |
| Allocation threshold | ₪20,000.00 |
| Journal materiality | ₪100,000.00 |
| Period-end window | 3 days |
| Dormancy window | 9 months |
These defaults belong to development rules
What a rule depends on
Every rule declares the fields it needs. When a source format does not carry one of them, the engine does not run the rule: it reports insufficient data for those records and names the missing field. A cross-period rule declares that it needs the previous period, and reports the same when the workspace holds none. This is why a VAT rule against an export with no VAT column reports nothing rather than passing everything.
Adding a rule
A rule is a file in the domain that implements the rule interface and is listed in the rule registry. It is then evaluated, counted, charted and rendered everywhere without further wiring, including in the evidence export, because a rule produces its own evidence attributes and trail.