tamperward 2.16.3 → 2.16.4

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
@@ -220,11 +220,12 @@ BROKEN platform posture rather than misdiagnosing it as a missing Python install
220
220
  `--agent-budget <seconds>`
221
221
  adds an operator-owned wall-clock boundary around the same lifecycle (separate from the
222
222
  verifier's `--budget`). A clean timeout is `AGENT_TIMEOUT` / exit 124; enforcement or
223
- cannot-adjudicate still outranks it. Windows retains `taskkill /T /F`; other non-Linux
224
- platforms retain process-group/fingerprint/quiescence safeguards but do not claim the Linux
225
- subreaper boundary. A detached process that escapes those weaker platform controls remains
226
- an explicit residual tracked in **#379**, not part of the Linux guarantee.
227
- Dependency-attestation reuse remains disabled on all platforms.
223
+ cannot-adjudicate still outranks it. **From 2.16.4, `tamperward run` is Linux-only
224
+ for authoritative lifecycle certification.** Windows, macOS and other non-Linux platforms
225
+ fail closed before the agent starts because this release has no OS primitive there that can
226
+ prove the detached execution domain is drained. Standalone `tamperward check` and
227
+ `tamperward verify` remain available on those platforms. Dependency-attestation reuse
228
+ remains disabled on all platforms.
228
229
 
229
230
  `tamperward verify` materialises two temporary copies — they are **not
230
231
  sandboxes**, and both execute agent-controlled code. The visible copy runs the
package/dist/cli/index.js CHANGED
@@ -10601,6 +10601,9 @@ function parseVerify(args) {
10601
10601
  // src/cli/run.ts
10602
10602
  var out = (s) => process.stdout.write(s + "\n");
10603
10603
  var err = (s) => process.stderr.write(s + "\n");
10604
+ function authoritativeRunLifecyclePlatform(platform = process.platform) {
10605
+ return platform === "linux";
10606
+ }
10604
10607
  function canReuseAdjacentDependencyAttestation(_lifecycleOwned, _platform = process.platform) {
10605
10608
  return false;
10606
10609
  }
@@ -11211,6 +11214,13 @@ function runEnvelope(opts) {
11211
11214
  return 2;
11212
11215
  }
11213
11216
  }
11217
+ const lifecyclePlatform = opts.lifecyclePlatformOverride ?? process.platform;
11218
+ if (!authoritativeRunLifecyclePlatform(lifecyclePlatform)) {
11219
+ err(
11220
+ `tamperward run: authoritative agent lifecycle ownership is unavailable on ${lifecyclePlatform}; this release only certifies run on Linux with the trusted subreaper/ECHILD backend. Failing closed before the agent starts. Use standalone tamperward check/verify or an isolated execution domain.`
11221
+ );
11222
+ return 2;
11223
+ }
11214
11224
  const verifierBackend = prepareVerifierBackend(frozenPolicy.verify);
11215
11225
  out(`tamperward run \u2014 trusted base ${base.slice(0, 10)}; agent exit is untrusted.`);
11216
11226
  out(`tamperward run \u2014 verifier backend: ${verifierBackendSummary(verifierBackend)}`);
@@ -11427,14 +11437,14 @@ function lifecyclePlatformCheck(platform = process.platform, linuxPython = platf
11427
11437
  if (platform === "win32") {
11428
11438
  return {
11429
11439
  id: "platform",
11430
- state: "WARN",
11431
- detail: "Windows: taskkill /T /F is a best-effort tree fallback, not the Linux subreaper/ECHILD boundary; detached-domain residual tracked in #379 and verifier-entry attestation reuse stays disabled"
11440
+ state: "BROKEN",
11441
+ detail: "Windows: authoritative tamperward run lifecycle ownership is unavailable; taskkill /T /F is only a best-effort tree fallback, so run fails closed before agent start. Standalone check/verify remain available."
11432
11442
  };
11433
11443
  }
11434
11444
  return {
11435
11445
  id: "platform",
11436
- state: "WARN",
11437
- detail: `${platform}: POSIX process-group/fingerprint/quiescence safeguards are available, but the Linux subreaper/ECHILD detached-domain boundary is unavailable; residual tracked in #379 and verifier-entry attestation reuse stays disabled`
11446
+ state: "BROKEN",
11447
+ detail: `${platform}: authoritative tamperward run lifecycle ownership is unavailable because this release has no subreaper/ECHILD-equivalent backend; run fails closed before agent start. Standalone check/verify remain available.`
11438
11448
  };
11439
11449
  }
11440
11450
  var VERIFY_COMMAND = /\btamperward(?:@\S+)?\s+verify\b/;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tamperward",
3
- "version": "2.16.3",
3
+ "version": "2.16.4",
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",