Commit 851671a
fix(rules): BAA-027 detect 'agrees to indemnify' & 'defend, indemnify and hold harmless' covered-entity indemnity forms (v1.1.0)
v1.0.0 required "covered entity (shall|will) indemnif" with the verb sitting
directly against the subject, catching only the barest form. It missed the
three phrasings real indemnity clauses use: the "agrees to indemnify" verb,
and the standard tripartite "shall defend, indemnify and hold harmless" /
"shall defend and indemnify" where the "defend," / "defend and" clause breaks
the adjacency. Split into a covered-entity branch (preserving the original
hookless breadth) and a customer/client branch (retaining the HIPAA/BA hook),
each broadened with the new verb set, an intervening defend/reimburse clause,
and a bare "hold harmless" grant. exclude_if keeps the compliant negated /
carved-out forms silent.
Probe: 5 fire cases (incl. 3 previously-missed phrasings), 4 silent cases
(each-party-responsible, negated, no-obligation, reversed BA-indemnity).
Finding-delta over the contracts corpus and the v3/v4 goldens shows zero
fired-flips and zero finding-count changes — the broadening adds no FPs.
Mirrors the DPA-048 v1.1.0 fix for the GDPR controller-indemnity twin.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 07df462 commit 851671a
342 files changed
Lines changed: 387 additions & 342 deletions
File tree
- src/engine/rules/v3/baa
- 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 | |
|---|---|---|---|
| |||
487 | 487 | | |
488 | 488 | | |
489 | 489 | | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
552 | 552 | | |
553 | 553 | | |
554 | 554 | | |
| 555 | + | |
555 | 556 | | |
556 | 557 | | |
557 | 558 | | |
| |||
563 | 564 | | |
564 | 565 | | |
565 | 566 | | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
566 | 576 | | |
567 | | - | |
568 | | - | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
569 | 584 | | |
570 | 585 | | |
571 | 586 | | |
| |||
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