enigma-memory 0.1.11 → 0.1.13

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 (58) hide show
  1. package/README.md +8 -0
  2. package/apps/cli/bin/enigma.mjs +362 -10
  3. package/deploy/SIMULATION.md +152 -0
  4. package/deploy/docker-compose.local-production-simulation.yml +237 -0
  5. package/deploy/docker-compose.production.example.yml +19 -0
  6. package/deploy/kms-mock.mjs +64 -0
  7. package/deploy/nginx.local-production-simulation.conf +33 -0
  8. package/deploy/siem-mock.mjs +50 -0
  9. package/docs/benchmark-attestation-network.md +488 -0
  10. package/docs/benchmark-reproducibility.md +19 -2
  11. package/docs/blockchain-only-mechanisms.md +388 -0
  12. package/docs/client-connectors.md +512 -0
  13. package/docs/demo-proof-network.md +275 -0
  14. package/docs/developer-ecosystem.md +47 -4
  15. package/docs/developer-proof-quickstart.md +325 -0
  16. package/docs/enigma-memory-ready-conformance.md +376 -0
  17. package/docs/enterprise-proof-control-plane.md +365 -0
  18. package/docs/install-anywhere.md +517 -0
  19. package/docs/market-category-narrative.md +398 -0
  20. package/docs/memory-drive-health-model.md +649 -0
  21. package/docs/memory-drive-strategy.md +458 -0
  22. package/docs/memory-passport-standard.md +445 -0
  23. package/docs/novelty-invention-candidates.md +161 -0
  24. package/docs/privacy-ledger-model.md +229 -0
  25. package/docs/proof-network-build-notes.md +240 -0
  26. package/docs/proof-network-claim-boundaries.md +318 -0
  27. package/docs/proof-network-dashboard-spec.md +773 -0
  28. package/docs/proof-network-glossary.md +27 -0
  29. package/docs/proof-network-launch-plan.md +421 -0
  30. package/docs/proof-network-operator-protocol.md +432 -0
  31. package/docs/proof-network-roadmap.md +431 -0
  32. package/docs/proof-network-test-plan.md +216 -0
  33. package/docs/proof-network-threat-model.md +373 -0
  34. package/docs/proof-network.md +257 -0
  35. package/docs/sdk-api.md +132 -10
  36. package/docs/solana-devnet-acceptance.md +226 -0
  37. package/docs/solana-proof-rail.md +453 -0
  38. package/examples/ci/github-actions.yml +6 -3
  39. package/examples/proof-network-anchor.json +37 -0
  40. package/examples/proof-network-attestation.json +35 -0
  41. package/examples/proof-network-grant.json +27 -0
  42. package/examples/proof-network-packet.json +71 -0
  43. package/package.json +42 -3
  44. package/packages/mcp-server/src/index.js +1 -1
  45. package/packages/proof-network/src/index.js +570 -0
  46. package/scripts/build-hosted-api-key-lifecycle.mjs +1 -1
  47. package/scripts/build-hosted-customer-lifecycle.mjs +1 -1
  48. package/scripts/build-installer-assets.mjs +1 -1
  49. package/scripts/build-proof-network-packet.mjs +213 -0
  50. package/scripts/run-standard-memory-benchmarks.mjs +1 -1
  51. package/scripts/simulate-production-env.mjs +210 -0
  52. package/scripts/verify-registry-install.mjs +1 -0
  53. package/scripts/wait-for-backend-ready.mjs +101 -0
  54. package/specs/goal-completion-audit-v1.schema.json +1 -0
  55. package/specs/proof-network-anchor-batch-v1.schema.json +125 -0
  56. package/specs/proof-network-benchmark-attestation-v1.schema.json +103 -0
  57. package/specs/proof-network-capability-grant-v1.schema.json +132 -0
  58. package/specs/proof-network-packet-v1.schema.json +171 -0
