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,773 @@
1
+ # Proof Network dashboard spec
2
+
3
+ Audience: frontend engineers building local and hosted verifier surfaces for Enigma Proof Network.
4
+
5
+ Purpose: define the screens, data contracts, field-level copy, empty states, and privacy boundaries for a dashboard that helps an operator inspect public-safe proof artifacts without turning the dashboard into the source of truth.
6
+
7
+ The dashboard is a verifier workbench. It visualizes artifacts that can also be exported and checked offline. It must not imply external-provider behavior, deployment availability, settlement, assurance status, financial outcome, or benchmark superiority unless separate reviewed evidence is loaded and the claim text is explicitly scoped.
8
+
9
+ ## 1. Product principles
10
+
11
+ 1. **Verifier first**: every screen answers "what can this artifact prove, and what can it not prove?"
12
+ 2. **Local and hosted parity**: hosted mode may add collaboration and retained evidence indexes, but it must render the same artifact semantics as local mode.
13
+ 3. **Public-safe by construction**: UI state, URLs, logs, support exports, and screenshots must use hashes, roots, refs, counts, timestamps, schema IDs, key refs, status enums, and signatures only.
14
+ 4. **Dashboard is not evidence by itself**: the primary action is always to inspect, verify, export, or open the artifact bundle; screenshots are secondary convenience.
15
+ 5. **No hidden success state**: pending, stale, empty, rejected, failed, superseded, revoked, and unsupported artifacts need first-class states.
16
+
17
+ ## 2. Modes
18
+
19
+ | Mode | User need | Data source | Network behavior | Extra affordances |
20
+ | --- | --- | --- | --- | --- |
21
+ | Local verifier | Inspect a local proof packet, vault export, or generated chain-planning artifact. | File picker, CLI output directory, local bundle, drag-and-drop JSON. | None required for supported verification. | Import bundle, verify offline, export verifier report, copy public refs. |
22
+ | Hosted verifier | Review artifacts uploaded to a configured hosted evidence workspace. | Configured evidence index and customer-controlled uploads. | Reads the configured evidence API only after sign-in. | Assignment, comments using refs only, retained verifier reports, access logs, evidence package builder. |
23
+ | Read-only packet view | Share a single packet with an auditor or frontend demo without broader workspace access. | One packet manifest and detached public keys. | None after packet load. | Deep links by artifact hash, print-safe evidence summary. |
24
+
25
+ Mode badge copy:
26
+
27
+ - Local: `Offline verifier mode · no network required`
28
+ - Hosted: `Hosted evidence index · artifacts remain public-safe`
29
+ - Packet: `Packet view · dashboard state is not source evidence`
30
+
31
+ ## 3. Information architecture
32
+
33
+ Primary navigation:
34
+
35
+ 1. **Overview**: verification summary, Memory Drive health, open blockers.
36
+ 2. **Memory Drive health**: SMART-style health report.
37
+ 3. **Anchor batches**: Solana-ready root commitments and non-submission status.
38
+ 4. **Grants and revocations**: scoped permissions, expiries, nullifiers, replay status.
39
+ 5. **Benchmark attestations**: report hashes, dataset refs, runner refs, metric summaries.
40
+ 6. **Connector receipts**: MCP/client connector events, cursor health, receipt coverage.
41
+ 7. **Privacy scan**: rejected fields, denylist hits, leakage status, safe export checks.
42
+ 8. **Enterprise evidence**: policy replay, gateway decisions, SIEM/eDiscovery refs, key refs.
43
+ 9. **Artifact inspector**: raw public-safe artifact view, canonical hash, schema validation.
44
+ 10. **Evidence package**: selected artifacts, verifier outputs, export manifest.
45
+
46
+ Route map:
47
+
48
+ | Route | Screen | Required query params | Optional query params |
49
+ | --- | --- | --- | --- |
50
+ | `/proof` | Overview | none | `mode`, `packet_ref` |
51
+ | `/proof/health` | Memory Drive health | none | `drive_ref`, `namespace_ref`, `status` |
52
+ | `/proof/anchors` | Anchor batches | none | `batch_ref`, `root_ref`, `status` |
53
+ | `/proof/grants` | Grants and revocations | none | `grant_ref`, `revocation_ref`, `capability_ref`, `state` |
54
+ | `/proof/benchmarks` | Benchmark attestations | none | `attestation_ref`, `dataset_ref`, `runner_ref` |
55
+ | `/proof/connectors` | Connector receipts | none | `connector_ref`, `client_kind`, `status` |
56
+ | `/proof/privacy` | Privacy scan | none | `scan_ref`, `severity` |
57
+ | `/proof/enterprise` | Enterprise evidence | none | `policy_ref`, `decision_ref`, `evidence_ref` |
58
+ | `/proof/artifacts/:artifact_ref` | Artifact inspector | `artifact_ref` | `schema_id`, `tab` |
59
+ | `/proof/package` | Evidence package | none | `package_ref` |
60
+
61
+ Do not place private identifiers, file paths, user names, organization names, account IDs, or raw artifact JSON in URLs. Use opaque refs only.
62
+
63
+ ## 4. Shared layout
64
+
65
+ Use a restrained technical dashboard style:
66
+
67
+ - type: high-quality sans for UI labels and monospace for hashes, counts, refs, roots, signatures, and schema IDs;
68
+ - color: neutral base with one accent for verification state; avoid glow-heavy or entertainment styling;
69
+ - density: daily operator console, not packed SIEM cockpit;
70
+ - containers: use separators and grouped rows before stacking generic cards;
71
+ - motion: limited to opacity/transform transitions for row expansion, filters, and inspector drawer.
72
+
73
+ Global header fields:
74
+
75
+ | Field | Type | Display |
76
+ | --- | --- | --- |
77
+ | `mode` | enum | Local, hosted, packet. |
78
+ | `loaded_packet_ref` | ref | Monospace pill with copy action. |
79
+ | `latest_verifier_status` | enum | `pass`, `warn`, `fail`, `error`, `unsupported`, `not_run`. |
80
+ | `latest_verifier_run_ref` | ref | Opens Artifact inspector. |
81
+ | `artifact_count` | integer | Total loaded artifacts. |
82
+ | `private_payload_status` | enum | `not_scanned`, `pass`, `warn`, `fail`. |
83
+ | `generated_at` | timestamp | Relative and absolute timestamp. |
84
+ | `export_manifest_ref` | ref | Evidence package link when available. |
85
+
86
+ Global actions:
87
+
88
+ - **Import packet**: local file or hosted upload selector.
89
+ - **Run verifier**: validates supported artifacts and privacy boundaries.
90
+ - **Export verifier report**: writes public-safe verifier output.
91
+ - **Build evidence package**: opens selected artifact checklist.
92
+ - **Copy selected refs**: copies refs only, never raw records.
93
+
94
+ ## 5. Status vocabulary
95
+
96
+ Use these states consistently across screens:
97
+
98
+ | State | Meaning | Primary UI treatment |
99
+ | --- | --- | --- |
100
+ | `not_loaded` | No packet or artifact source is loaded. | Empty state with import action. |
101
+ | `not_run` | Artifact exists but verifier has not checked it in this dashboard session. | Neutral badge and run action. |
102
+ | `pass` | Supported verification checks passed. | Positive badge. |
103
+ | `warn` | Artifact is valid but stale, incomplete for the selected claim, superseded, or needs review. | Amber badge, review action. |
104
+ | `fail` | Required validation, signature, hash, privacy, or state check failed. | Red badge, block export action. |
105
+ | `error` | Verifier could not complete because input is malformed or dependency is missing. | Inline diagnostic with safe error ref. |
106
+ | `unsupported` | Schema or version is not supported by this verifier. | Neutral badge, upgrade/help action. |
107
+ | `revoked` | Grant or capability was invalidated by a revocation/nullifier artifact. | Struck scoped label and revocation ref. |
108
+ | `superseded` | Artifact was replaced by a newer ref or root. | Previous/new refs side by side. |
109
+
110
+ ## 6. Overview screen
111
+
112
+ Goal: summarize whether the loaded proof packet is useful for review.
113
+
114
+ Sections:
115
+
116
+ 1. **Verification summary**
117
+ - latest status, verifier version ref, supported schema count, unsupported schema count;
118
+ - count of pass/warn/fail/error artifacts;
119
+ - next required action.
120
+ 2. **Health snapshot**
121
+ - overall Memory Drive status and score;
122
+ - critical metric list by metric key, status, evidence refs;
123
+ - link to Memory Drive health.
124
+ 3. **Proof artifact inventory**
125
+ - anchor batch count;
126
+ - active grant count;
127
+ - revoked grant count;
128
+ - benchmark attestation count;
129
+ - connector receipt count;
130
+ - enterprise evidence count.
131
+ 4. **Privacy boundary**
132
+ - latest privacy scan status;
133
+ - rejected field count;
134
+ - private payload status;
135
+ - link to Privacy scan.
136
+ 5. **Claim boundary reminders**
137
+ - local artifacts do not submit Solana transactions;
138
+ - valid receipts prove Enigma-mediated events only;
139
+ - dashboard review does not prove external-provider behavior, legal assurance, deployment availability, or benchmark leadership.
140
+
141
+ Fields:
142
+
143
+ | Field | Type | Notes |
144
+ | --- | --- | --- |
145
+ | `packet_ref` | ref | Opaque packet reference. |
146
+ | `packet_hash` | hash | Canonical packet hash. |
147
+ | `schema_ids` | string list | Unique schema IDs detected. |
148
+ | `verifier_version_ref` | ref | Local or hosted verifier build ref. |
149
+ | `signature_valid_count` | integer | Count only. |
150
+ | `signature_failed_count` | integer | Count only. |
151
+ | `privacy_failed_count` | integer | Count only. |
152
+ | `latest_health_report_ref` | ref | Optional. |
153
+ | `latest_anchor_batch_ref` | ref | Optional. |
154
+ | `latest_benchmark_attestation_ref` | ref | Optional. |
155
+
156
+ Empty state:
157
+
158
+ Title: `No proof packet loaded`
159
+
160
+ Body: `Import a public-safe packet, local verifier report, or hosted evidence export to inspect roots, refs, counts, signatures, and verifier status.`
161
+
162
+ Actions: `Import packet`, `Open local verifier guide`, `View sample public-safe schema`.
163
+
164
+ ## 7. Memory Drive health screen
165
+
166
+ Goal: inspect a SMART-style health report for an AI memory drive without exposing memory content.
167
+
168
+ Summary strip:
169
+
170
+ | Field | Type | Notes |
171
+ | --- | --- | --- |
172
+ | `drive_ref` | ref | Never show a drive name. |
173
+ | `namespace_ref` | ref | Optional filter. |
174
+ | `source_root` | root | Current root used for report. |
175
+ | `overall_status` | enum | `healthy`, `watch`, `degraded`, `critical`. |
176
+ | `overall_score` | integer | 0-100. |
177
+ | `policy_ref` | ref | Threshold policy reference. |
178
+ | `report_hash` | hash | Canonical health report hash. |
179
+ | `generated_at` | timestamp | Report generation time. |
180
+ | `verifier_status` | enum | Status after dashboard verification. |
181
+
182
+ Metric table:
183
+
184
+ | Metric | Required fields | Row affordance |
185
+ | --- | --- | --- |
186
+ | Freshness | `status`, `score`, `oldest_unrefreshed_age_hours`, `p95_active_age_hours`, `fresh_records_ratio`, `evidence_refs` | Expand for recommended actions. |
187
+ | Duplicate rate | `status`, `score`, `duplicate_candidate_count`, `duplicate_rate`, `dedupe_savings_estimated_tokens`, `evidence_refs` | Show trend sparkline from counts only. |
188
+ | Tombstone risk | `status`, `score`, `tombstone_count`, `unsettled_tombstone_count`, `derived_artifacts_referencing_tombstones`, `tombstone_replay_window_hours` | Link revocation/nullifier refs. |
189
+ | Stale derived artifacts | `status`, `score`, `stale_artifact_count`, `artifact_types_stale`, `max_artifact_lag_versions`, `max_artifact_lag_hours` | Link affected artifact refs. |
190
+ | Retrieval hit rate | `status`, `score`, `expected_ref_count`, `found_ref_count`, `missed_ref_count`, `hit_rate` | Do not reveal queries. |
191
+ | Token reduction | `status`, `score`, `estimated_input_tokens_before`, `estimated_input_tokens_after`, `estimated_token_reduction_ratio` | Display as estimate only. |
192
+ | Leakage scan | `status`, `score`, `scan_ref`, `rejected_field_count`, `secret_like_value_count`, `private_payload_status` | Link Privacy scan. |
193
+ | Receipt coverage | `status`, `score`, `active_ref_count`, `covered_ref_count`, `uncovered_ref_count`, `receipt_chain_gap_count` | Link connector receipts. |
194
+ | Connector health | `status`, `score`, `connector_count`, `lagging_connector_count`, `cursor_gap_count`, `max_cursor_lag_hours` | Link connector screen. |
195
+ | Sync fork risk | `status`, `score`, `replica_root_count`, `unresolved_fork_count`, `latest_consensus_root_ref` | Show root refs only. |
196
+
197
+ Empty state:
198
+
199
+ Title: `No health report loaded`
200
+
201
+ Body: `Run or import a memory-drive health report to inspect public-safe status, counts, roots, refs, thresholds, and recommended actions.`
202
+
203
+ Actions: `Import health report`, `Run local health check`, `View health model`.
204
+
205
+ Error state:
206
+
207
+ - If private-looking fields are found, replace row content with `Blocked by privacy scan` and show `scan_ref`, `field_count`, and `reason_ref` only.
208
+ - If the report root does not match loaded artifacts, show `Report root mismatch` and offer `Open artifact inspector`.
209
+
210
+ ## 8. Anchor batches screen
211
+
212
+ Goal: review anchor batches as local, Solana-ready commitment plans without implying a transaction was submitted.
213
+
214
+ List columns:
215
+
216
+ | Column | Field | Notes |
217
+ | --- | --- | --- |
218
+ | Batch ref | `batch_ref` | Primary link. |
219
+ | Root | `batch_root` | Monospace shortened root. |
220
+ | Item count | `commitment_count` | Count only. |
221
+ | Scope | `scope_ref` | Optional opaque scope. |
222
+ | Policy | `policy_ref` | Optional. |
223
+ | Transaction submitted | `transaction_submitted` | Must render `false`, `unknown`, or evidenced submitted state; default false. |
224
+ | Raw memory on chain | `raw_memory_on_chain` | Must render `false` for acceptable artifacts. |
225
+ | Signer | `signer_ref` | Public key ref or signer ref. |
226
+ | Status | `verifier_status` | Pass/warn/fail/error. |
227
+
228
+ Detail panel fields:
229
+
230
+ - `schema_id`
231
+ - `batch_ref`
232
+ - `batch_root`
233
+ - `commitment_refs`
234
+ - `commitment_count`
235
+ - `created_at`
236
+ - `network_hint_ref` when present
237
+ - `transaction_submitted`
238
+ - `transaction_ref` only when separately supplied as public-safe evidence
239
+ - `raw_memory_on_chain`
240
+ - `signature_refs`
241
+ - `canonical_hash`
242
+ - `supersedes_ref`
243
+ - `superseded_by_ref`
244
+ - `verifier_run_ref`
245
+
246
+ Required warning copy:
247
+
248
+ `This batch is a commitment plan unless a separate transaction reference and verifier result are loaded. It must not contain raw memory, prompts, transcripts, embeddings, provider responses, or private account data.`
249
+
250
+ Empty state:
251
+
252
+ Title: `No anchor batches`
253
+
254
+ Body: `Anchor batches appear after a packet includes public-safe roots, refs, counts, non-submission flags, and signature refs.`
255
+
256
+ Actions: `Import anchor batch`, `Inspect packet`, `Open claim boundaries`.
257
+
258
+ Invalid state:
259
+
260
+ - `raw_memory_on_chain !== false`: fail the row and block export.
261
+ - `transaction_submitted === true` without `transaction_ref` and verifier support: warn that transaction evidence is incomplete.
262
+ - private-looking value in any field: fail with privacy scan link.
263
+
264
+ ## 9. Grants and revocations screen
265
+
266
+ Goal: show who or what has scoped capability evidence without exposing ACL bodies, identities, or private policy text.
267
+
268
+ Tabs:
269
+
270
+ 1. **Active grants**
271
+ 2. **Expired grants**
272
+ 3. **Revoked grants**
273
+ 4. **Revocation/nullifier ledger**
274
+ 5. **Grant verifier errors**
275
+
276
+ Grant fields:
277
+
278
+ | Field | Type | Notes |
279
+ | --- | --- | --- |
280
+ | `grant_ref` | ref | Primary artifact ref. |
281
+ | `grant_hash` | hash | Canonical hash. |
282
+ | `subject_ref` | ref | Opaque subject only. |
283
+ | `resource_ref` | ref | Opaque resource or scope root. |
284
+ | `capability_ref` | ref | Capability identifier or hash. |
285
+ | `scope_ref` | ref | Opaque scope. |
286
+ | `policy_ref` | ref | Issuing policy. |
287
+ | `issuer_ref` | ref | Public issuer reference. |
288
+ | `issued_at` | timestamp | Public-safe time. |
289
+ | `expires_at` | timestamp | Required for active grant rendering. |
290
+ | `not_before` | timestamp | Optional. |
291
+ | `audience_ref` | ref | Optional. |
292
+ | `constraints_hash` | hash | Hash of private constraints; never show private body. |
293
+ | `signature_ref` | ref | Signature reference. |
294
+ | `state` | enum | `active`, `expired`, `revoked`, `superseded`, `invalid`, `unsupported`. |
295
+ | `revocation_ref` | ref | Present when revoked. |
296
+
297
+ Revocation fields:
298
+
299
+ | Field | Type | Notes |
300
+ | --- | --- | --- |
301
+ | `revocation_ref` | ref | Primary artifact ref. |
302
+ | `revocation_hash` | hash | Canonical hash. |
303
+ | `grant_ref` | ref | Referenced grant or grant hash. |
304
+ | `nullifier_ref` | ref | Public nullifier or nullifier hash. |
305
+ | `reason_code_ref` | ref | No private explanation. |
306
+ | `effective_at` | timestamp | When revocation applies. |
307
+ | `issuer_ref` | ref | Public issuer reference. |
308
+ | `signature_ref` | ref | Signature reference. |
309
+ | `verifier_status` | enum | Pass/warn/fail/error. |
310
+
311
+ Interactions:
312
+
313
+ - Expiring grants sort by soonest expiry.
314
+ - Revoked grants collapse under their revocation ref.
315
+ - Selecting a grant highlights any matching revocation/nullifier and related anchor batches.
316
+ - Grant detail includes a `Can authorize future use?` boolean derived only from expiry, verifier status, and revocation state.
317
+
318
+ Empty states:
319
+
320
+ - Active tab title: `No active grants`
321
+ - Revoked tab title: `No revocations loaded`
322
+ - Ledger title: `No nullifier evidence`
323
+
324
+ Body: `Grant and revocation artifacts should use public-safe refs, scope hashes, expiry, nullifiers, reason-code refs, issuer refs, and signatures. They must not expose private ACLs or identity labels.`
325
+
326
+ ## 10. Benchmark attestations screen
327
+
328
+ Goal: bind benchmark evidence to reproducible refs without claiming market leadership or exposing private benchmark inputs.
329
+
330
+ List columns:
331
+
332
+ | Column | Field | Notes |
333
+ | --- | --- | --- |
334
+ | Attestation ref | `attestation_ref` | Primary link. |
335
+ | Report hash | `report_hash` | Required. |
336
+ | Dataset | `dataset_ref` | Required. |
337
+ | Runner | `runner_ref` | Required. |
338
+ | Package | `package_ref` | Required. |
339
+ | Metric family | `metric_family_ref` | Ref, not claim text. |
340
+ | Sample count | `sample_count` | Count only. |
341
+ | Status | `verifier_status` | Pass/warn/fail/error. |
342
+ | Review | `review_status` | `planned`, `ran`, `scored`, `reviewed`, `published`, `superseded`. |
343
+
344
+ Detail fields:
345
+
346
+ - `schema_id`
347
+ - `attestation_ref`
348
+ - `report_hash`
349
+ - `dataset_ref`
350
+ - `dataset_manifest_hash`
351
+ - `runner_ref`
352
+ - `runner_version_ref`
353
+ - `package_ref`
354
+ - `environment_ref`
355
+ - `metric_family_ref`
356
+ - `metric_summary_refs`
357
+ - `sample_count`
358
+ - `leakage_scan_ref`
359
+ - `privacy_scan_status`
360
+ - `verifier_run_ref`
361
+ - `signature_refs`
362
+ - `published_at`
363
+ - `superseded_by_ref`
364
+
365
+ Allowed metric display:
366
+
367
+ - aggregate numbers already present in the attestation;
368
+ - confidence or error intervals only if present as public-safe numeric fields;
369
+ - no row-level benchmark inputs, prompts, completions, provider responses, or dataset examples.
370
+
371
+ Empty state:
372
+
373
+ Title: `No benchmark attestations`
374
+
375
+ Body: `Attestations appear when a report hash is bound to dataset, runner, package, environment, metric, verifier, timestamp, and signer refs.`
376
+
377
+ Claim guard:
378
+
379
+ Display this fixed footnote on every benchmark detail panel: `An attestation proves the declared report binding and verifier result. It is not a benchmark leadership, provider-behavior, or financial-outcome claim.`
380
+
381
+ ## 11. Connector receipts screen
382
+
383
+ Goal: show connector setup, sync, import/export, and verification receipts while preserving client privacy.
384
+
385
+ Connector summary fields:
386
+
387
+ | Field | Type | Notes |
388
+ | --- | --- | --- |
389
+ | `connector_ref` | ref | Opaque connector reference. |
390
+ | `client_kind` | enum | Allowed values: `claude-desktop`, `cursor`, `kimi-code`, `vscode-cline`, `roo`, `opencode`, `generic-mcp`, `unknown`. |
391
+ | `config_state` | enum | `not_detected`, `dry_run`, `configured`, `disconnected`, `error`. |
392
+ | `receipt_count` | integer | Count only. |
393
+ | `latest_receipt_ref` | ref | Link to inspector. |
394
+ | `latest_cursor_ref` | ref | Cursor ref only. |
395
+ | `cursor_gap_count` | integer | Health signal. |
396
+ | `max_cursor_lag_hours` | number | Health signal. |
397
+ | `last_verified_at` | timestamp | Verifier time. |
398
+ | `verifier_status` | enum | Pass/warn/fail/error. |
399
+
400
+ Receipt timeline event fields:
401
+
402
+ - `event_ref`
403
+ - `operation_ref`
404
+ - `connector_ref`
405
+ - `bundle_ref`
406
+ - `source_root`
407
+ - `result_root`
408
+ - `receipt_hash`
409
+ - `sequence`
410
+ - `cursor_ref`
411
+ - `changed`
412
+ - `backup_ref` when a public-safe backup reference exists
413
+ - `error_ref` when failed
414
+ - `signature_ref`
415
+ - `created_at`
416
+
417
+ Do not show absolute local paths, client profile names, config file bodies, MCP environment values, memory text, prompts, transcripts, provider payloads, or private connector bodies.
418
+
419
+ Empty state:
420
+
421
+ Title: `No connector receipts`
422
+
423
+ Body: `Connector receipts appear after local connector preview, connect, disconnect, import, export, or MCP operations emit public-safe receipt refs and cursor summaries.`
424
+
425
+ Actions: `Import receipt bundle`, `Open connector guide`, `Run verifier`.
426
+
427
+ ## 12. Privacy scan screen
428
+
429
+ Goal: make privacy failures visible before artifacts are exported, uploaded, anchored, or shared.
430
+
431
+ Summary fields:
432
+
433
+ | Field | Type | Notes |
434
+ | --- | --- | --- |
435
+ | `scan_ref` | ref | Primary scan artifact. |
436
+ | `scanner_version_ref` | ref | Tool/build ref. |
437
+ | `artifact_count` | integer | Scanned artifacts. |
438
+ | `field_count` | integer | Scanned fields. |
439
+ | `rejected_field_count` | integer | Count only. |
440
+ | `secret_like_value_count` | integer | Count only. |
441
+ | `private_payload_status` | enum | `pass`, `warn`, `fail`, `not_scanned`. |
442
+ | `denylist_ref` | ref | Policy or denylist hash/ref. |
443
+ | `generated_at` | timestamp | Scan time. |
444
+
445
+ Findings table fields:
446
+
447
+ | Field | Type | Notes |
448
+ | --- | --- | --- |
449
+ | `finding_ref` | ref | No private value. |
450
+ | `artifact_ref` | ref | Affected artifact. |
451
+ | `field_path_hash` | hash | Hash of field path; do not show path if path leaks private details. |
452
+ | `category_ref` | ref | `raw_memory`, `prompt`, `transcript`, `completion`, `embedding`, `secret`, `provider_response`, `identity_label`, `private_acl`, `local_path`, `unknown`. |
453
+ | `severity` | enum | `info`, `warn`, `fail`. |
454
+ | `reason_ref` | ref | Safe reason code. |
455
+ | `action` | enum | `block_export`, `redact_local_view`, `review`, `ignore_with_policy_ref`. |
456
+
457
+ Interactions:
458
+
459
+ - `Block export` banner appears when severity `fail` exists.
460
+ - `Show affected artifacts` filters all other screens by `artifact_ref`.
461
+ - `Copy safe finding refs` copies refs and reason codes only.
462
+
463
+ Empty state:
464
+
465
+ Title: `No privacy scan yet`
466
+
467
+ Body: `Run a privacy scan before sharing or exporting proof artifacts. The scan should reject raw memory, prompts, transcripts, completions, embeddings, private ACLs, identity labels, local paths, secrets, provider responses, and private connector bodies.`
468
+
469
+ ## 13. Enterprise evidence screen
470
+
471
+ Goal: help security, records, and platform reviewers inspect minimized evidence for Enigma-mediated policy decisions.
472
+
473
+ Sections:
474
+
475
+ 1. **Control-plane summary**
476
+ - deployment mode: `local`, `hosted`, `byoc`, `on_prem`, `unknown`;
477
+ - responsibility refs for control owner, data-plane owner, key/log owner;
478
+ - evidence package ref;
479
+ - unresolved blocker count.
480
+ 2. **Policy replay**
481
+ - policy hash/ref;
482
+ - input ref;
483
+ - allow/deny/error result;
484
+ - replay verifier status;
485
+ - generated_at.
486
+ 3. **Gateway decisions**
487
+ - decision ref;
488
+ - provider/tool/model/region/purpose/sensitivity refs;
489
+ - decision enum;
490
+ - policy ref;
491
+ - signature ref.
492
+ 4. **Access and key evidence**
493
+ - API key refs, public-key refs, rotation refs, revocation refs;
494
+ - never key material, session tokens, assertions, or account names.
495
+ 5. **Records exports**
496
+ - SIEM event hash;
497
+ - eDiscovery manifest hash;
498
+ - export approval ref;
499
+ - delivery status ref.
500
+ 6. **Claim boundary status**
501
+ - assurance claim status;
502
+ - external-provider behavior claim status;
503
+ - deployment availability claim status;
504
+ - benchmark claim status;
505
+ - each defaults to `not_claimed` unless separate approved evidence ref is loaded.
506
+
507
+ Fields:
508
+
509
+ | Field | Type | Notes |
510
+ | --- | --- | --- |
511
+ | `evidence_ref` | ref | Primary evidence item. |
512
+ | `evidence_type` | enum | `policy_replay`, `gateway_decision`, `siem_event`, `records_export`, `key_rotation`, `access_review`, `legal_hold`, `incident_drill`, `blocker`. |
513
+ | `policy_ref` | ref | Optional. |
514
+ | `decision_ref` | ref | Optional. |
515
+ | `artifact_hash` | hash | Optional. |
516
+ | `verifier_status` | enum | Pass/warn/fail/error. |
517
+ | `review_status` | enum | `unreviewed`, `in_review`, `accepted`, `rejected`, `superseded`. |
518
+ | `owner_ref` | ref | Opaque owner ref, not a name. |
519
+ | `due_at` | timestamp | Optional blocker or review date. |
520
+
521
+ Empty state:
522
+
523
+ Title: `No enterprise evidence`
524
+
525
+ Body: `Import minimized policy, gateway, key, SIEM, records, or review artifacts to assemble an evidence package. The dashboard should show refs and hashes, not customer names, credentials, policy bodies, or private records.`
526
+
527
+ ## 14. Artifact inspector
528
+
529
+ Goal: let a frontend engineer and reviewer inspect one artifact deeply while preserving privacy and verification semantics.
530
+
531
+ Tabs:
532
+
533
+ 1. **Summary**: schema, hash, refs, status, timestamps.
534
+ 2. **Fields**: public-safe key/value view with private-value redaction.
535
+ 3. **Verification**: validation steps, pass/warn/fail/error rows, signature refs.
536
+ 4. **Graph**: related roots, refs, grants, revocations, attestations, receipts.
537
+ 5. **Raw JSON**: available only after privacy scan passes; still hides values marked unsafe by the scanner.
538
+ 6. **History**: superseded/supersedes refs, previous verifier runs.
539
+
540
+ Summary fields:
541
+
542
+ | Field | Type | Notes |
543
+ | --- | --- | --- |
544
+ | `artifact_ref` | ref | URL param and page title. |
545
+ | `schema_id` | string | Must be visible. |
546
+ | `schema_version` | string | If available. |
547
+ | `canonical_hash` | hash | Required for copy action. |
548
+ | `artifact_type` | enum | `health_report`, `anchor_batch`, `capability_grant`, `capability_revocation`, `benchmark_attestation`, `connector_receipt`, `privacy_scan`, `enterprise_evidence`, `proof_packet`, `unknown`. |
549
+ | `source_packet_ref` | ref | Optional. |
550
+ | `created_at` | timestamp | Optional. |
551
+ | `signer_refs` | ref list | Optional. |
552
+ | `signature_status` | enum | `valid`, `invalid`, `missing`, `unsupported`, `not_checked`. |
553
+ | `privacy_status` | enum | `pass`, `warn`, `fail`, `not_scanned`. |
554
+ | `verifier_status` | enum | Pass/warn/fail/error/unsupported/not_run. |
555
+
556
+ Field viewer rules:
557
+
558
+ - Render hashes and refs in monospace with copy buttons.
559
+ - Collapse arrays longer than 20 items and show count first.
560
+ - Never auto-link external network URLs; display URL hashes or refs instead.
561
+ - Never syntax-highlight secret-looking values; replace with `blocked_by_privacy_scan` plus `finding_ref`.
562
+ - If a field is unknown but public-safe, render under `Other public-safe fields`.
563
+
564
+ Empty state:
565
+
566
+ Title: `Select an artifact`
567
+
568
+ Body: `Choose an artifact ref from another screen or import a public-safe JSON artifact to inspect schema, hash, signature, privacy, and verifier status.`
569
+
570
+ ## 15. Evidence package screen
571
+
572
+ Goal: collect selected public-safe artifacts into a review/export bundle.
573
+
574
+ Package builder fields:
575
+
576
+ | Field | Type | Notes |
577
+ | --- | --- | --- |
578
+ | `package_ref` | ref | Generated bundle ref. |
579
+ | `selected_artifact_refs` | ref list | Selected artifacts. |
580
+ | `artifact_count` | integer | Count only. |
581
+ | `verifier_run_refs` | ref list | Included verifier outputs. |
582
+ | `privacy_scan_ref` | ref | Required before export. |
583
+ | `manifest_hash` | hash | Generated export manifest hash. |
584
+ | `created_at` | timestamp | Build time. |
585
+ | `export_status` | enum | `draft`, `blocked`, `ready`, `exported`. |
586
+
587
+ Checklist:
588
+
589
+ - health report included when a health claim is made;
590
+ - anchor batches include `transaction_submitted:false` unless separate transaction evidence is selected;
591
+ - grant list includes matching revocations/nullifiers;
592
+ - benchmark attestations include privacy scan and report hash;
593
+ - connector receipts include cursor summary;
594
+ - enterprise evidence includes claim-boundary status;
595
+ - privacy scan has no `fail` findings;
596
+ - unsupported schemas are either removed or marked unsupported.
597
+
598
+ Empty state:
599
+
600
+ Title: `No artifacts selected`
601
+
602
+ Body: `Select public-safe artifacts from the dashboard to build an evidence package. Export is blocked until verifier and privacy scan status are available.`
603
+
604
+ ## 16. Shared empty, loading, and error states
605
+
606
+ Loading states:
607
+
608
+ - Use skeleton rows matching the target table shape.
609
+ - For inspector loading, reserve summary, tab bar, and field list heights to avoid layout shift.
610
+ - Do not use generic spinners as the only progress indicator.
611
+
612
+ Empty-state content rules:
613
+
614
+ - State what artifact is missing.
615
+ - State which safe fields will appear after import or verification.
616
+ - Offer one primary action and at most two secondary links.
617
+ - Do not imply the missing state is a failure.
618
+
619
+ Error-state content rules:
620
+
621
+ - Use `error_ref`, `artifact_ref`, `schema_id`, and safe reason code.
622
+ - Never display parser excerpts that might contain private payloads.
623
+ - Include `Retry verifier`, `Open artifact inspector`, or `Remove artifact` when useful.
624
+
625
+ Global blocked-export banner:
626
+
627
+ `Export blocked: one or more artifacts failed verification or privacy scan. Resolve failed refs or remove them from the package before sharing.`
628
+
629
+ ## 17. Frontend data contracts
630
+
631
+ Recommended top-level view model:
632
+
633
+ | Field | Type | Notes |
634
+ | --- | --- | --- |
635
+ | `mode` | enum | `local`, `hosted`, `packet`. |
636
+ | `packet` | object | `packet_ref`, `packet_hash`, `schema_ids`, `generated_at`. |
637
+ | `verifier` | object | `status`, `run_ref`, `version_ref`, `checked_at`, `summary_counts`. |
638
+ | `privacy` | object | `status`, `scan_ref`, `finding_counts`, `denylist_ref`. |
639
+ | `health` | object or null | Memory Drive summary and metric refs. |
640
+ | `anchors` | array | Anchor batch row models. |
641
+ | `grants` | array | Grant row models. |
642
+ | `revocations` | array | Revocation row models. |
643
+ | `benchmarks` | array | Benchmark attestation row models. |
644
+ | `connectors` | array | Connector receipt summary models. |
645
+ | `enterprise` | array | Enterprise evidence row models. |
646
+ | `artifacts` | map | Keyed by `artifact_ref`. |
647
+ | `relations` | array | Ref-to-ref edges for inspector graph. |
648
+ | `export_package` | object or null | Evidence package draft. |
649
+
650
+ All view-model fields must be pre-minimized before they reach analytics, logs, or support capture. The frontend should not receive raw private values and then hide them with CSS.
651
+
652
+ ## 18. Filters and search
653
+
654
+ Global filters:
655
+
656
+ - artifact type;
657
+ - verifier status;
658
+ - privacy status;
659
+ - schema ID;
660
+ - date range;
661
+ - signer ref;
662
+ - policy ref;
663
+ - root/ref/hash text search.
664
+
665
+ Search rules:
666
+
667
+ - Search refs, hashes, schema IDs, reason codes, and counts only.
668
+ - Do not index raw JSON values before privacy scan passes.
669
+ - Hosted mode search results must not reveal artifacts outside the user's approved access scope.
670
+ - Local mode search must work offline.
671
+
672
+ ## 19. Accessibility and interaction requirements
673
+
674
+ - Every status badge must have text, not color alone.
675
+ - Hash/ref copy buttons must announce copied value type, not the full value.
676
+ - Tables require keyboard row expansion, sortable headers, and focus-visible controls.
677
+ - Inspector tabs must be reachable through keyboard navigation.
678
+ - Error and blocked-export banners use `role="alert"` in implementation.
679
+ - Time values show relative text plus exact timestamp on focus/hover.
680
+ - Long refs wrap safely and never force horizontal page scroll on mobile.
681
+
682
+ ## 20. Analytics and logging boundaries
683
+
684
+ Allowed analytics/log fields:
685
+
686
+ - screen name;
687
+ - mode;
688
+ - artifact type;
689
+ - verifier status;
690
+ - privacy status;
691
+ - counts;
692
+ - schema ID;
693
+ - safe reason code;
694
+ - UI action name.
695
+
696
+ Forbidden analytics/log fields:
697
+
698
+ - raw memory;
699
+ - prompts;
700
+ - transcripts;
701
+ - completions;
702
+ - embeddings;
703
+ - provider responses;
704
+ - secret values;
705
+ - private ACL bodies;
706
+ - local absolute paths;
707
+ - private connector config bodies;
708
+ - account, user, organization, or workspace names;
709
+ - raw artifact JSON before privacy scan passes.
710
+
711
+ ## 21. Screen-specific local and hosted deltas
712
+
713
+ The same screens must exist in all modes. Mode changes should affect source, permissions, retention, and collaboration only; they must not change what an artifact means.
714
+
715
+ | Screen | Local verifier behavior | Hosted verifier behavior | Packet view behavior |
716
+ | --- | --- | --- | --- |
717
+ | Overview | Reads imported local packet and current verifier run. Does not assume prior history. | Reads hosted evidence index, retained verifier runs, and assignment state. | Shows summary for the single packet only. |
718
+ | Memory Drive health | Imports one health report or local bundle-derived summary. | Shows latest retained health report per approved workspace scope plus previous report refs. | Shows only health report artifacts present in the packet. |
719
+ | Anchor batches | Shows chain-planning artifacts and defaults `transaction_submitted:false`. | May show separately uploaded transaction evidence refs, but only as attached public-safe artifacts. | Shows batch refs and non-submission flags from the packet. |
720
+ | Grants and revocations | Resolves grant state from loaded grant, expiry, and revocation artifacts. | Adds assignment/review state and retained revocation index refs. | Resolves state only from artifacts included in the packet. |
721
+ | Benchmark attestations | Displays attestation rows and verifier output from local files. | Adds review workflow and package-level evidence selection. | Displays report bindings included in the packet. |
722
+ | Connector receipts | Reads local connector receipt bundles and cursor summaries. | Shows uploaded connector receipts and review state, not private client config bodies. | Shows connector receipt refs only when included. |
723
+ | Privacy scan | Runs or imports a local scan and blocks export on `fail`. | Shows latest hosted scan plus retained finding refs; still blocks export on `fail`. | Shows scan result if present; otherwise marks package `not_scanned`. |
724
+ | Enterprise evidence | Imports minimized enterprise evidence artifacts. | Supports reviewer assignment, package building, and retained evidence refs. | Shows enterprise evidence only if bundled. |
725
+ | Artifact inspector | Opens artifacts from local memory only after import. | Opens artifacts the signed-in reviewer is allowed to read. | Opens only artifacts linked from the packet manifest. |
726
+
727
+ Configured hosted UI must not introduce production, availability, settlement, assurance, or legal-status claims. It can show who reviewed a ref only through `reviewer_ref`, `owner_ref`, or `approval_ref`; never through names or account details.
728
+
729
+ ## 22. Component contracts
730
+
731
+ These component contracts are intentionally data-shaped so frontend engineers can implement them in any framework.
732
+
733
+ | Component | Props | Required states | Notes |
734
+ | --- | --- | --- | --- |
735
+ | `ModeBadge` | `mode`, `packet_ref`, `offline_available` | local, hosted, packet | Copy differs by mode but artifact semantics do not. |
736
+ | `VerifierStatusPill` | `status`, `run_ref`, `checked_at`, `reason_ref` | pass, warn, fail, error, unsupported, not_run | Must include text label and safe reason code. |
737
+ | `ArtifactRefCell` | `artifact_ref`, `artifact_type`, `copy_allowed` | normal, copied, disabled | Copy only the ref, never surrounding raw JSON. |
738
+ | `HashRootCell` | `value`, `kind`, `truncate` | normal, expanded, copied | Use monospace and preserve full value for accessible copy. |
739
+ | `EvidenceTable` | `rows`, `columns`, `filters`, `sort` | loading, empty, filtered_empty, error, ready | Each screen supplies its own empty-state copy. |
740
+ | `InspectorDrawer` | `artifact_ref`, `artifact`, `verification`, `privacy` | loading, unavailable, blocked, ready | Raw JSON tab is disabled until privacy status is not `fail`. |
741
+ | `PrivacyGateBanner` | `privacy_status`, `scan_ref`, `finding_counts` | not_scanned, pass, warn, fail | Export controls subscribe to this state. |
742
+ | `ExportPackageButton` | `selected_refs`, `verifier_status`, `privacy_status`, `unsupported_required_count` | disabled, blocked, ready, exporting | Disabled reason must be specific and public-safe. |
743
+ | `RelationGraph` | `nodes`, `edges`, `selected_ref` | empty, loading, ready | Graph labels use artifact type and shortened refs only. |
744
+ | `EmptyStatePanel` | `title`, `body`, `primary_action`, `secondary_actions` | default | No generic empty copy; each screen defines precise content. |
745
+
746
+ ## 23. Required row actions
747
+
748
+ Every artifact row should support the same predictable action set unless the action is unsafe for that artifact state.
749
+
750
+ | Action | Applies to | Disabled when | Result |
751
+ | --- | --- | --- | --- |
752
+ | Open inspector | All artifact rows | `artifact_ref` missing | Opens `/proof/artifacts/:artifact_ref`. |
753
+ | Copy ref | All artifact rows | Privacy scan marks ref unsafe | Copies ref only. |
754
+ | Copy canonical hash | Artifacts with `canonical_hash` | Hash missing | Copies hash only. |
755
+ | Filter related | Rows with relation edges | No relation edges | Applies ref graph filter. |
756
+ | Add to evidence package | Verifier-ready artifacts | `verifier_status` is `fail` or privacy status is `fail` | Adds artifact ref to package draft. |
757
+ | Remove from package | Selected package artifacts | Not selected | Removes artifact ref only. |
758
+ | Open verifier details | Rows with `verifier_run_ref` | No verifier run | Opens inspector verification tab. |
759
+
760
+ ## 24. Acceptance checklist
761
+
762
+ A frontend implementation is ready when:
763
+
764
+ - local and hosted modes render the same artifact semantics;
765
+ - all nine primary screens exist: Overview, Memory Drive health, Anchor batches, Grants and revocations, Benchmark attestations, Connector receipts, Privacy scan, Enterprise evidence, Artifact inspector;
766
+ - every screen has loading, empty, error, and blocked/privacy states;
767
+ - field tables above are represented in the view model or intentionally hidden by a documented privacy rule;
768
+ - export is blocked by verifier `fail`, privacy `fail`, unsupported required schema, or raw-memory-on-chain violation;
769
+ - Solana-related copy says local artifacts are plans unless separate transaction evidence is loaded;
770
+ - benchmark copy avoids leadership, financial-outcome, and provider-behavior claims;
771
+ - enterprise copy avoids assurance or legal-status guarantees;
772
+ - URLs, analytics, logs, and support captures contain refs/hashes/counts/status only;
773
+ - the dashboard can export a verifier report that is useful without trusting the dashboard UI.