@arnilo/prism 0.0.12 → 0.0.14

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 (75) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +8 -2
  3. package/dist/agents.js +21 -2
  4. package/dist/artifacts.d.ts +78 -0
  5. package/dist/artifacts.js +24 -0
  6. package/dist/contracts.d.ts +35 -1
  7. package/dist/contracts.js +8 -0
  8. package/dist/conversations.d.ts +50 -0
  9. package/dist/conversations.js +97 -0
  10. package/dist/credentials.d.ts +14 -0
  11. package/dist/credentials.js +9 -0
  12. package/dist/devices.d.ts +94 -0
  13. package/dist/devices.js +138 -0
  14. package/dist/extensions.d.ts +11 -0
  15. package/dist/extensions.js +15 -0
  16. package/dist/identity.d.ts +92 -0
  17. package/dist/identity.js +257 -0
  18. package/dist/index.d.ts +15 -5
  19. package/dist/index.js +8 -3
  20. package/dist/persistence-lifecycle.d.ts +103 -0
  21. package/dist/persistence-lifecycle.js +204 -0
  22. package/dist/providers/openai-compatible.d.ts +5 -1
  23. package/dist/providers/openai-compatible.js +15 -6
  24. package/dist/providers/openai-primitives.js +5 -2
  25. package/dist/secure-agent.js +7 -1
  26. package/dist/testing/persistence-schema.d.ts +2 -2
  27. package/dist/testing/persistence-schema.js +35 -2
  28. package/dist/tools.d.ts +2 -0
  29. package/dist/tools.js +6 -0
  30. package/docs/a2a.md +2 -0
  31. package/docs/ag-ui.md +5 -0
  32. package/docs/agent-identity.md +111 -0
  33. package/docs/browser-automation.md +3 -0
  34. package/docs/conversations.md +135 -0
  35. package/docs/credential-storage.md +31 -1
  36. package/docs/credentials-and-redaction.md +2 -0
  37. package/docs/database-persistence.md +22 -7
  38. package/docs/device-adapters.md +97 -0
  39. package/docs/extensions.md +1 -0
  40. package/docs/guardrails.md +3 -0
  41. package/docs/host-security.md +9 -3
  42. package/docs/index.md +26 -13
  43. package/docs/mcp-tools.md +2 -0
  44. package/docs/migration.md +48 -0
  45. package/docs/model-routing.md +102 -0
  46. package/docs/observability.md +2 -0
  47. package/docs/performance.md +21 -0
  48. package/docs/policy-and-audit.md +128 -0
  49. package/docs/postgres-persistence.md +1 -1
  50. package/docs/provider-caching.md +4 -0
  51. package/docs/provider-packages.md +12 -2
  52. package/docs/provider-request-policies.md +2 -0
  53. package/docs/providers/alibaba.md +179 -0
  54. package/docs/providers/azure.md +74 -0
  55. package/docs/providers/bedrock.md +72 -0
  56. package/docs/providers/google.md +1 -0
  57. package/docs/providers/ollama.md +166 -0
  58. package/docs/providers/openai-compatible.md +3 -1
  59. package/docs/providers/openrouter.md +2 -0
  60. package/docs/providers/vertex.md +71 -0
  61. package/docs/public-contracts.md +3 -1
  62. package/docs/release-and-install.md +149 -7
  63. package/docs/review-coverage-2026-07-23-phase-8.md +245 -0
  64. package/docs/review-coverage-2026-07-25-phase-9.md +256 -0
  65. package/docs/runs-and-usage.md +2 -0
  66. package/docs/server.md +37 -4
  67. package/docs/sqlite-persistence.md +1 -1
  68. package/docs/supervisors.md +2 -0
  69. package/docs/work-artifacts-and-review.md +100 -0
  70. package/docs/work-connectors.md +32 -0
  71. package/docs/work-tools.md +117 -0
  72. package/docs/workflows.md +4 -0
  73. package/docs/working-and-semantic-memory.md +20 -5
  74. package/package.json +4 -1
  75. package/templates/init/providers.json +22 -0
@@ -2,15 +2,19 @@
2
2
 
3
3
  ## What it does
4
4
 
5
- Prism is published as one core package, twenty-eight first-party capability packages, and six pure-manifest family/profile packages. This page describes how they are packed, what each tarball contains, how to install them, the required `@arnilo/prism` peer dependency, the release workflow, and the offline test budget.
5
+ Prism is published as one core package, thirty-six first-party capability packages, and six pure-manifest family/profile packages (**43** publishable manifests total). This page describes how they are packed, what each tarball contains, how to install them, the required `@arnilo/prism` peer dependency, the release workflow, and the offline test budget.
6
6
 
7
7
  Core package:
8
8
 
9
9
  - `@arnilo/prism` — the runtime, contracts, registries, streaming events, CLI (including `prism init`), and the `/docs` hub. `files`: `dist` (with `!dist/__tests__` and `!dist/**/*.map` negations), `docs`, `templates`, `CHANGELOG.md`. `bin`: `prism` -> `dist/cli.js`. `sideEffects`: `["dist/cli.js"]`.
10
10
 
11
- First-party workspace packages (each has non-optional `@arnilo/prism@0.0.12` peer and `sideEffects: false`; RAG also peers on memory, and server also peers on workflows):
11
+ First-party workspace packages (each has non-optional `@arnilo/prism@0.0.14` peer and `sideEffects: false`; RAG also peers on memory, and server also peers on workflows):
12
12
 
13
13
  - `@arnilo/prism-provider-anthropic`, `@arnilo/prism-provider-google`, `@arnilo/prism-provider-openai`, `@arnilo/prism-provider-openrouter`, `@arnilo/prism-provider-kimi`, `@arnilo/prism-provider-zai`, `@arnilo/prism-provider-opencode-go`, `@arnilo/prism-provider-neuralwatt` — provider adapters.
14
+ - `@arnilo/prism-provider-azure`, `@arnilo/prism-provider-bedrock`, `@arnilo/prism-provider-vertex` — optional enterprise-cloud adapters (Entra/IAM/ADC; separate from consumer Anthropic/Google).
15
+ - `@arnilo/prism-policy` — optional policy-decision ledger and cursor-paginated audit export.
16
+ - `@arnilo/prism-model-router` — optional model governance router (allow-list, residency, budgets, circuits, fallbacks) over `ProviderResolver`.
17
+ - `@arnilo/prism-work-tools` — optional identity-scoped M365/GWS connectors (`./microsoft365`, `./google-workspace`); host-pinned CLI argv only.
14
18
  - `@arnilo/prism-provider-ai-sdk` — optional AI SDK `LanguageModelV4` adapter; included by the provider and all umbrellas.
