approval-md 0.2.0 → 0.3.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 (235) hide show
  1. package/README.md +63 -24
  2. package/SPEC.md +57 -11
  3. package/dist/src/channels/contract.d.ts +34 -1
  4. package/dist/src/channels/contract.js +200 -7
  5. package/dist/src/channels/contract.js.map +1 -1
  6. package/dist/src/channels/telegram.d.ts +123 -11
  7. package/dist/src/channels/telegram.js +218 -23
  8. package/dist/src/channels/telegram.js.map +1 -1
  9. package/dist/src/channels/web.d.ts +9 -0
  10. package/dist/src/channels/web.js +17 -0
  11. package/dist/src/channels/web.js.map +1 -1
  12. package/dist/src/cli/amend.js +214 -30
  13. package/dist/src/cli/amend.js.map +1 -1
  14. package/dist/src/cli/attest.d.ts +9 -0
  15. package/dist/src/cli/attest.js +134 -7
  16. package/dist/src/cli/attest.js.map +1 -1
  17. package/dist/src/cli/channel-telegram.d.ts +99 -26
  18. package/dist/src/cli/channel-telegram.js +311 -13
  19. package/dist/src/cli/channel-telegram.js.map +1 -1
  20. package/dist/src/cli/channel.d.ts +9 -0
  21. package/dist/src/cli/channel.js +9 -0
  22. package/dist/src/cli/channel.js.map +1 -1
  23. package/dist/src/cli/codex-bridge.d.ts +819 -0
  24. package/dist/src/cli/codex-bridge.js +1607 -0
  25. package/dist/src/cli/codex-bridge.js.map +1 -0
  26. package/dist/src/cli/codex.d.ts +1 -1
  27. package/dist/src/cli/codex.js +304 -7
  28. package/dist/src/cli/codex.js.map +1 -1
  29. package/dist/src/cli/daemon.js +4 -1
  30. package/dist/src/cli/daemon.js.map +1 -1
  31. package/dist/src/cli/doctor.js +467 -12
  32. package/dist/src/cli/doctor.js.map +1 -1
  33. package/dist/src/cli/execute.js +25 -2
  34. package/dist/src/cli/execute.js.map +1 -1
  35. package/dist/src/cli/help.d.ts +6 -2
  36. package/dist/src/cli/help.js +165 -60
  37. package/dist/src/cli/help.js.map +1 -1
  38. package/dist/src/cli/hook-codex.d.ts +49 -1
  39. package/dist/src/cli/hook-codex.js +60 -1
  40. package/dist/src/cli/hook-codex.js.map +1 -1
  41. package/dist/src/cli/hook.d.ts +459 -3
  42. package/dist/src/cli/hook.js +1062 -114
  43. package/dist/src/cli/hook.js.map +1 -1
  44. package/dist/src/cli/import.js +1 -1
  45. package/dist/src/cli/import.js.map +1 -1
  46. package/dist/src/cli/main.js +5 -3
  47. package/dist/src/cli/main.js.map +1 -1
  48. package/dist/src/cli/policy-apply.d.ts +195 -0
  49. package/dist/src/cli/policy-apply.js +573 -0
  50. package/dist/src/cli/policy-apply.js.map +1 -0
  51. package/dist/src/cli/policy.js +14 -1
  52. package/dist/src/cli/policy.js.map +1 -1
  53. package/dist/src/cli/preflight.d.ts +151 -13
  54. package/dist/src/cli/preflight.js +398 -41
  55. package/dist/src/cli/preflight.js.map +1 -1
  56. package/dist/src/cli/sandbox.js +17 -1
  57. package/dist/src/cli/sandbox.js.map +1 -1
  58. package/dist/src/cli/scaffold.d.ts +1 -1
  59. package/dist/src/cli/scaffold.js +1 -1
  60. package/dist/src/cli/setup-channel.d.ts +9 -0
  61. package/dist/src/cli/setup-channel.js +28 -1
  62. package/dist/src/cli/setup-channel.js.map +1 -1
  63. package/dist/src/cli/setup-common.d.ts +3 -1
  64. package/dist/src/cli/setup-common.js +3 -2
  65. package/dist/src/cli/setup-common.js.map +1 -1
  66. package/dist/src/cli/setup.d.ts +2 -0
  67. package/dist/src/cli/setup.js +94 -2
  68. package/dist/src/cli/setup.js.map +1 -1
  69. package/dist/src/cli/up.js +115 -51
  70. package/dist/src/cli/up.js.map +1 -1
  71. package/dist/src/cli/values.js +3 -4
  72. package/dist/src/cli/values.js.map +1 -1
  73. package/dist/src/cli/verb-registry.js +174 -9
  74. package/dist/src/cli/verb-registry.js.map +1 -1
  75. package/dist/src/cli/wordmark.d.ts +2 -2
  76. package/dist/src/cli/wordmark.js +2 -2
  77. package/dist/src/codex/broker.d.ts +229 -0
  78. package/dist/src/codex/broker.js +548 -0
  79. package/dist/src/codex/broker.js.map +1 -0
  80. package/dist/src/codex/runner.d.ts +178 -0
  81. package/dist/src/codex/runner.js +231 -0
  82. package/dist/src/codex/runner.js.map +1 -0
  83. package/dist/src/codex/serve.d.ts +56 -0
  84. package/dist/src/codex/serve.js +98 -0
  85. package/dist/src/codex/serve.js.map +1 -0
  86. package/dist/src/codex/workspace-commit.d.ts +219 -0
  87. package/dist/src/codex/workspace-commit.js +549 -0
  88. package/dist/src/codex/workspace-commit.js.map +1 -0
  89. package/dist/src/core/advance-cycle.d.ts +51 -0
  90. package/dist/src/core/advance-cycle.js +66 -2
  91. package/dist/src/core/advance-cycle.js.map +1 -1
  92. package/dist/src/core/agents-md.d.ts +20 -18
  93. package/dist/src/core/agents-md.js +33 -31
  94. package/dist/src/core/agents-md.js.map +1 -1
  95. package/dist/src/core/attest.d.ts +215 -0
  96. package/dist/src/core/attest.js +317 -7
  97. package/dist/src/core/attest.js.map +1 -1
  98. package/dist/src/core/audit.d.ts +18 -0
  99. package/dist/src/core/audit.js +13 -0
  100. package/dist/src/core/audit.js.map +1 -1
  101. package/dist/src/core/channel-owner.d.ts +213 -0
  102. package/dist/src/core/channel-owner.js +358 -0
  103. package/dist/src/core/channel-owner.js.map +1 -0
  104. package/dist/src/core/command-class.d.ts +154 -0
  105. package/dist/src/core/command-class.js +673 -20
  106. package/dist/src/core/command-class.js.map +1 -1
  107. package/dist/src/core/commit-guard.d.ts +272 -0
  108. package/dist/src/core/commit-guard.js +424 -0
  109. package/dist/src/core/commit-guard.js.map +1 -0
  110. package/dist/src/core/daemon-actor.d.ts +45 -0
  111. package/dist/src/core/daemon-actor.js +54 -0
  112. package/dist/src/core/daemon-actor.js.map +1 -0
  113. package/dist/src/core/dark-session.d.ts +109 -8
  114. package/dist/src/core/dark-session.js +266 -82
  115. package/dist/src/core/dark-session.js.map +1 -1
  116. package/dist/src/core/decision-refusal.d.ts +23 -2
  117. package/dist/src/core/decision-refusal.js +24 -2
  118. package/dist/src/core/decision-refusal.js.map +1 -1
  119. package/dist/src/core/env-file.d.ts +5 -0
  120. package/dist/src/core/env-file.js +60 -1
  121. package/dist/src/core/env-file.js.map +1 -1
  122. package/dist/src/core/execute.d.ts +15 -2
  123. package/dist/src/core/execute.js +15 -2
  124. package/dist/src/core/execute.js.map +1 -1
  125. package/dist/src/core/gate.d.ts +86 -1
  126. package/dist/src/core/gate.js +81 -1
  127. package/dist/src/core/gate.js.map +1 -1
  128. package/dist/src/core/gesture-refusal.d.ts +166 -0
  129. package/dist/src/core/gesture-refusal.js +188 -0
  130. package/dist/src/core/gesture-refusal.js.map +1 -0
  131. package/dist/src/core/harness-version.d.ts +1 -1
  132. package/dist/src/core/harness-version.js +3 -1
  133. package/dist/src/core/harness-version.js.map +1 -1
  134. package/dist/src/core/instance.d.ts +59 -2
  135. package/dist/src/core/instance.js +113 -0
  136. package/dist/src/core/instance.js.map +1 -1
  137. package/dist/src/core/log.d.ts +39 -1
  138. package/dist/src/core/log.js.map +1 -1
  139. package/dist/src/core/policy-explain.d.ts +10 -0
  140. package/dist/src/core/policy-explain.js +32 -0
  141. package/dist/src/core/policy-explain.js.map +1 -1
  142. package/dist/src/core/policy-load.d.ts +41 -1
  143. package/dist/src/core/policy-load.js +21 -3
  144. package/dist/src/core/policy-load.js.map +1 -1
  145. package/dist/src/core/policy-match.d.ts +43 -0
  146. package/dist/src/core/policy-match.js +52 -0
  147. package/dist/src/core/policy-match.js.map +1 -1
  148. package/dist/src/core/policy-proposal.d.ts +52 -0
  149. package/dist/src/core/policy-proposal.js +102 -2
  150. package/dist/src/core/policy-proposal.js.map +1 -1
  151. package/dist/src/core/protected-path-guard.d.ts +117 -4
  152. package/dist/src/core/protected-path-guard.js +362 -48
  153. package/dist/src/core/protected-path-guard.js.map +1 -1
  154. package/dist/src/core/question-preempted.d.ts +141 -0
  155. package/dist/src/core/question-preempted.js +152 -0
  156. package/dist/src/core/question-preempted.js.map +1 -0
  157. package/dist/src/core/read-scope.d.ts +172 -0
  158. package/dist/src/core/read-scope.js +252 -0
  159. package/dist/src/core/read-scope.js.map +1 -0
  160. package/dist/src/core/sandbox.d.ts +81 -0
  161. package/dist/src/core/sandbox.js +190 -1
  162. package/dist/src/core/sandbox.js.map +1 -1
  163. package/dist/src/core/sender-identity.d.ts +476 -0
  164. package/dist/src/core/sender-identity.js +572 -0
  165. package/dist/src/core/sender-identity.js.map +1 -0
  166. package/dist/src/core/shlex.d.ts +102 -0
  167. package/dist/src/core/shlex.js +159 -0
  168. package/dist/src/core/shlex.js.map +1 -0
  169. package/dist/src/core/values.d.ts +18 -8
  170. package/dist/src/core/values.js +36 -1
  171. package/dist/src/core/values.js.map +1 -1
  172. package/dist/src/daemon/advance.d.ts +10 -0
  173. package/dist/src/daemon/advance.js +25 -4
  174. package/dist/src/daemon/advance.js.map +1 -1
  175. package/dist/src/daemon/daemon.js +9 -0
  176. package/dist/src/daemon/daemon.js.map +1 -1
  177. package/dist/src/daemon/git-evidence.d.ts +2 -2
  178. package/dist/src/daemon/git-evidence.js +1 -1
  179. package/dist/src/mcp/server.js +8 -0
  180. package/dist/src/mcp/server.js.map +1 -1
  181. package/docs/cli-reference.md +932 -32
  182. package/docs/codex-enforced-session.md +75 -2
  183. package/docs/codex-workspace-broker.md +118 -0
  184. package/package.json +3 -1
  185. package/schema/event.schema.json +538 -9
  186. package/schema/fixtures/event/invalid/approval-granted-sender-hashed-false.json +20 -0
  187. package/schema/fixtures/event/invalid/approval-granted-sender-hashed-raw-id.json +20 -0
  188. package/schema/fixtures/event/invalid/audit-gesture-refused-human-actor.json +16 -0
  189. package/schema/fixtures/event/invalid/audit-gesture-refused-no-actor-no-sender.json +15 -0
  190. package/schema/fixtures/event/invalid/audit-gesture-refused-unknown-gesture.json +16 -0
  191. package/schema/fixtures/event/invalid/audit-question-preempted-agent-actor.json +16 -0
  192. package/schema/fixtures/event/invalid/audit-question-preempted-no-question-id.json +16 -0
  193. package/schema/fixtures/event/invalid/audit-question-preempted-unknown-source.json +15 -0
  194. package/schema/fixtures/event/invalid/gate-path-signed-off-absolute-path.json +14 -0
  195. package/schema/fixtures/event/invalid/gate-path-signed-off-agent-actor.json +14 -0
  196. package/schema/fixtures/event/invalid/gate-path-signed-off-missing-path.json +13 -0
  197. package/schema/fixtures/event/valid/approval-granted-sender-hashed.json +20 -0
  198. package/schema/fixtures/event/valid/audit-gesture-refused-review-note.json +21 -0
  199. package/schema/fixtures/event/valid/audit-gesture-refused-sender-key-unavailable.json +19 -0
  200. package/schema/fixtures/event/valid/audit-gesture-refused.json +19 -0
  201. package/schema/fixtures/event/valid/audit-question-preempted-no-verdict.json +16 -0
  202. package/schema/fixtures/event/valid/audit-question-preempted.json +20 -0
  203. package/schema/fixtures/event/valid/gate-path-signed-off.json +14 -0
  204. package/schema/fixtures/event/valid/harness-kind-claude-code.json +23 -0
  205. package/schema/fixtures/event/valid/harness-kind-codex.json +23 -0
  206. package/schema/fixtures/event/valid/harness-kind-cursor.json +23 -0
  207. package/schema/fixtures/event/valid/harness-kind-grok.json +23 -0
  208. package/schema/fixtures/event/valid/harness-kind-muse.json +23 -0
  209. package/schema/fixtures/policy/invalid/senders-half-keyed.json +20 -0
  210. package/schema/fixtures/policy/valid/canonical.json +1 -1
  211. package/schema/fixtures/policy/valid/senders-keyed.json +24 -0
  212. package/schema/fixtures/policy-md/valid/canonical.md +1 -1
  213. package/schema/fixtures/policy-md/valid/with-values.md +5 -7
  214. package/schema/fixtures/values/invalid/class-shaped.json +1 -1
  215. package/schema/fixtures/values/invalid/duplicate-entry.json +1 -1
  216. package/schema/fixtures/values/invalid/non-string-item.json +1 -1
  217. package/schema/fixtures/values/invalid/over-cap.json +1 -1
  218. package/schema/fixtures/values/invalid/unknown-key.json +1 -1
  219. package/schema/fixtures/values/invalid/version-float.json +1 -0
  220. package/schema/fixtures/values/invalid/version-integer.json +1 -0
  221. package/schema/fixtures/values/invalid/version-wrong-string.json +1 -0
  222. package/schema/fixtures/values/valid/empty-lists.json +2 -3
  223. package/schema/fixtures/values/valid/full.json +5 -7
  224. package/schema/fixtures/values/valid/minimal.json +1 -1
  225. package/schema/fixtures/values-md/invalid/schema-invalid.md +5 -3
  226. package/schema/fixtures/values-md/invalid/two-blocks.md +3 -3
  227. package/schema/fixtures/values-md/invalid/unterminated.md +2 -2
  228. package/schema/fixtures/values-md/invalid/version-1.md +69 -0
  229. package/schema/fixtures/values-md/invalid/version-unquoted.md +64 -0
  230. package/schema/fixtures/values-md/invalid/yaml-error.md +2 -2
  231. package/schema/fixtures/values-md/valid/absent.md +1 -1
  232. package/schema/fixtures/values-md/valid/with-values.md +5 -7
  233. package/schema/policy.schema.json +54 -2
  234. package/schema/values.schema.json +7 -11
  235. package/schema/fixtures/values/invalid/version-string.json +0 -1
