Commit cfd142e
fix(rules): DPA-049 detect 'be responsible for' / 'pay' / passive 'borne by Controller' audit-cost allocation (v1.1.0)
v1.0.0 required the exact verb "bear" ("controller shall bear all costs of
any audit") or "at controller's expense", and missed the common variants:
the active verbs "shall be responsible for" / "shall pay" / "shall cover"
all audit costs, and the passive voice "all costs of any audit shall be
borne by the Controller". Add an active-verb pattern and a passive pattern,
both still requiring an all-encompassing quantifier (all / entire / full /
any) so a partial-cost split is not flagged. The existing except/unless
carve-out guards are unchanged.
Probe: 5 fire cases (2 baseline + 3 previously-missed), 4 silent cases
(except-carve-out, each-party-own-cost, shared-equally, reversed processor-
pays-on-breach). Finding-delta over the contracts corpus and v3/v4 goldens:
zero fired-flips, zero finding-count changes.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 35337a7 commit cfd142e
342 files changed
Lines changed: 380 additions & 340 deletions
File tree
- src/engine/rules/v3/dpa-gdpr
- tests/golden
- v3/expected
- v4
- bundle-expected
- expected
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
593 | 593 | | |
594 | 594 | | |
595 | 595 | | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
984 | 984 | | |
985 | 985 | | |
986 | 986 | | |
| 987 | + | |
987 | 988 | | |
988 | 989 | | |
989 | 990 | | |
| |||
995 | 996 | | |
996 | 997 | | |
997 | 998 | | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
998 | 1006 | | |
999 | 1007 | | |
1000 | 1008 | | |
| 1009 | + | |
| 1010 | + | |
1001 | 1011 | | |
1002 | 1012 | | |
1003 | 1013 | | |
| |||
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
0 commit comments