@arnilo/prism 0.0.22 → 0.0.24

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 (45) hide show
  1. package/CHANGELOG.md +36 -2
  2. package/dist/agent-event-source.d.ts +11 -0
  3. package/dist/agent-event-source.js +512 -0
  4. package/dist/agent-run-state.js +6 -1
  5. package/dist/agents.js +7 -2
  6. package/dist/contracts.d.ts +157 -0
  7. package/dist/index.d.ts +7 -2
  8. package/dist/index.js +4 -1
  9. package/dist/testing/agent-event-source-conformance.d.ts +4 -0
  10. package/dist/testing/agent-event-source-conformance.js +54 -0
  11. package/dist/testing/persistence-schema.d.ts +2 -2
  12. package/dist/testing/persistence-schema.js +58 -21
  13. package/dist/testing/tool-effect-store-conformance.d.ts +9 -0
  14. package/dist/testing/tool-effect-store-conformance.js +85 -0
  15. package/dist/tool-effects.d.ts +15 -0
  16. package/dist/tool-effects.js +338 -0
  17. package/dist/tools.d.ts +3 -1
  18. package/dist/tools.js +204 -9
  19. package/docs/0.1.0-readiness.md +10 -9
  20. package/docs/a2a.md +6 -2
  21. package/docs/ag-ui-adoption.md +77 -0
  22. package/docs/ag-ui.md +39 -42
  23. package/docs/agent-events.md +5 -1
  24. package/docs/browser-automation.md +2 -0
  25. package/docs/coding-agent-tools.md +2 -0
  26. package/docs/database-persistence.md +5 -0
  27. package/docs/enterprise-postgres-state.md +177 -0
  28. package/docs/evaluations.md +13 -0
  29. package/docs/host-security.md +11 -1
  30. package/docs/index.md +17 -14
  31. package/docs/mcp-tools.md +17 -2
  32. package/docs/migration.md +41 -0
  33. package/docs/model-routing.md +17 -8
  34. package/docs/performance.md +38 -0
  35. package/docs/policy-and-audit.md +12 -0
  36. package/docs/postgres-persistence.md +7 -3
  37. package/docs/public-contracts.md +2 -0
  38. package/docs/release-and-install.md +67 -680
  39. package/docs/server.md +9 -6
  40. package/docs/sqlite-persistence.md +10 -2
  41. package/docs/supervisors.md +2 -0
  42. package/docs/tool-effects.md +95 -0
  43. package/docs/tools.md +4 -0
  44. package/docs/work-tools.md +21 -1
  45. package/package.json +11 -2
@@ -2,57 +2,22 @@
2
2
 
3
3
  ## What it does
4
4
 