@@ -35,7 +35,9 @@
35
35
  * is deeply equal across calls, including `decisionPath` strings, because
36
36
  * `resolve()` already imposes a total order on candidates.
37
37
  */
38
+ import { dirname } from "node:path";
38
39
  import { resolve, STRICTNESS, } from "./policy-match.js";
40
+ import { READ_OUT_OF_SCOPE_CLASS, effectiveReadRoots, renderReadRoots, } from "./read-scope.js";
39
41
  /**
40
42
  * Action-class grammar for a *concrete* class (not a pattern).
41
43
  *
@@ -51,6 +53,18 @@ export const ACTION_CLASS_PATTERN = /^[a-z0-9][a-z0-9_-]*(?:\.[a-z0-9][a-z0-9_-]
51
53
  export function isActionClass(value) {
52
54
  return ACTION_CLASS_PATTERN.test(value);
53
55
  }
56
+ /**
57
+ * Classes whose explanation should name the read scope in force (APRV-347).
58
+ *
59
+ * The FILE readers, and not every `read.*`. `read.web` and `read.vcs.remote`
60
+ * reach no file, so a scope line under them would be noise on an explanation
61
+ * that is otherwise exactly as long as it needs to be.
62
+ */
63
+ function scopesReads(actionClass) {
64
+ return (actionClass === READ_OUT_OF_SCOPE_CLASS ||
65
+ actionClass === "read.shell" ||
66
+ actionClass.startsWith("read.file"));
67
+ }
54
68
  function quote(text) {
55
69
  return JSON.stringify(text);
56
70
  }
