@atlasauth/pca-control-evals 0.1.0 → 0.2.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.
Files changed (3) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -27
  3. package/package.json +27 -3
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Atlas Authorization
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,45 +1,51 @@
1
1
  # @atlasauth/pca-control-evals
2
2
 
3
- An **empirical adversarial safety bound** for Proof-Carrying Authority, complementing PCA's analytic one.
3
+ An empirical adversarial safety bound for Proof-Carrying Authority (PCA), complementing PCA's analytic one.
4
4
 
5
- PCA already proves an analytic bound: between two human co-signs, the total risk of machine-only actions
6
- is at most `bMax/κ` — no matter what the agent does, even if fully compromised (see `@atlasauth/pca`
7
- `safetyBound()` / `risk.ts`). That is a theorem about the *budget*. It does not tell you whether the
8
- controls actually catch a given adversarial strategy, or how much legitimate work they allow.
5
+ PCA proves an analytic bound: between two human co-signs, the total risk of machine-only actions is at most `bMax/kappa`, whatever the agent does (see `safetyBound()` in `@atlasauth/pca`). That is a statement about the budget. It does not tell you whether the controls actually catch a given adversarial strategy, or how much legitimate work they allow. This package adds the empirical side as a red-team and blue-team control evaluation, following the AI Control methodology of Greenblatt, Shlegeris, Sachan and Roger ([arXiv:2312.06942](https://arxiv.org/abs/2312.06942)) and Korbak et al. ([arXiv:2501.17315](https://arxiv.org/abs/2501.17315)).
9
6
 
10
- This package adds the empirical side, as a **red-team / blue-team control evaluation**, following
11
- Redwood Research's *AI Control* methodology:
7
+ A possibly-misaligned red agent emits a sequence of intended actions (slow-burn under the budget, an over-cap action, an off-policy verb, a high-taint exfiltration flow, a replay). The blue control protocol is PCA's real control surface: `reviewAction` (predicates, caveats, step-up tiers), the metered trust budget, DLP, and the behavioral immune system. It decides allow, step-up or deny for each action.
12
8
 
13
- - Greenblatt, Shlegeris, Sachan, Roger — **"AI Control: Improving Safety Despite Intentional Subversion"**, arXiv:2312.06942.
14
- - Korbak et al. — **"A sketch of an AI control safety case"**, arXiv:2501.17315.
9
+ - safety: the fraction of episodes in which red could not cause an unacceptable outcome (a catastrophic action blue let through);
10
+ - usefulness: the fraction of legitimate actions blue allowed.
15
11
 
16
- A possibly-misaligned **red** agent emits a sequence of intended actions (slow-burn under the budget, an
17
- over-cap action, an off-policy verb, a high-taint exfiltration flow, a replay). A **blue** control
18
- protocol — which here *is* PCA's real control surface: `reviewAction`/`dryRun` (predicates + caveats +
19
- step-up tiers), the metered trust budget (`admit`/`cost`/`leak`), DLP (`evaluateDlp`), and the
20
- behavioral immune system (`observe`/`assess`/`adapt`) — decides allow / step-up / deny per action.
12
+ ## Install
21
13
 
22
- - **safety** = fraction of episodes in which red could NOT cause an unacceptable outcome (a catastrophic
23
- action blue let through);
24
- - **usefulness** = fraction of legitimate actions blue allowed.
14
+ ```sh
15
+ npm i @atlasauth/pca-control-evals
16
+ ```
17
+
18
+ Depends on `@atlasauth/pca` (installed automatically).
19
+
20
+ ## Usage
25
21
 
26
22
  ```ts
27
23
  import { exampleControlEval } from '@atlasauth/pca-control-evals';
28
24
 
29
25
  const report = exampleControlEval(); // deterministic
30
- // { safety: 1, usefulness: 1, analyticBound: 1,
31
- // catches: { predicate, caveat, dlp, budget, immune, replay },
26
+ // { safety, usefulness, analyticBound, episodes,
27
+ // catches: { replay, predicate, caveat, dlp, budget, immune },
32
28
  // byStrategy: { 'over-cap', 'off-verb', 'slow-burn', 'taint-exfil', 'replay', 'immune-probe', 'benign' } }
33
29
  ```
34
30
 
35
- Plug in your own `RedPolicy[]`, `BluePolicy`, and `Env`, then call `controlEval(reds, blue, env, { episodes, seed })`.
31
+ Plug in your own suite with `controlEval(reds, blue, env, { episodes, seed })`:
32
+
33
+ ```ts
34
+ import { controlEval, exampleBlue, exampleEnv, EXAMPLE_RED_POLICIES } from '@atlasauth/pca-control-evals';
35
+
36
+ const report = controlEval(EXAMPLE_RED_POLICIES, exampleBlue(), exampleEnv, { episodes: 20, seed: 7 });
37
+ ```
38
+
39
+ A `RedPolicy` is `{ name, strategy, gen({ env, rng, now }) => RedAction[] }`, a `BluePolicy` bundles the agent with optional DLP, immune and budget settings, and an `Env` decides which allowed actions count as unacceptable. Everything is deterministic given a seed.
36
40
 
37
41
  ## This is a harness, not a proof
38
42
 
39
- The number is an **empirical bound over a MODELED adversary and a MODELED environment**, and it is only
40
- ever as strong as the red policies and the environment you encode. A control protocol catches only the
41
- hazards its predicates / DLP classes / budget / immune signals actually represent — `gapAwareEnv` +
42
- `gapExploitRed` deliberately construct an in-policy, zero-taint, in-cap hazard no control encodes, and
43
- `safety` drops to 0 against it. Publishing a real guarantee needs a realistic environment and a
44
- realistic red suite. This **complements**, and does not replace, the analytic `Σrisk ≤ bMax/κ` bound:
45
- the two answer different questions. Everything is deterministic given a seed.
43
+ The number is an empirical bound over a modeled adversary in a modeled environment, and it is only as strong as the red policies and environment you encode. A control protocol catches only the hazards its predicates, DLP classes, budget and immune signals actually represent. `gapAwareEnv` with `gapExploitRed` deliberately builds an in-policy, zero-taint, in-cap hazard that no control encodes, and `safety` drops to 0 against it. A real guarantee needs a realistic environment and a realistic red suite. This complements, and does not replace, the analytic `bMax/kappa` bound; the two answer different questions.
44
+
45
+ Cryptography in PCA is unaudited.
46
+
47
+ Source and issues: https://github.com/Atlas-Authorization/pca
48
+
49
+ ## License
50
+
51
+ MIT - see LICENSE
package/package.json CHANGED
@@ -1,7 +1,27 @@
1
1
  {
2
2
  "name": "@atlasauth/pca-control-evals",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Empirical adversarial control-evaluation harness for PCA: a seeded red-team/blue-team game (Redwood-style AI Control) that scores safety = P(a possibly-misaligned agent cannot cause an unacceptable outcome) + usefulness against PCA's verifier/budget/step-up/DLP/immune controls. Complements the analytic Σrisk ≤ bMax/κ bound.",
5
+ "keywords": [
6
+ "ai control",
7
+ "red team",
8
+ "evaluation",
9
+ "safety",
10
+ "agent authorization",
11
+ "proof-carrying authority",
12
+ "pca",
13
+ "ai agents"
14
+ ],
15
+ "license": "MIT",
16
+ "homepage": "https://github.com/Atlas-Authorization/pca#readme",
17
+ "bugs": {
18
+ "url": "https://github.com/Atlas-Authorization/pca/issues"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/Atlas-Authorization/pca.git",
23
+ "directory": "packages/pca-control-evals"
24
+ },
5
25
  "main": "./dist/index.js",
6
26
  "types": "./dist/index.d.ts",
7
27
  "exports": {
@@ -12,7 +32,7 @@
12
32
  "./package.json": "./package.json"
13
33
  },
14
34
  "dependencies": {
15
- "@atlasauth/pca": "0.1.0"
35
+ "@atlasauth/pca": "0.2.0"
16
36
  },
17
37
  "devDependencies": {
18
38
  "typescript": "^5.6.3",
@@ -20,8 +40,12 @@
20
40
  },
21
41
  "files": [
22
42
  "dist",
23
- "README.md"
43
+ "README.md",
44
+ "LICENSE"
24
45
  ],
46
+ "engines": {
47
+ "node": ">=20"
48
+ },
25
49
  "publishConfig": {
26
50
  "access": "public"
27
51
  },