@@ -0,0 +1,388 @@
1
+ # Blockchain-only mechanisms
2
+
3
+ Enigma's product thesis is simple: Enigma is the private memory controller for AI; Solana is an optional proof, permission, and settlement rail that carries hashes, roots, references, and public state transitions only.
4
+
5
+ This document defines what is meaningfully blockchain-native in Enigma Proof Network and what must remain off-chain. The chain is not the memory database, not the policy engine, not the model runtime, and not the place where private user or tenant data becomes public. It is useful only where a neutral, shared, timestamped state machine creates value that a local log cannot provide by itself.
6
+
7
+ Status note: the mechanisms below are product/spec boundaries for an optional operator-controlled rail. They are not statements that a public Solana program, transaction flow, settlement market, or operator registry is already running.
8
+
9
+ ## Product boundary
10
+
11
+ | Layer | Job | Public-chain payload | Off-chain payload |
12
+ | --- | --- | --- | --- |
13
+ | Enigma private memory controller | Store, retrieve, minimize, grant, revoke, and audit AI memory | None by default | Raw memory, private receipts, retrieval traces, policy bodies, operator notes |
14
+ | Proof Network artifacts | Convert selected memory-control events into public-safe evidence | Hashes, Merkle roots, refs, schema ids, timestamps, signatures, nullifiers | Source records, prompts, transcripts, completions, embeddings, ACL bodies |
15
+ | Optional Solana rail | Provide neutral ordering, public discoverability, permission state, escrow, settlement, and reputation | Compact commitments and public state transitions | Customer data, private commercial terms, provider payloads, private benchmark rows |
16
+
17
+ The safe public claim is narrow: Enigma can prepare and verify public-safe proof artifacts for memory commitments, grants, revocations, attestations, and packets while keeping raw memory off-chain. Any network submission, operator settlement, or production operation is a separate operator-controlled step outside this document.
18
+
19
+ ## What is meaningfully blockchain-native
20
+
21
+ A mechanism belongs on-chain only when it needs at least one of these properties:
22
+
23
+ 1. **Neutral timestamping** — a public observer can see that a commitment existed no later than a chain slot or block time without trusting Enigma's private server clock.
24
+ 2. **Shared revocation state** — multiple verifiers can consult the same public nullifier set instead of accepting stale private grants.
25
+ 3. **Public permission state** — wallets, agents, auditors, and marketplaces can resolve a grant or capability reference without relying on a single private API.
26
+ 4. **Third-party attestations** — independent operators can publish signed commitments into a common registry without exposing their private reports.
27
+ 5. **Escrow and settlement** — payment and release conditions can execute against public receipt references instead of private invoices alone.
28
+ 6. **Portable reputation** — operator behavior can accumulate around public keys, attestations, challenge outcomes, and settlement history without revealing private customer content.
29
+
30
+ Everything else should default off-chain.
31
+
32
+ ## Mechanism 1: neutral timestamped anchors
33
+
34
+ ### Blockchain-native value
35
+
36
+ A chain anchor gives a public, neutral time boundary for a public-safe commitment. It is useful when a team needs to show that a memory root, receipt-log root, benchmark report hash, release root, or proof packet root existed before a later dispute, review, or handoff.
37
+
38
+ A local log can say "we created this at 10:00." A public anchor can say "this opaque root was committed into a shared ledger at or before this slot." That difference is the blockchain-native part.
39
+
40
+ ### Public payload
41
+
42
+ A minimal anchor account or event should contain only:
43
+
44
+ - schema identifier;
45
+ - root or hash, such as a Merkle root or `sha256:` digest;
46
+ - public-safe reference, such as a release ref, packet ref, or artifact family ref;
47
+ - issuer/operator public key;
48
+ - timestamp or slot derived from the chain;
49
+ - optional signature over the canonical off-chain artifact hash.
50
+
51
+ ### Off-chain payload
52
+
53
+ The following remain off-chain and are disclosed only through approved private review channels:
54
+
55
+ - raw memory records;
56
+ - prompts, transcripts, completions, embeddings, and retrieval traces;
57
+ - tenant names, user identifiers, customer identifiers, and private workspace names;
58
+ - receipt bodies that include operational detail;
59
+ - local file paths, logs, provider responses, and secrets.
60
+
61
+ ### Product pattern
62
+
63
+ Use anchor batches for "existence and integrity" claims, not for content claims. A reviewer with the private packet can recompute the root. A public observer without the packet learns only that an opaque commitment existed.
64
+
65
+ ## Mechanism 2: revocation nullifiers
66
+
67
+ ### Blockchain-native value
68
+
69
+ Revocation becomes stronger when verifiers share one public set of invalidated grants or consumed capabilities. Without a shared nullifier set, a stale grant can keep circulating in screenshots, exported packets, or disconnected integrations.
70
+
71
+ A blockchain nullifier is useful because it is:
72
+
73
+ - publicly discoverable;
74
+ - append-only for practical verifier purposes;
75
+ - keyed by public-safe grant or scope commitments;
76
+ - independent of a single private API being online.
77
+
78
+ ### Public payload
79
+
80
+ A revocation/nullifier record should contain only:
81
+
82
+ - nullifier value derived from a grant id, scope digest, or one-time-use proof reference;
83
+ - issuer public key or revocation authority public key;
84
+ - grant reference or scope digest when safe;
85
+ - revocation effective time or slot;
86
+ - optional reason reference such as `operator-request:2026-06-25`, not a private reason body.
87
+
88
+ ### Off-chain payload
89
+
90
+ Keep these off-chain:
91
+
92
+ - full grant body when it includes private policy detail;
93
+ - private reason text;
94
+ - customer, tenant, or employee names;
95
+ - ACL documents and group membership;
96
+ - support tickets, legal requests, private emails, or incident notes.
97
+
98
+ ### Product pattern
99
+
100
+ Use nullifiers to tell verifiers what not to accept. Do not claim that a nullifier proves third-party erasure, model-internal behavior, or removal from every downstream copy. It proves a public-safe Enigma verifier rule: this grant, scope, or one-time proof reference is no longer valid for verifiers that honor the nullifier set.
101
+
102
+ ## Mechanism 3: public grants
103
+
104
+ ### Blockchain-native value
105
+
106
+ A public grant is useful when permission should be portable across wallets, agents, reviewers, operators, and marketplaces. It turns a private API permission into a shared, inspectable state object.
107
+
108
+ The chain is valuable here only for the public edge of the permission: who issued a capability, which public subject can exercise it, what public-safe scope commitment it covers, when it expires, and which nullifier can revoke it.
109
+
110
+ ### Public payload
111
+
112
+ A grant account or event can contain:
113
+
114
+ - issuer public key;
115
+ - subject public identifier or wallet public key;
116
+ - capability name, such as `memory.read.context-pack` or `proof.verify.packet`;
117
+ - scope digest or public-safe scope ref;
118
+ - expiry time or slot;
119
+ - revocation/nullifier reference;
120
+ - signature over the canonical grant artifact hash.
121
+
122
+ ### Off-chain payload
123
+
124
+ Keep private:
125
+
126
+ - the memory records covered by the grant;
127
+ - semantic descriptions that reveal the tenant or use case;
128
+ - full ACL policy language;
129
+ - private subject metadata;
130
+ - purpose text that identifies a customer, incident, medical/legal matter, or sensitive workflow.
131
+
132
+ ### Product pattern
133
+
134
+ Public grants should be narrow and boring: one issuer, one subject, one capability, one scope digest, one expiry, one revocation path. Broad permanent grants are weaker product design and create unnecessary public linkability.
135
+
136
+ ## Mechanism 4: attestation registry
137
+
138
+ ### Blockchain-native value
139
+
140
+ An attestation registry lets independent parties publish signed commitments into a common namespace. It is useful for benchmark reports, release packets, conformance packets, operator audits, and integration receipts where the report itself may remain private but its digest should be discoverable.
141
+
142
+ The blockchain-native advantage is shared indexing: a verifier can discover attestations by package ref, dataset ref, runner ref, operator key, report hash, or packet root without trusting Enigma to host the only registry.
143
+
144
+ ### Public payload
145
+
146
+ An attestation registry entry should contain:
147
+
148
+ - attestor public key;
149
+ - attestation type, such as benchmark, conformance, release, integration, or operator receipt;
150
+ - report hash or packet root;
151
+ - public-safe refs for dataset, runner, package, version, environment class, or artifact family;
152
+ - timestamp or slot;
153
+ - signature and optional expiration or supersession reference.
154
+
155
+ ### Off-chain payload
156
+
157
+ Keep private:
158
+
159
+ - raw benchmark rows, questions, answers, conversations, prompts, completions, and provider responses;
160
+ - private reports and reviewer notes;
161
+ - private environment variables and local file paths;
162
+ - customer deployment details;
163
+ - evidence that is not approved for public distribution.
164
+
165
+ ### Product pattern
166
+
167
+ The registry should answer, "Which public key attested to which digest under which schema?" It should not answer, "What private data produced that digest?" Disclosure of the underlying report is a separate permissioned review action.
168
+
169
+ ## Mechanism 5: USDC escrow and settlement
170
+
171
+ ### Blockchain-native value
172
+
173
+ In an implemented operator-controlled settlement program, a USDC escrow would hold funds against public-safe proof conditions and release or refund them according to transparent rules.
174
+
175
+ This is useful for operator marketplaces and data-processing workflows where parties want payment tied to proof references rather than private trust alone.
176
+
177
+ ### Public payload
178
+
179
+ A settlement account should contain:
180
+
181
+ - payer public key;
182
+ - operator or payee public key;
183
+ - USDC mint and amount;
184
+ - job ref, grant ref, packet root, report hash, or receipt root;
185
+ - release condition, such as accepted attestation, proof packet verification, challenge window expiry, or nullifier absence;
186
+ - timeout and refund path;
187
+ - settlement status.
188
+
189
+ ### Off-chain payload
190
+
191
+ Keep private:
192
+
193
+ - private contract terms;
194
+ - customer identity and billing metadata;
195
+ - raw job inputs and outputs;
196
+ - invoices containing private line items;
197
+ - support disputes and operational notes;
198
+ - API keys, wallet seed phrases, and signing material.
199
+
200
+ ### Product pattern
201
+
202
+ Settlement should reference proof artifacts, not expose work contents. For example: a release rule can require an operator key to sign an attestation for packet root X with no valid challenge/refund condition present. The packet may be reviewed privately; the chain only needs the public-safe root and state transition.
203
+
204
+ ## Mechanism 6: operator reputation
205
+
206
+ ### Blockchain-native value
207
+
208
+ Operator reputation is useful when users need a portable signal about public-key behavior across integrations. It should be derived from public events, not from private customer data.
209
+
210
+ A chain can provide a neutral record of:
211
+
212
+ - anchors submitted by an operator key;
213
+ - grants issued or honored;
214
+ - revocations published promptly;
215
+ - attestations signed under known schemas;
216
+ - settled jobs and refunded jobs;
217
+ - challenge outcomes when the challenge itself is public-safe.
218
+
219
+ ### Public payload
220
+
221
+ Reputation inputs can include:
222
+
223
+ - operator public key;
224
+ - schema-specific event counts;
225
+ - public-safe challenge or dispute refs;
226
+ - settlement completions, refunds, and expired escrows;
227
+ - supersession and correction records;
228
+ - signer rotation records.
229
+
230
+ ### Off-chain payload
231
+
232
+ Keep private:
233
+
234
+ - customer names and tenant identifiers;
235
+ - private incident reports;
236
+ - raw quality reviews;
237
+ - confidential commercial terms;
238
+ - private support history;
239
+ - any memory, prompt, transcript, completion, embedding, or provider response.
240
+
241
+ ### Product pattern
242
+
243
+ Reputation should be evidence-indexed, not narrative-indexed. Prefer public counters and signed refs over subjective claims. Avoid financial, regulatory, performance-leadership, or customer-status claims unless separate reviewed evidence exists and the claim is explicitly allowed elsewhere.
244
+
245
+ ## What should stay off-chain
246
+
247
+ The default rule: if data is private, semantic, reversible, identifying, operationally sensitive, or expensive to correct, keep it off-chain.
248
+
249
+ | Category | Keep off-chain | Public-safe substitute |
250
+ | --- | --- | --- |
251
+ | Memory contents | Raw records, summaries, context packs, retrieval traces | Merkle root, record count, derived artifact root |
252
+ | Model interaction | Prompts, transcripts, completions, tool traces, provider responses | Hash of approved report or packet |
253
+ | Embeddings and indexes | Vectors, nearest-neighbor results, index files | Index root, version ref, build manifest hash |
254
+ | Access control | ACL body, group membership, tenant name, private policy text | Scope digest, capability name, expiry, public subject id |
255
+ | Identity | Customer names, employee names, private workspace ids | Public key, DID, opaque operator-controlled ref |
256
+ | Operations | Logs, stack traces, file paths, runbooks with secrets | Receipt root, release ref, environment class ref |
257
+ | Benchmarks | Raw examples, answers, conversations, private reports | Report hash, dataset ref, runner ref, package ref |
258
+ | Commercial terms | Invoices, negotiated terms, billing notes | Escrow amount, token mint, settlement state, public job ref |
259
+ | Secrets | API keys, private keys, seed phrases, tokens | Never publish; no substitute |
260
+
261
+ Do not treat hashing as automatic anonymization. Hashes of low-entropy values such as customer names, emails, tenant slugs, ticket numbers, or private project names can be guessed. Use random opaque refs or commitments salted and managed off-chain when linkability would be harmful.
262
+
263
+ ## Privacy boundaries by mechanism
264
+
265
+ | Mechanism | Public observer can learn | Public observer must not learn |
266
+ | --- | --- | --- |
267
+ | Anchor | A public-safe root existed by a chain time | The memory, users, prompts, or private report behind the root |
268
+ | Nullifier | A grant/scope/proof ref is revoked or consumed | The private reason, customer, policy body, or underlying memory |
269
+ | Public grant | A subject has a capability over a scope digest until expiry | The private scope contents or tenant context |
270
+ | Attestation registry | A public key signed a claim about a digest under a schema | Raw benchmark data, provider outputs, private review notes |
271
+ | USDC escrow | Funds are locked, released, refunded, or disputed against public refs | Private contract terms or job contents |
272
+ | Operator reputation | Public-key history over anchors, attestations, settlements, and challenges | Customer identities, private incidents, private quality narratives |
273
+
274
+ ## Design rules
275
+
276
+ 1. **Commit, do not reveal.** Put roots, hashes, refs, signatures, and nullifiers on-chain; keep source data off-chain.
277
+ 2. **Prefer opaque refs.** A public ref should not encode tenant names, private project names, or sensitive workflow labels.
278
+ 3. **Make revocation first-class.** Every grant needs an expiry and a nullifier path.
279
+ 4. **Separate proof from execution.** A proof artifact can show a commitment or state transition; it does not prove third-party erasure, model-internal behavior, legal status, business outcomes, or production operation.
280
+ 5. **Minimize public linkability.** Use separate operator keys, scoped refs, and short-lived grants when a single public graph would reveal too much.
281
+ 6. **Keep settlement about receipts.** Escrow releases should depend on public-safe proof refs and challenge windows, not raw job contents.
282
+ 7. **Make corrections explicit.** Use supersession records for mistaken anchors or attestations; do not mutate history or publish private explanations.
283
+
284
+
285
+ ## Minimal on-chain state model
286
+
287
+ The public rail should be modeled as a small state machine over commitments, not as a storage layer for Enigma data.
288
+
289
+ | State object | Deterministic public key seeds | Stored fields | Verifier question |
290
+ | --- | --- | --- | --- |
291
+ | Anchor record | program id, `anchor`, root digest, operator key | root, schema id, operator key, slot, optional artifact ref | Did this public-safe root exist by this chain time? |
292
+ | Grant record | program id, `grant`, issuer key, subject key, scope digest, capability | grant id, capability, scope digest, expiry, revocation ref | Was this public subject granted this scoped capability at this time? |
293
+ | Nullifier record | program id, `nullifier`, nullifier digest | nullifier digest, issuer key, effective slot, optional safe reason ref | Should verifiers reject the matching grant, scope, or one-time proof? |
294
+ | Attestation record | program id, `attestation`, attestor key, report or packet digest | digest, attestation type, public-safe refs, slot, signature | Which public key attested to this digest under which schema? |
295
+ | Escrow record | program id, `escrow`, payer key, operator key, job ref | token mint, amount, proof refs, release rule, timeout, state | Are funds locked, releasable, refundable, or disputed against public-safe refs? |
296
+ | Reputation index | program id, `operator`, operator key | counters, correction refs, challenge refs, signer rotation refs | What public-key history can be checked without private customer facts? |
297
+
298
+ All deterministic seeds must be public-safe. Never derive a public address from raw memory, tenant names, emails, private project slugs, ACL bodies, local file paths, ticket numbers, prompts, transcripts, completions, embeddings, provider responses, API keys, private keys, or seed phrases.
299
+
300
+ ## Instruction-level examples
301
+
302
+ These are product/spec examples, not statements that a public program or deployment exists.
303
+
304
+ | Instruction | Required public-safe inputs | State transition | Private data that must not be passed |
305
+ | --- | --- | --- | --- |
306
+ | `anchor_root` | root digest, schema id, artifact ref, operator signature | creates or updates an anchor record | memory rows, prompt text, transcript text, embeddings, provider payloads |
307
+ | `issue_grant` | issuer key, subject key, capability, scope digest, expiry, revocation ref | creates a grant record | ACL body, customer name, private purpose text, private group membership |
308
+ | `revoke_grant` | issuer key, grant ref or scope digest, nullifier digest, safe reason ref | creates a nullifier record | revocation narrative, support ticket, legal request, customer identity |
309
+ | `register_attestation` | attestor key, report or packet digest, public-safe refs, signature | creates an attestation record | raw benchmark rows, answers, conversations, private report body |
310
+ | `open_escrow` | payer key, operator key, USDC mint, amount, job ref, release rule, timeout | locks funds against public-safe proof refs | job input, job output, invoice terms, billing metadata |
311
+ | `settle_escrow` | escrow ref, accepted proof ref, operator signature or challenge-window result | releases, refunds, or marks disputed | private dispute evidence, work product, customer communications |
312
+ | `rotate_operator_key` | old key, new key, signed rotation ref | records signer rotation for reputation continuity | internal security notes, incident details, private key material |
313
+
314
+ The product discipline is to make public instructions boring. Each instruction should consume compact refs and signatures, perform one public state transition, and leave interpretation of private content to off-chain reviewers who are authorized to see it.
315
+
316
+ ## Concrete user-facing workflows
317
+
318
+ ### Reviewer packet with neutral anchor
319
+
320
+ 1. Enigma prepares a private reviewer packet containing approved evidence.
321
+ 2. The packet root is computed locally.
322
+ 3. The operator anchors only the root and a public-safe packet ref.
323
+ 4. A reviewer later recomputes the packet root from the private packet and checks that the public anchor existed before the review deadline.
324
+
325
+ The chain contributes time and neutrality. Enigma contributes private evidence control.
326
+
327
+ ### Scoped agent permission with revocation
328
+
329
+ 1. An operator creates a capability grant for an agent public key and a scope digest.
330
+ 2. The grant expires automatically at a declared time or slot.
331
+ 3. If access should end earlier, the operator publishes a nullifier.
332
+ 4. Verifiers reject packets, context requests, or settlement claims that depend on the revoked grant.
333
+
334
+ The chain contributes shared permission and revocation state. It does not expose the memory scope.
335
+
336
+ ### Attested benchmark or release
337
+
338
+ 1. A benchmark or release report remains in a private review system.
339
+ 2. Enigma emits a report hash or packet root.
340
+ 3. An attestor registers the digest with dataset, runner, package, and environment refs that are safe to publish.
341
+ 4. Reviewers with access to the report can recompute the digest; public observers can see only that the attestation exists.
342
+
343
+ The chain contributes shared discovery and signer accountability. It does not publish raw benchmark examples or private results.
344
+
345
+ ### Escrow for proof-backed operator work
346
+
347
+ 1. A payer would lock USDC against a job ref and release rule.
348
+ 2. The operator would submit an accepted proof ref, packet root, or attestation digest.
349
+ 3. The escrow would release, refund, or enter a public-safe dispute state according to the rule and timeout.
350
+ 4. Private job inputs, outputs, and disputes stay in the off-chain review process.
351
+
352
+ The chain contributes programmable settlement. Enigma keeps work contents private.
353
+
354
+ ## Anti-patterns
355
+
356
+ Avoid these designs even if they are technically possible:
357
+
358
+ - putting encrypted memory on-chain and assuming future secrecy;
359
+ - using hashes of tenant names, emails, ticket numbers, or private project names as public identifiers;
360
+ - publishing broad grants with no expiry or revocation path;
361
+ - storing raw benchmark examples, prompts, answers, or provider outputs in an attestation account;
362
+ - encoding private customer or incident details in escrow job refs;
363
+ - treating operator reputation as a marketing scoreboard rather than a public-key evidence index;
364
+ - describing local proof artifacts as if they prove network transactions, third-party erasure, model-internal behavior, legal status, financial outcomes, performance leadership, or production operation.
365
+
366
+ ## Verifier checklist
367
+
368
+ Before relying on a public-chain proof reference, a verifier should ask:
369
+
370
+ 1. Is the payload limited to roots, hashes, refs, public keys, timestamps, signatures, counts, nullifiers, token amounts, or settlement state?
371
+ 2. Can every public ref be shown to be non-identifying or approved for public release?
372
+ 3. Does every grant have a scope digest, expiry, and revocation/nullifier path?
373
+ 4. Does every revocation avoid private reason text and private customer identifiers?
374
+ 5. Does every attestation point to a digest rather than embedding raw report contents?
375
+ 6. Does every escrow condition depend on public-safe proof refs rather than private work contents?
376
+ 7. Does every reputation signal derive from public events rather than confidential narratives?
377
+ 8. Is the underlying private artifact available only through an authorized off-chain review path?
378
+
379
+ ## Product framing
380
+
381
+ The blockchain component should be marketed as a proof and coordination rail, not as decentralized memory storage. Enigma's differentiated product is the private memory controller: it governs AI memory locally, emits public-safe receipts, and optionally lets operators anchor, revoke, attest, settle, and build reputation through a neutral public rail.
382
+
383
+ That framing keeps the system credible:
384
+
385
+ - private memory remains private;
386
+ - public proofs remain small and inspectable;
387
+ - Solana is useful where neutrality, shared state, and settlement matter;
388
+ - non-chain work stays in the private data plane where it belongs.