15
19
  - `@arnilo/prism-compaction-llm` — optional LLM-backed compaction strategy.
16
20
  - `@arnilo/prism-compaction-observational-memory` — optional source-backed observational memory.
@@ -36,15 +40,15 @@ First-party workspace packages (each has non-optional `@arnilo/prism@0.0.12` pee
36
40
 
37
41
  Family/profile packages (pure manifests, no code or `dist`; ship `README.md` and `CHANGELOG.md`; use exact hard `dependencies`):
38
42
 
39
- - `@arnilo/prism-providers` — all nine `@arnilo/prism-provider-*` packages: eight HTTP adapters plus AI SDK interoperability.
43
+ - `@arnilo/prism-providers` — all eleven `@arnilo/prism-provider-*` packages: ten HTTP adapters plus AI SDK interoperability.
40
44
  - `@arnilo/prism-compaction` — both `@arnilo/prism-compaction-*` packages.
41
45
  - `@arnilo/prism-base` — core + compaction family + JSON Schema validator; excludes providers, MCP, native credentials/storage, and coding tools.
42
46
  - `@arnilo/prism-code` — base + coding-agent + coding-security + MCP; providers and persistence remain explicit choices.
43
47
  - `@arnilo/prism-sdk` — base + workflows + MCP + Node credentials + OpenTelemetry; providers and persistence remain explicit choices.
44
48
  - `@arnilo/prism-evals` remains optional and network-free by default; model judges are host callbacks and live credentialed gates run separately. `examples/evaluation-gate.ts` demonstrates non-zero threshold gating.
45
- - `@arnilo/prism-all` — every first-party package: code + SDK + providers + persistence + evals + memory/RAG + server + supervisor + web tools + browser. Installation alone activates no network/listener, telemetry, database, memory, evaluation, delegation, MCP, shell, filesystem, or browser capability.
49
+ - `@arnilo/prism-all` — every first-party package: code + SDK + providers + persistence + evals + memory/RAG + server + supervisor + web tools + browser + Phase 8 optional policy/router/enterprise providers/work-tools. **0.0.13** enrolls `@arnilo/prism-policy`, `@arnilo/prism-model-router`, `@arnilo/prism-provider-azure`, `@arnilo/prism-provider-bedrock`, `@arnilo/prism-provider-vertex`, and `@arnilo/prism-work-tools` in the umbrella only. Installation alone activates no network/listener, telemetry, database, memory, evaluation, delegation, MCP, shell, filesystem, or browser capability.
46
50
 
47
- Profile footprint snapshot (Node 24/npm 11, lockfile graph, 2026-07-19): `base` reaches 6 first-party packages and one external dependency root (Ajv); `code` reaches 10 and three (Ajv, MCP SDK, diff); `sdk` reaches 11 and three (Ajv, MCP SDK, keyring); `all` reaches all 35 first-party manifests; AG-UI adds only its protocol SDK dependencies while native database drivers remain all-profile-only. Native database drivers stay out of base/code/sdk; both appear only in all.
51
+ Profile footprint snapshot (Node 24/npm 11, lockfile graph, 2026-07-19): `base` reaches 6 first-party packages and one external dependency root (Ajv); `code` reaches 10 and three (Ajv, MCP SDK, diff); `sdk` reaches 11 and three (Ajv, MCP SDK, keyring); `all` reaches **41** first-party manifests after Phase 8 optional packages ship (graph bump Task 10); AG-UI adds only its protocol SDK dependencies while native database drivers remain all-profile-only. Native database drivers stay out of base/code/sdk; both appear only in all.
48
52
 
49
53
  Each code package's `files` array is `["dist", "!dist/__tests__", "!dist/**/*.map", "README.md", "CHANGELOG.md"]`; `README.md`, `LICENSE`, and `CHANGELOG.md` ship in every code-package tarball, the core tarball also ships the `docs/` directory, and family/profile tarballs ship `README.md` + `CHANGELOG.md` + `package.json`.
50
54
 
@@ -191,6 +195,144 @@ Optional live smoke tests stay separate from SDK readiness because they require
191
195
  PRISM_LIVE_PROVIDER_TESTS=1 npm run test --workspaces --if-present
192
196
  ```
193
197
 
198
+ ### 0.0.14 publish handoff
199
+
200
+ **Decision: GO after operator prerequisites below.** Phase 9 personal/work-agent conversations, memory consent/lifecycle, durable artifact review + authorized delivery, AG-UI co-work events, scoped M365/GWS OAuth connectors, browser verified-state checkpoints, a deny-by-default device adapter contract, and two new optional provider packages (`@arnilo/prism-provider-alibaba`, `@arnilo/prism-provider-ollama`). The exact 0.0.14 graph has **43 manifests** (41 → 43; only the two provider packages are new, enrolled via `@arnilo/prism-providers`). `@arnilo/prism-code` and `@arnilo/prism-sdk` stay lean; browser/ag-ui/work-tools remain optional. no Office package, Slack/Teams channel package, voice/desktop-control vendor package, internal auth DB, or Redis/SQS queue adapter ships. Clean protected-branch CI, signed commit/tag, npm authentication, OIDC attestation, protected live canaries, and actual publication remain operator/workflow prerequisites.
201
+
202
+ ```bash
203
+ git diff --check
204
+ npm ci
205
+ npm run sdk:ready
206
+ node scripts/benchmark-0.0.14.mjs
207
+ node --test scripts/benchmark-0.0.14.test.mjs
208
+ npm run release:check -- --version 0.0.14 --allow-untagged --report /tmp/prism-0.0.14-preflight.json
209
+ git tag -s v0.0.14 -m "Prism 0.0.14"
210
+ git verify-tag v0.0.14
211
+ git push origin v0.0.14
212
+ ```
213
+
214
+ The tag workflow publishes only through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`. Re-run failed jobs for the same tag; registry state is the resumable journal. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish operator checks.
215
+
216
+ #### Rollback limitations
217
+
218
+ npm publication is immutable: partial publication is a resume case, and confirmed defects require deprecation plus a fixed version rather than rollback.
219
+
220
+ Package set (43):
221
+
222
+ ```text
223
+ @arnilo/prism
224
+ @arnilo/prism-ag-ui
225
+ @arnilo/prism-browser
226
+ @arnilo/prism-coding-agent
227
+ @arnilo/prism-coding-security
228
+ @arnilo/prism-compaction-llm
229
+ @arnilo/prism-compaction-observational-memory
230
+ @arnilo/prism-credentials-node
231
+ @arnilo/prism-evals
232
+ @arnilo/prism-mcp
233
+ @arnilo/prism-memory
234
+ @arnilo/prism-model-router
235
+ @arnilo/prism-observability-opentelemetry
236
+ @arnilo/prism-policy
237
+ @arnilo/prism-all
238
+ @arnilo/prism-base
239
+ @arnilo/prism-code
240
+ @arnilo/prism-compaction
241
+ @arnilo/prism-providers
242
+ @arnilo/prism-sdk
243
+ @arnilo/prism-provider-ai-sdk
244
+ @arnilo/prism-provider-alibaba
245
+ @arnilo/prism-provider-anthropic
246
+ @arnilo/prism-provider-azure
247
+ @arnilo/prism-provider-bedrock
248
+ @arnilo/prism-provider-google
249
+ @arnilo/prism-provider-kimi
250
+ @arnilo/prism-provider-neuralwatt
251
+ @arnilo/prism-provider-ollama
252
+ @arnilo/prism-provider-openai
253
+ @arnilo/prism-provider-opencode-go
254
+ @arnilo/prism-provider-openrouter
255
+ @arnilo/prism-provider-vertex
256
+ @arnilo/prism-provider-zai
257
+ @arnilo/prism-rag
258
+ @arnilo/prism-server
259
+ @arnilo/prism-session-store-postgres
260
+ @arnilo/prism-session-store-sqlite
261
+ @arnilo/prism-supervisor
262
+ @arnilo/prism-tool-validator-json-schema
263
+ @arnilo/prism-web-tools
264
+ @arnilo/prism-work-tools
265
+ @arnilo/prism-workflows
266
+ ```
267
+
268
+ ### 0.0.13 publish handoff
269
+
270
+ **Decision: GO after operator prerequisites below.** Phase 8 enterprise identity, policy/audit, model governance, Azure/Bedrock/Vertex providers, server deployment seams, persistence schema v5 lifecycle hooks, and M365/GWS work connectors. The exact 0.0.13 graph has **41 manifests**. Phase 8 optional packages (`@arnilo/prism-policy`, `@arnilo/prism-model-router`, enterprise providers, `@arnilo/prism-work-tools`) enroll in `@arnilo/prism-all` only; `@arnilo/prism-code` and `@arnilo/prism-sdk` stay lean. no Office package, 0.0.14 conversation/artifact services, internal auth DB, or Redis/SQS queue adapter ships. Clean protected-branch CI, signed commit/tag, npm authentication, OIDC attestation, protected live canaries, and actual publication remain operator/workflow prerequisites.
271
+
272
+ ```bash
273
+ git diff --check
274
+ npm ci
275
+ npm run sdk:ready
276
+ node scripts/benchmark-0.0.13.mjs
277
+ node --test scripts/benchmark-0.0.13.test.mjs
278
+ npm run release:check -- --version 0.0.13 --allow-untagged --report /tmp/prism-0.0.13-preflight.json
279
+ git tag -s v0.0.13 -m "Prism 0.0.13"
280
+ git verify-tag v0.0.13
281
+ git push origin v0.0.13
282
+ ```
283
+
284
+ The tag workflow publishes only through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`. Re-run failed jobs for the same tag; registry state is the resumable journal. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish operator checks.
285
+
286
+ #### Rollback limitations
287
+
288
+ npm publication is immutable: partial publication is a resume case, and confirmed defects require deprecation plus a fixed version rather than rollback.
289
+
290
+ Package set (41):
291
+
292
+ ```text
293
+ @arnilo/prism
294
+ @arnilo/prism-ag-ui
295
+ @arnilo/prism-browser
296
+ @arnilo/prism-coding-agent
297
+ @arnilo/prism-coding-security
298
+ @arnilo/prism-compaction-llm
299
+ @arnilo/prism-compaction-observational-memory
300
+ @arnilo/prism-credentials-node
301
+ @arnilo/prism-evals
302
+ @arnilo/prism-mcp
303
+ @arnilo/prism-memory
304
+ @arnilo/prism-model-router
305
+ @arnilo/prism-observability-opentelemetry
306
+ @arnilo/prism-policy
307
+ @arnilo/prism-all
308
+ @arnilo/prism-base
309
+ @arnilo/prism-code
310
+ @arnilo/prism-compaction
311
+ @arnilo/prism-providers
312
+ @arnilo/prism-sdk
313
+ @arnilo/prism-provider-ai-sdk
314
+ @arnilo/prism-provider-anthropic
315
+ @arnilo/prism-provider-azure
316
+ @arnilo/prism-provider-bedrock
317
+ @arnilo/prism-provider-google
318
+ @arnilo/prism-provider-kimi
319
+ @arnilo/prism-provider-neuralwatt
320
+ @arnilo/prism-provider-openai
321
+ @arnilo/prism-provider-opencode-go
322
+ @arnilo/prism-provider-openrouter
323
+ @arnilo/prism-provider-vertex
324
+ @arnilo/prism-provider-zai
325
+ @arnilo/prism-rag
326
+ @arnilo/prism-server
327
+ @arnilo/prism-session-store-postgres
328
+ @arnilo/prism-session-store-sqlite
329
+ @arnilo/prism-supervisor
330
+ @arnilo/prism-tool-validator-json-schema
331
+ @arnilo/prism-web-tools
332
+ @arnilo/prism-work-tools
333
+ @arnilo/prism-workflows
334
+ ```
335
+
194
336
  ### 0.0.12 publish handoff
195
337
 
196
338
  **Decision: GO after operator prerequisites below.** Phase 7 coding-harness interoperability ships the optional `@arnilo/prism-ag-ui` root/`./acp` adapter, shared durable resume stream, coding compaction preset, and provider-authorized OAuth boundary. The exact 0.0.12 graph has 35 manifests. `@arnilo/prism-ag-ui` is included by `@arnilo/prism-all` only; `@arnilo/prism-code` and `@arnilo/prism-sdk` remain free of AG-UI/ACP dependencies. no Office package, 0.0.13 conversations/artifacts/enterprise identity APIs, or Anthropic/Gemini subscription OAuth adapter ships. Clean protected-branch CI, signed commit/tag, npm authentication, OIDC attestation, protected live provider/Docker/Playwright/PostgreSQL/keychain gates, and actual publication remain operator/workflow prerequisites.
@@ -531,8 +673,8 @@ npm publication is not transactional and published versions are immutable. Parti
531
673
 
532
674
  ## Extension and configuration notes
533
675
 
534
- - **Required `@arnilo/prism` peer.** Every first-party code package declares a non-optional `@arnilo/prism@0.0.12` peer (`peerDependenciesMeta` must not mark `@arnilo/prism` optional; other peers such as `playwright-core` may be optional). The range stays pinned to `0.0.12` for the current 0.x release and will widen to `^1.0.0` at the 1.x stable release. Inside the workspace each package also declares `"@arnilo/prism": "file:../.."` in `devDependencies` so `npm install` resolves the peer locally; that devDependency is stripped from consumer installs and is not a runtime dependency.
535
- - **Public access.** All 35 manifests (29 code packages + 6 family/profile packages) declare `"publishConfig": { "access": "public" }`; the publisher also passes `--access public` explicitly because scoped packages otherwise default to restricted on first publish.
676
+ - **Required `@arnilo/prism` peer.** Every first-party code package declares a non-optional `@arnilo/prism@0.0.14` peer (`peerDependenciesMeta` must not mark `@arnilo/prism` optional; other peers such as `playwright-core` may be optional). The range stays pinned to `0.0.14` for the current 0.x release and will widen to `^1.0.0` at the 1.x stable release. Inside the workspace each package also declares `"@arnilo/prism": "file:../.."` in `devDependencies` so `npm install` resolves the peer locally; that devDependency is stripped from consumer installs and is not a runtime dependency.
677
+ - **Public access.** All 43 manifests (37 code packages + 6 family/profile packages) declare `"publishConfig": { "access": "public" }`; the publisher also passes `--access public` explicitly because scoped packages otherwise default to restricted on first publish.
536
678
  - **Map retention knob.** Source maps are emitted locally but stripped from tarballs by `!dist/**/*.map`. Removing that `files` negation ships maps in releases (larger tarballs, better consumer stack traces).
537
679
  - **Release workflow.** `.github/workflows/release.yml` has six jobs. `verify` runs network-free SDK readiness on Node 24; `node20-compat` builds/imports every public root `exports` default target on Node 20 for declared `engines.node >=20` (docs examples need Node >=22.6 native TypeScript stripping); `postgres-integration` uses `pgvector/pgvector:pg16`; `supply-chain` runs high-severity audit, SPDX/license policy, and tracked-source secret scanning; and tag-only `codeql-release` runs SAST. Tag-only `publish` needs all five gates, preserves clean exact-tag/version/topological publication, and alone receives `NPM_TOKEN`, `id-token: write`, and `attestations: write`. Before npm publish it packs all current tarballs, generates checksums plus SPDX, scans unpacked public artifacts, creates GitHub attestations for tarballs and SBOM, then retains artifacts for 30 days. Registry state remains the resumable journal. Local `npm run release:dry-run` remains network-free SDK readiness; local PostgreSQL coverage is `PRISM_TEST_POSTGRES_URL=... npm run test:postgres`.
538
680
  - **Adding a package.** New workspace packages are picked up automatically by `npm run build --workspaces`, `npm test --workspaces`, `npm run pack:dry-run`, the packaging guard (`src/__tests__/packaging.test.ts`), and the install-smoke test (`src/__tests__/install-smoke.test.ts`) via the workspace glob; add the package to both tests' config arrays for explicit per-package assertions.
@@ -0,0 +1,245 @@
1
+ # Review coverage — 2026-07-23 Phase 8
2
+
3
+ Working evidence for Plan 076 Task 0. Freezes Phase 8 / Release **0.0.13** scope, package names, primitive ownership, finite limits, external revisions, threats, tests, docs, and release gates before implementation.
4
+
5
+ **Evidence frozen:** 2026-07-23. **Prism source:** `5b21f78cde6c4f3c9e7760f153c4bd8670d104e4`. **Release target:** 0.0.13. **Default test rule:** network-free fakes, CLI fake executables, and protocol fixtures; cloud/provider/tenant live canaries remain explicit host/operator gates.
6
+
7
+ ## Status legend
8
+
9
+ | Status | Meaning |
10
+ | --- | --- |
11
+ | `existing` | Current public contract covers the requirement. |
12
+ | `extend` | Owning task adds a generic reusable contract to an existing seam. |
13
+ | `new-package` | New optional workspace package; core stays free of product/cloud/CLI SDKs. |
14
+ | `compose` | Existing public primitives suffice; package-local wiring only. |
15
+ | `out-of-scope` | Later phase or deliberately unsupported; must not land in 0.0.13. |
16
+
17
+ ## Frozen product decision
18
+
19
+ 0.0.13 closes **enterprise identity, policy/audit, model governance, enterprise-cloud providers, server deployment seams, persistence lifecycle hooks, and least-privilege Microsoft 365 / Google Workspace connectors** only.
20
+
21
+ **Not in 0.0.13** (do not implement here):
22
+
23
+ | Deferred or rejected item | Owner / reason |
24
+ | --- | --- |
25
+ | Conversation storage/service, artifact co-work review API, personal memory consent UX, channel/device adapters | 0.0.14+ product scope. |
26
+ | Studio, hosted cloud, managed observability, visual workflow editor, broad Slack/Teams chat catalog | Demand-gated 0.1.x control-plane / product layer. |
27
+ | Local Office `.docx`/`.xlsx`/`.pptx` executable, SDK, wrapper, protocol, or runtime package | Product boundary; hosts may use external skills/tools. |
28
+ | User authentication database or identity provider inside Prism | Host/application owns auth; Prism accepts host-verified identity only. |
29
+ | Mandatory global policy engine, KMS, WORM store, queue broker, or container orchestrator | Host-replaceable seams; at most one reference adapter per seam. |
30
+ | Model-controlled M365/GWS command strings, generic Graph/Discovery requests, CLI login, tenant-admin commands, debug/telemetry dumps, credential-store access | Injection / over-privilege / secret-leakage risk. |
31
+ | Advertising Teams/Planner/To Do or Docs/Sheets/Slides as universal parity | Capability-gated only; Outlook/Gmail/calendar/files/tasks are the 0.0.13 common denominator. |
32
+ | Folding Azure/Bedrock/Vertex into consumer Anthropic/Google packages | Enterprise workload-identity and region/private-endpoint semantics differ. |
33
+ | Redis/SQS/other queue adapters by default | **Task 5 deferred:** no measured Postgres polling bottleneck recorded; keep coordinator poll path. |
34
+ | Putting work connectors or enterprise-cloud SDKs into `@arnilo/prism-code` / `@arnilo/prism-sdk` | Profiles stay lean; enroll only in `@arnilo/prism-all` unless size/adoption review revises this freeze. |
35
+
36
+ ## Frozen external revisions
37
+
38
+ | Surface | Frozen reference | Compatibility decision |
39
+ | --- | --- | --- |
40
+ | Prism | [`5b21f78cde6c4f3c9e7760f153c4bd8670d104e4`](../plans/076-release-0-0-13-enterprise-identity-policy-governance-work-connectors.md) | Existing ownership/credential/permission/provider/server/persistence/lease seams inventoried below. |
41
+ | Node.js | Release support remains Node 20+ | Optional packages use Web `Request`/`Response`, `execFile`, abort, and existing bounded patterns; no framework dependency. |
42
+ | Microsoft Entra Agent ID | [Governing Agent Identities](https://learn.microsoft.com/en-us/entra/id-governance/agent-id-governance-overview); [What are agent identities?](https://learn.microsoft.com/en-us/entra/agent-id/what-are-agent-identities) | Informs `Principal`/`AgentIdentity` sponsor/owner/delegation/scope/expiry vocabulary. Prism does **not** embed Entra; hosts verify tokens/claims and supply identity context. |
43
+ | CLI for Microsoft 365 | [CLI for Microsoft 365 docs](https://pnp.github.io/cli-microsoft365/); npm `@pnp/cli-microsoft365`; GitHub `pnp/cli-microsoft365` | Host-installed execution adapter only. Prism ships hard-coded typed `execFile` argument templates; never `m365 login`, setup, tenant-admin, or model-built argv. |
44
+ | Google Workspace CLI | [googleworkspace/cli](https://github.com/googleworkspace/cli); npm `@googleworkspace/cli` (`gws`) | Host-installed execution adapter only. Discovery-dynamic surface is **not** exposed to models; Prism allow-lists typed operations, forces JSON/NDJSON parse bounds, disables interactive auth/debug from Prism. |
45
+ | Azure OpenAI / Foundry Entra auth | [Entra ID authentication for Azure OpenAI / Foundry Models](https://learn.microsoft.com/en-us/azure/ai-foundry/openai/how-to/managed-identity) | Host supplies late-bound workload credential callback (Managed Identity / token provider). No static keys in fixtures. |
46
+ | Azure private network | [Configure virtual networks for Foundry Tools](https://learn.microsoft.com/en-us/azure/ai-services/cognitive-services-virtual-networks) | Preserve custom subdomain / private-endpoint / VNet semantics on package config; do not rewrite endpoints. |
47
+ | Amazon Bedrock IAM | [Identity and access management for Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html) | Host supplies AWS credential callback (IRSA / instance role / assumed role). Package never embeds long-lived keys. |
48
+ | Amazon Bedrock PrivateLink | [Interface VPC endpoints for Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/vpc-interface-endpoints.html) | Preserve region + optional VPC endpoint override; fail closed if residency policy rejects region. |
49
+ | Google Vertex / ADC | [Authenticate to Vertex AI (generative)](https://cloud.google.com/vertex-ai/generative-ai/docs/start/authenticate); [Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials) | Host supplies ADC/workload credential callback. Separate from `@arnilo/prism-provider-google` consumer API-key package. |
50
+ | OpenRouter routing metadata | Existing `openRouterRouting` compat fields; [OpenRouter provider docs](providers/openrouter.md) | Router may honor metadata only when policy/allow-list/residency permit; never bypass governance. |
51
+
52
+ ## Frozen package and API contract
53
+
54
+ | Decision | Frozen choice |
55
+ | --- | --- |
56
+ | Core identity | Add `Principal`, `AgentIdentity`, `IdentityVerifier`, `assertIdentityActive`, `narrowIdentity` (names may alias but semantics frozen). Extend `OwnershipScope`; no identity database in core. |
57
+ | Policy package | New optional `@arnilo/prism-policy` with evaluator + decision ledger + cursor export; redacted/evidence-ref payloads only. |
58
+ | Model router | New optional `@arnilo/prism-model-router` as `ProviderResolver`-compatible facade over allow-list/residency/budget/rate/circuit/fallback. |
59
+ | Enterprise cloud providers | New optional `@arnilo/prism-provider-azure`, `@arnilo/prism-provider-bedrock`, `@arnilo/prism-provider-vertex`. Keep `@arnilo/prism-provider-anthropic` and `@arnilo/prism-provider-google` separate. |
60
+ | Work connectors | New optional `@arnilo/prism-work-tools` with subpaths `./microsoft365` and `./google-workspace` only. |
61
+ | Server | Extend `@arnilo/prism-server` with optional health/readiness, host auth/rate-limit adapter hooks, graceful drain, event replay helpers, and worker/coordinator deployment contracts over existing leases. |
62
+ | Persistence lifecycle | Extend existing `RetentionPolicy` / production persistence seams with apply/delete/legal-hold/export hooks, optional host KMS/envelope callback, tenant quotas, and extension allow-list/signature policy. |
63
+ | Idempotency | Add a narrow generic side-effect `IdempotencyStore` (or equivalent) consumed by both connector subpaths; reuse session `idempotencyKey` patterns for inspiration, not as the connector store. |
64
+ | Profile manifests | New packages enroll in `@arnilo/prism-all` only. `@arnilo/prism-code` and `@arnilo/prism-sdk` stay free of work connectors and enterprise-cloud SDKs. |
65
+ | Release graph | Task 10 versions the graph to **0.0.13** and adds six publishable packages (**35 → 41** manifests: root + 40 under `packages/`). |
66
+ | Queues | Absent by default. Task 5 may add a queue adapter only with measured Postgres polling/load evidence recorded in Plan 076 Compromises/Further Actions and this page. |
67
+
68
+ ### Frozen package names and subpaths
69
+
70
+ ```text
71
+ @arnilo/prism-policy
72
+ @arnilo/prism-model-router
73
+ @arnilo/prism-provider-azure
74
+ @arnilo/prism-provider-bedrock
75
+ @arnilo/prism-provider-vertex
76
+ @arnilo/prism-work-tools
77
+ @arnilo/prism-work-tools/microsoft365
78
+ @arnilo/prism-work-tools/google-workspace
79
+ ```
80
+
81
+ ## Capability traceability matrix
82
+
83
+ | Phase 8 roadmap criterion | Existing surface | Minimum gap | Status / owner | Required proof | Docs | Release gate |
84
+ | --- | --- | --- | --- | --- | --- | --- |
85
+ | Authenticated `Principal` / `AgentIdentity` with tenant, sponsor/owner, delegated actor, scopes, credential refs, issued/expiry, revocation; immutable propagation | `OwnershipScope`, server `authorize`→ownership, run/tool/workflow ownership fields, OTel attributes | Core identity types + verifier seam + propagation asserts | `extend` / Task 1 | expired/revoked/wrong-tenant/widen-scope denial; MCP/A2A/server/tool/workflow/telemetry carry refs without secrets | `agent-identity.md`, host-security, public-contracts | offline core + package tests |
86
+ | Policy-decision ledger allow/deny/modify/approval + WORM export without unrestricted payloads | `GuardrailDecision`, `PermissionPolicy`, tool_approval interruption, run feedback immutability, redaction | Optional policy package + redacted store/export | `new-package` / Task 2 | attribution, version mismatch fail-closed, export pagination, payload rejection | `policy-and-audit.md` | offline package test |
87
+ | Model governance allow-list/residency/routing/fallback/circuit/retry/budget/rate + diagnostics | `ProviderResolver`, `ProviderRequestPolicy`, OpenRouter routing metadata, run budgets | Optional model-router facade + diagnostics | `new-package` / Task 3 | deny-before-call matrix; diagnostic redaction; OpenRouter gated by policy | `model-routing.md`, openrouter | offline package test |
88
+ | Azure / Bedrock / Vertex enterprise adapters with workload identity + region/private-endpoint | Provider package conformance, `CredentialResolver`, OpenAI-compatible patterns where applicable | Three provider packages + host credential callbacks | `new-package` / Task 4 | MI/IRSA/ADC mocks; region preserved; consumer Anthropic/Google unchanged | `providers/azure.md`, `bedrock.md`, `vertex.md` | offline + gated live canaries |
89
+ | Server health/readiness, auth/rate-limit adapters, drain, replay, worker/coordinator | `createPrismHandler`, authorize/ownership, leases/fencing, SSE/resume, `queryEvents` | Optional health/drain/replay/deployment helpers | `extend` / Task 5 | multi-process failover/drain/replay; unauthorized detail denial; queues absent by default | `server.md`, performance | offline multi-process fixtures |
90
+ | M365 + GWS identity-scoped tools (mail/calendar/files/tasks); Teams/Planner/To Do and Docs/Sheets/Slides capability-gated | `ToolDefinition`, tool approval, web-tools subpath pattern, coding-security `execFile` bounds | `@arnilo/prism-work-tools` subpaths + typed templates | `new-package` / Task 7 (M365), Task 8 (GWS) | fake CLI argv injection/schema/JSON bounds; capability mismatch; least scopes | `work-tools.md`, `work-connectors.md` | offline package test + gated tenant canaries |
91
+ | Draft-then-approve mutations; idempotent retries via operation/draft/resource IDs + concurrency tokens | tool_approval interruption, session `idempotencyKey`, checkpoints | Connector draft store + side-effect idempotency store | `extend` + `new-package` / Task 7, Task 8 | duplicate retry no-op; stale ETag fail; send only after approval | work-tools docs | offline fixtures |
92
+ | Hard-coded CLI `execFile` templates only; no model command/login/admin/debug/credential access | coding-security sandbox `execFile`, credential redaction | Package-local template registry + isolated config dirs | `compose` / Task 7, Task 8 | forbidden argv/env denial; credentials never in argv/model context | work-connectors, credential-storage, host-security | offline hostile argv tests |
93
+ | Retention/deletion/legal-hold/export, optional KMS/envelope, extension allow-list/signature, tenant quotas | `RetentionPolicy`, feedback delete, credentials-node envelope crypto, extension kernel trust | Persistence lifecycle + extension signature/allow-list + quota hooks | `extend` / Task 6 | hold blocks delete; unsigned extension deny; quota contention; key rotation mock | database-persistence, host-security, extensions | offline store + extension tests |
94
+ | Bounded performance for identity/policy/router/connectors/deployment | Existing server/web-tools/persistence limits | Frozen caps below + benchmarks | `compose` / Tasks 1–8, 10 | hostile overflow; network-free benchmarks | performance, review page | `sdk:ready` + benchmark |
95
+ | Narrow optional contracts; no mandatory control plane | Product boundaries; profile packaging | Package/profile guards | `compose` / Tasks 0, 9–10 | pack graph 41; prism-code/sdk free of connectors/cloud SDKs | release-and-install, migration | pack/install + diff review |
96
+ | Security fail-closed: verified identity, narrow delegation, late-bound creds, least privilege, approvals, share/attachment/residency policy | host-security checklist, redaction, permission/trust | Threat matrix enforcement in owning tasks | `compose` / all tasks | negative tests per threat row | host-security + task docs | security review before publish |
97
+
98
+ ## Primitive and caller inventory
99
+
100
+ | Primitive / symbol | Existing contract and callers | Phase 8 disposition |
101
+ | --- | --- | --- |
102
+ | `OwnershipScope` (`tenantId`/`accountId`/`userId`) | Persistence records, tools, agents, server authorize result, workflows, leases | **Extend** with authenticated identity context that still projects to ownership; never replace ownership checks. |
103
+ | `CredentialResolver` / OAuth store / credentials-node envelope | Late-bound secrets; encrypted vault/keychain | Reuse. Enterprise cloud + connectors resolve via host callbacks; secrets never in CLI argv or model context. |
104
+ | `PermissionPolicy` / `TrustPolicy` | Tool/extension/resource checks | Reuse at connector and extension boundaries; optional policy package may record decisions. |
105
+ | `ProviderRequestPolicy` / `ProviderResolver` | Provider request mutation and model→provider resolution | Reuse. Model-router wraps resolver; request policies remain chainable. |
106
+ | Guardrails + `tool_approval` interruption | `createSecureAgent`, agent loop durable suspend | Reuse for connector mutation approvals; do not invent a second approval runtime. |
107
+ | Run ledger / feedback / `AgentEventRecord` | Durable redacted run evidence | Reuse for attributable diagnostics refs; policy ledger stays separate schema. |
108
+ | Checkpoints / leases | Durable interruption and multi-process fencing | Reuse for drain/worker/coordinator and connector draft durability where applicable. |
109
+ | `RetentionPolicy` (+ query on production stores) | Stored policy rows; limited apply semantics today | **Extend** with apply/delete/legal-hold/export/quota hooks. |
110
+ | Server `authorize` → ownership | `@arnilo/prism-server` every route | **Extend** optional health/rate-limit/drain/replay; ownership still only from authorize. |
111
+ | OTel / observability package | Span/metric export | Propagate identity refs as redacted attributes; no secret material. |
112
+ | Supervisor / A2A / MCP | Delegation and remote tool bridges | Accept verified identity; refuse cross-tenant widening. |
113
+ | coding-security `execFile` / sandbox bounds | Sandbox FS/shell | Pattern reuse for CLI adapters (typed args, caps, kill); not a coding-workspace dependency for work-tools. |
114
+ | web-tools subpath packaging | `@arnilo/prism-web-tools/{brave,exa,firecrawl}` | Copy packaging pattern for work-tools subpaths. |
115
+ | Session `idempotencyKey` | Session append dedup | Inspiration only; connectors need a side-effect idempotency store keyed by identity+operation. |
116
+
117
+ ### Primitive decision
118
+
119
+ **Authorized generic core extensions (each needs ≥2 consumers):**
120
+
121
+ 1. Authenticated identity contracts + attach/assert/narrow helpers (consumers: server, tools, workflows, MCP, A2A, telemetry, connectors, providers/router).
122
+ 2. Side-effect `IdempotencyStore` contract (consumers: M365 + GWS; optional future connectors).
123
+ 3. Retention/legal-hold/export/quota persistence hooks (consumers: sqlite + postgres production stores; memory may unsupported/explicit).
124
+ 4. Extension allow-list / signature policy seam on the extension kernel (consumers: host loaders + contribution discovery).
125
+
126
+ **Authorized new packages:** `@arnilo/prism-policy`, `@arnilo/prism-model-router`, `@arnilo/prism-provider-azure`, `@arnilo/prism-provider-bedrock`, `@arnilo/prism-provider-vertex`, `@arnilo/prism-work-tools` (`./microsoft365`, `./google-workspace`).
127
+
128
+ **Authorized package/server extensions:** health/drain/replay/deployment helpers on `@arnilo/prism-server`; optional KMS/envelope callback wiring via credentials-node patterns without forcing cloud KMS SDKs into core.
129
+
130
+ **Rejected:** auth DB; control plane; Office packages; model-controlled CLI; merging enterprise cloud into consumer Anthropic/Google; mandatory queues; putting connectors/cloud SDKs into `prism-code`/`prism-sdk`; protocol/UI frameworks in core.
131
+
132
+ ## Frozen finite limits and charging points
133
+
134
+ **Rule:** validate every untrusted field before persistence, provider call, CLI spawn, or export enqueue. Owning tasks may tighten defaults but must not raise hard caps without updating this page, tests, and docs.
135
+
136
+ ### Identity / policy
137
+
138
+ | Resource | Default / hard cap | Charge/check point | Failure/cleanup owner |
139
+ | --- | ---: | --- | --- |
140
+ | Scopes per identity | 64 / 256 | Before verify/narrow/attach | Task 1 rejects. |
141
+ | One scope string | 128 B / 512 B | Before verify/narrow | Task 1 rejects. |
142
+ | Identity metadata map | 4 KiB / 16 KiB | Before persistence/telemetry attach | Task 1 omits/rejects; never stores secrets. |
143
+ | Credential reference string | 256 B / 2 KiB | Before attach | Task 1 rejects; never expands to secret. |
144
+ | Policy decision record | 8 KiB / 64 KiB | Before ledger append | Task 2 rejects unrestricted payloads. |
145
+ | Evidence ref / reason | 1 KiB / 8 KiB each | Before append/export | Task 2 truncates with marker or rejects. |
146
+ | Policy export page | 100 / 500 | Before export cursor read | Task 2 pages; no full scan. |
147
+ | Identity/policy CPU path | sync O(fields); 0 network in core helpers | Before tool/provider work | Tasks 1–2 fail closed locally. |
148
+
149
+ ### Model router
150
+
151
+ | Resource | Default / hard cap | Charge/check point | Failure/cleanup owner |
152
+ | --- | ---: | --- | --- |
153
+ | Resolve attempts (including fallbacks) | 3 / 8 | Before each provider resolve | Task 3 stops; emits attributable deny. |
154
+ | Concurrent circuit keys retained | 1,024 / 16,384 | Before circuit state insert | Task 3 evicts oldest or rejects new key. |
155
+ | Diagnostics record | 8 KiB / 64 KiB | Before audit/telemetry | Task 3 redacts; no secrets/raw prompts. |
156
+ | Token/cost budget fields | finite non-negative; host units | Before provider call | Task 3 denies when exhausted. |
157
+ | Rate-limit window memory | per identity+model key; capped with circuit keys | Before admit | Task 3 denies with retry hint bounded. |
158
+
159
+ ### Work connectors (per tool invocation)
160
+
161
+ | Resource | Default / hard cap | Charge/check point | Failure/cleanup owner |
162
+ | --- | ---: | --- | --- |
163
+ | Pagination pages | 20 / 100 | Before next-page CLI/API call | Task 7 / Task 8 stop with partial+cursor or error. |
164
+ | Items per page / aggregate items | 50 / 500; 200 / 2,000 | Before parse/accumulate | Task 7 / Task 8 reject/truncate with marker. |
165
+ | Request/response body | 256 KiB / 2 MiB | Before spawn/parse | Task 7 / Task 8 kill/reject. |
166
+ | Attachment / file bytes | 5 MiB / 25 MiB; 10 MiB / 50 MiB | Before upload/download/scan | Task 7 / Task 8 deny; scan hook required for inbound. |
167
+ | CLI stdout/stderr capture | 2 MiB / 16 MiB | While reading pipes | Task 7 / Task 8 abort process. |
168
+ | Process wall time | 60 s / 10 min | Spawn abort signal | Task 7 / Task 8 kill process tree best-effort. |
169
+ | Concurrent CLI processes / identity | 2 / 8 | Before spawn | Task 7 / Task 8 queue-reject. |
170
+ | Retries for idempotent ops | 2 / 4 | Before retry | Task 7 / Task 8 require idempotency key. |
171
+ | Rate / cost counters | finite host ceilings | Before mutation | Task 7 / Task 8 deny. |
172
+ | Operation/draft/idempotency key | 256 B / 2 KiB | Before store write | Task 7 / Task 8 reject. |
173
+
174
+ ### Server deployment / persistence lifecycle
175
+
176
+ | Resource | Default / hard cap | Charge/check point | Failure/cleanup owner |
177
+ | --- | ---: | --- | --- |
178
+ | Health/readiness response | 4 KiB / 64 KiB; no tenant payloads by default | Before serialize | Task 5 redacts. |
179
+ | Drain admit cutoff | 30 s / 5 min | After drain flag | Task 5 rejects new admits; in-flight use existing timeouts. |
180
+ | Replay page rows / cursor | 100 / 500; 4 KiB / 16 KiB | Before `queryEvents` | Task 5 pages; authorize+ownership required. |
181
+ | Publish/capacity concurrent runs | reuse server 16 / 256 | Existing handler | Task 5 documents; does not raise hard caps. |
182
+ | Tenant quota counters | finite host ceilings per resource class | Before persist/spawn | Task 6 denies with attributable reason. |
183
+ | Envelope/KMS payload | reuse credentials-node envelope file caps (4 MiB / 16 MiB) | Before encrypt/decrypt | Task 6 rejects; host KMS timeout bounded (60 s hard). |
184
+
185
+ **Forbidden:** unbounded CLI output, model-built argv, credential-in-argv, unrestricted policy payload store, uncapped router fallback loops, raising hard caps silently, default queue broker, Office binary packaging.
186
+
187
+ ## Work-connector capability freeze
188
+
189
+ | Workload | 0.0.13 status | Notes |
190
+ | --- | --- | --- |
191
+ | Outlook / Gmail search, read, draft, approved send | supported common denominator | Draft durable before send; external-recipient policy fail closed. |
192
+ | Calendar list/create/update | supported common denominator | Idempotent create/update with provider concurrency tokens. |
193
+ | OneDrive/SharePoint / Drive files search/read/upload/move/share | supported common denominator | Share external targets policy-gated; attachment caps apply. |
194
+ | Tasks list/create/complete | supported common denominator | Provider-specific task systems mapped to shared result shapes where possible. |
195
+ | Teams / Planner / To Do | capability-gated optional | Not advertised as universal parity; absent capability → explicit unsupported. |
196
+ | Docs / Sheets / Slides cloud ops | capability-gated optional | Same; no local Office execution implied. |
197
+ | CLI login / setup / tenant-admin / debug / credential export | unsupported from Prism | Host may run outside Prism; tools must deny if invoked. |
198
+ | Generic Graph or Discovery passthrough | unsupported | Hard-coded templates only. |
199
+
200
+ ## Threat and authority matrix
201
+
202
+ | Boundary | Trusted authority | Untrusted input | Mandatory control | Default / unsupported |
203
+ | --- | --- | --- | --- | --- |
204
+ | Identity claims | Host `IdentityVerifier` | Caller headers/body identity fields | Verify before attach; expiry/revocation/tenant checks | Caller-asserted identity unsupported. |
205
+ | Delegation | Parent verified identity | Requested child scopes | `child.scopes ⊆ parent.scopes`; tenant immutable | Scope widening / tenant swap unsupported. |
206
+ | Credentials | Host resolver / workload callback / CLI config dir | Model text, tool args, env dumps | Late-bound resolve; never argv/model/context; per-identity isolated config | Credential discovery from model unsupported. |
207
+ | Policy decisions | Host policy + ledger | Action/resource context | Redact; store evidence refs; version pin | Unrestricted prompt/tool body in ledger unsupported. |
208
+ | Model routing | Allow-list + residency + budgets | Model id, OpenRouter metadata | Deny before provider call on miss/exhaustion | Bypass router via metadata unsupported when policy attached. |
209
+ | Cloud providers | Host workload identity | Endpoint/region overrides | Preserve private-endpoint/region; mock-only offline | Static keys in repo/fixtures unsupported. |
210
+ | Server health/replay | Authorize + ownership | Health query detail flags, replay cursors | Minimal health by default; ownership-scoped replay | Anonymous tenant dump unsupported. |
211
+ | Connector CLI | Hard-coded templates + host binary pin | Model-suggested command/args | `execFile` argv from template only; version/schema validate at start | Model command, login, admin, debug unsupported. |
212
+ | Mutations | Durable draft + tool_approval + idempotency store | Retry storms, stale ETags | Draft→approve→send; concurrency token; dedupe | Blind send/share/delete unsupported. |
213
+ | Attachments / shares | Host scan + recipient policy | Files, external recipients | Cap bytes; scan hook; external deny-by-default | Unscanned inbound / open external share unsupported. |
214
+ | Extensions | Allow-list + signature policy | Unsigned packages | Fail closed when policy enabled | Unsigned load when enterprise policy on unsupported. |
215
+ | Retention / legal hold | Host hold + retention policy | Delete requests | Hold blocks delete/export rules per policy | Silent purge under hold unsupported. |
216
+
217
+ ## Validation matrix for Task 0
218
+
219
+ | Check | Frozen assertion |
220
+ | --- | --- |
221
+ | Traceability | Every Phase 8 roadmap Functional/Performance/Code Quality/Security criterion has one primary Task 1–10 owner; 0.0.14 conversations/artifacts/channels/devices and 0.1.x Studio/control-plane have none. |
222
+ | Package names | Exact names/subpaths listed above; 35 → 41 manifests at release; new packages only in `prism-all`. |
223
+ | Primitive reuse | Only identity, side-effect idempotency, retention/hold/export/quota, and extension signature/allow-list are authorized generic core/extension gaps; each needs ≥2 consumers. |
224
+ | CLI boundary | M365/GWS adapters are hard-coded templates via `execFile`; no model-controlled command surface. |
225
+ | Cloud separation | Azure/Bedrock/Vertex packages distinct from consumer Anthropic/Google. |
226
+ | Finite resources | All identity/policy/router/connector/deployment caps above are enforced by owning tasks. |
227
+ | Security | Host-verified identity, narrow delegation, late-bound credentials, draft-then-approve, fail-closed residency/share/attachment/extension/hold policy. |
228
+ | Queues | **Deferred after Task 5:** no Redis/SQS adapter. Postgres/`createWorkflowCoordinator` checkpoint polling remains default; revisit only with measured polling/load evidence. |
229
+
230
+
231
+ ## Documentation and release ownership
232
+
233
+ - Task 0: this evidence page, `docs/index.md`, and `docs.test.ts` regression guard.
234
+ - Task 1: identity contracts + propagation docs (`agent-identity.md` and cross-links).
235
+ - Task 2: `@arnilo/prism-policy` + `policy-and-audit.md`.
236
+ - Task 3: `@arnilo/prism-model-router` + `model-routing.md`.
237
+ - Task 4: azure/bedrock/vertex provider packages + provider docs.
238
+ - Task 5: server deployment seams + `server.md` / performance notes.
239
+ - Task 6: retention/KMS/quotas/extension signature docs + persistence/security pages.
240
+ - Task 7: `@arnilo/prism-work-tools/microsoft365` + shared work-tools contracts.
241
+ - Task 8: `@arnilo/prism-work-tools/google-workspace` + shared result-shape parity docs.
242
+ - Task 9: canonical docs, examples, migration, index navigation.
243
+ - Task 10: 0.0.13 graph, benchmarks, pack/install, supply-chain, dry-run publish, roadmap completion evidence.
244
+
245
+ No public implementation API changes land in Task 0. This page, `roadmap.md` Phase 8, and Plan 076 are authoritative until implementation; later tasks may tighten defaults but cannot widen scope, raise hard caps, add Office packages, embed an auth DB/control plane, expose model-controlled CLI, merge enterprise cloud into consumer Anthropic/Google, or enable default queues without updating this evidence, tests, docs, and plan.