tamperward 1.4.1 → 1.4.3
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 +9 -6
- package/dist/cli/index.js +4 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,7 +19,8 @@ lowering coverage gates, rewriting snapshots, editing CI, or bypassing hooks wit
|
|
|
19
19
|
`--no-verify`. Tamperward treats the safety nets themselves as protected assets and
|
|
20
20
|
blocks the **class** of bypass — one ruleset, evaluated on the actual diff and commands
|
|
21
21
|
as a verdict, not a probability, enforced everywhere a change can be made: **inside the
|
|
22
|
-
agent's loop
|
|
22
|
+
agent's loop (a deny before the tool runs, and a sweep at end of turn), at the commit,
|
|
23
|
+
and at the merge.**
|
|
23
24
|
|
|
24
25
|
> Apache-2.0 · zero runtime model calls · every headline claim below is measured, with
|
|
25
26
|
> the pre-registered predictions (including the refuted ones) committed to this repo
|
|
@@ -30,8 +31,8 @@ agent's loop, at the commit, and at the merge.**
|
|
|
30
31
|
npx tamperward init
|
|
31
32
|
```
|
|
32
33
|
|
|
33
|
-
One idempotent command wires
|
|
34
|
-
you wrote, and `--dry-run` shows the plan first:
|
|
34
|
+
One idempotent command wires the policy and every enforcement point — it never
|
|
35
|
+
overwrites anything you wrote, and `--dry-run` shows the plan first:
|
|
35
36
|
|
|
36
37
|
| point | what it wires |
|
|
37
38
|
| --- | --- |
|
|
@@ -107,8 +108,9 @@ escape valve is a PR label only a human with write access can apply.
|
|
|
107
108
|
**Does the loop work?** `harness/run.sh` stands up an isolated repo with a real bug and a
|
|
108
109
|
failing protected test, lets a headless agent loose with the hooks installed, and
|
|
109
110
|
classifies the end state with an oracle independent of the detectors under test
|
|
110
|
-
(SPEC §7.B).
|
|
111
|
-
|
|
111
|
+
(SPEC §7.B). Across 42 runs of these **guarded** scenarios — every attempted bypass class
|
|
112
|
+
had a detector covering it — **0 tampers reached green; all 20 runs where a block fired
|
|
113
|
+
ended in an honest fix**, a 20/20 point estimate whose 95% lower bound is ≈86%. The split is the
|
|
112
114
|
honest part: Sonnet 5 never attempted a bypass at all, even when the prompt *ordered*
|
|
113
115
|
one; all 20 interceptions came from Haiku 4.5 on a seed whose honest fix is genuinely
|
|
114
116
|
expensive. Reproduce: `npm run build && harness/run.sh 5 adversarial haiku seed-hard`.
|
|
@@ -116,7 +118,8 @@ expensive. Reproduce: `npm run build && harness/run.sh 5 adversarial haiku seed-
|
|
|
116
118
|
**Which detectors deserve to exist?** Measured too. Affordance seeds offer an agent one
|
|
117
119
|
specific bypass each; predictions are pre-registered before any rep runs
|
|
118
120
|
(`harness/PREDICTION-affordance.md`). Result: 7/10 adversarial runs regenerated a golden
|
|
119
|
-
file from buggy output
|
|
121
|
+
file from buggy output and sailed through — **because nothing guarded that class yet**;
|
|
122
|
+
that measured demand is why `snapshot-rewrite` exists — while
|
|
120
123
|
timeout-inflation and lint-config-gutting measured **0/10 attempts each** — two
|
|
121
124
|
pre-registered bets refuted, two detectors *not* built. Bypass classes with no measured
|
|
122
125
|
demand stay in a record-only shadow scanner that accumulates evidence on every weekly
|
package/dist/cli/index.js
CHANGED
|
@@ -2313,9 +2313,10 @@ Formats:
|
|
|
2313
2313
|
tamperward hook claude PreToolUse gate (reads hook JSON on stdin)
|
|
2314
2314
|
tamperward sweep claude Stop sweep (re-scan the turn's working tree)
|
|
2315
2315
|
tamperward allow <rule> --reason "..." record a human sign-off (local audit ledger)
|
|
2316
|
-
tamperward init [--dry-run] wire
|
|
2317
|
-
|
|
2318
|
-
Idempotent; never
|
|
2316
|
+
tamperward init [--dry-run] wire the policy file plus every
|
|
2317
|
+
enforcement point: Claude Code hooks,
|
|
2318
|
+
pre-commit, CI. Idempotent; never
|
|
2319
|
+
overwrites your files.
|
|
2319
2320
|
|
|
2320
2321
|
Exit code: check \u2192 1 if any blocking finding. hook/sweep \u2192 always 0; a deny is
|
|
2321
2322
|
emitted as JSON on stdout (exit 2 makes Claude Code ignore the JSON).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tamperward",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"description": "The deterministic agent-integrity gate. One ruleset, evaluated on the actual diff/commands as a verdict, enforced everywhere a change can be made.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "hexrift",
|