@@ -98,6 +112,24 @@ export function explain(load, actionClass, options = {}) {
98
112
  };
99
113
  }
100
114
  decisionPath.push(`policy loaded from ${load.source.path}`);
115
+ // APRV-347. The read scope is the fact a reader of a read class most needs
116
+ // and cannot get anywhere else: the autonomy answers "what happens", and this
117
+ // answers "to which reads". Printed for read classes only, so no other
118
+ // explanation grows a line about a key it does not turn on.
119
+ if (scopesReads(actionClass)) {
120
+ const gateRoot = dirname(load.source.path);
121
+ const declared = load.policy.read_scope?.roots;
122
+ const roots = effectiveReadRoots({
123
+ gateRoot,
124
+ ...(declared === undefined ? {} : { declared }),
125
+ ...(options.systemReadRoots === undefined ? {} : { systemRoots: options.systemReadRoots }),
126
+ });
127
+ decisionPath.push(`read scope (APRV-347): reads resolving inside ${renderReadRoots(roots)} are ordinary ${declared === undefined
128
+ ? "reads; the policy declares no `read_scope`, so these are the built-in roots"
129
+ : `reads; \`read_scope.roots\` widened them with ${renderReadRoots(declared)}`}. A read resolving outside all of them is \`${READ_OUT_OF_SCOPE_CLASS}\`${options.systemReadRoots === undefined
130
+ ? " (the session scratchpad and the system temp root are resolved by the runtime and are not shown here)"
131
+ : ""}`);
132
+ }
101
133
  const candidates = annotate(final.candidates, final.matched?.pattern ?? null);
