Policy & validation
Is this report ready to submit?
A compliance gate, not a spend-control system. No documented spend limits exist, so nothing here judges whether an amount was reasonable — only whether the report is complete, internally consistent and properly documented. Thresholds slot in later as rows, not as code.
Submission checklist
Grouped by severity, blocking first, every item deep-linked to its line. This replaces the workbook’s single TRUE/FALSE control cell, which named no field and checked only two of five entities.
Lines on this report
Every checklist item links here. Each line shows the findings against it.
The rule set, as data
Every rule below is a row in policy_rule. The expression is a JSON
predicate over derived facts; nothing about a rule lives in code. Adding one — a
threshold included — is an insert.
Add a rule without touching code
This is the extensibility requirement, live. Pick a fact, an operator and a value; the rule is inserted and evaluated against the loaded report immediately. Nothing is compiled, nothing is redeployed.
{fact} interpolates; {fact:money} and
{fact:pct} format.
Acceptance checks
Executed against the real rule set on scratch reports. Criterion 14 measures this page’s own layout, so resize the window and re-run to test 375px and 1440px.