enigma-memory 0.1.14 → 0.1.16

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 (40) hide show
  1. package/README.md +64 -84
  2. package/apps/cli/bin/enigma.mjs +3151 -3126
  3. package/apps/native-host/README.md +20 -0
  4. package/deploy/SIMULATION.md +34 -38
  5. package/deploy/docker-compose.local-production-simulation.yml +5 -2
  6. package/docs/benchmark-attestation-network.md +2 -2
  7. package/docs/benchmark-reproducibility.md +240 -228
  8. package/docs/browser-extension-install.md +9 -6
  9. package/docs/client-connectors.md +22 -52
  10. package/docs/demo-proof-network.md +3 -3
  11. package/docs/developer-ecosystem.md +205 -223
  12. package/docs/developer-proof-quickstart.md +3 -3
  13. package/docs/enigma-memory-ready-conformance.md +1 -1
  14. package/docs/hosted-cloud-product.md +2 -0
  15. package/docs/install-anywhere.md +61 -66
  16. package/docs/memory-benchmarks.md +6 -3
  17. package/docs/proof-network-build-notes.md +2 -2
  18. package/docs/proof-network.md +32 -7
  19. package/docs/sdk-api.md +1 -1
  20. package/docs/solana-devnet-acceptance.md +1 -1
  21. package/docs/solana-proof-rail.md +1 -1
  22. package/package.json +278 -272
  23. package/packages/connectors/src/index.js +13 -0
  24. package/packages/mcp-server/README.md +22 -0
  25. package/packages/mcp-server/src/index.js +1185 -1185
  26. package/scripts/build-benchmark-proof-release.mjs +106 -5
  27. package/scripts/build-cloudflare-token-policy.mjs +6 -2
  28. package/scripts/build-hosted-api-key-lifecycle.mjs +274 -274
  29. package/scripts/build-hosted-customer-lifecycle.mjs +456 -456
  30. package/scripts/build-installer-assets.mjs +389 -389
  31. package/scripts/build-production-handoff-packet.mjs +1 -1
  32. package/scripts/build-production-unblocker.mjs +409 -409
  33. package/scripts/build-production-workplan.mjs +3 -1
  34. package/scripts/build-proof-network-packet.mjs +213 -213
  35. package/scripts/check.mjs +3 -1
  36. package/scripts/cloudflare-ops.mjs +35 -0
  37. package/scripts/collect-hosted-backend-live-evidence.mjs +44 -2
  38. package/scripts/run-memory-benchmarks.mjs +5 -0
  39. package/scripts/run-standard-memory-benchmarks.mjs +1194 -1070
  40. package/scripts/stage-cloudflare-pages-artifact.mjs +145 -0
@@ -341,7 +341,7 @@ The negative fixture set should include intentionally unsafe keys and values so
341
341
  "subject": {
342
342
  "name_ref": "public-package-or-client-ref",
343
343
  "version": "0.0.0",
344
- "enigma_version": "0.1.14"
344
+ "enigma_version": "0.1.16"
345
345
  },