102
134
  describeCandidates(decisionPath, actionClass, candidates);
103
135
  describeWinner(decisionPath, load, base.provenance, base.autonomy, candidates);
@@ -1 +1 @@
1
- {"version":3,"file":"policy-explain.js","sourceRoot":"","sources":["../../../src/core/policy-explain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy-explain.js","sourceRoot":"","sources":["../../../src/core/policy-explain.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,7 @@
57
57
  * directory. No clock, no network, no randomness, no cross-call caching.
58
58
  */
59
59
  import { type ProtectedPathEntry } from "./command-class.js";
60
+ import type { ReadScope } from "./read-scope.js";
60
61
  import { type ValidationError } from "./validate.js";
61
62
  /**
62
63
  * Upper bound on alias expansions in one policy document.
@@ -222,8 +223,37 @@ export interface Policy {
222
223
  * inoperative.
223
224
  */
224
225
  protected_paths?: ProtectedPathEntry[];
226
+ /**
227
+ * Amended SPEC.md §5.2 (APRV-347): directories an agent's reads may stay
228
+ * inside, beyond the built-in roots.
229
+ *
230
+ * ADDITIVE, with the same discipline `protected_paths` has and for a sharper
231
+ * reason: the built-in roots (the gate root, the session scratchpad, the
232
+ * system temp root) are in scope whatever this says, because a runtime denied
233
+ * its own policy and log could not run, and a policy that could NARROW its
234
+ * own read scope would be a policy an agent could edit until nothing was
235
+ * gated. Absent means the built-ins alone, which is the muse jail with no
236
+ * grammar at all: the gate root is the directory holding this file.
237
+ *
238
+ * Nothing here is resolved by the loader. `core/read-scope.ts` turns these
239
+ * into effective roots and `src/cli/hook.ts` resolves them on disk, so a
240
+ * symlink cannot smuggle a read out of one.
241
+ */
242
+ read_scope?: ReadScope;
243
+ /**
244
+ * The approver roster (SPEC.md §5.1), and since APRV-324 the operator's
245
+ * attested statement of which transport account each of them decides from.
246
+ *
247
+ * `senders` is additive and optional, keyed by a channel whose transport
248
+ * authenticates a sender (`schema/policy.schema.json`'s `senderChannel`, which
249
+ * is `telegram` and nothing else today). It is READ by
250
+ * `channels/contract.ts` through `core/sender-identity.ts`, and by nothing on
251
+ * a routing, budget or token path: it decides WHO a decision is recorded as,
252
+ * never what a decision may authorize.
253
+ */
225
254
  approvers?: Record<string, {
226
255
  channels: string[];
256
+ senders?: Record<string, string>;
227
257
  }>;
228
258
  classes?: Record<string, PolicyClassRule>;
229
259
  /**
@@ -354,7 +384,17 @@ export type PolicyLoadErrorCode = "file-missing" | "no-block" | "multiple-blocks
354
384
  * line — which no JSON Schema can state. See
355
385
  * {@link checkProtectedRouteFloor}.
356
386
  */
357
- | "protected-route-floor";
387
+ | "protected-route-floor"
388
+ /**
389
+ * Amended SPEC.md §5.2 (APRV-324): two approvers declare one sender id. Like
390
+ * `protected-route-floor` it is a relationship between two parts of a file
391
+ * that is valid against the schema, which no JSON Schema can state. The
392
+ * consequence is the same and for the same reason: the policy does not load,
393
+ * so every class resolves `manual`, because a file that says one account is
394
+ * two people has no reading under which a decision from that account names
395
+ * anybody. See {@link checkSenderMappings}.
396
+ */
397
+ | "sender-ambiguous";
358
398
  /**
359
399
  * Result of {@link loadPolicy}.
360
400
  *
@@ -69,6 +69,11 @@ import { scanFences } from "./md-fence.js";
69
69
  // must never have from the resolution it floors.
70
70
  import { resolve, STRICTNESS } from "./policy-match.js";
71
71
  import { promptBlockErrors } from "./prompt-layout.js";
72
+ // APRV-324. Same shape as the matcher import above: this module imports a
73
+ // FUNCTION from `sender-identity.ts`, which imports only this module's TYPES,
74
+ // so the cycle is erased at build and the rule the loader enforces and the rule
75
+ // the decision path applies are one implementation.
76
+ import { checkSenderMappings } from "./sender-identity.js";
72
77
  import { validate } from "./validate.js";
73
78
  /**
74
79
  * Upper bound on alias expansions in one policy document.
@@ -392,6 +397,14 @@ export function loadPolicyText(path, text, options = {}) {
392
397
  daemon: daemonRead,
393
398
  notes: aliasNotes(policy),
394
399
  };
400
+ // APRV-324: one sender id, at most one person. Checked here rather than in
401
+ // the schema because it is a relationship between two approvers' blocks, and
402
+ // checked BEFORE the routing floor below because it needs only the parsed
403
+ // roster, not a resolution.
404
+ const senders = checkSenderMappings(policy.approvers);
405
+ if (senders !== null) {
406
+ return failure("sender-ambiguous", `${resolved.path}: ${senders}`, undefined, parsed.value);
407
+ }
395
408
  // APRV-266: the routing floor is the LAST gate on a load, because it is the
396
409
  // only check here that needs the resolved policy rather than the parsed one.
397
410
  const floor = checkProtectedRouteFloor(loaded);
@@ -484,8 +497,8 @@ function describeLevel(declared, liveRate) {
484
497
  return liveRate === null ? declared : `${declared} at ${String(liveRate)}`;
485
498
  }
486
499
  /**
487
- * Amended SPEC.md §5.2 (APRV-127): one note per place a policy still writes the
488
- * bare `supervised`.
500
+ * Amended SPEC.md §5.2 (APRV-127, APRV-335): one note per place a policy still
501
+ * writes the bare `supervised`.
489
502
  *
490
503
  * The alias keeps every pre-split policy meaning exactly what its author meant:
491
504
  * `supervised` was retrospective sampling, and `supervised-retro` is that same
@@ -494,6 +507,11 @@ function describeLevel(declared, liveRate) {
494
507
  * now means "supervised somehow, possibly live"; the note says, in the one place
495
508
  * a reader is already looking, that it does not.
496
509
  *
510
+ * Since APRV-335 the note leads with the word `deprecated:`, because the alias
511
+ * is now on a path out: it is still parsed, still admitted by the schema, and a
512
+ * future schema version drops it. A reader who sees only the first clause of a
513
+ * long note should still learn the one thing that has a deadline attached.
514
+ *
497
515
  * Pure, total, and ordered: `defaults` first, then class patterns in sorted
498
516
  * order, so the notes of one policy are byte-stable across runs.
499
517
  */
@@ -502,7 +520,7 @@ function aliasNotes(policy) {
502
520
  const say = (where) => ({
503
521
  code: "supervised-alias",
504
522
  where,
505
- message: `${where} declares the bare \`supervised\`, which parses as \`supervised-retro\`: the action executes immediately and is sampled for review AFTERWARDS. Nothing about it changed with the autonomy split — this is the same behaviour under its honest name. Write \`supervised-retro\` to say so explicitly, or \`supervised-live: <rate>\` to have a fraction of the class stop for a human FIRST.`,
523
+ message: `deprecated: ${where} declares the bare \`supervised\`, which parses as \`supervised-retro\`: the action executes immediately and is sampled for review AFTERWARDS. Nothing about it changed with the autonomy split — this is the same behaviour under its honest name. Write \`supervised-retro\` to say so explicitly, or \`supervised-live: <rate>\` to have a fraction of the class stop for a human FIRST. The bare spelling still parses and a future version of the policy schema removes it (APRV-335).`,
506
524
  });
507
525
  if (policy.defaults?.autonomy === "supervised")
508
526
  notes.push(say("defaults.autonomy"));
@@ -1 +1 @@
1
- {"version":3,"file":"policy-load.js","sourceRoot":"","sources":["../../../src/core/policy-load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy-load.js","sourceRoot":"","sources":["../../../src/core/policy-load.ts"],"names":[],"mappings":"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"}
@@ -243,6 +243,49 @@ export declare function supervisionOf(declared: DeclaredAutonomy, rule: PolicyCl
243
243
  * the thing that did not happen as well as the reason it cannot.
244
244
  */
245
245
  export declare function humanOnlyRefusal(actionClass: string, whatWasRefused: string): string;
246
+ /**
247
+ * The `harness.launch.*` family: starting an agent harness session (APRV-354).
248
+ *
249
+ * Defined here rather than beside the classifier rows that emit it, because two
250
+ * enforcement paths and the classifier all have to agree on what the family IS,
251
+ * and a second spelling of the prefix is the shape of bug that lets one door
252
+ * close while another stays open.
253
+ */
254
+ export declare const HARNESS_LAUNCH_PREFIX = "harness.launch.";
255
+ /** Is `actionClass` a member of the `harness.launch.*` family? */
256
+ export declare function isHarnessLaunchClass(actionClass: string): boolean;
257
+ /**
258
+ * Does this family member resolve with NO explicit rule behind it? (APRV-354.)
259
+ *
260
+ * SPEC.md §7 says the family is never inferred autonomous. This is the stronger
261
+ * reading, and the one the family needs: it is never inferred AT ALL. A launch
262
+ * resolves only under a rule an operator wrote — `harness.launch.*` or
263
+ * `harness.launch.NAME` — and a policy that names neither refuses the launch
264
+ * rather than falling to `defaults.autonomy`.
265
+ *
266
+ * The reason is the window the softer reading opens. Before this family existed
267
+ * a harness launch was `unclassified`: refused outright. Adding the class and
268
+ * letting it fall to `defaults.autonomy` would make every launch grantable by a
269
+ * single approval in every project that has ever written `defaults: { autonomy:
270
+ * manual }` — which is all of them — the moment they upgraded. For most classes
271
+ * that is exactly right, because a manual default is an operator saying "ask
272
+ * me". For this one it is not: what the operator would be approving is a whole
273
+ * second agent whose own actions this gate never sees, and a capability that
274
+ * arrives by upgrade rather than by decision is not a capability anybody chose.
275
+ * Muse is the sharp end of it (a Contributor model trains on what it is shown,
276
+ * and the model may come from that harness's own settings where no command line
277
+ * shows it), and the rule is written for the family because the argument is not
278
+ * really about Muse.
279
+ *
280
+ * Keyed on `matched === null`, which is exactly "no rule of the policy's own
281
+ * decided this". That covers both spellings of the fallback: `provenance:
282
+ * "default"` (the file loaded and named nothing for this class) and
283
+ * `provenance: "fail-closed"` (the file did not load, so it names nothing for
284
+ * any class). An explicit rule resolves as written, human-only included.
285
+ */
286
+ export declare function harnessLaunchNeedsRule(actionClass: string, resolution: Resolution): boolean;
287
+ /** The refusal text for a harness launch no policy rule names (APRV-354). */
288
+ export declare function harnessLaunchUnruledRefusal(actionClass: string, whatWasRefused: string): string;
246
289
  /**
247
290
  * Does `pattern` match `actionClass`?
248
291
  *
@@ -171,6 +171,58 @@ export function humanOnlyRefusal(actionClass, whatWasRefused) {
171
171
  `This is not a rejection — nobody decided anything, and asking again with a better summary will get the same answer. ` +
172
172
  `Nothing was appended. If the class should be gated rather than reserved, amend APPROVAL.md and re-attest it.`);
173
173
  }
174
+ /**
175
+ * The `harness.launch.*` family: starting an agent harness session (APRV-354).
176
+ *
177
+ * Defined here rather than beside the classifier rows that emit it, because two
178
+ * enforcement paths and the classifier all have to agree on what the family IS,
179
+ * and a second spelling of the prefix is the shape of bug that lets one door
180
+ * close while another stays open.
181
+ */
182
+ export const HARNESS_LAUNCH_PREFIX = "harness.launch.";
183
+ /** Is `actionClass` a member of the `harness.launch.*` family? */
184
+ export function isHarnessLaunchClass(actionClass) {
185
+ return actionClass.startsWith(HARNESS_LAUNCH_PREFIX);
186
+ }
187
+ /**
188
+ * Does this family member resolve with NO explicit rule behind it? (APRV-354.)
189
+ *
190
+ * SPEC.md §7 says the family is never inferred autonomous. This is the stronger
191
+ * reading, and the one the family needs: it is never inferred AT ALL. A launch
192
+ * resolves only under a rule an operator wrote — `harness.launch.*` or
193
+ * `harness.launch.NAME` — and a policy that names neither refuses the launch
194
+ * rather than falling to `defaults.autonomy`.
195
+ *
196
+ * The reason is the window the softer reading opens. Before this family existed
197
+ * a harness launch was `unclassified`: refused outright. Adding the class and
198
+ * letting it fall to `defaults.autonomy` would make every launch grantable by a
199
+ * single approval in every project that has ever written `defaults: { autonomy:
200
+ * manual }` — which is all of them — the moment they upgraded. For most classes
201
+ * that is exactly right, because a manual default is an operator saying "ask
202
+ * me". For this one it is not: what the operator would be approving is a whole
203
+ * second agent whose own actions this gate never sees, and a capability that
204
+ * arrives by upgrade rather than by decision is not a capability anybody chose.
205
+ * Muse is the sharp end of it (a Contributor model trains on what it is shown,
206
+ * and the model may come from that harness's own settings where no command line
207
+ * shows it), and the rule is written for the family because the argument is not
208
+ * really about Muse.
209
+ *
210
+ * Keyed on `matched === null`, which is exactly "no rule of the policy's own
211
+ * decided this". That covers both spellings of the fallback: `provenance:
212
+ * "default"` (the file loaded and named nothing for this class) and
213
+ * `provenance: "fail-closed"` (the file did not load, so it names nothing for
214
+ * any class). An explicit rule resolves as written, human-only included.
215
+ */
216
+ export function harnessLaunchNeedsRule(actionClass, resolution) {
217
+ return isHarnessLaunchClass(actionClass) && resolution.matched === null;
218
+ }
219
+ /** The refusal text for a harness launch no policy rule names (APRV-354). */
220
+ export function harnessLaunchUnruledRefusal(actionClass, whatWasRefused) {
221
+ return (`class ${actionClass} is a harness launch and this policy names no rule for it (SPEC.md §7, APRV-354), so ${whatWasRefused}. ` +
222
+ `Launching an agent harness resolves only under an explicit rule — \`${HARNESS_LAUNCH_PREFIX}*\` or \`${actionClass}\` — and never under \`defaults.autonomy\`, because a grant of this class covers the launch and nothing the launched session then does: that session runs its own tools outside this gate unless its own adapter is installed and attested. ` +
223
+ `This is not a rejection and nobody decided anything. ` +
224
+ `Nothing was appended. To allow it, add the line and re-attest (\`docs/proposals/harness-launch-2026-09.md\` carries this repository's pair, \`${HARNESS_LAUNCH_PREFIX}*\` at manual and \`${HARNESS_LAUNCH_PREFIX}muse\` at human-only).`);
225
+ }
174
226
  const WILDCARD = "*";
175
227
  /** Split a dotted class or pattern into segments. */
176
228
  function segments(text) {
@@ -1 +1 @@
1
- {"version":3,"file":"policy-match.js","sourceRoot":"","sources":["../../../src/core/policy-match.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy-match.js","sourceRoot":"","sources":["../../../src/core/policy-match.ts"],"names":[],"mappings":"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"}
@@ -185,6 +185,41 @@ export declare function diffSize(summary: DiffSummary): {
185
185
  export declare function summarizeDiff(policyPath: string, baseline: Uint8Array | null | undefined, live: Uint8Array, attestedSha256: string | null, schemaDir?: string): DiffSummary;
186
186
  /** The stored value a channel displays as the prompt's full payload. */
187
187
  export declare function proposalPayloadValue(policyPath: string, text: string): Record<string, unknown>;
188
+ /** What {@link inForcePolicyText} could recover, or why it could not. */
189
+ export type InForcePolicy = {
190
+ ok: true;
191
+ text: string;
192
+ sha256: string;
193
+ } | {
194
+ ok: false;
195
+ reason: string;
196
+ };
197
+ /**
198
+ * The bytes of the policy currently IN FORCE, recovered and hash-verified
199
+ * (APRV-324 follow-up).
200
+ *
201
+ * The attestation ceremony records only the SHA-256 of the bytes it attests, so
202
+ * the log alone cannot produce them — `summarizeDiff` above says exactly that,
203
+ * and takes its baseline from a caller. What CAN produce them is the payload
204
+ * store: every `policy.proposed` binds the whole policy text as its payload
205
+ * (SPEC.md §10.4, so an approver can read the file rather than a summary of
206
+ * it), and a proposal that was attested therefore left the attested text
207
+ * addressable by its own `payload_hash`.
208
+ *
209
+ * So: find the hash in force, find any proposal that named exactly those bytes,
210
+ * read its stored text, and **verify**. Nothing here trusts the store — the
211
+ * recovered text is hashed and compared against the attested digest from the
212
+ * verified log, so a tampered, truncated or swapped payload file is a failure
213
+ * rather than a different policy wearing the attested hash.
214
+ *
215
+ * It fails, legitimately and often, and callers MUST have an answer for that:
216
+ * a policy attested at a terminal (`approval policy attest`, and `policy amend`
217
+ * on its human path) appends a `policy.updated` and stores nothing, so a chain
218
+ * that has never been attested from a phone has no recoverable bytes at all.
219
+ * `channels/contract.ts` is the caller, and its fallback is to refuse the
220
+ * privileged gesture rather than to assume.
221
+ */
222
+ export declare function inForcePolicyText(records: readonly EventRecord[], storeDir: string): InForcePolicy;
188
223
  /**
189
224
  * Append a `policy.proposed` asking a human to attest `policyPath`'s bytes.
190
225
  *
@@ -244,6 +279,23 @@ export interface DecideAttestationOptions extends ProposalOptions {
244
279
  policyPath?: string;
245
280
  /** The channel delivery id this gesture answered, for audit. */
246
281
  batchDeliveryId?: string;
282
+ /**
283
+ * The authenticated account this answer arrived from (APRV-324 follow-up),
284
+ * recorded as `payload.sender`, and the kind of evidence it is.
285
+ *
286
+ * Absent means what it means everywhere else: the answer was attributed by
287
+ * configuration rather than by anything a transport authenticated, which is
288
+ * what every attestation before this field says. The RESOLUTION that decides
289
+ * whether a sender may answer at all is the decision surface's
290
+ * (`channels/contract.ts`), against the policy in force rather than the one
291
+ * being attested, and nothing here re-derives or second-guesses it.
292
+ */
293
+ sender?: {
294
+ channel: string;
295
+ id: string;
296
+ hashed?: true;
297
+ };
298
+ senderSource?: "policy";
247
299
  }
248
300
  /**
249
301
  * Answer a proposal: attest the bytes the prompt displayed, or decline them.
@@ -54,11 +54,11 @@
54
54
  */
55
55
  import { readFileSync } from "node:fs";
56
56
  import { basename, join } from "node:path";
57
- import { POLICY_HASH_FIELD, checkAttestationOfBytes, policyBytesHash, } from "./attest.js";
57
+ import { POLICY_HASH_FIELD, attestationSha256, checkAttestationOfBytes, policyBytesHash, } from "./attest.js";
58
58
  import { tick } from "./clock.js";
59
59
  import { appendEvent, } from "./log.js";
60
60
  import { payloadHash } from "./payload.js";
61
- import { payloadStoreDirFor, storePayload } from "./payload-store.js";
61
+ import { loadPayload, payloadStoreDirFor, storePayload } from "./payload-store.js";
62
62
  import { diffPolicies, renderDiff, SPEC_NAMESPACES } from "./policy-diff.js";
63
63
  import { loadPolicyText, POLICY_FILENAMES } from "./policy-load.js";
64
64
  import { readVerifiedRecords } from "./state.js";
@@ -76,6 +76,15 @@ const HUMAN_ACTOR = /^human:.+/u;
76
76
  * attestation as an ordinary authorization.
77
77
  */
78
78
  export const PROPOSAL_EVENT = "policy.proposed";
79
+ /**
80
+ * The attestation's own event type (APRV-356).
81
+ *
82
+ * Spelled here rather than imported from `core/attest.ts` for the reason that
83
+ * module's header gives about direction: attestation knows nothing about
84
+ * proposals, and a cycle between the two would be a dependency neither needs.
85
+ * `attestationSha256` above already selects on the same string.
86
+ */
87
+ const ATTESTATION_EVENT = "policy.updated";
79
88
  /** The event a decline appends. An attestation appends `policy.updated`. */
80
89
  export const DECLINE_EVENT = "policy.declined";
81
90
  /**
@@ -228,6 +237,82 @@ export function summarizeDiff(policyPath, baseline, live, attestedSha256, schema
228
237
  export function proposalPayloadValue(policyPath, text) {
229
238
  return { policy_path: basename(policyPath), text };
230
239
  }
240
+ /**
241
+ * The bytes of the policy currently IN FORCE, recovered and hash-verified
242
+ * (APRV-324 follow-up).
243
+ *
244
+ * The attestation ceremony records only the SHA-256 of the bytes it attests, so
245
+ * the log alone cannot produce them — `summarizeDiff` above says exactly that,
246
+ * and takes its baseline from a caller. What CAN produce them is the payload
247
+ * store: every `policy.proposed` binds the whole policy text as its payload
248
+ * (SPEC.md §10.4, so an approver can read the file rather than a summary of
249
+ * it), and a proposal that was attested therefore left the attested text
250
+ * addressable by its own `payload_hash`.
251
+ *
252
+ * So: find the hash in force, find any proposal that named exactly those bytes,
253
+ * read its stored text, and **verify**. Nothing here trusts the store — the
254
+ * recovered text is hashed and compared against the attested digest from the
255
+ * verified log, so a tampered, truncated or swapped payload file is a failure
256
+ * rather than a different policy wearing the attested hash.
257
+ *
258
+ * It fails, legitimately and often, and callers MUST have an answer for that:
259
+ * a policy attested at a terminal (`approval policy attest`, and `policy amend`
260
+ * on its human path) appends a `policy.updated` and stores nothing, so a chain
261
+ * that has never been attested from a phone has no recoverable bytes at all.
262
+ * `channels/contract.ts` is the caller, and its fallback is to refuse the
263
+ * privileged gesture rather than to assume.
264
+ */
265
+ export function inForcePolicyText(records, storeDir) {
266
+ let attested = null;
267
+ for (let index = records.length - 1; index >= 0; index -= 1) {
268
+ const sha = attestationSha256(records[index]);
269
+ if (sha !== null) {
270
+ attested = sha;
271
+ break;
272
+ }
273
+ }
274
+ if (attested === null) {
275
+ return { ok: false, reason: "no policy is in force: the log carries no attestation" };
276
+ }
277
+ // Two kinds of record can name the attested bytes, and both are read
278
+ // (APRV-356). A `policy.proposed` binds the whole text so an approver can
279
+ // read the file on a phone; since APRV-356 an ATTESTATION binds it too, so a
280
+ // chain only ever attested at a terminal is recoverable as well. Newest
281
+ // first, and the two are not ranked against each other: both are verified
282
+ // against the same digest from the same verified log, so whichever is found
283
+ // first carries bytes that hash to it or it is skipped.
284
+ for (let index = records.length - 1; index >= 0; index -= 1) {
285
+ const record = records[index];
286
+ if (record.event !== PROPOSAL_EVENT && record.event !== ATTESTATION_EVENT)
287
+ continue;
288
+ const payload = record.payload;
289
+ if (payload === undefined)
290
+ continue;
291
+ if (payload["sha256"] !== attested)
292
+ continue;
293
+ const bound = payload["payload_hash"];
294
+ if (typeof bound !== "string")
295
+ continue;
296
+ const stored = loadPayload(storeDir, bound);
297
+ if (!stored.ok)
298
+ continue;
299
+ const value = stored.value;
300
+ if (typeof value !== "object" || value === null)
301
+ continue;
302
+ const text = value["text"];
303
+ if (typeof text !== "string")
304
+ continue;
305
+ // The verification, and the only reason reading a file beside the log is
306
+ // allowed to answer a question about authority at all.
307
+ if (policyBytesHash(Buffer.from(text, "utf8")) !== attested)
308
+ continue;
309
+ return { ok: true, text, sha256: attested };
310
+ }
311
+ return {
312
+ ok: false,
313
+ reason: `the policy in force hashes ${attested} and its BYTES are not recoverable: no record naming those bytes — neither a policy.proposed nor the attestation itself — binds a payload this log can read beside it. Since APRV-356 every attestation stores the attested text, so this is the ordinary state of a chain last attested BEFORE that landed, where a terminal attestation recorded only the digest.`,
314
+ };
315
+ }
231
316
  /**
232
317
  * Append a `policy.proposed` asking a human to attest `policyPath`'s bytes.
233
318
  *
@@ -439,6 +524,21 @@ export function decideAttestation(logPath, seq, decision, actor, options = {}) {
439
524
  sha256: derived.sha256,
440
525
  proposed_seq: derived.seq,
441
526
  };
527
+ // APRV-324 follow-up. The account the tap came from, when a surface
528
+ // authenticated one and the policy IN FORCE mapped it to this actor. The
529
+ // resolution is `channels/contract.ts`'s and is deliberately not repeated
530
+ // here: what this function records is which account the answer came from,
531
+ // not which account is allowed to give one.
532
+ if (options.sender !== undefined) {
533
+ payload["sender"] = {
534
+ channel: options.sender.channel,
535
+ id: options.sender.id,
536
+ // APRV-370: only when true, so a raw record does not change shape.
537
+ ...(options.sender.hashed === true ? { hashed: true } : {}),
538
+ };
539
+ if (options.senderSource !== undefined)
540
+ payload["sender_source"] = options.senderSource;
541
+ }
442
542
  if (options.note !== undefined)
443
543
  payload["note"] = options.note;
444
544
  if (options.batchDeliveryId !== undefined && options.batchDeliveryId.length > 0) {