Commit 3c6e927
committed
fix(rules): finish the v3 sweep and record the guards that misfired
MSA-011 is the last confirmed instance: a clause that explicitly DECLINES to
allocate IP ownership names background and foreground IP — the very terms the
rule looks for — so leaving ownership deliberately unresolved scored clean.
Ownership then falls to default law, which for commissioned work usually
leaves it with the supplier: the outcome the customer is paying to avoid.
MSA-002 is REJECTED, not fixed. Its candidate denial was "Customer is not
entitled to control the defense" — but that is ordinary drafting, since the
indemnitor normally controls the defense. A guard there would accuse a standard
indemnity clause.
The narrowing MSA-011 needed makes the same point: my first frame included
"does not ASSIGN ownership", which is exactly what a well-drafted MSA says —
each party keeps its own background IP. Only verbs that decline to RESOLVE the
question count. Both the denial and that decoy are now in the harness.
docs/express-denial-sweep.md now covers v3 as well as v4, and gains a table of
the six guards written during this sweep that accused compliant drafting and
had to be narrowed — the § 2870 statutory carve-out, the combined bond-or-
surety waiver, landlord-side insurance, a claims carve-out, legal-hold
retention, and this one. The common thread is that the compliant clause very
often CONTAINS a negation, so a frame keyed on "not <verb>" alone will find it.
That table is the most useful thing in the document for anyone writing the next
guard.
23 rules fixed across v3 and v4. 340 goldens re-baselined, result_hash only.1 parent e4dd90b commit 3c6e927
343 files changed
Lines changed: 429 additions & 350 deletions
File tree
- docs
- src/engine/rules/v3
- msa-deep
- 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.
Lines changed: 21 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
37 | 54 | | |
38 | 55 | | |
39 | 56 | | |
| |||
135 | 152 | | |
136 | 153 | | |
137 | 154 | | |
138 | | - | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
139 | 159 | | |
140 | 160 | | |
141 | 161 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
411 | 411 | | |
412 | 412 | | |
413 | 413 | | |
414 | | - | |
| 414 | + | |
415 | 415 | | |
416 | 416 | | |
417 | 417 | | |
| |||
433 | 433 | | |
434 | 434 | | |
435 | 435 | | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
436 | 452 | | |
437 | 453 | | |
438 | 454 | | |
| |||
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