346
346
  "commands": [
347
347
  {
@@ -49,6 +49,8 @@ Hosted cloud remains blocked until an operator wires and records evidence for al
49
49
 
50
50
  A `provided` operator evidence ref means the contract can point to external evidence. It still does not by itself make hosted cloud sellable; an operator must complete the release checklist and issue go-live approval. A `blocked_external_dependency` ref is an explicit blocker, not fake evidence.
51
51
 
52
+ Hosted relay/gateway readiness is a separate backend health boundary, not hosted-cloud sellability. Operators may validate the backend path with `npm run production:hosted-collect` followed by `npm run production:hosted-live`, but those commands only prove public HTTPS relay/gateway probes and required hosted refs for the named environment. They do not wire auth, billing, legal terms, support, security review, customer lifecycle, API key lifecycle, or operator SaaS go-live approval.
53
+
52
54
  ## Consolidated unblocker report
53
55
 
54
56
  Before treating hosted cloud as sellable, run the consolidated public-safe unblocker report:
@@ -1,8 +1,8 @@
1
1
  # Install Enigma anywhere
2
2
 
3
- Start with the published npm package path for `enigma-memory`: install once, run `enigma init --dry-run` to inspect the local plan, then execute local setup and connect real local clients only when you explicitly choose to. Use a source checkout only when you need source-only docs, Docker assets, browser-extension scaffolding, package development, or release scripts.
3
+ Start with the published npm package path for `enigma-memory`: install once, run `enigma setup --overwrite` once, then use memory/search/context/verify/connect from the same local AI Memory Passport. Use a source checkout only when you need source-only docs, Docker assets, browser-extension scaffolding, package development, or release scripts.
4
4
 
5
- Hosted cloud and BYOC operation require real deployment credentials, domains, TLS, durable storage, KMS/secrets, monitoring, backups, and operator/customer infrastructure; they are not activated by installing the package, running init, or running the test drive.
5
+ Hosted cloud and BYOC operation require real deployment credentials, domains, TLS, durable storage, KMS/secrets, monitoring, backups, and operator/customer infrastructure; they are not activated by installing the package, running setup, or running the test drive.
6
6
 
7
7
  ## Requirements
8
8
 
@@ -12,68 +12,13 @@ Hosted cloud and BYOC operation require real deployment credentials, domains, TL
12
12
  - Git only for the advanced source-checkout path
13
13
  - Optional: Docker for source-checkout containerized relay/gateway operation
14
14
 
15
- ## First run: inspect the safe local plan
16
-
17
- Use the published package as the primary path:
18
-
19
- ```sh
20
- npm install -g enigma-memory
21
- enigma init --dry-run
22
- ```
23
-
24
- `enigma init --dry-run` emits a public-safe JSON plan with exact next commands. It writes no local artifacts, writes no third-party client configs, does not call external providers, does not contact hosted Enigma SaaS, and does not require provider credentials, Solana, or browser extension installation. The output states `provider_credentials_required:false`, `hosted_saas_live:false`, and `raw_memory_printed:false`.
25
-
26
- When the plan looks right, create the regular local workspace:
27
-
28
- ```sh
29
- enigma init --overwrite
30
- ```
31
-
32
- `enigma init --overwrite` writes the local bundle, context pack, export, and verify report under `.enigma` by default. It does not write Claude, Cursor, Kimi, or other third-party client configs unless you explicitly add `--connect`.
33
-
34
- The isolated proof/demo command is still available for public reviewers:
35
-
36
- ```sh
37
- enigma test-drive --overwrite
38
- ```
39
-
40
- `enigma test-drive --overwrite` is the one-command local proof/demo. It needs no credentials, does not call external providers, does not contact hosted Enigma SaaS, and does not write third-party client configs. It writes an isolated demo under `.enigma/test-drive` by default; use `--dry-run` to preview the plan without writing, or `--out-dir <path>` to choose a different isolated demo directory.
41
-
42
- The command emits one public-safe JSON summary with paths to the local setup artifacts, search/status output, cross-model demo report, and benchmark pointers. The default bundle lives inside the demo directory. The summary includes exact next commands for public testers and does not print raw private memory plaintext.
43
-
44
- Keep the claim bounded: the test drive proves local Enigma-controlled vault state, receipts, checkpoints, committed roots, exported bundle shape, and declared boundary operations. It does not prove hosted SaaS availability, provider deletion, model forgetting, provider-native memory removal, legal approval, ROI/savings, or compliance certification.
45
-
46
- To connect real local clients that are already installed or already configured:
47
-
48
- ```sh
49
- enigma init --connect --overwrite
50
- ```
51
-
52
- `--connect` is the init-time write flag for client configs. With default client selection it skips missing client configs instead of creating every default client config.
53
-
54
15
  ## Default path: install once, use everywhere
55
16
 
56
- After reviewing the first-run plan, create a regular local workspace when you want to use Enigma day to day:
17
+ Use the published package as the primary path:
57
18
 
58
19
  ```sh
59
20
  npm install -g enigma-memory
60
- enigma init --dry-run
61
- enigma init --overwrite
62
- ```
63
-
64
- `enigma init --overwrite` is the safe default for a regular local workspace. It writes local Enigma artifacts under the workspace `.enigma` path and emits deterministic, public-safe JSON without printing raw memory plaintext. It does not write Claude, Cursor, Kimi, or other third-party app configs.
65
-
66
- To let init auto-detect installed or already-configured clients and show the connector plan without mutating client configs:
67
-
68
- ```sh
69
- enigma init --client auto --dry-run
70
- ```
71
-
72
- `--client auto` selects clients found by connector detection and falls back to the default setup client list when none are present. The init output lists which clients were selected, which were skipped, and why. Existing setup commands remain available: `enigma setup --overwrite`, `enigma setup --client auto --overwrite`, and `enigma setup --connect-installed --overwrite`.
73
-
74
- After init or setup, use the same local vault from the CLI or connected clients:
75
-
76
- ```sh
21
+ enigma setup --overwrite
77
22
  enigma remember --text-file ./memory.txt
78
23
  enigma search --query "..."
79
24
  enigma context --query "..." --optimize
@@ -81,9 +26,11 @@ enigma verify --export ./.enigma/export.json
81
26
  enigma connect claude-desktop --dry-run
82
27
  ```
83
28
 
29
+ `enigma setup --overwrite` writes local Enigma artifacts under the workspace `.enigma` path and emits deterministic, public-safe JSON without printing raw memory plaintext. It does not write Claude, Cursor, Kimi, or other third-party app configs. Client config writes happen only when you explicitly run `enigma connect <client>` without `--dry-run`.
30
+
84
31
  The local Enigma vault is the canonical memory passport. Provider-native memory is non-canonical cache only. Enigma proof covers Enigma-controlled vault state, receipts, checkpoints, committed roots, and exported bundle shape; it does not prove provider deletion, model forgetting, provider-native memory removal, hosted/BYOC availability, legal approval, ROI/savings, or compliance certification.
85
32
 
86
- One-off public test drive without a global install:
33
+ Optional public test drive without a global install:
87
34
 
88
35
  ```sh
89
36
  npx --yes --package enigma-memory enigma test-drive --overwrite
@@ -230,15 +177,63 @@ Npm-first connector flow:
230
177
 
231
178
  ```sh
232
179
  npm install -g enigma-memory
233
- enigma init --dry-run
234
- enigma init --overwrite
235
- enigma init --client auto --dry-run
236
- enigma init --connect --overwrite
180
+ enigma setup --overwrite
181
+ enigma connect claude-desktop --dry-run
182
+ ```
183
+
184
+ Run `enigma setup --overwrite` for a regular local workspace. It writes local Enigma artifacts only. Use `enigma connect <client> --dry-run` when you want to preview one client config without writing it; remove `--dry-run` only when you explicitly want Enigma to merge that MCP entry while preserving unrelated client settings.
185
+
186
+ Copy-paste MCP snippets:
187
+
188
+ Claude Desktop:
189
+
190
+ ```json
191
+ {
192
+ "mcpServers": {
193
+ "enigma": {
194
+ "command": "enigma-mcp",
195
+ "args": [],
196
+ "env": {
197
+ "ENIGMA_BUNDLE": "/absolute/path/to/.enigma/bundle.json"
198
+ }
199
+ }
200
+ }
201
+ }
202
+ ```
203
+
204
+ Cursor:
205
+
206
+ ```json
207
+ {
208
+ "mcpServers": {
209
+ "enigma": {
210
+ "command": "enigma-mcp",
211
+ "args": [],
212
+ "env": {
213
+ "ENIGMA_BUNDLE": "/absolute/path/to/.enigma/bundle.json"
214
+ }
215
+ }
216
+ }
217
+ }
237
218
  ```
238
219
 
239
- Run `enigma init --dry-run` first to inspect the safe local plan without credentials, hosted SaaS, provider calls, raw memory output, or client-config writes. Run `enigma init --overwrite` for a regular local workspace. Use `--client auto --dry-run` when you want init to report installed/config-present connector targets without writing client configs. Use `--connect` only when you explicitly want init to merge Enigma into installed/config-present client configs by default; missing configs are skipped with reasons instead of created. Existing `enigma setup --overwrite`, `enigma setup --client auto --overwrite`, `enigma setup --connect-installed --overwrite`, and `enigma setup --write-connectors` behavior remains available. For a single client, replace `claude-desktop` with `cursor`, `kimi-code`, `vscode-cline`, `roo`, `opencode`, or `generic-mcp` and run `enigma connect <client> --dry-run` before writing.
220
+ Kimi Code:
221
+
222
+ ```json
223
+ {
224
+ "mcpServers": {
225
+ "enigma": {
226
+ "command": "enigma-mcp",
227
+ "args": [],
228
+ "env": {
229
+ "ENIGMA_BUNDLE": "/absolute/path/to/.enigma/bundle.json"
230
+ }
231
+ }
232
+ }
233
+ }
234
+ ```
240
235
 
241
- Copy-paste MCP entry for Claude Desktop, Cursor, Kimi Code, or a generic MCP client:
236
+ Generic MCP:
242
237
 
243
238
  ```json
244
239
  {
@@ -12,12 +12,13 @@ For official-dataset retrieval/evidence proxy scoring over operator-downloaded f
12
12
 
13
13
  ```sh
14
14
  cd enigma
15
+ node scripts/run-standard-memory-benchmarks.mjs --locomo ./data/locomo10.json --longmemeval ./data/longmemeval_s_cleaned.json --max-locomo-qa 100 --max-longmemeval-items 100 --top-k 5 --dry-run
15
16
  node scripts/run-standard-memory-benchmarks.mjs --locomo ./data/locomo10.json --out ./.enigma/locomo-standard-memory-benchmark.json
16
17
  node scripts/run-standard-memory-benchmarks.mjs --longmemeval ./data/longmemeval_s_cleaned.json --top-k 5 --out ./.enigma/longmemeval-standard-memory-benchmark.json
17
18
  node scripts/run-standard-memory-benchmarks.mjs --locomo ./data/locomo10.json --longmemeval ./data/longmemeval_s_cleaned.json --max-locomo-qa 100 --max-longmemeval-items 100 --out ./.enigma/standard-memory-benchmark.json
18
19
  ```
19
20
 
20
- The standard report schema is `enigma.standard_memory_benchmark_suite.v1`. It reads local official dataset JSON files only, scores deterministic retrieval/evidence coverage proxies, and still excludes raw question, answer, and conversation text from reports.
21
+ The standard dry-run schema is `enigma.standard_memory_benchmark_plan.v1`. It prints planned local file names, sample bounds, local deterministic method rows, a requirements-only Mem0 adapter row, apples-to-apples controls, and explicit no-network/no-provider/no-Mem0/no-score boundaries without reading dataset files. The scored standard report schema is `enigma.standard_memory_benchmark_suite.v1`. It reads local official dataset JSON files only, scores deterministic retrieval/evidence coverage proxies, includes Mem0 as requirements-only with `scores_included:false`, and still excludes raw question, answer, and conversation text from reports.
21
22
 
22
23
  The report schema is `enigma.memory_benchmark_suite.v1`. It is public-safe by design: aggregate metrics, commitments, citations, boundaries, and cross-provider profile labels are emitted, but raw fixture memory, question text, and answer text are not included.
23
24
 
@@ -52,9 +53,11 @@ Numeric token and latency values in generated reports are local fixture measurem
52
53
 
53
54
  ## Official dataset retrieval/proxy runner
54
55
 
55
- `scripts/run-standard-memory-benchmarks.mjs` is the dependency-free runner for official dataset files already present on disk. It supports `--locomo <path>`, `--longmemeval <path>`, `--max-locomo-qa <n>`, `--max-longmemeval-items <n>`, `--top-k <n>` (default `5`), and optional `--out <path>`. Supplying only one dataset path scores only that dataset.
56
+ `scripts/run-standard-memory-benchmarks.mjs` is the dependency-free runner for official dataset files already present on disk. It supports `--locomo <path>`, `--longmemeval <path>`, `--max-locomo-qa <n>`, `--max-longmemeval-items <n>`, `--top-k <n>` (default `5`), `--dry-run`, and optional `--out <path>`. Supplying only one dataset path scores only that dataset.
56
57
 
57
- Reports include only the input file name plus the input SHA-256, not the full local path, so operator usernames or workstation directories are not persisted.
58
+ Use `--dry-run` before a scored run when publishing benchmark evidence. The plan proves only command shape and offline boundaries: it does not read or hash the files, prove they exist, produce scores, call provider APIs, run Mem0, run competitor SDKs, generate answers, grade answer accuracy, or spend API budget.
59
+
60
+ Reports include only the input file name plus the input SHA-256, not the full local path, so operator usernames or workstation directories are not persisted. Scored reports also include `command_boundaries` and `apples_to_apples_controls` so reviewers can see that all local rows used the same parsed records, same `--top-k`, same scoring labels, and no gold labels for retrieval selection.
58
61
 
59
62
  The runner parses LoCoMo `conversation` session turns as memory records and maps evidence labels such as `D1:3` or `D8:6; D9:17` to dialog IDs. It parses LongMemEval `haystack_sessions` turns as memory records, uses `has_answer: true` turns plus `answer_session_ids` as gold evidence, and treats `_abs` question IDs as abstention cases.
60
63
 
@@ -1,6 +1,6 @@
1
1
  # Proof Network build notes
2
2
 
3
- These notes are for future engineers extending Enigma's privacy-preserving Proof Network into a Solana program or hosted verifier. The 0.1.14 scope is local-only: create and verify public-safe proof artifacts, prepare opaque root batches for future chain anchoring, and never submit transactions or write private memory material into proof payloads.
3
+ These notes are for future engineers extending Enigma's privacy-preserving Proof Network into a Solana program or hosted verifier. The 0.1.16 scope is local-only: create and verify public-safe proof artifacts, prepare opaque root batches for future chain anchoring, and never submit transactions or write private memory material into proof payloads.
4
4
 
5
5
  Paths below are relative to `enigma/`.
6
6
 
@@ -202,7 +202,7 @@ On-chain accounts should store compact hashes, counters, timestamps, and public
202
202
 
203
203
  A hosted verifier can add convenience, not authority over private content. It may validate schema ids, JSON Schemas, package validators, canonical hashes, packet nesting, artifact counts, and public registry/chain observations. It must return bounded public-safe error codes and never echo private submitted values.
204
204
 
205
- Verifier non-goals: no raw memory ingestion, provider transcript ingestion, embedding upload endpoint, tenant-name lookup endpoint, Solana transaction submission, or hosted secret custody in the 0.1.14 proof-network layer.
205
+ Verifier non-goals: no raw memory ingestion, provider transcript ingestion, embedding upload endpoint, tenant-name lookup endpoint, Solana transaction submission, or hosted secret custody in the 0.1.16 proof-network layer.
206
206
 
207
207
  ## Targeted test plan
208
208
 
@@ -92,7 +92,7 @@ Example:
92
92
  ```sh
93
93
  enigma chain anchor \
94
94
  --root sha256:8f0f7d2b7b7f4f2a3e4b9a3d1f0f2c3b4a5d6e7f8091a2b3c4d5e6f708192a3b \
95
- --ref release:enigma:0.1.14 \
95
+ --ref release:enigma:0.1.16 \
96
96
  --ref memory-root:public-demo-2026-06-25 \
97
97
  --out ./.enigma/proof-network-anchor.json
98
98
  ```
@@ -144,8 +144,8 @@ Example:
144
144
  ```sh
145
145
  enigma chain revoke \
146
146
  --issuer did:example:enigma-issuer \
147
- --grant-ref grant:sha256:2a0f6d8c1e3b5a799887766554433221100ffeeddccbbaa998877665544332211 \
148
- --reason-ref operator-request:2026-06-25 \
147
+ --grant-hash sha256:2a0f6d8c1e3b5a799887766554433221100ffeeddccbbaa998877665544332211 \
148
+ --reason operator-request-2026-06-25 \
149
149
  --out ./.enigma/proof-network-revocation.json
150
150
  ```
151
151
 
@@ -166,8 +166,8 @@ Example with a report hash:
166
166
  enigma chain attest \
167
167
  --report-hash sha256:5c3a2e1d0f9b8a7766554433221100ffeeddccbbaa99887766554433221100ff \
168
168
  --dataset-ref locomo:file-sha256:6a7b8c9d0e1f2233445566778899aabbccddeeff00112233445566778899aabb \
169
- --runner-ref enigma-standard-memory-benchmark:0.1.14 \
170
- --package-ref npm:@enigma-ai/enigma:0.1.14 \
169
+ --runner-ref enigma-standard-memory-benchmark:0.1.16 \
170
+ --package-ref npm://enigma-memory@0.1.16 \
171
171
  --out ./.enigma/proof-network-attestation.json
172
172
  ```
173
173
 
@@ -177,8 +177,8 @@ Example with a local report file:
177
177
  enigma chain attest \
178
178
  --report-file ./.enigma/standard-memory-benchmark.json \
179
179
  --dataset-ref longmemeval:file-sha256:7b8c9d0e1f2233445566778899aabbccddeeff00112233445566778899aabbcc \
180
- --runner-ref enigma-standard-memory-benchmark:0.1.14 \
181
- --package-ref npm:@enigma-ai/enigma:0.1.14 \
180
+ --runner-ref enigma-standard-memory-benchmark:0.1.16 \
181
+ --package-ref npm://enigma-memory@0.1.16 \
182
182
  --out ./.enigma/proof-network-attestation.json
183
183
  ```
184
184
 
@@ -211,6 +211,31 @@ enigma chain verify --file ./.enigma/proof-network-packet.json
211
211
 
212
212
  A successful local verification means the artifact matches a supported proof-network shape and safety boundary. It does not mean a live account exists, a transaction was accepted, or a public rail was contacted.
213
213
 
214
+ ## Flow: optional Solana Memo dry-run
215
+
216
+ `enigma chain submit-solana` is the safe handoff from a verified local artifact to the optional Solana proof rail. It defaults to dry-run, validates the artifact first, and prints only the compact Memo reference that would be submitted.
217
+
218
+ Dry-run command:
219
+
220
+ ```sh
221
+ enigma chain submit-solana \
222
+ --file ./.enigma/proof-network-anchor.json \
223
+ --cluster devnet
224
+ ```
225
+
226
+ Execute command, only after devnet gate approval and with an explicit operator keypair:
227
+
228
+ ```sh
229
+ enigma chain submit-solana \
230
+ --file ./.enigma/proof-network-anchor.json \
231
+ --cluster devnet \
232
+ --rpc https://api.devnet.solana.com \
233
+ --keypair ./operator-devnet-keypair.json \
234
+ --execute
235
+ ```
236
+
237
+ Execute mode submits one Solana Memo instruction containing only `memo_ref` JSON: schema, artifact hash, cluster, and compact proof commitment. It does not submit the artifact body, raw memory, prompts, transcripts, embeddings, provider responses, private keys, local paths, or customer identifiers.
238
+
214
239
  ## Privacy boundaries
215
240
 
216
241
  Proof-network artifacts are public-safe only when they follow these boundaries:
package/docs/sdk-api.md CHANGED
@@ -241,7 +241,7 @@ const attestation = createBenchmarkAttestation({
241
241
  report_hash: 'sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
242
242
  dataset_ref: 'dataset-ref-public',
243
243
  runner_ref: 'runner-ref-public',
244
- package_ref: 'npm:enigma-memory@0.1.14',
244
+ package_ref: 'npm:enigma-memory@0.1.16',
245
245
  metric_roots: ['sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'],
246
246
  sample_count: 120,
247
247
  run_count: 1,
@@ -33,7 +33,7 @@ enigma chain submit-solana \
33
33
  --keypair ./operator-devnet-keypair.json
34
34
  ```
35
35
 
36
- Network submission is opt-in only. Execute mode requires an explicit Solana cluster and keypair, lazily loads `@solana/web3.js`, and submits one Memo-program transaction containing only the compact `memo_ref` JSON:
36
+ Network submission is opt-in only. Execute mode requires an explicit Solana cluster and Solana CLI-style 64-byte secret-key JSON keypair, lazily loads `@solana/web3.js`, and submits one Memo-program transaction containing only the compact `memo_ref` JSON:
37
37
 
38
38
  ```sh
39
39
  enigma chain submit-solana \
@@ -437,7 +437,7 @@ Mainnet use is blocked until all gates below are satisfied for the exact program
437
437
  - Use domain tags for every hash: `anchor_batch`, `capability_grant`, `capability_revocation`, `benchmark_attestation`, `job_escrow`, `operator_registry`, and `packet`.
438
438
  - Prefer fixed-size byte arrays and enums in instruction args. Avoid variable user text and arbitrary JSON on-chain.
439
439
  - Keep account sizes bounded. Store hash lists off-chain behind roots when a vector could grow without a hard cap.
440
- - Every chain-writing CLI command should have a local planning mode first. The default for release `0.1.14` planning artifacts is no transaction submission.
440
+ - Every chain-writing CLI command should have a local planning mode first. The default for release `0.1.16` planning artifacts is no transaction submission.
441
441
  - Chain refs should include cluster, program id, signature/account id, and slot. They should not include RPC URLs with credentials.
442
442
 
443
443
  ## Future implementation checklist