tamperward 2.10.8 → 2.11.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 +28 -5
- package/dist/cli/index.js +997 -118
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -207,8 +207,11 @@ request would need the verify label; the self-gate stays a diff-time gate.
|
|
|
207
207
|
|
|
208
208
|
This guarantee depends on a protected and immutable base, required status checks, a
|
|
209
209
|
pinned Tamperward version, and label permissions restricted to trusted humans.
|
|
210
|
-
|
|
211
|
-
|
|
210
|
+
The default local verifier is checkpointed same-host execution, not OS isolation.
|
|
211
|
+
An optional digest-pinned container backend isolates final verification with no network,
|
|
212
|
+
host dependency tree, HOME, temp, credential or socket sharing. Tamperward still is not a
|
|
213
|
+
semantic-correctness oracle, and `tamperward run` does not pretend that a same-identity
|
|
214
|
+
host agent is isolated from the Docker daemon.
|
|
212
215
|
|
|
213
216
|
Full assumptions and residual risks: [SPEC.md](./SPEC.md),
|
|
214
217
|
[SECURITY-ENVELOPE.md](./SECURITY-ENVELOPE.md), and the
|
|
@@ -246,11 +249,26 @@ verify:
|
|
|
246
249
|
command: npm test
|
|
247
250
|
budget: 300
|
|
248
251
|
inputs: ['scripts/**'] # what the command DELEGATES to
|
|
252
|
+
# Optional stronger final-verification boundary:
|
|
253
|
+
# backend: container
|
|
254
|
+
# image: ghcr.io/acme/verifier@sha256:<64-hex-digest>
|
|
249
255
|
```
|
|
250
256
|
|
|
257
|
+
`backend: local` is the default and is reported as `checkpointed-local`. With
|
|
258
|
+
`backend: container`, the image must be digest-pinned and already present on the fixed
|
|
259
|
+
local Docker daemon; Tamperward never pulls during adjudication. The materialised
|
|
260
|
+
candidate/pristine tree is mounted read-only, the image owns runtime/dependencies,
|
|
261
|
+
network is disabled, HOME/tmp are private, and optional suite output belongs in
|
|
262
|
+
`$TAMPERWARD_OUTPUT_DIR` (`/workspace-out`). Images that declare Dockerfile
|
|
263
|
+
`VOLUME` paths are refused: Docker mounts those paths writable even with
|
|
264
|
+
`--read-only`, which would undermine the immutable verifier-image boundary. Image
|
|
265
|
+
`ENTRYPOINT` is also overridden; the pinned image supplies the runtime/dependencies,
|
|
266
|
+
while the trusted policy's `verify.command` remains the command that is adjudicated.
|
|
267
|
+
|
|
251
268
|
That block is itself a guarded surface: changing the command, lowering the budget,
|
|
252
|
-
narrowing `inputs`,
|
|
253
|
-
agent can
|
|
269
|
+
narrowing `inputs`, removing `backend: container`, or changing its pinned image is
|
|
270
|
+
flagged as policy weakening — a verifier an agent can redirect is no verification at
|
|
271
|
+
all.
|
|
254
272
|
|
|
255
273
|
`inputs` names the files the command *executes*, so the pristine run gets the
|
|
256
274
|
base's copy of them too. A command token that names a file present at the base is
|
|
@@ -266,9 +284,14 @@ The four primitives:
|
|
|
266
284
|
npx tamperward check --staged # pre-commit view
|
|
267
285
|
npx tamperward check --diff "main...HEAD" # CI view over the PR's commit range
|
|
268
286
|
npx tamperward verify --base main # pristine-suite re-execution
|
|
269
|
-
npx tamperward run -- <agent command...> #
|
|
287
|
+
npx tamperward run -- <agent command...> # same-host envelope (local verifier only)
|
|
270
288
|
```
|
|
271
289
|
|
|
290
|
+
The isolated backend is a **frozen-artifact final verifier**. `tamperward run`
|
|
291
|
+
deliberately refuses `backend: container` before launching the agent because the agent
|
|
292
|
+
would share the host identity that controls Docker. Use isolated `tamperward verify`
|
|
293
|
+
from trusted CI, or after an externally isolated agent hands off the frozen candidate.
|
|
294
|
+
|
|
272
295
|
### CLI reference
|
|
273
296
|
|
|
274
297
|
Every flag below is what the command's parser actually reads (`src/cli/index.ts`,
|