5
- Prism is published as one core package, thirty-nine first-party capability packages, and six pure-manifest family/profile packages (**46** 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. The measurable 1.0 readiness gates (command-per-gate) live in [`0.1.0-readiness.md`](./0.1.0-readiness.md).
6
-
7
- Core package:
8
-
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
-
11
- First-party workspace packages (each has non-optional `@arnilo/prism@0.0.22` peer and `sideEffects: false`; RAG also peers on memory, and server also peers on workflows):
12
-
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.
18
- - `@arnilo/prism-provider-ai-sdk` — optional AI SDK `LanguageModelV4` adapter; included by the provider and all umbrellas.
19
- - `@arnilo/prism-compaction-llm` — optional LLM-backed compaction strategy.
20
- - `@arnilo/prism-compaction-observational-memory` — optional source-backed observational memory.
21
- - `@arnilo/prism-observability-opentelemetry` — optional OpenTelemetry adapter for `AgentEvent` streams.
22
- - `@arnilo/prism-tool-validator-json-schema` — bounded JSON Schema tool argument validation.
23
- - `@arnilo/prism-mcp` — MCP transport/client bridge plus explicit authorized Prism tool/command server exposure.
24
- - `@arnilo/prism-coding-agent` / `@arnilo/prism-coding-security` — optional host shell/filesystem tools plus approval, containment, and sandbox policy.
25
- - `@arnilo/prism-session-store-sqlite` / `@arnilo/prism-session-store-postgres` — production persistence, checkpoints, and leases.
26
- - `@arnilo/prism-credentials-node` — encrypted-file and keychain credential storage.
27
- - `@arnilo/prism-workflows` — typed bounded DAG orchestration with durable approval, schedules/background runs, composition/state/replay, and multi-process coordination.
28
- - `@arnilo/prism-evals` — optional deterministic scorers, immutable datasets, and bounded batch experiments over `AgentRunResult`.
29
- - `@arnilo/prism-memory` — optional working memory, semantic recall, Embedder/VectorStore contracts, and PostgreSQL/pgvector adapter.
30
- - `@arnilo/prism-rag` — optional bounded text/Markdown chunking, vector indexing/retrieval, stable citations, and ContextProvider integration (peers on memory).
31
- - `@arnilo/prism-server` — optional framework-free authorized Web agent/workflow routes (peers on workflows).
32
- - `@arnilo/prism-supervisor` — optional bounded child delegation and A2A 1.0 card/server/client interoperability.
33
- - `@arnilo/prism-web-tools` — optional bounded host-selected Brave/Exa search and Firecrawl Markdown/schema extraction; native fetch, no vendor SDK/browser.
34
- - `@arnilo/prism-browser` — optional host-supplied Playwright browser tools (`browser_open`/`browser_snapshot`/`browser_act`/`browser_close`); import launches nothing; `playwright-core@1.61.0` optional peer.
35
- - `@arnilo/prism-ag-ui` — optional bounded AG-UI mapper/authorized Web handler/replay plus stable `./acp` sibling; root and ACP imports are inert.
36
- - `@arnilo/prism-caveman` — optional upstream Caveman behavior integration (`upstreamPath` required; not in code/sdk/all profiles).
37
- - `@arnilo/prism-ponytail` — optional upstream Ponytail behavior integration (peer `@dietrichgebert/ponytail` or `upstreamPath`; not in code/sdk/all profiles).
38
-
39
- ### 0.0.12 AG-UI package boundary
40
-
41
- `@arnilo/prism-ag-ui` is a publishable optional code package with root AG-UI exports and stable `./acp` sibling, peer `@arnilo/prism@0.0.22`, pinned `@ag-ui/core@0.0.57` / `@agentclientprotocol/sdk@1.3.0`, and no import-time network/listener/run. It is included by `@arnilo/prism-all` only—not `@arnilo/prism-code` or `@arnilo/prism-sdk`—so coding and SDK profiles stay free of UI protocol dependencies.
42
-
43
- Family/profile packages (pure manifests, no code or `dist`; ship `README.md` and `CHANGELOG.md`; use exact hard `dependencies`):
44
-
45
- - `@arnilo/prism-providers` — all eleven `@arnilo/prism-provider-*` packages: ten HTTP adapters plus AI SDK interoperability.
46
- - `@arnilo/prism-compaction` — both `@arnilo/prism-compaction-*` packages.
47
- - `@arnilo/prism-base` — core + compaction family + JSON Schema validator; excludes providers, MCP, native credentials/storage, and coding tools.
48
- - `@arnilo/prism-code` — base + coding-agent + coding-security + MCP; providers and persistence remain explicit choices.
49
- - `@arnilo/prism-sdk` — base + workflows + MCP + Node credentials + OpenTelemetry; providers and persistence remain explicit choices.
50
- - `@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.
51
- - `@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.
52
-
53
- 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.
54
-
55
- 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`.
5
+ Prism is published as one core package, forty first-party capability packages, and six pure-manifest family/profile packages (**47** 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. The measurable 1.0 readiness gates (command-per-gate) live in [`0.1.0-readiness.md`](./0.1.0-readiness.md).
6
+
7
+ Core `@arnilo/prism` ships runtime, CLI, templates, and docs. Every code package has a required `@arnilo/prism@0.0.24` peer; profiles are pure manifests. Installation activates no provider, listener, database, browser, credential, or tool capability.
8
+
9
+ Current **47** publishable manifests:
10
+
11
+ `@arnilo/prism`, `@arnilo/prism-ag-ui`, `@arnilo/prism-browser`, `@arnilo/prism-coding-agent`, `@arnilo/prism-coding-security`, `@arnilo/prism-compaction-llm`
12
+ `@arnilo/prism-compaction-observational-memory`, `@arnilo/prism-credentials-node`, `@arnilo/prism-enterprise-postgres`, `@arnilo/prism-evals`, `@arnilo/prism-mcp`, `@arnilo/prism-memory`
13
+ `@arnilo/prism-model-router`, `@arnilo/prism-observability-opentelemetry`, `@arnilo/prism-policy`, `@arnilo/prism-all`, `@arnilo/prism-base`, `@arnilo/prism-caveman`
14
+ `@arnilo/prism-code`, `@arnilo/prism-compaction`, `@arnilo/prism-ponytail`, `@arnilo/prism-providers`, `@arnilo/prism-sdk`, `@arnilo/prism-provider-ai-sdk`
15
+ `@arnilo/prism-provider-alibaba`, `@arnilo/prism-provider-anthropic`, `@arnilo/prism-provider-azure`, `@arnilo/prism-provider-bedrock`, `@arnilo/prism-provider-google`, `@arnilo/prism-provider-kimi`
16
+ `@arnilo/prism-provider-neuralwatt`, `@arnilo/prism-provider-ollama`, `@arnilo/prism-provider-openai`, `@arnilo/prism-provider-opencode-go`, `@arnilo/prism-provider-openrouter`, `@arnilo/prism-provider-vertex`
17
+ `@arnilo/prism-provider-zai`, `@arnilo/prism-rag`, `@arnilo/prism-server`, `@arnilo/prism-session-store-codecs`, `@arnilo/prism-session-store-postgres`, `@arnilo/prism-session-store-sqlite`
18
+ `@arnilo/prism-supervisor`, `@arnilo/prism-tool-validator-json-schema`, `@arnilo/prism-web-tools`, `@arnilo/prism-work-tools`, `@arnilo/prism-workflows`
19
+
20
+ Core ships `dist`, docs, templates, and `CHANGELOG.md`; code packages ship compiled output, README, license, and changelog. Family/profile packages ship manifest, README, and changelog. `@arnilo/prism-providers` includes all eleven `@arnilo/prism-provider-*` packages.
56
21
 
57
22
  ## When to use it
58
23
 
@@ -80,9 +45,10 @@ Consumers install the core package for the runtime and add first-party packages
80
45
  | Run the default (network-free) test suite | `npm test` |
81
46
  | Dry-run pack core + every package | `npm run pack:dry-run` |
82
47
  | Local mirror of the release verify gate | `npm run release:dry-run` |
83
- | Validate clean tag/version/ranges and reject registry collisions | `npm run release:check -- --version 0.0.22` |
84
- | Preview deterministic publish order | `npm run release:publish -- --version 0.0.22 --dry-run --allow-dirty --allow-untagged` |
85
- | Resume interrupted tagged publication | `npm run release:publish -- --version 0.0.22 --resume --report release-artifacts/publish-report.json` |
48
+ | Validate clean tag/version/ranges and reject registry collisions | `npm run release:check -- --version 0.0.24` |
49
+ | Preview deterministic publish order | `npm run release:publish -- --version 0.0.24 --dry-run --allow-dirty --allow-untagged` |
50
+ | Resume interrupted tagged publication | `npm run release:publish -- --version 0.0.24 --resume --report release-artifacts/publish-report.json` |
51
+ | Protected PostgreSQL enterprise suite | `PRISM_TEST_POSTGRES_URL="$DATABASE_URL" npm run test:postgres` |
86
52
  | Full SDK readiness gate (typecheck + offline tests + pack) | `npm run sdk:ready` |
87
53
 
88
54
  Public core import specifiers (from the root `exports` map):
@@ -95,9 +61,11 @@ Public core import specifiers (from the root `exports` map):
95
61
  | `@arnilo/prism/providers/openai` | `dist/providers/openai-primitives.{js,d.ts}` |
96
62
  | `@arnilo/prism/providers/media` | `dist/providers/media.{js,d.ts}` |
97
63
  | `@arnilo/prism/testing/provider-conformance` | `dist/testing/provider-conformance.{js,d.ts}` |
64
+ | `@arnilo/prism/testing/agent-event-source-conformance` | `dist/testing/agent-event-source-conformance.{js,d.ts}` |
98
65
  | `@arnilo/prism/testing/session-store-conformance` | `dist/testing/session-store-conformance.{js,d.ts}` |
99
66
  | `@arnilo/prism/testing/compaction-conformance` | `dist/testing/compaction-conformance.{js,d.ts}` |
100
67
  | `@arnilo/prism/testing/tool-conformance` | `dist/testing/tool-conformance.{js,d.ts}` |
68
+ | `@arnilo/prism/testing/tool-effect-store-conformance` | `dist/testing/tool-effect-store-conformance.{js,d.ts}` |
101
69
  | `@arnilo/prism/testing/extension-conformance` | `dist/testing/extension-conformance.{js,d.ts}` |
102
70
  | `@arnilo/prism/testing/persistence-schema` | `dist/testing/persistence-schema.{js,d.ts}` |
103
71
  | `@arnilo/prism/testing/run-ledger-conformance` | `dist/testing/run-ledger-conformance.{js,d.ts}` |
@@ -119,7 +87,7 @@ A packed tarball contains only public compiled output and release files:
119
87
  - Code packages ship `README.md`, `LICENSE`, and `CHANGELOG.md`; family/profile packages ship `README.md` and `CHANGELOG.md`.
120
88
  - The core tarball additionally ships the full `docs/` directory (the docs hub) and `templates/init/` used by `prism init`.
121
89
  - `dist/cli.js` and the `bin` link in core.
122
- - **Tarball filenames.** npm strips the `@scope/` prefix, so the core package `@arnilo/prism` produces a tarball named `arnilo-prism-0.0.22.tgz`; first-party packages produce `arnilo-prism-provider-<name>-0.0.22.tgz` / `arnilo-prism-compaction-<name>-0.0.22.tgz` / `arnilo-prism-coding-agent-0.0.22.tgz`; family/profile packages produce `arnilo-prism-{providers,compaction,base,code,sdk,all}-0.0.22.tgz`. The CLI bin name `prism` is unaffected by the package name (`npx prism` still works; npm allows the bin field to differ from the package name).
90
+ - **Tarball filenames.** npm strips the `@scope/` prefix, so the core package `@arnilo/prism` produces a tarball named `arnilo-prism-0.0.24.tgz`; first-party packages produce `arnilo-prism-provider-<name>-0.0.24.tgz` / `arnilo-prism-compaction-<name>-0.0.24.tgz` / `arnilo-prism-coding-agent-0.0.24.tgz`; family/profile packages produce `arnilo-prism-{providers,compaction,base,code,sdk,all}-0.0.24.tgz`. The CLI bin name `prism` is unaffected by the package name (`npx prism` still works; npm allows the bin field to differ from the package name).
123
91
 
124
92
  Excluded from every tarball by `files` negation:
125
93
 
@@ -138,9 +106,9 @@ Excluded from every tarball by `files` negation:
138
106
  "name": "host-app",
139
107
  "type": "module",
140
108
  "dependencies": {
141
- "@arnilo/prism": "0.0.22",
142
- "@arnilo/prism-provider-openai": "0.0.22",
143
- "@arnilo/prism-compaction-observational-memory": "0.0.22"
109
+ "@arnilo/prism": "0.0.24",
110
+ "@arnilo/prism-enterprise-postgres": "0.0.24",
111
+ "@arnilo/prism-provider-openai": "0.0.24"
144
112
  }
145
113
  }
146
114
  ```
@@ -183,11 +151,11 @@ For SDK readiness, run the same one-command gate directly. It composes existing
183
151
  npm run sdk:ready
184
152
  ```
185
153
 
186
- Release publication derives all **46** manifests from the workspace once, validates exact `0.0.22` manifest/lockfile/internal ranges, then uses deterministic dependency order. `release:check` requires a clean commit tagged `v0.0.22` and rejects any existing registry version. `release:publish --resume` skips only registry versions whose internal dependency fingerprint matches the local manifest; conflicting versions fail closed. Each attempted package is written immediately to the JSON report, so a failed job can rerun safely. `--dry-run` performs registry availability checks and invokes `npm publish --dry-run` with explicit public access, provenance, and `latest` tag, but does not publish.
154
+ Release publication derives all **47** manifests from the workspace once, validates exact `0.0.24` manifest/lockfile/internal ranges, then uses deterministic dependency order. `release:check` requires a clean commit tagged `v0.0.24` and rejects any existing registry version. `release:publish --resume` skips only registry versions whose internal dependency fingerprint matches the local manifest; conflicting versions fail closed. Each attempted package is written immediately to the JSON report, so a failed job can rerun safely. `--dry-run` performs registry availability checks and invokes `npm publish --dry-run` with explicit public access, provenance, and `latest` tag, but does not publish.
187
155
 
188
156
  ```bash
189
- npm run release:check -- --version 0.0.22
190
- npm run release:publish -- --version 0.0.22 --dry-run --allow-dirty --allow-untagged
157
+ npm run release:check -- --version 0.0.24
158
+ npm run release:publish -- --version 0.0.24 --dry-run --allow-dirty --allow-untagged
191
159
  ```
192
160
 
193
161
  `--allow-dirty` and `--allow-untagged` exist only for local preview; real publication and CI never pass them. npm registry calls occur only in these release preflight/publication commands, never build/test/package discovery.
@@ -198,91 +166,55 @@ Optional live smoke tests stay separate from SDK readiness because they require
198
166
  PRISM_LIVE_PROVIDER_TESTS=1 npm run test --workspaces --if-present
199
167
  ```
200
168
 
201
- ### 0.0.22 publish handoff
202
-
203
- **Decision: GO after protected operator prerequisites below.** Release **0.0.22** (Phase 5 third-party behavior integrations, plan 005) ships `@arnilo/prism-caveman` and `@arnilo/prism-ponytail` as opt-in behavior packages (upstream Caveman/Ponytail wiring, session mode persistence, progressive disclosure + injector split). Core `@arnilo/prism` runtime is unchanged. The publish graph is **46 manifests** (+2). No intentional pre-1.0 breaks for hosts that do not install the new packages — see [migration](migration.md) under `0.0.21 → 0.0.22 third-party behavior integrations`.
204
-
205
- ```bash
206
- git diff --check
207
- npm ci
208
- npm run sdk:ready
209
- node --test scripts/budget-gate.test.mjs
210
- node scripts/scan-secrets.mjs && node scripts/verify-sbom.mjs
211
- npm audit --audit-level=moderate
212
- npm run release:gate
213
- npm run release:check -- --version 0.0.22 --allow-dirty --allow-untagged --report /tmp/prism-0.0.22-preflight.json
214
- npm run release:publish -- --version 0.0.22 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.22-dry-run.json
215
- git tag -s v0.0.22 -m "Prism 0.0.22"
216
- git verify-tag v0.0.22
217
- git push origin v0.0.22
218
- ```
219
-
220
- ### 0.0.21 publish handoff
169
+ ### 0.0.24 publish handoff
221
170
 
222
- **Decision: GO after protected operator prerequisites below.** Release **0.0.21** (Phase 4 coding-tool capability gaps, plan 004) ships `repo_search` `outputMode`, bounded `glob`, optional session-scoped read-before-write, bounded `delete`/`move`, and coding-security approval/sandbox wiring. The exact graph stays **44 publishable manifests**; no package added or retired. Intentional pre-1.0 breaks are documented in [migration](migration.md) under `0.0.20 → 0.0.21 coding-tool capability gaps`.
171
+ **Decision: GO after protected operator prerequisites below.** Release **0.0.24** (Phase 7, plan 007) ships durable `AgentEventSource`, recoverable `ToolEffectStore`, AG-UI 0.0.57 compatibility, and AG-UI MCP/MCP Apps/A2A fronting. Publishable graph stays **47** manifests. Core remains dependency-free; PostgreSQL event source and enterprise `toolEffects` stay opt-in. Delivery is at-least-once — not exactly-once. See [migration](migration.md) `0.0.23 → 0.0.24` and [tool effects](tool-effects.md).
223
172
 
224
173
  ```bash
225
174
  git diff --check
226
175
  npm ci
227
176
  npm run sdk:ready
228
- node --test scripts/budget-gate.test.mjs
177
+ PRISM_TEST_POSTGRES_URL="$DATABASE_URL" npm run test:postgres
178
+ PRISM_TEST_POSTGRES_URL="$DATABASE_URL" node scripts/benchmark-0.0.24.mjs > scripts/benchmark-0.0.24.json
179
+ node --test scripts/budget-gate.test.mjs scripts/tooling-gate.test.mjs
229
180
  node scripts/scan-secrets.mjs && node scripts/verify-sbom.mjs
230
181
  npm audit --audit-level=moderate
231
182
  npm run release:gate
232
- npm run release:check -- --version 0.0.21 --allow-dirty --allow-untagged --report /tmp/prism-0.0.21-preflight.json
233
- npm run release:publish -- --version 0.0.21 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.21-dry-run.json
234
- git tag -s v0.0.21 -m "Prism 0.0.21"
235
- git verify-tag v0.0.21
236
- git push origin v0.0.21
183
+ npm run release:check -- --version 0.0.24 --allow-dirty --allow-untagged --report /tmp/prism-0.0.24-preflight.json
184
+ npm run release:publish -- --version 0.0.24 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.24-dry-run.json
185
+ git tag -s v0.0.24 -m "Prism 0.0.24"
186
+ git verify-tag v0.0.24
187
+ git push origin v0.0.24
237
188
  ```
238
189
 
239
- The dry-run checks every registry collision and executes npm's non-publishing tarball validation for each dependency-ordered manifest. The protected tag workflow alone publishes through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`; re-run a failed job for the same tag. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish checks.
190
+ ### 0.0.23 publish handoff
240
191
 
241
- ### 0.0.20 publish handoff
192
+ **Decision: GO after protected operator prerequisites below.** Release **0.0.23** (Phase 6, plan 006) adds `@arnilo/prism-enterprise-postgres`, the optional PostgreSQL composition for policy decisions, evaluation records, work-mutation claim/CAS state, and cross-replica model-router rate/budget/circuit state. The publish graph is **47 manifests** (41 code + 6 family/profile; +1 package). `@arnilo/prism-all` includes it; core remains dependency-free. See [migration](migration.md#0022--0023-production-enterprise-state-adapters-intentional-pre-10-contract-changes) and [enterprise PostgreSQL state](enterprise-postgres-state.md).
242
193
 
243
- **Decision: GO after protected operator prerequisites below.** Release **0.0.20** (Phase 3 skills and context progressive disclosure, plan 003) ships progressive skill catalog assembly (`skillsDisclosure`), session `load_skill`, empty `SkillRegistry` default with `activateAllSkills` migration opt-in, priority-aware context budget demotion, and optional `toolResultFold`. The exact graph stays **44 publishable manifests**; no package added or retired. Intentional pre-1.0 breaks are documented in [migration](migration.md) under `0.0.19 → 0.0.20 skills and context progressive disclosure`.
194
+ Intentional pre-1.0 migration points: work idempotency now uses `begin`/CAS transitions and never automatically replays `unknown`; durable router state requires awaited methods plus verified identity and disables `providerSource`. Policy/evaluation/work/router data remain opt-in. No Redis, queue, event delivery, exactly-once effect claim, worker, migration CLI, ORM, or new core API ships.
244
195
 
245
196
  ```bash
246
197
  git diff --check
247
198
  npm ci
248
199
  npm run sdk:ready
249
- node --test scripts/budget-gate.test.mjs
200
+ PRISM_TEST_POSTGRES_URL="$DATABASE_URL" npm run test:postgres
201
+ PRISM_TEST_POSTGRES_URL="$DATABASE_URL" node scripts/benchmark-0.0.23.mjs
202
+ node --test scripts/budget-gate.test.mjs scripts/tooling-gate.test.mjs
250
203
  node scripts/scan-secrets.mjs && node scripts/verify-sbom.mjs
251
204
  npm audit --audit-level=moderate
252
205
  npm run release:gate
253
- npm run release:check -- --version 0.0.20 --allow-dirty --allow-untagged --report /tmp/prism-0.0.20-preflight.json
254
- npm run release:publish -- --version 0.0.20 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.20-dry-run.json
255
- git tag -s v0.0.20 -m "Prism 0.0.20"
256
- git verify-tag v0.0.20
257
- git push origin v0.0.20
206
+ npm run release:check -- --version 0.0.23 --allow-dirty --allow-untagged --report /tmp/prism-0.0.23-preflight.json
207
+ npm run release:publish -- --version 0.0.23 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.23-dry-run.json
208
+ git tag -s v0.0.23 -m "Prism 0.0.23"
209
+ git verify-tag v0.0.23
210
+ git push origin v0.0.23
258
211
  ```
259
212
 
260
- The dry-run checks every registry collision and executes npm's non-publishing tarball validation for each dependency-ordered manifest. The protected tag workflow alone publishes through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`; re-run a failed job for the same tag. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish checks.
261
-
262
- ### 0.0.19 publish handoff
213
+ `npm publish --dry-run` is non-publishing and applies `publishConfig.access`; the real protected tag workflow is the only publication path, with provenance and resume report. It must run the PostgreSQL suite using a protected, disposable database URL. The recorded benchmark is local/CI comparison evidence, not a portable SLO. npm publication is immutable: a partial publish resumes from the same tag; a confirmed defect requires deprecation plus a fixed version.
263
214
 
264
- **Decision: GO after protected operator prerequisites below.** Release **0.0.19** (Phase 2 observational memory lifecycle, plan 002) ships `@arnilo/prism-compaction-observational-memory` attach lifecycle, four-layer provider context, nested settings with legacy map, source-faithful recall/paging, and hard fold/render caps. Core `@arnilo/prism` runtime is unchanged. The exact graph stays **44 publishable manifests**; no package added or retired. Intentional pre-1.0 breaks are documented in [migration](migration.md) under `0.0.18 → 0.0.19 observational memory lifecycle`.
265
-
266
- ```bash
267
- git diff --check
268
- npm ci
269
- npm run sdk:ready
270
- node --test scripts/budget-gate.test.mjs
271
- node scripts/scan-secrets.mjs && node scripts/verify-sbom.mjs
272
- npm audit --audit-level=moderate
273
- npm run release:gate
274
- npm run release:check -- --version 0.0.19 --allow-dirty --allow-untagged --report /tmp/prism-0.0.19-preflight.json
275
- npm run release:publish -- --version 0.0.19 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.19-dry-run.json
276
- git tag -s v0.0.19 -m "Prism 0.0.19"
277
- git verify-tag v0.0.19
278
- git push origin v0.0.19
279
- ```
280
-
281
- The dry-run checks every registry collision and executes npm's non-publishing tarball validation for each dependency-ordered manifest. The protected tag workflow alone publishes through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`; re-run a failed job for the same tag. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish checks.
282
-
283
- ### 0.0.18 publish handoff
215
+ ### 0.0.22 publish handoff
284
216
 
285
- **Decision: GO after protected operator prerequisites below.** Release **0.0.18** (Phase 1 restore integrity, plan 001) hardens coding tools and release trust without adding packages: `repo_search` is literal-only (ReDoS mitigation), default `write`/`edit` use temp+`rename`, `applyContextBudget` evicts oldest history first, default `inputLayout` is `cache_aware`, `@arnilo/prism-mcp` pins `@modelcontextprotocol/sdk` **1.30.0** (clears moderate `@hono/node-server` advisory), and README/readiness docs match the 14-adapter / optional-browser inventory. The exact graph stays **44 publishable manifests**; no package added or retired. Intentional pre-1.0 breaks are documented in [migration](migration.md) under `0.0.17 → 0.0.18 restore integrity`.
217
+ **Decision: GO after protected operator prerequisites below.** Release **0.0.22** (Phase 5 third-party behavior integrations, plan 005) ships `@arnilo/prism-caveman` and `@arnilo/prism-ponytail` as opt-in behavior packages (upstream Caveman/Ponytail wiring, session mode persistence, progressive disclosure + injector split). Core `@arnilo/prism` runtime is unchanged. The publish graph is **46 manifests** (+2). No intentional pre-1.0 breaks for hosts that do not install the new packages — see [migration](migration.md) under `0.0.21 → 0.0.22 third-party behavior integrations`.
286
218
 
287
219
  ```bash
288
220
  git diff --check
@@ -292,63 +224,16 @@ node --test scripts/budget-gate.test.mjs
292
224
  node scripts/scan-secrets.mjs && node scripts/verify-sbom.mjs
293
225
  npm audit --audit-level=moderate
294
226
  npm run release:gate
295
- npm run release:check -- --version 0.0.18 --allow-dirty --allow-untagged --report /tmp/prism-0.0.18-preflight.json
296
- npm run release:publish -- --version 0.0.18 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.18-dry-run.json
297
- git tag -s v0.0.18 -m "Prism 0.0.18"
298
- git verify-tag v0.0.18
299
- git push origin v0.0.18
300
- ```
301
-
302
- The dry-run checks every registry collision and executes npm's non-publishing tarball validation for each dependency-ordered manifest. The protected tag workflow alone publishes through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`; re-run a failed job for the same tag. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish checks.
303
-
304
- ### 0.0.17 publish handoff
305
-
306
- **Decision: GO after protected operator prerequisites below.** Release 0.0.17 implements the 2026-07-29 full implementation review (plan 081, twenty fixes): durable run-state load bound, explicit resume-as-approval, unconditional `input_assembly` middleware, same-session parent enforcement, jitter + `Retry-After`-aware retries with provider error wiring, O(n) context-budget eviction, fingerprint coverage of instructions/system prompt/skills, stage-named guardrail interrupts with `metadata.error`, `steer_rejected`, middleware double-`next()` detection, parked-consumer sorted multiplexer delivery, checkpoint-store bounds, strict credential opt-in, extension `unregister`/dispose handles with failed-setup unwind, loud CLI rejection of inert flags, capability-conditional tool listing, and the C8 nit bundle. The exact graph stays **44 publishable manifests**; no package added or retired. Intentional pre-1.0 breaks are documented in [migration](migration.md): inert CLI flags rejected (`CliOptions` dead fields removed) and `ExtensionKernel.load()` now resolves to `LoadedExtension[]`. The compat baseline was refreshed with `--allow-break` + migration note. Provider HTTP errors now carry numeric codes and `Retry-After` hints across anthropic/google/kimi/openai/opencode-go and the shared OpenAI-compatible transport — wire behavior is additive (more retries of genuinely transient failures), so the 0.0.15 protected live-canary matrix below still applies and no new live row is introduced.
307
-
308
- ```bash
309
- git diff --check
310
- npm ci
311
- npm run sdk:ready
312
- node --test scripts/budget-gate.test.mjs
313
- node scripts/scan-secrets.mjs && node scripts/verify-sbom.mjs
314
- npm audit --audit-level=high
315
- npm run release:gate
316
- npm run release:check -- --version 0.0.17 --allow-dirty --allow-untagged --report /tmp/prism-0.0.17-preflight.json
317
- npm run release:publish -- --version 0.0.17 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.17-dry-run.json
318
- git tag -s v0.0.17 -m "Prism 0.0.17"
319
- git verify-tag v0.0.17
320
- git push origin v0.0.17
321
- ```
322
-
323
- The dry-run checks every registry collision and executes npm's non-publishing tarball validation for each dependency-ordered manifest. The protected tag workflow alone publishes through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`; re-run a failed job for the same tag. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish checks.
324
-
325
- ### 0.0.16 publish handoff
326
-
327
- **Decision: GO after protected operator prerequisites below.** Phase 11 (plan 079) is a simplification/readiness release: no runtime behavior changes and no package retired. The exact graph is **44 publishable manifests** — Phase 11 Task 3 added one internal implementation package, `@arnilo/prism-session-store-codecs` (shared SQLite/Postgres row codecs, not enrolled in any profile family). The only public-surface change is the additive `resolveRedactor` export from `@arnilo/prism`; provider `cleanJson` was deliberately left per-package (wire-shape variants). All six profiles (`prism-all`, `prism-base`, `prism-code`, `prism-compaction`, `prism-providers`, `prism-sdk`) are retained on adoption evidence (zero retirements). The root tarball dropped the historical `docs/review-coverage-*.md` (659,478 → ≈575,680 packed bytes, 281 → 270 files). New offline release gates (`npm run release:gate`: API-surface `.d.ts` diff, tarball deny-list, exact ranges) run inside `sdk:ready`, and performance budgets (`scripts/budgets.json`) are enforced by `scripts/budget-gate.test.mjs` + `scripts/benchmark-0.0.16.mjs`. No Studio, Office, remote-browser vendor, additional vector-store, Slack/Teams, voice/desktop-control, internal-auth, or queue package ships. Protected CI, signed tag, npm authentication, OIDC attestation, and protected live-canary evidence remain operator/workflow prerequisites; no package is published by this handoff.
328
-
329
- ```bash
330
- git diff --check
331
- npm ci
332
- npm run sdk:ready
333
- node scripts/benchmark-0.0.16.mjs
334
- node --test scripts/budget-gate.test.mjs
335
- node scripts/scan-secrets.mjs && node scripts/verify-sbom.mjs
336
- npm audit --audit-level=high
337
- npm run release:gate
338
- npm run release:check -- --version 0.0.17 --allow-dirty --allow-untagged --report /tmp/prism-0.0.16-preflight.json
339
- npm run release:publish -- --version 0.0.17 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.16-dry-run.json
340
- git tag -s v0.0.16 -m "Prism 0.0.16"
341
- git verify-tag v0.0.16
342
- git push origin v0.0.16
227
+ npm run release:check -- --version 0.0.22 --allow-dirty --allow-untagged --report /tmp/prism-0.0.22-preflight.json
228
+ npm run release:publish -- --version 0.0.22 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.22-dry-run.json
229
+ git tag -s v0.0.22 -m "Prism 0.0.22"
230
+ git verify-tag v0.0.22
231
+ git push origin v0.0.22
343
232
  ```
344
233
 
345
- The dry-run checks every registry collision and executes npm's non-publishing tarball validation for each dependency-ordered manifest. The protected tag workflow alone publishes through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`; re-run a failed job for the same tag. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish checks. The 0.0.15 protected live-canary matrix below still applies; 0.0.16 changes no provider/protocol/tenant surface, so no new live row is introduced.
234
+ ### Historical release handoffs
346
235
 
347
- #### Rollback limitations
348
-
349
- npm publication is immutable: partial publication is a resume case, and a confirmed defect requires deprecation plus a fixed version rather than rollback.
350
-
351
- The 0.0.16 package set is the canonical **44-package** list below (the 0.0.15 set plus `@arnilo/prism-session-store-codecs`); `release:check` derives it from the workspace and rejects missing, private, version-skewed, or internally mismatched manifests.
236
+ Release-specific migration detail lives in [migration](migration.md). The current handoff plus the retained protected matrix below supersede 0.0.16–0.0.21 command transcripts.
352
237
 
353
238
  ### 0.0.15 protected live-canary matrix
354
239
 
@@ -372,513 +257,14 @@ Default `npm test`, `npm run sdk:ready`, and `benchmark-0.0.15` are network-free
372
257
 
373
258
  The scheduled/manual `live-canaries` workflow uses protected environment `live-canaries`; release validation uses its protected release environment. Neither workflow receives a broad workspace key. A successful offline benchmark is never evidence that a live row ran; each protected invocation must record its enabled matrix rows and skipped/missing prerequisites.
374
259
 
375
- ### 0.0.15 publish handoff
376
-
377
- **Decision: GO after protected operator prerequisites below.** Phase 10 closes provider, memory, and RAG ecosystem parity without changing the Task 0 package freeze: the exact graph remains **43 publishable manifests**. It adds OpenAI hosted-tool attribution, bounded Responses continuation and Realtime; exact AI SDK V4 mapping; bounded RAG source lifecycle/document adapters/reranking/provenance/trust/status; and memory export/rebuild production conformance. No Studio, Office, remote-browser vendor, additional vector-store, Slack/Teams, voice/desktop-control, internal-auth, or queue package ships. Phase 11 (plan 079, Task 3) adds one internal implementation package, `@arnilo/prism-session-store-codecs` (shared session-store row codecs, not enrolled in any family), bringing the exact graph to **44 publishable manifests**. Protected CI, signed tag, npm authentication, OIDC attestation, and protected live-canary evidence remain operator/workflow prerequisites; no package is published by this handoff.
378
-
379
- ```bash
380
- git diff --check
381
- npm ci
382
- npm run sdk:ready
383
- node scripts/benchmark-0.0.15.mjs
384
- node --test scripts/benchmark-0.0.15.test.mjs
385
- npm audit --audit-level=high
386
- npm run release:check -- --version 0.0.15 --allow-dirty --allow-untagged --report /tmp/prism-0.0.15-preflight.json
387
- npm run release:publish -- --version 0.0.15 --dry-run --allow-dirty --allow-untagged --report /tmp/prism-0.0.15-dry-run.json
388
- git tag -s v0.0.15 -m "Prism 0.0.15"
389
- git verify-tag v0.0.15
390
- git push origin v0.0.15
391
- ```
392
-
393
- The dry-run checks every registry collision and executes npm's non-publishing tarball validation for each dependency-ordered manifest. The protected tag workflow alone publishes through `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`; re-run a failed job for the same tag. `npm audit signatures --json --include-attestations` and artifact checksums remain post-publish checks.
394
-
395
- #### Rollback limitations
396
-
397
- npm publication is immutable: partial publication is a resume case, and a confirmed defect requires deprecation plus a fixed version rather than rollback.
398
-
399
- The 0.0.15 package set is unchanged from the canonical **43-package** list below; `release:check` derives it from the workspace and rejects missing, private, version-skewed, or internally mismatched manifests.
400
-
401
- ### 0.0.14 publish handoff
402
-
403
- **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.
404
-
405
- ```bash
406
- git diff --check
407
- npm ci
408
- npm run sdk:ready
409
- node scripts/benchmark-0.0.14.mjs
410
- node --test scripts/benchmark-0.0.14.test.mjs
411
- npm run release:check -- --version 0.0.14 --allow-untagged --report /tmp/prism-0.0.14-preflight.json
412
- git tag -s v0.0.14 -m "Prism 0.0.14"
413
- git verify-tag v0.0.14
414
- git push origin v0.0.14
415
- ```
416
-
417
- 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.
418
-
419
- #### Rollback limitations
420
-
421
- npm publication is immutable: partial publication is a resume case, and confirmed defects require deprecation plus a fixed version rather than rollback.
422
-
423
- Package set (43):
424
-
425
- ```text
426
- @arnilo/prism
427
- @arnilo/prism-ag-ui
428
- @arnilo/prism-browser
429
- @arnilo/prism-coding-agent
430
- @arnilo/prism-coding-security
431
- @arnilo/prism-compaction-llm
432
- @arnilo/prism-compaction-observational-memory
433
- @arnilo/prism-credentials-node
434
- @arnilo/prism-evals
435
- @arnilo/prism-mcp
436
- @arnilo/prism-memory
437
- @arnilo/prism-model-router
438
- @arnilo/prism-observability-opentelemetry
439
- @arnilo/prism-policy
440
- @arnilo/prism-all
441
- @arnilo/prism-base
442
- @arnilo/prism-code
443
- @arnilo/prism-compaction
444
- @arnilo/prism-providers
445
- @arnilo/prism-sdk
446
- @arnilo/prism-provider-ai-sdk
447
- @arnilo/prism-provider-alibaba
448
- @arnilo/prism-provider-anthropic
449
- @arnilo/prism-provider-azure
450
- @arnilo/prism-provider-bedrock
451
- @arnilo/prism-provider-google
452
- @arnilo/prism-provider-kimi
453
- @arnilo/prism-provider-neuralwatt
454
- @arnilo/prism-provider-ollama
455
- @arnilo/prism-provider-openai
456
- @arnilo/prism-provider-opencode-go
457
- @arnilo/prism-provider-openrouter
458
- @arnilo/prism-provider-vertex
459
- @arnilo/prism-provider-zai
460
- @arnilo/prism-rag
461
- @arnilo/prism-server
462
- @arnilo/prism-session-store-codecs
463
- @arnilo/prism-session-store-postgres
464
- @arnilo/prism-session-store-sqlite
465
- @arnilo/prism-supervisor
466
- @arnilo/prism-tool-validator-json-schema
467
- @arnilo/prism-web-tools
468
- @arnilo/prism-work-tools
469
- @arnilo/prism-workflows
470
- ```
471
-
472
- ### 0.0.13 publish handoff
473
-
474
- **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.
475
-
476
- ```bash
477
- git diff --check
478
- npm ci
479
- npm run sdk:ready
480
- node scripts/benchmark-0.0.13.mjs
481
- node --test scripts/benchmark-0.0.13.test.mjs
482
- npm run release:check -- --version 0.0.13 --allow-untagged --report /tmp/prism-0.0.13-preflight.json
483
- git tag -s v0.0.13 -m "Prism 0.0.13"
484
- git verify-tag v0.0.13
485
- git push origin v0.0.13
486
- ```
487
-
488
- 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.
489
-
490
- #### Rollback limitations
491
-
492
- npm publication is immutable: partial publication is a resume case, and confirmed defects require deprecation plus a fixed version rather than rollback.
493
-
494
- Package set (41):
495
-
496
- ```text
497
- @arnilo/prism
498
- @arnilo/prism-ag-ui
499
- @arnilo/prism-browser
500
- @arnilo/prism-coding-agent
501
- @arnilo/prism-coding-security
502
- @arnilo/prism-compaction-llm
503
- @arnilo/prism-compaction-observational-memory
504
- @arnilo/prism-credentials-node
505
- @arnilo/prism-evals
506
- @arnilo/prism-mcp
507
- @arnilo/prism-memory
508
- @arnilo/prism-model-router
509
- @arnilo/prism-observability-opentelemetry
510
- @arnilo/prism-policy
511
- @arnilo/prism-all
512
- @arnilo/prism-base
513
- @arnilo/prism-code
514
- @arnilo/prism-compaction
515
- @arnilo/prism-providers
516
- @arnilo/prism-sdk
517
- @arnilo/prism-provider-ai-sdk
518
- @arnilo/prism-provider-anthropic
519
- @arnilo/prism-provider-azure
520
- @arnilo/prism-provider-bedrock
521
- @arnilo/prism-provider-google
522
- @arnilo/prism-provider-kimi
523
- @arnilo/prism-provider-neuralwatt
524
- @arnilo/prism-provider-openai
525
- @arnilo/prism-provider-opencode-go
526
- @arnilo/prism-provider-openrouter
527
- @arnilo/prism-provider-vertex
528
- @arnilo/prism-provider-zai
529
- @arnilo/prism-rag
530
- @arnilo/prism-server
531
- @arnilo/prism-session-store-postgres
532
- @arnilo/prism-session-store-sqlite
533
- @arnilo/prism-supervisor
534
- @arnilo/prism-tool-validator-json-schema
535
- @arnilo/prism-web-tools
536
- @arnilo/prism-work-tools
537
- @arnilo/prism-workflows
538
- ```
539
-
540
- ### 0.0.12 publish handoff
541
-
542
- **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.
543
-
544
- ```bash
545
- git diff --check
546
- npm ci
547
- npm run sdk:ready
548
- npm run release:check -- --version 0.0.12 --allow-untagged --report /tmp/prism-0.0.12-preflight.json
549
- git tag -s v0.0.12 -m "Prism 0.0.12"
550
- git verify-tag v0.0.12
551
- git push origin v0.0.12
552
- ```
553
-
554
- 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.
555
-
556
- #### Rollback limitations
557
-
558
- npm publication is immutable: partial publication is a resume case, and confirmed defects require deprecation plus a fixed version rather than rollback.
559
-
560
- Package set (35):
561
-
562
- ```text
563
- @arnilo/prism
564
- @arnilo/prism-ag-ui
565
- @arnilo/prism-browser
566
- @arnilo/prism-coding-agent
567
- @arnilo/prism-coding-security
568
- @arnilo/prism-compaction-llm
569
- @arnilo/prism-compaction-observational-memory
570
- @arnilo/prism-credentials-node
571
- @arnilo/prism-evals
572
- @arnilo/prism-mcp
573
- @arnilo/prism-memory
574
- @arnilo/prism-observability-opentelemetry
575
- @arnilo/prism-all
576
- @arnilo/prism-base
577
- @arnilo/prism-code
578
- @arnilo/prism-compaction
579
- @arnilo/prism-providers
580
- @arnilo/prism-sdk
581
- @arnilo/prism-provider-ai-sdk
582
- @arnilo/prism-provider-anthropic
583
- @arnilo/prism-provider-google
584
- @arnilo/prism-provider-kimi
585
- @arnilo/prism-provider-neuralwatt
586
- @arnilo/prism-provider-openai
587
- @arnilo/prism-provider-opencode-go
588
- @arnilo/prism-provider-openrouter
589
- @arnilo/prism-provider-zai
590
- @arnilo/prism-rag
591
- @arnilo/prism-server
592
- @arnilo/prism-session-store-postgres
593
- @arnilo/prism-session-store-sqlite
594
- @arnilo/prism-supervisor
595
- @arnilo/prism-tool-validator-json-schema
596
- @arnilo/prism-web-tools
597
- @arnilo/prism-workflows
598
- ```
599
-
600
- ### 0.0.11 publish handoff
601
-
602
- **Decision: GO after operator prerequisites below.** Phase 6 coding-harness fundamentals: `SessionIndex`/`searchSessions`, assembler `contextBudget`, `@arnilo/prism-provider-anthropic` + `@arnilo/prism-provider-google`, mid-run `steer`, coding-agent `runCodingGoalVerify` + opt-in `ask_user_decision`, and `scripts/benchmark-0.0.11.mjs` search/budget evidence. Code, tests, exact `0.0.11` package graph (34 manifests), packed artifacts, security gates, and dependency-ordered publication dry-run passed from the Phase 6 release-candidate tree. Clean protected-branch CI, signed commit/tag, npm authentication, OIDC attestation, protected Anthropic/Google live canaries + Docker/Playwright/PostgreSQL gates (when host-provisioned), and actual publication remain operator/workflow prerequisites. No package was published during readiness work. Scope is coding-harness P1 only; **no Office** package, binary, SDK, wrapper, docs page, test, or release gate exists. Host mode never claims disposable containment. `@arnilo/prism-browser` remains optional via `@arnilo/prism-all` only.
603
-
604
- #### npm authentication prerequisite
605
-
606
- The existing GitHub Actions secret `NPM_TOKEN` is used only by the publish step as `NODE_AUTH_TOKEN`, matching previous Prism releases. Confirm that token remains valid and can publish existing and new public packages under `@arnilo`; no additional secret or manual npm publish is required. The workflow also requests OIDC and always passes `--provenance`.
607
-
608
- #### Release commit and tag
609
-
610
- Merge through the protected release branch, then run these commands from a clean checkout of the protected merge commit. `git push origin v0.0.11` is the workflow dispatch; there is no manual publish command.
611
-
612
- ```bash
613
- # Prepare and push the release commit.
614
- git diff --check
615
- npm ci
616
- npm run sdk:ready
617
- git add -A
618
- git diff --cached --check
619
- git commit -S -m "Release 0.0.11"
620
- git push origin HEAD
621
-
622
- # Merge/confirm protected branch CI, then check out that exact clean merge commit.
623
- test -z "$(git status --porcelain)"
624
- npm ci
625
- npm run release:check -- --version 0.0.11 --allow-untagged --report /tmp/prism-0.0.11-preflight.json
626
-
627
- git tag -s v0.0.11 -m "Prism 0.0.11"
628
- git verify-tag v0.0.11
629
- test "$(git rev-parse HEAD)" = "$(git rev-list -n 1 v0.0.11)"
630
- npm run release:check -- --version 0.0.11 --report /tmp/prism-0.0.11-tagged-preflight.json
631
- git push origin v0.0.11
632
- ```
633
-
634
- The tag workflow's only publication command is `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`. Latest registry preflight returned `available` for all 34 `0.0.11` versions at handoff. Publisher order is stable and dependency-safe (run `node -e` via `release:check` for the live order). Package set:
635
-
636
- ```text
637
- @arnilo/prism
638
- @arnilo/prism-coding-agent
639
- @arnilo/prism-coding-security
640
- @arnilo/prism-compaction-llm
641
- @arnilo/prism-compaction-observational-memory
642
- @arnilo/prism-credentials-node
643
- @arnilo/prism-evals
644
- @arnilo/prism-mcp
645
- @arnilo/prism-memory
646
- @arnilo/prism-observability-opentelemetry
647
- @arnilo/prism-provider-ai-sdk
648
- @arnilo/prism-provider-anthropic
649
- @arnilo/prism-provider-google
650
- @arnilo/prism-provider-kimi
651
- @arnilo/prism-provider-neuralwatt
652
- @arnilo/prism-provider-openai
653
- @arnilo/prism-provider-opencode-go
654
- @arnilo/prism-provider-openrouter
655
- @arnilo/prism-provider-zai
656
- @arnilo/prism-session-store-postgres
657
- @arnilo/prism-session-store-sqlite
658
- @arnilo/prism-supervisor
659
- @arnilo/prism-tool-validator-json-schema
660
- @arnilo/prism-web-tools
661
- @arnilo/prism-browser
662
- @arnilo/prism-workflows
663
- @arnilo/prism-compaction
664
- @arnilo/prism-providers
665
- @arnilo/prism-rag
666
- @arnilo/prism-server
667
- @arnilo/prism-base
668
- @arnilo/prism-code
669
- @arnilo/prism-sdk
670
- @arnilo/prism-all
671
- ```
672
-
673
- #### Interruption and resume
674
-
675
- Do not create another tag or rerun packages manually. Re-run failed jobs for the same tag in GitHub Actions. The workflow invokes `release:publish --resume`: registry versions with matching names, versions, and internal dependency fingerprints are skipped; any mismatch stops the job. Retain `release-artifacts-v0.0.11` and `publish-report-v0.0.11` for audit.
676
-
677
- #### Bounded post-publish smoke
678
-
679
- Download the workflow artifact and run `sha256sum -c SHA256SUMS`. Then verify all registry versions/tags/integrity and install the complete profile in a fresh directory:
680
-
681
- ```bash
682
- while read -r package; do
683
- test "$(npm view "$package@0.0.11" version)" = "0.0.11"
684
- test "$(npm view "$package" dist-tags.latest)" = "0.0.11"
685
- npm view "$package@0.0.11" dist.integrity >/dev/null
686
- done <<'PACKAGES'
687
- @arnilo/prism
688
- @arnilo/prism-coding-agent
689
- @arnilo/prism-coding-security
690
- @arnilo/prism-compaction-llm
691
- @arnilo/prism-compaction-observational-memory
692
- @arnilo/prism-credentials-node
693
- @arnilo/prism-evals
694
- @arnilo/prism-mcp
695
- @arnilo/prism-memory
696
- @arnilo/prism-observability-opentelemetry
697
- @arnilo/prism-provider-ai-sdk
698
- @arnilo/prism-provider-anthropic
699
- @arnilo/prism-provider-google
700
- @arnilo/prism-provider-kimi
701
- @arnilo/prism-provider-neuralwatt
702
- @arnilo/prism-provider-openai
703
- @arnilo/prism-provider-opencode-go
704
- @arnilo/prism-provider-openrouter
705
- @arnilo/prism-provider-zai
706
- @arnilo/prism-session-store-postgres
707
- @arnilo/prism-session-store-sqlite
708
- @arnilo/prism-supervisor
709
- @arnilo/prism-tool-validator-json-schema
710
- @arnilo/prism-web-tools
711
- @arnilo/prism-browser
712
- @arnilo/prism-workflows
713
- @arnilo/prism-compaction
714
- @arnilo/prism-providers
715
- @arnilo/prism-rag
716
- @arnilo/prism-server
717
- @arnilo/prism-base
718
- @arnilo/prism-code
719
- @arnilo/prism-sdk
720
- @arnilo/prism-all
721
- PACKAGES
722
-
723
- npm audit signatures --json --include-attestations
724
- npm install --no-audit --no-fund @arnilo/prism-all@0.0.11
725
- ```
726
-
727
- #### Rollback limitations
728
-
729
- npm publication is not transactional and published versions are immutable. Partial publication is a resume case, not rollback. For a confirmed systemic defect after completion, deprecate every affected `@0.0.11`; restore `latest` to the previous good release only where that tag already existed. Exact `0.0.11` installs remain possible, so publish a fixed version promptly. Do not unpublish except for a security/legal emergency under npm policy.
730
-
731
- ### 0.0.10 publish handoff (historical)
732
-
733
- **Decision: GO after operator prerequisites below.** Phase 5 coding-harness unified workspace: required `workspaceMode`, fail-closed mixed wiring, sandbox FS auto-wire, tree identity, adversarial consistency tests, and `scripts/benchmark-0.0.10.mjs` evidence. Code, tests, exact `0.0.10` package graph (retargeted from post-ship `0.0.96`), packed artifacts, security gates, and dependency-ordered publication dry-run passed from the Phase 5 release-candidate tree. Clean protected-branch CI, signed commit/tag, npm authentication, OIDC attestation, protected Docker/Playwright live gates (when host-provisioned), and actual publication remain operator/workflow prerequisites. No package was published during readiness work. Scope is coding-harness P0 only; **no Office** package, binary, SDK, wrapper, docs page, test, or release gate exists. Host mode never claims disposable containment.
734
-
735
- #### npm authentication prerequisite
736
-
737
- The existing GitHub Actions secret `NPM_TOKEN` is used only by the publish step as `NODE_AUTH_TOKEN`, matching previous Prism releases. Confirm that token remains valid and can publish existing and new public packages under `@arnilo`; no additional secret or manual npm publish is required. The workflow also requests OIDC and always passes `--provenance`.
738
-
739
- #### Release commit and tag
740
-
741
- Merge through the protected release branch, then run these commands from a clean checkout of the protected merge commit. `git push origin v0.0.10` is the workflow dispatch; there is no manual publish command.
742
-
743
- ```bash
744
- # Prepare and push the release commit.
745
- git diff --check
746
- npm ci
747
- npm run sdk:ready
748
- git add -A
749
- git diff --cached --check
750
- git commit -S -m "Release 0.0.10"
751
- git push origin HEAD
752
-
753
- # Merge/confirm protected branch CI, then check out that exact clean merge commit.
754
- test -z "$(git status --porcelain)"
755
- npm ci
756
- npm run release:check -- --version 0.0.10 --allow-untagged --report /tmp/prism-0.0.10-preflight.json
757
-
758
- git tag -s v0.0.10 -m "Prism 0.0.10"
759
- git verify-tag v0.0.10
760
- test "$(git rev-parse HEAD)" = "$(git rev-list -n 1 v0.0.10)"
761
- npm run release:check -- --version 0.0.10 --report /tmp/prism-0.0.10-tagged-preflight.json
762
- git push origin v0.0.10
763
- ```
764
-
765
- The tag workflow's only publication command is `npm run release:publish -- --version "${GITHUB_REF_NAME#v}" --resume --report release-artifacts/publish-report.json`. Latest registry preflight returned `available` for all 32 `0.0.10` versions at handoff. Publisher order is stable and dependency-safe:
766
-
767
- ```text
768
- 1 @arnilo/prism
769
- 2 @arnilo/prism-coding-agent
770
- 3 @arnilo/prism-compaction-llm
771
- 4 @arnilo/prism-compaction-observational-memory
772
- 5 @arnilo/prism-credentials-node
773
- 6 @arnilo/prism-evals
774
- 7 @arnilo/prism-mcp
775
- 8 @arnilo/prism-memory
776
- 9 @arnilo/prism-observability-opentelemetry
777
- 10 @arnilo/prism-provider-ai-sdk
778
- 11 @arnilo/prism-provider-kimi
779
- 12 @arnilo/prism-provider-neuralwatt
780
- 13 @arnilo/prism-provider-openai
781
- 14 @arnilo/prism-provider-opencode-go
782
- 15 @arnilo/prism-provider-openrouter
783
- 16 @arnilo/prism-provider-zai
784
- 17 @arnilo/prism-session-store-postgres
785
- 18 @arnilo/prism-session-store-sqlite
786
- 19 @arnilo/prism-supervisor
787
- 20 @arnilo/prism-tool-validator-json-schema
788
- 21 @arnilo/prism-web-tools
789
- 22 @arnilo/prism-browser
790
- 23 @arnilo/prism-workflows
791
- 24 @arnilo/prism-coding-security
792
- 25 @arnilo/prism-compaction
793
- 26 @arnilo/prism-providers
794
- 27 @arnilo/prism-rag
795
- 28 @arnilo/prism-server
796
- 29 @arnilo/prism-base
797
- 30 @arnilo/prism-code
798
- 31 @arnilo/prism-sdk
799
- 32 @arnilo/prism-all
800
- ```
801
-
802
- #### Interruption and resume
803
-
804
- Do not create another tag or rerun packages manually. Re-run failed jobs for the same tag in GitHub Actions. The workflow invokes `release:publish --resume`: registry versions with matching names, versions, and internal dependency fingerprints are skipped; any mismatch stops the job. Retain `release-artifacts-v0.0.10` and `publish-report-v0.0.10` for audit.
805
-
806
- #### Bounded post-publish smoke
807
-
808
- Download the workflow artifact and run `sha256sum -c SHA256SUMS`. Then verify all registry versions/tags/integrity and install the complete profile in a fresh directory:
809
-
810
- ```bash
811
- while read -r package; do
812
- test "$(npm view "$package@0.0.10" version)" = "0.0.10"
813
- test "$(npm view "$package" dist-tags.latest)" = "0.0.10"
814
- npm view "$package@0.0.10" dist.integrity >/dev/null
815
- done <<'PACKAGES'
816
- @arnilo/prism
817
- @arnilo/prism-coding-agent
818
- @arnilo/prism-compaction-llm
819
- @arnilo/prism-compaction-observational-memory
820
- @arnilo/prism-credentials-node
821
- @arnilo/prism-evals
822
- @arnilo/prism-mcp
823
- @arnilo/prism-memory
824
- @arnilo/prism-rag
825
- @arnilo/prism-server
826
- @arnilo/prism-supervisor
827
- @arnilo/prism-observability-opentelemetry
828
- @arnilo/prism-provider-ai-sdk
829
- @arnilo/prism-provider-kimi
830
- @arnilo/prism-provider-neuralwatt
831
- @arnilo/prism-provider-openai
832
- @arnilo/prism-provider-opencode-go
833
- @arnilo/prism-provider-openrouter
834
- @arnilo/prism-provider-zai
835
- @arnilo/prism-session-store-postgres
836
- @arnilo/prism-session-store-sqlite
837
- @arnilo/prism-tool-validator-json-schema
838
- @arnilo/prism-web-tools
839
- @arnilo/prism-browser
840
- @arnilo/prism-workflows
841
- @arnilo/prism-coding-security
842
- @arnilo/prism-compaction
843
- @arnilo/prism-providers
844
- @arnilo/prism-base
845
- @arnilo/prism-code
846
- @arnilo/prism-sdk
847
- @arnilo/prism-all
848
- PACKAGES
849
-
850
- consumer="$(mktemp -d)"
851
- cd "$consumer"
852
- npm init -y >/dev/null
853
- npm install --no-audit --no-fund @arnilo/prism-all@0.0.10
854
- node --input-type=module <<'NODE'
855
- for (const name of [
856
- "@arnilo/prism", "@arnilo/prism-coding-agent", "@arnilo/prism-coding-security",
857
- "@arnilo/prism-compaction-llm", "@arnilo/prism-compaction-observational-memory",
858
- "@arnilo/prism-credentials-node", "@arnilo/prism-mcp", "@arnilo/prism-observability-opentelemetry",
859
- "@arnilo/prism-provider-kimi", "@arnilo/prism-provider-neuralwatt", "@arnilo/prism-provider-openai",
860
- "@arnilo/prism-provider-opencode-go", "@arnilo/prism-provider-openrouter", "@arnilo/prism-provider-zai",
861
- "@arnilo/prism-session-store-postgres", "@arnilo/prism-session-store-sqlite",
862
- "@arnilo/prism-tool-validator-json-schema", "@arnilo/prism-workflows", "@arnilo/prism-evals",
863
- "@arnilo/prism-provider-ai-sdk", "@arnilo/prism-memory", "@arnilo/prism-rag",
864
- "@arnilo/prism-server", "@arnilo/prism-supervisor", "@arnilo/prism-web-tools",
865
- "@arnilo/prism-browser",
866
- ]) await import(name);
867
- NODE
868
- ./node_modules/.bin/prism --help >/dev/null
869
- npm audit signatures --json --include-attestations > npm-signatures.json
870
- ```
871
-
872
- This smoke is bounded to registry metadata, imports, CLI startup, checksums, signatures, and provenance; do not rerun the full release suite after immutable publication.
873
-
874
- #### Rollback limitations
260
+ ### Historical release notes
875
261
 
876
- npm publication is not transactional and published versions are immutable. Partial publication is a resume case, not rollback. For a confirmed systemic defect after completion, deprecate every affected `@0.0.10`; restore `latest` to the previous good release only where that tag already existed. Exact `0.0.10` installs remain possible, so publish a fixed version promptly. Do not unpublish except for a security/legal emergency under npm policy.
262
+ Older 0.0.10–0.0.15 handoffs are summarized in [migration](migration.md); historical 43-package evidence remains there. The publishable package catalog includes `@arnilo/prism-provider-alibaba`, `@arnilo/prism-provider-ollama`, and `@arnilo/prism-session-store-codecs`; current publication uses the 47-manifest handoff above.
877
263
 
878
264
  ## Extension and configuration notes
879
265
 
880
- - **Required `@arnilo/prism` peer.** Every first-party code package declares a non-optional `@arnilo/prism@0.0.22` peer (`peerDependenciesMeta` must not mark `@arnilo/prism` optional; other peers such as `playwright-core` may be optional). The range stays pinned to `0.0.22` 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.
881
- - **Public access.** All 46 manifests (40 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.
266
+ - **Required `@arnilo/prism` peer.** Every first-party code package declares a non-optional `@arnilo/prism@0.0.24` peer (`peerDependenciesMeta` must not mark `@arnilo/prism` optional; other peers such as `playwright-core` may be optional). The range stays pinned to `0.0.24` 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.
267
+ - **Public access.** All 47 manifests (41 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.
882
268
  - **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).
883
269
  - **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`.
884
270
  - **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.
@@ -992,13 +378,14 @@ Every release gate maps to an exact enforcement test or command, so the checklis
992
378
  | Gate | Enforcement |
993
379
  | --- | --- |
994
380
  | Docs coverage for persistence/runtime/migration surfaces | `docs.test.ts` enrolls every API page in `apiPages` (heading + index-link + bare-specifier + secret-scan checks); dedicated section assertions pin `database-persistence.md`, `runs-and-usage.md`, `session-stores-and-branching.md`, `migration.md`, `agent-definitions.md`, `performance.md`, and the Phase 41 `external_app_example_*` / `phase41_external_app_surfaces_*` gates. |
995
- | Package exports/subpaths resolve to built output | `public-export-contract.test.ts` asserts every `exports`/`main`/`types`/`bin` target resolves to a built file under `dist/` with a sibling `.d.ts`, and no target escapes `dist/` (no `src/` or `examples/` leak). CI `node20-compat` also imports every public root `exports` default target on Node 20. |
381
+ | Package exports/subpaths resolve to built output | `public-export-contract.test.ts` asserts every `exports`/`main`/`types`/`bin` target resolves to a built file under `dist/` with a sibling `.d.ts` (`dist/index.js` + `dist/index.d.ts` for a root package), and no target escapes `dist/` (no `src/` or `examples/` leak). CI `node20-compat` also imports every public root `exports` default target on Node 20. |
996
382
  | Public-API drift | `public-export-contract.test.ts` `phase39_public_protocol_exports_and_types_do_not_drift` pins the runtime protocol (`providerToolCallDelta`, `ToolCallDeltaContent`), the `/testing/provider-conformance` subpath shape, and the observational-memory runtime `.d.ts` surface. |
997
383
  | Root SDK export surface freeze | `public-export-contract.test.ts` `root export surface is frozen` snapshots every value and type export of `src/index.ts` (107 value + 69 type) so any add/remove is a deliberate test update; `every frozen value export resolves at runtime` rebuilds `dist/index.js` and asserts each value export is present (catches build drift), and `every frozen type export appears in the built type declarations` asserts each type export is in `dist/index.d.ts`. |
998
384
  | Examples compile and are listed; runnable demos execute | `npm run typecheck` runs `tsc -p examples --noEmit`; `docs.test.ts` checks every `examples/*.ts` file is listed in `examples/README.md`, then runs demos offline and scans output for secrets. |
999
385
  | Examples run to completion with no secret leakage | `docs.test.ts` `examples_demos_run_to_completion_and_emit_no_secret` runs each demo (Node strips TypeScript types natively) with exit-0 and real-secret scans; `external_app_example_*` pins the DB-backed adapter reference exercising the `RunLedger`, branch-handle checkout, fork, and prior-run resume. |
1000
- | Tarball excludes built tests, source maps, and source | `packaging.test.ts` rejects `dist/__tests__/`, `*.map`, `src/`, `plans/`, and internal files; confirms every package ships README/changelog (and code packages ship LICENSE), core ships docs + CLI, exported targets exist (`dist/index.js` + `dist/index.d.ts` for NeuralWatt), and `prism-all` transitively reaches all 32 published first-party manifests. |
386
+ | Tarball excludes built tests, source maps, and source | `packaging.test.ts` rejects `dist/__tests__/`, `*.map`, `src/`, `plans/`, and internal files; confirms every package ships README/changelog (and code packages ship LICENSE), core ships docs + CLI, and every export target exists. `prism-all` reaches every current publishable package except the deliberate Caveman/Ponytail opt-outs. |
1001
387
  | NeuralWatt package/docs/examples release gate | `packaging.test.ts` pins `@arnilo/prism-provider-neuralwatt` package exports/type declarations and `@arnilo/prism-providers`/`@arnilo/prism-all` membership; `docs.test.ts` asserts `docs/index.md` links `providers/neuralwatt.md` and `provider-caching.md`, and that `examples/cache-aware-prompt-assembly.ts` plus `examples/neuralwatt-agent-run.ts` exist and are listed. |
388
+ | Enterprise PostgreSQL package/docs/example gate | Packaging/install/public-contract tests include `@arnilo/prism-enterprise-postgres`; `docs.test.ts` pins its API page, four-store migration/ownership/unknown-outcome/async-router guidance, and `examples/enterprise-postgres-state.ts`; `npm run test:postgres` exercises migration, restart, contention, and cleanup with an explicit database URL. |
1002
389
  | Version graph and resumable publication | `release.test.ts` covers exact package/lock/range validation, topological order, registry collisions, dry-run, interrupted reports/resume, clean tagged git state, provenance/public/tag arguments, and token-safe errors. `release:check` and `release:publish` derive the workspace graph without a manual package list. |
1003
390
  | Pre-publish compatibility gates | `release:gate` (in `sdk:ready`) fails on removed/changed `.d.ts` exports vs `scripts/compat-baseline/` (unless `--allow-break` + migration note), version-range/lockfile drift, and tarball deny-list violations (`plans/`, `code-reviews/`, `docs/review-coverage-*`, `*.map`, `__tests__/`); unit-tested in `scripts/release-gate.test.mjs`. |
1004
391
  | Formatting, linting, and coverage thresholds | `npm run lint` and `npm run format:check` run Biome (single root `biome.json`, workspaces inherit) and fail on any lint error or unformatted file; `npm run test:coverage` uses Node's built-in `--experimental-test-coverage` with enforced minimums (lines 60 / functions 70 / branches 75) and no third-party service. All three run inside `sdk:ready`. |