tamperward 2.19.0 → 2.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -577,12 +577,12 @@ option can never be reinterpreted as the agent command.
577
577
 
578
578
  ### The rules
579
579
 
580
- Seventeen rules are specified and sixteen ship (see the table in
580
+ Eighteen rules are specified and seventeen ship (see the table in
581
581
  [SPEC.md](./SPEC.md)). The families: test protection (`test-deletion`,
582
582
  `test-skip`, `test-content-removal`, plus the warning-only JS/TS
583
583
  `assertion-weakening` heuristic), verification-signal protection
584
584
  (`coverage-lowering`, `snapshot-rewrite`, `snapshot-only-rewrite`), suppression
585
- (`ts-any-cast`, `ts-any-launder`, `lint-suppression`), pipeline protection
585
+ (`ts-any-cast`, `ts-any-launder`, `ts-cast-growth`, `lint-suppression`), pipeline protection
586
586
  (`ci-tampering`, `hook-tampering`, `no-verify`), and the effect/outcome layers
587
587
  (`transient-protected-mutation`, `pristine-verification`, plus the `run` envelope).
588
588
  `test-skip` keeps the established regex coverage for diff-only inputs and non-JS
@@ -598,6 +598,12 @@ specificity removed, or a pure assertion removed from the same suite-qualified
598
598
  test. It measured 12/12 true-positive fires with 0/20 false positives on the
599
599
  committed detector-specific replay and remains `warn`; `guard-removal` is still
600
600
  reserved with no detector, and `ts-any-launder` is a permanent warn.
601
+ `ts-cast-growth` (2.20.0) is the assertion budget: net growth of ordinary `as T` /
602
+ `<T>x` / `x!` assertions in non-test source, counted on the AST net of casts the same
603
+ change removed, reported as a warning that never blocks by default. It fires on 8.7%
604
+ of legitimate mainline pairs across four real TypeScript libraries
605
+ (`harness/fp-study/CAST-GROWTH-CORPUS.md`), so block is closed by corpus; the same
606
+ pass removed every assertion from TamperWard's own `src/` (`docs/CAST-INVENTORY.md`).
601
607
 
602
608
  ## What Tamperward does not do
603
609