@beaconlabs-io/evidence 1.1.0

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 (64) hide show
  1. package/README.md +256 -0
  2. package/deployments/00.json +34 -0
  3. package/deployments/01.json +28 -0
  4. package/deployments/02.json +34 -0
  5. package/deployments/03.json +40 -0
  6. package/deployments/04.json +40 -0
  7. package/deployments/05.json +28 -0
  8. package/deployments/06.json +28 -0
  9. package/deployments/07.json +28 -0
  10. package/deployments/08.json +28 -0
  11. package/deployments/09.json +28 -0
  12. package/deployments/10.json +40 -0
  13. package/deployments/11.json +28 -0
  14. package/deployments/12.json +22 -0
  15. package/deployments/13.json +22 -0
  16. package/deployments/14.json +34 -0
  17. package/deployments/15.json +22 -0
  18. package/deployments/16.json +34 -0
  19. package/deployments/17.json +22 -0
  20. package/deployments/18.json +40 -0
  21. package/deployments/19.json +40 -0
  22. package/deployments/20.json +40 -0
  23. package/dist/content/deployments.d.ts +5 -0
  24. package/dist/content/deployments.d.ts.map +1 -0
  25. package/dist/content/deployments.js +664 -0
  26. package/dist/content/deployments.js.map +1 -0
  27. package/dist/content/evidence.d.ts +5 -0
  28. package/dist/content/evidence.d.ts.map +1 -0
  29. package/dist/content/evidence.js +678 -0
  30. package/dist/content/evidence.js.map +1 -0
  31. package/dist/content/index.d.ts +31 -0
  32. package/dist/content/index.d.ts.map +1 -0
  33. package/dist/content/index.js +72 -0
  34. package/dist/content/index.js.map +1 -0
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +5 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/types.d.ts +130 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +75 -0
  42. package/dist/types.js.map +1 -0
  43. package/evidence/00.mdx +78 -0
  44. package/evidence/01.mdx +115 -0
  45. package/evidence/02.mdx +72 -0
  46. package/evidence/03.mdx +74 -0
  47. package/evidence/04.mdx +81 -0
  48. package/evidence/05.mdx +83 -0
  49. package/evidence/06.mdx +61 -0
  50. package/evidence/07.mdx +61 -0
  51. package/evidence/08.mdx +57 -0
  52. package/evidence/09.mdx +63 -0
  53. package/evidence/10.mdx +60 -0
  54. package/evidence/11.mdx +58 -0
  55. package/evidence/12.mdx +62 -0
  56. package/evidence/13.mdx +53 -0
  57. package/evidence/14.mdx +52 -0
  58. package/evidence/15.mdx +53 -0
  59. package/evidence/16.mdx +52 -0
  60. package/evidence/17.mdx +53 -0
  61. package/evidence/18.mdx +52 -0
  62. package/evidence/19.mdx +54 -0
  63. package/evidence/20.mdx +53 -0
  64. package/package.json +75 -0
package/README.md ADDED
@@ -0,0 +1,256 @@
1
+ # @beaconlabs-io/evidence
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@beaconlabs-io/evidence)](https://www.npmjs.com/package/@beaconlabs-io/evidence)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ A collection of structured research evidence with Zod schemas and TypeScript types for the Beacon Labs MUSE platform.
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ npm install @beaconlabs-io/evidence
12
+ ```
13
+
14
+ **Peer Dependencies:** This package requires `zod` v4.
15
+
16
+ ## Usage
17
+
18
+ ### Import Paths
19
+
20
+ The package provides three entry points:
21
+
22
+ | Entry Point | Description |
23
+ | --------------------------------- | ---------------------------- |
24
+ | `@beaconlabs-io/evidence` | Everything (types + content) |
25
+ | `@beaconlabs-io/evidence/types` | Types and Zod schemas only |
26
+ | `@beaconlabs-io/evidence/content` | Content accessors only |
27
+
28
+ ### Types and Schemas
29
+
30
+ ```typescript
31
+ import type {
32
+ Evidence,
33
+ EvidenceFrontmatter,
34
+ EvidenceResult,
35
+ EvidenceDeployment,
36
+ StrengthLevel,
37
+ OutcomeEffect,
38
+ } from "@beaconlabs-io/evidence/types";
39
+
40
+ import {
41
+ EvidenceFrontmatterSchema,
42
+ EvidenceResultSchema,
43
+ EvidenceDeploymentSchema,
44
+ STRENGTH_LEVELS,
45
+ OUTCOME_EFFECTS,
46
+ } from "@beaconlabs-io/evidence/types";
47
+
48
+ // Validate evidence data
49
+ const result = EvidenceFrontmatterSchema.safeParse(data);
50
+ if (result.success) {
51
+ console.log(result.data.title);
52
+ }
53
+ ```
54
+
55
+ ### Content Accessors
56
+
57
+ ```typescript
58
+ import {
59
+ getEvidence,
60
+ getAllEvidence,
61
+ getAllEvidenceMeta,
62
+ getDeployment,
63
+ getEvidenceWithDeployment,
64
+ getAllEvidenceSlugs,
65
+ } from "@beaconlabs-io/evidence/content";
66
+
67
+ // Get single evidence by slug
68
+ const evidence = getEvidence("00");
69
+ // Returns: { frontmatter, content, raw }
70
+
71
+ // Get all evidence metadata (for lists)
72
+ const allMeta = getAllEvidenceMeta();
73
+ // Returns: EvidenceFrontmatter[]
74
+
75
+ // Get evidence with deployment info (attestation, IPFS hash)
76
+ const full = getEvidenceWithDeployment("00");
77
+ // Returns: Evidence (frontmatter + deployment merged)
78
+ ```
79
+
80
+ ### Using with MDX Compilers
81
+
82
+ The `raw` field contains the complete MDX file content, which can be passed directly to MDX compilers like `next-mdx-remote`:
83
+
84
+ ```typescript
85
+ import { getEvidence } from "@beaconlabs-io/evidence/content";
86
+ import { compileMDX } from "next-mdx-remote/rsc";
87
+
88
+ const evidence = getEvidence("00");
89
+ if (evidence) {
90
+ const { content } = await compileMDX({
91
+ source: evidence.raw,
92
+ options: {
93
+ parseFrontmatter: true,
94
+ mdxOptions: {
95
+ remarkPlugins: [remarkGfm, remarkMath],
96
+ rehypePlugins: [rehypeSlug, rehypeKatex],
97
+ },
98
+ },
99
+ });
100
+ }
101
+ ```
102
+
103
+ ## API Reference
104
+
105
+ ### Types
106
+
107
+ | Type | Description |
108
+ | --------------------- | -------------------------------------------------------------------- |
109
+ | `Evidence` | Complete evidence type (frontmatter + deployment metadata) |
110
+ | `EvidenceFrontmatter` | MDX frontmatter fields |
111
+ | `EvidenceResult` | Intervention outcome (`{ intervention, outcome_variable, outcome }`) |
112
+ | `EvidenceCitation` | Citation reference (`{ name, type?, src? }`) |
113
+ | `EvidenceDeployment` | Deployment metadata (`{ attestationUID, ipfsHash, timestamp, ... }`) |
114
+ | `BundledEvidence` | Bundled content (`{ frontmatter, content, raw }`) |
115
+ | `StrengthLevel` | `"0" \| "1" \| "2" \| "3" \| "4" \| "5"` (SMS scale) |
116
+ | `OutcomeEffect` | `"N/A" \| "+" \| "-" \| "+-" \| "!"` |
117
+
118
+ ### Zod Schemas
119
+
120
+ | Schema | Description |
121
+ | --------------------------- | ---------------------------------------- |
122
+ | `EvidenceFrontmatterSchema` | Validates MDX frontmatter |
123
+ | `EvidenceResultSchema` | Validates result objects |
124
+ | `EvidenceCitationSchema` | Validates citation objects |
125
+ | `EvidenceDeploymentSchema` | Validates deployment metadata |
126
+ | `EvidenceSchema` | Full evidence (frontmatter + deployment) |
127
+
128
+ ### Content Functions
129
+
130
+ | Function | Returns | Description |
131
+ | --------------------------------- | --------------------------------- | -------------------------------- |
132
+ | `getEvidence(slug)` | `BundledEvidence \| undefined` | Get evidence by slug |
133
+ | `getDeployment(slug)` | `EvidenceDeployment \| undefined` | Get deployment metadata |
134
+ | `getEvidenceWithDeployment(slug)` | `Evidence \| undefined` | Get merged evidence + deployment |
135
+ | `getAllEvidenceMeta()` | `EvidenceFrontmatter[]` | Get all frontmatter (sorted) |
136
+ | `getAllEvidence()` | `Evidence[]` | Get all evidence with deployment |
137
+ | `getAllEvidenceSlugs()` | `readonly string[]` | Get all available slugs |
138
+
139
+ ### Constants
140
+
141
+ | Constant | Value |
142
+ | ----------------- | -------------------------------- |
143
+ | `STRENGTH_LEVELS` | `["0", "1", "2", "3", "4", "5"]` |
144
+ | `OUTCOME_EFFECTS` | `["N/A", "+", "-", "+-", "!"]` |
145
+
146
+ ## Evidence File Format
147
+
148
+ Evidence files are MDX with YAML frontmatter located in `evidence/*.mdx`:
149
+
150
+ ```yaml
151
+ ---
152
+ evidence_id: "00"
153
+ title: "Effect of X on Y"
154
+ author: "BeaconLabs"
155
+ date: "2024-01-01"
156
+ results:
157
+ - intervention: "Description of intervention"
158
+ outcome_variable: "What was measured"
159
+ outcome: "+" # N/A, +, -, +-, !
160
+ strength: "3" # 0-5 (Maryland SMS scale)
161
+ methodologies:
162
+ - "RCT"
163
+ version: "1.0.0"
164
+ citation:
165
+ - name: "Paper Title"
166
+ type: "link"
167
+ src: "https://example.com/paper"
168
+ tags:
169
+ - "education"
170
+ - "health"
171
+ datasets:
172
+ - "Dataset name"
173
+ ---
174
+ ## Key Points
175
+
176
+ - Finding 1
177
+ - Finding 2
178
+ ## Background
179
+ ```
180
+
181
+ ### Outcome Effects
182
+
183
+ | Value | Meaning |
184
+ | ----- | ------------------------------------------------------------ |
185
+ | `N/A` | Unclear - insufficient sample size or inadequate methods |
186
+ | `+` | Positive - expected effect found (statistically significant) |
187
+ | `-` | No effect - expected effect not observed |
188
+ | `+-` | Mixed - heterogeneous effects depending on conditions |
189
+ | `!` | Side effects - unintended effects observed |
190
+
191
+ ### Strength Levels (Maryland SMS Scale)
192
+
193
+ | Level | Description |
194
+ | ----- | -------------------------------------- |
195
+ | 0 | Non-experimental (mathematical models) |
196
+ | 1 | Correlation without control |
197
+ | 2 | Before/after without control group |
198
+ | 3 | Before/after with control group |
199
+ | 4 | Quasi-experimental (matching, DiD) |
200
+ | 5 | Randomized Controlled Trial (RCT) |
201
+
202
+ ## Development
203
+
204
+ ### Build
205
+
206
+ ```bash
207
+ npm install
208
+ npm run build
209
+ ```
210
+
211
+ ### Validate Evidence Files
212
+
213
+ ```bash
214
+ npm run validate
215
+ ```
216
+
217
+ ### Project Structure
218
+
219
+ ```
220
+ evidence/
221
+ ├── src/
222
+ │ ├── index.ts # Main entry point
223
+ │ ├── types.ts # Zod schemas and TypeScript types (canonical)
224
+ │ └── content/
225
+ │ ├── index.ts # Content accessor API
226
+ │ ├── evidence.ts # Generated: bundled MDX content
227
+ │ └── deployments.ts # Generated: bundled deployment metadata
228
+ ├── types/
229
+ │ └── index.ts # Re-exports from src/types.ts (CI/CD compatibility)
230
+ ├── scripts/
231
+ │ └── bundle-content.ts # Build script (generates content/*.ts)
232
+ ├── evidence/ # Source MDX files
233
+ ├── deployments/ # Attestation metadata (JSON)
234
+ └── dist/ # Build output
235
+ ```
236
+
237
+ > **Note:** `types/index.ts` re-exports all types from `src/types.ts` for backward compatibility with CI/CD scripts. The canonical type definitions live in `src/types.ts`.
238
+
239
+ ## Contributing
240
+
241
+ ### Adding New Evidence
242
+
243
+ 1. Create a new MDX file in `evidence/` (e.g., `evidence/21.mdx`)
244
+ 2. Follow the frontmatter schema (see Evidence File Format above)
245
+ 3. Submit a Pull Request
246
+ 4. After review, use `/attest` comment to create blockchain attestation
247
+ 5. Add a changeset: `npx changeset`
248
+ 6. Merge PR to trigger npm publish
249
+
250
+ ### Versioning
251
+
252
+ This package uses [Changesets](https://github.com/changesets/changesets) for version management.
253
+
254
+ ## License
255
+
256
+ MIT
@@ -0,0 +1,34 @@
1
+ {
2
+ "evidenceId": "00",
3
+ "ipfsHash": "bafkreigbpi5c2e4zy2v5nt2q3agiiplsxdt4c3m3kxgs5lzb3xee5j2dai",
4
+ "attestationUID": "0x7c3152c17cac09c71774f923f65fe2756af383647840a4a8e73de8a4b225de2c",
5
+ "timestamp": "2025-10-20T05:22:06.071Z",
6
+ "size": 5607,
7
+ "updatedAt": "2025-10-20T05:23:33.382Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmQepx8KrPTDDmZQwE9GTRhpZdGTEstjzu7kqg1j9ZUCcZ",
11
+ "attestationUID": "0xc752acb3a71527a11a65b9a40cc51b696674ab96cce8f419c95a7e52dbfcf7c9",
12
+ "timestamp": "2025-07-31T17:26:31.744Z",
13
+ "size": 6001
14
+ },
15
+ {
16
+ "ipfsHash": "QmQepx8KrPTDDmZQwE9GTRhpZdGTEstjzu7kqg1j9ZUCcZ",
17
+ "attestationUID": "0xbc9c64758b1957406455a6ee14535bc04062b52cca187663ba977028815f18c8",
18
+ "timestamp": "2025-09-10T08:30:12.710Z",
19
+ "size": 6001
20
+ },
21
+ {
22
+ "ipfsHash": "QmQepx8KrPTDDmZQwE9GTRhpZdGTEstjzu7kqg1j9ZUCcZ",
23
+ "attestationUID": "0xbfc4c43659f5c3e1f00394c55e8d7791cf094d0244a2467ad9e1be0b1f75a8e1",
24
+ "timestamp": "2025-09-12T04:36:23.489Z",
25
+ "size": 6001
26
+ },
27
+ {
28
+ "ipfsHash": "QmNXBSzTZhhcquWCawASkyHriLHkVYTsCDNfHZJkp2cF3Q",
29
+ "attestationUID": "0xefa22307382cf4a1e51d637cf3bdfe4d9403b7fd2e3ee392c72ea33becf8c3f0",
30
+ "timestamp": "2025-09-12T04:56:02.580Z",
31
+ "size": 5622
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "evidenceId": "01",
3
+ "ipfsHash": "bafkreigknulsa3givqdohxstmft2qclyml2r762tp2bq6lpqq73jmchl2i",
4
+ "attestationUID": "0x841fa4f951b268a491426e69ad52e614306bbdb6b8a18a1555c34faf7c883c94",
5
+ "timestamp": "2025-10-20T05:22:13.310Z",
6
+ "size": 9188,
7
+ "updatedAt": "2025-10-20T05:23:33.383Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmdXP2Vkgzxki4LyfFvGniYGB6SDdddq536a3TwZCf2fcm",
11
+ "attestationUID": "0x134509f13f5bce47deae650ffe8f352c0eedea950a98a1c899d7fa962e6cc85e",
12
+ "timestamp": "2025-07-31T17:26:37.028Z",
13
+ "size": 9464
14
+ },
15
+ {
16
+ "ipfsHash": "QmdXP2Vkgzxki4LyfFvGniYGB6SDdddq536a3TwZCf2fcm",
17
+ "attestationUID": "0x729e6608b14ea5723c48b7d03a6b6c085c3eb3f29646358a8ce647025bd8baa5",
18
+ "timestamp": "2025-09-10T08:30:19.293Z",
19
+ "size": 9464
20
+ },
21
+ {
22
+ "ipfsHash": "QmdXP2Vkgzxki4LyfFvGniYGB6SDdddq536a3TwZCf2fcm",
23
+ "attestationUID": "0x57392da3a6a2545d967255d3e73eb27027bc1946fd7f0bd252d5b52c36cc6c6a",
24
+ "timestamp": "2025-09-12T04:36:30.251Z",
25
+ "size": 9464
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "evidenceId": "02",
3
+ "ipfsHash": "bafkreigfjc5shpuagliglq6pfodbanyn26ryfom4ugyhgfyggwawo6wnny",
4
+ "attestationUID": "0xe73d0621a52732237d404577fb955d6b4593a94d14d27c3b3499b3a7c061cd44",
5
+ "timestamp": "2026-01-05T12:02:33.124Z",
6
+ "size": 4482,
7
+ "updatedAt": "2026-01-05T12:02:45.012Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmYBHMrjEanPpJhn557zvJXYKoGt9fRKJkjRX4XpgmmTdZ",
11
+ "attestationUID": "0xe92d6fc1d270b4123cab706a9042fbfabd435d03a133346036da35141ec69d39",
12
+ "timestamp": "2025-07-31T17:26:42.108Z",
13
+ "size": 4626
14
+ },
15
+ {
16
+ "ipfsHash": "QmYBHMrjEanPpJhn557zvJXYKoGt9fRKJkjRX4XpgmmTdZ",
17
+ "attestationUID": "0xb14e81fb0e1fb19cd8874a09292f6a07b08d67098bff64658eaad961bc701791",
18
+ "timestamp": "2025-09-10T08:30:25.858Z",
19
+ "size": 4626
20
+ },
21
+ {
22
+ "ipfsHash": "QmV3R2wrcMPPpMLZad4LwabscLVzeBVBt6xQD5SGcMekDP",
23
+ "attestationUID": "0x300e20ee0edd082bde926aadacb20cb1ccd10b8bf45b71d556ed63a8a1f0673e",
24
+ "timestamp": "2025-09-12T04:36:37.059Z",
25
+ "size": 4494
26
+ },
27
+ {
28
+ "ipfsHash": "bafkreigfjc5shpuagliglq6pfodbanyn26ryfom4ugyhgfyggwawo6wnny",
29
+ "attestationUID": "0xd45c8757e15af1a6240b4a4b81641b529066958243d40f025cb2212b838d0051",
30
+ "timestamp": "2025-10-20T05:22:16.131Z",
31
+ "size": 4482
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "evidenceId": "03",
3
+ "ipfsHash": "bafkreiaolpmn644l7xde7nfq7wsxfasg6mpx2wsvv6l24oxisgt47aumau",
4
+ "attestationUID": "0x011a20ff36a56deaa2516ff63abe108aeab9847f3803db76717d26ffb38b0d32",
5
+ "timestamp": "2026-01-19T09:57:51.165Z",
6
+ "size": 5791,
7
+ "updatedAt": "2026-01-19T09:58:25.357Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "Qme9iPu6xCWrdN1S5s2sXEQbB4GUcEq6geu6Ra4ksZaT8R",
11
+ "attestationUID": "0xe5259c7f8f2bb58d9ff8f9d55198d1740e49932f946da888a4c1206c1c7ea6a0",
12
+ "timestamp": "2025-09-10T08:30:32.353Z",
13
+ "size": 5940
14
+ },
15
+ {
16
+ "ipfsHash": "QmX2LxwKSfeUVwXHAQVUFJymfvCsegVAyaKD29gui3KDuq",
17
+ "attestationUID": "0x57200833a324d0650bf0f7f321ec7903aeac1ecd2b60e6083cefa1dff4648430",
18
+ "timestamp": "2025-09-12T04:36:43.736Z",
19
+ "size": 5802
20
+ },
21
+ {
22
+ "ipfsHash": "bafkreieqoprkgjup4cxfq6yf7r5naembjjlzigjvtqshcnjas4mm4by7aq",
23
+ "attestationUID": "0xa3362a9b9af22e99d85060e335402e33bcd9829f6296e22be50aaad583862d1e",
24
+ "timestamp": "2025-10-20T05:22:18.960Z",
25
+ "size": 5792
26
+ },
27
+ {
28
+ "ipfsHash": "bafkreieqoprkgjup4cxfq6yf7r5naembjjlzigjvtqshcnjas4mm4by7aq",
29
+ "attestationUID": "0x3e1c35c9f43ea08d2d82d9f739e1b1fa3bff72295417ef77d71cb55209f2dcb3",
30
+ "timestamp": "2026-01-05T12:17:10.822Z",
31
+ "size": 5792
32
+ },
33
+ {
34
+ "ipfsHash": "bafkreiaolpmn644l7xde7nfq7wsxfasg6mpx2wsvv6l24oxisgt47aumau",
35
+ "attestationUID": "0x22133a9e188b840b2e76fd6b98eda2d191da5748ad9e664af27ea948622fd3f5",
36
+ "timestamp": "2026-01-19T09:50:11.752Z",
37
+ "size": 5791
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "evidenceId": "04",
3
+ "ipfsHash": "bafkreigdwx5eabsnfwbvt65x7b7dd2r4desmzpl3w7tst4smzc7pxzy2ru",
4
+ "attestationUID": "0x8f1a5d7d5d31d4cd265c997564bc74750f7420e5f1506a6b9a316034e8165ab8",
5
+ "timestamp": "2026-01-19T09:57:53.572Z",
6
+ "size": 5919,
7
+ "updatedAt": "2026-01-19T09:58:25.358Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmZZNmHZdGiyNixzW2iAg5KmnZ8UTJV2p3hcctpH4R4TUy",
11
+ "attestationUID": "0x4ba65689be05c3f2f83ea250c78ce41b29aae776664c77d92b27772bd9ad4de2",
12
+ "timestamp": "2025-09-10T08:30:38.888Z",
13
+ "size": 6067
14
+ },
15
+ {
16
+ "ipfsHash": "QmWU8D2giRsDAhFpe6kbVbdmMpsWNoZTW9TscDcBht7rip",
17
+ "attestationUID": "0xb70b9aa779c886b97553ae2323fcb27a91e007e6618d8c28cc1459bd77cf096c",
18
+ "timestamp": "2025-09-12T04:36:50.446Z",
19
+ "size": 5929
20
+ },
21
+ {
22
+ "ipfsHash": "bafkreigdwx5eabsnfwbvt65x7b7dd2r4desmzpl3w7tst4smzc7pxzy2ru",
23
+ "attestationUID": "0xa57529c98b6765091463329cf75ce557a2200de3a7b60737ebebe1fd4d186c09",
24
+ "timestamp": "2025-10-20T05:22:21.756Z",
25
+ "size": 5919
26
+ },
27
+ {
28
+ "ipfsHash": "bafkreigdwx5eabsnfwbvt65x7b7dd2r4desmzpl3w7tst4smzc7pxzy2ru",
29
+ "attestationUID": "0x65543d790c1ba99758d4c23185a122d62f257e7be8910c62b4d5e30068fe0c79",
30
+ "timestamp": "2026-01-05T12:17:17.576Z",
31
+ "size": 5919
32
+ },
33
+ {
34
+ "ipfsHash": "bafkreigdwx5eabsnfwbvt65x7b7dd2r4desmzpl3w7tst4smzc7pxzy2ru",
35
+ "attestationUID": "0x2ea591bfad06d172399c28e8b9cf9550296c9ebbfda86847d86356f36c7b2818",
36
+ "timestamp": "2026-01-19T09:50:18.446Z",
37
+ "size": 5919
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "evidenceId": "05",
3
+ "ipfsHash": "bafkreifha2yi6mv4lrdvb6p6w4id6nzhctgfe2fdbabhljkoxupegirhh4",
4
+ "attestationUID": "0x1885abc1328de4cff38dd5652ac9ae22b1b3c241cb2747e9d9d3b057771b9d58",
5
+ "timestamp": "2026-01-05T12:17:24.301Z",
6
+ "size": 5999,
7
+ "updatedAt": "2026-01-05T12:18:46.574Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmXbKFSfzZTcfTFZ9HJwVtPj4sNjiNDZBwbpakPmmL4WRA",
11
+ "attestationUID": "0xdb08d48b13ff597d21df2237df376443045e832d35bee2e291f4061dd3403a0e",
12
+ "timestamp": "2025-09-10T08:30:45.477Z",
13
+ "size": 6147
14
+ },
15
+ {
16
+ "ipfsHash": "QmRAxaw4cUaZ75VxbdUGrUUix9NnSRtkZv9Fwfv86daEDp",
17
+ "attestationUID": "0xf8957b733bf6372700038f2243675312882b56a8301b30df5469ba60b10ca3b1",
18
+ "timestamp": "2025-09-12T04:36:57.164Z",
19
+ "size": 6009
20
+ },
21
+ {
22
+ "ipfsHash": "bafkreifha2yi6mv4lrdvb6p6w4id6nzhctgfe2fdbabhljkoxupegirhh4",
23
+ "attestationUID": "0xe1afd90e239b994b7e3fb45208145372cb0a190a7489db5434b1a8bef543caf0",
24
+ "timestamp": "2025-10-20T05:22:28.939Z",
25
+ "size": 5999
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "evidenceId": "06",
3
+ "ipfsHash": "bafkreiftmmrxv3ofmm5w7xvnyi73ucxhm54zlg7an54esloeodzrelgaua",
4
+ "attestationUID": "0x1e18df54aecbfe0b53ed902be8b2da00f0b146e2395a6cb822a91c22fd506667",
5
+ "timestamp": "2026-01-05T12:17:26.810Z",
6
+ "size": 4124,
7
+ "updatedAt": "2026-01-05T12:18:46.575Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmcFEzJvGd2MXQ79QNhdwiaBDXnkEgPRGD9Yz8s4tYwG2h",
11
+ "attestationUID": "0x2ba9c1db56ec67ceaf5b0f6958e9b4ab18b1729b38203f75f2d180d2eb8d2ecf",
12
+ "timestamp": "2025-09-10T08:30:52.079Z",
13
+ "size": 4378
14
+ },
15
+ {
16
+ "ipfsHash": "QmTJbBGbTiS8M75cwafPcTT93oNf1iHkqhHUQKasdKCk7f",
17
+ "attestationUID": "0x77d86da89ee2663cc46f0d7e179af82e495423554a4d4a2a3f150c023dbbfba0",
18
+ "timestamp": "2025-09-12T04:36:59.631Z",
19
+ "size": 4136
20
+ },
21
+ {
22
+ "ipfsHash": "bafkreiftmmrxv3ofmm5w7xvnyi73ucxhm54zlg7an54esloeodzrelgaua",
23
+ "attestationUID": "0xdb4020005bd8ad3fae0f8b59534371303d17d57bef9d6eccd3ed26be6489811e",
24
+ "timestamp": "2025-10-20T05:22:36.137Z",
25
+ "size": 4124
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "evidenceId": "07",
3
+ "ipfsHash": "bafkreibumu5m3hxwbquhupo2taeouuw6q2dyrhujkemtnkqq34fhsu4aoy",
4
+ "attestationUID": "0x00c3625f6e662865fd5f76069198c214418de58a99a9a80828a542c009d35d5f",
5
+ "timestamp": "2026-01-05T12:17:33.521Z",
6
+ "size": 3725,
7
+ "updatedAt": "2026-01-05T12:18:46.575Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmUSjmGbYhUSDYr8bwTEzKAZLECy2sqAp39Y3zCZVr5yrP",
11
+ "attestationUID": "0x713761888d59c523c39166469e39f72a60ef267567d2e3da367a580e86d19d34",
12
+ "timestamp": "2025-09-10T08:30:58.646Z",
13
+ "size": 3963
14
+ },
15
+ {
16
+ "ipfsHash": "Qmf9hraQRoKdXpUtKJGWUMNhPcsTzvEXokJmyT4JAnSncB",
17
+ "attestationUID": "0x131a05fc769bc4f88321b6393bac095acb91f414b9eb0269719d0700d6f0adf6",
18
+ "timestamp": "2025-09-12T04:37:06.307Z",
19
+ "size": 3737
20
+ },
21
+ {
22
+ "ipfsHash": "bafkreibumu5m3hxwbquhupo2taeouuw6q2dyrhujkemtnkqq34fhsu4aoy",
23
+ "attestationUID": "0xc0d69bba3cbb98b888816ffc40a5fb9535a81845e208b9daee17642a20ebf88b",
24
+ "timestamp": "2025-10-20T05:22:43.324Z",
25
+ "size": 3725
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "evidenceId": "08",
3
+ "ipfsHash": "bafkreihyckti4phyh65fnrhtyvfxzzfnhd7gz5kpd33xoa4idexxrkomz4",
4
+ "attestationUID": "0x42dc0c6f359b2a1b41168322bdc147c6abf0598a7f02d4d7b987f9106366b2f3",
5
+ "timestamp": "2026-01-05T12:17:40.325Z",
6
+ "size": 2658,
7
+ "updatedAt": "2026-01-05T12:18:46.576Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmPniW6pK61r2WXoGAsku7JDgpNZQJ343mpWhhirUQFS4w",
11
+ "attestationUID": "0x687828a7b2512a6d2a36047f8aef22ee211d94eb73fd621a55bc37210475f220",
12
+ "timestamp": "2025-09-10T08:31:00.999Z",
13
+ "size": 2912
14
+ },
15
+ {
16
+ "ipfsHash": "QmWouWFKZuKKj3zBFb4oUDCCkwXGq4WxbLvvhpqYQnrVCd",
17
+ "attestationUID": "0xfbea1a38f1cfbe6fe2ce617626b1cc110910380b5e5def0dc07e3aa2ca633d71",
18
+ "timestamp": "2025-09-12T04:37:12.988Z",
19
+ "size": 2670
20
+ },
21
+ {
22
+ "ipfsHash": "bafkreihyckti4phyh65fnrhtyvfxzzfnhd7gz5kpd33xoa4idexxrkomz4",
23
+ "attestationUID": "0x1f3053093c93d603a37d7f6d19de25214d76ad259203d0fdac9d688c149af1e5",
24
+ "timestamp": "2025-10-20T05:22:46.153Z",
25
+ "size": 2658
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "evidenceId": "09",
3
+ "ipfsHash": "bafkreid2vrcpjxgy7m7yljyjxi2sho2nzid3w7i5etm3dmef3kbfa62mzq",
4
+ "attestationUID": "0xe1d93bab34a109697802a44ff233aac984955e721e17b577911f9fd38d1a44fe",
5
+ "timestamp": "2026-01-05T12:17:47.117Z",
6
+ "size": 3722,
7
+ "updatedAt": "2026-01-05T12:18:46.576Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmU2nEcUekxgwCdhmmn9dS1G8Yh6CCedZQn1vLDYbq9PYq",
11
+ "attestationUID": "0x7ba04ca3dc55b545cc3de55f6fac2a27fc4a068228a2225a9a1d27ba91cf85a0",
12
+ "timestamp": "2025-09-10T08:31:07.540Z",
13
+ "size": 3916
14
+ },
15
+ {
16
+ "ipfsHash": "QmTyWtyBKqcg8gT9xKKEJ2miX2CeMoMNNbbZMxjG2eUxE7",
17
+ "attestationUID": "0xc3cda7c9789998c77b33d57e8c4e41c4b0fa768f2bda9ff6379a8bb194dc74ad",
18
+ "timestamp": "2025-09-12T04:37:19.737Z",
19
+ "size": 3734
20
+ },
21
+ {
22
+ "ipfsHash": "bafkreid2vrcpjxgy7m7yljyjxi2sho2nzid3w7i5etm3dmef3kbfa62mzq",
23
+ "attestationUID": "0x082c456afefc31533a48f773feb0ff721cc9b9b916fa96f5adfb9e2a30725202",
24
+ "timestamp": "2025-10-20T05:22:48.983Z",
25
+ "size": 3722
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "evidenceId": "10",
3
+ "ipfsHash": "bafkreigtbl3k22aqtqnlfhcwbpxl4wvt3xd6kg4lnzmxbg2rhhlnvew76y",
4
+ "attestationUID": "0xa81599731cef9d9ff470847bc614d69b8a427eaa0b369c3bc5d4f2339d941644",
5
+ "timestamp": "2026-01-19T09:58:00.198Z",
6
+ "size": 3454,
7
+ "updatedAt": "2026-01-19T09:58:25.358Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmPbfVG2aodGaRsQm1BMgZiEgALR7XoVTNccgsUJDKuecF",
11
+ "attestationUID": "0x6fa9b34c643d02ab33ebb9596f1a698314a4db474fdfc304dd9e4f4d3985aaee",
12
+ "timestamp": "2025-09-10T08:31:14.097Z",
13
+ "size": 3648
14
+ },
15
+ {
16
+ "ipfsHash": "QmWndd7VvJqrtpMaEn1g5GZtA9GkYTLQ5u6fcimWima6wE",
17
+ "attestationUID": "0x5af7ea0464bb6dd3aa1dd9763fabc00431bfc9c0a11070f1f3e669a13e922812",
18
+ "timestamp": "2025-09-12T04:37:26.448Z",
19
+ "size": 3466
20
+ },
21
+ {
22
+ "ipfsHash": "bafkreigtbl3k22aqtqnlfhcwbpxl4wvt3xd6kg4lnzmxbg2rhhlnvew76y",
23
+ "attestationUID": "0x59d3bc64a0ab9647c299730c7ebbc55dd091272f213ed4c74eeabc65c22b749f",
24
+ "timestamp": "2025-10-20T05:22:51.790Z",
25
+ "size": 3454
26
+ },
27
+ {
28
+ "ipfsHash": "bafkreigtbl3k22aqtqnlfhcwbpxl4wvt3xd6kg4lnzmxbg2rhhlnvew76y",
29
+ "attestationUID": "0x4d156781642792664c95433cf73c2f8035aa8dc0eeb6ddd91d3d67036a0e9445",
30
+ "timestamp": "2026-01-05T12:17:49.570Z",
31
+ "size": 3454
32
+ },
33
+ {
34
+ "ipfsHash": "bafkreigtbl3k22aqtqnlfhcwbpxl4wvt3xd6kg4lnzmxbg2rhhlnvew76y",
35
+ "attestationUID": "0x853bd8f7a2c2a7591a825a43b5eeb29cc21c3b3abd9226578c41c4ffdebabd31",
36
+ "timestamp": "2026-01-19T09:50:25.091Z",
37
+ "size": 3454
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "evidenceId": "11",
3
+ "ipfsHash": "bafkreigezvf4ewbyfbeer22ulitsacyikjwg57nz6angjlvoe7iozqidki",
4
+ "attestationUID": "0x7f8954d81d48671840bb6cfccfcb1d44f8e1cd3d633dc5f718591a53901f5576",
5
+ "timestamp": "2026-01-05T12:17:56.293Z",
6
+ "size": 2491,
7
+ "updatedAt": "2026-01-05T12:18:46.576Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmNUWdNtC2vXHkpgLZyuZ8KWNdhW9dNNSMda6kkDTfTHS8",
11
+ "attestationUID": "0xc6975a4c1d5ff8335f89309d164f0c6e89fbc49b625ac0744fc07ca5c0cbc09f",
12
+ "timestamp": "2025-09-10T08:31:20.614Z",
13
+ "size": 2685
14
+ },
15
+ {
16
+ "ipfsHash": "QmRohd3284brDjDcJ4GCZhiGChE5oMVb3VtSMMVaQRTRfZ",
17
+ "attestationUID": "0x3e9dfb59839a99b5ca33b853687fff01bdc0805427b6237b6e72aa41073f6142",
18
+ "timestamp": "2025-09-12T04:37:33.154Z",
19
+ "size": 2503
20
+ },
21
+ {
22
+ "ipfsHash": "bafkreigezvf4ewbyfbeer22ulitsacyikjwg57nz6angjlvoe7iozqidki",
23
+ "attestationUID": "0x6296abe62d40f5923f7702167d86b561137fa51cbdc821d299eceb5eb5d67d84",
24
+ "timestamp": "2025-10-20T05:22:54.595Z",
25
+ "size": 2491
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "evidenceId": "12",
3
+ "ipfsHash": "bafkreifrdpmwf35q77tnb5mimm2blchx7pcc2j4375ujmnetd7uw4socmi",
4
+ "attestationUID": "0x31f4f57d3f75c40ad369718dc25cb98eeea7d6f538630df810c2019397ec61e1",
5
+ "timestamp": "2025-10-20T05:22:57.397Z",
6
+ "size": 3051,
7
+ "updatedAt": "2025-10-20T05:23:33.386Z",
8
+ "history": [
9
+ {
10
+ "ipfsHash": "QmaUMtZEjEvMoU7fTcojRdW74sLctXNV2oJZnw71mKRQih",
11
+ "attestationUID": "0x289e2d8f4a652f8cf6382c453d335ca8440b59cbced134b27637601365c44cba",
12
+ "timestamp": "2025-09-10T08:31:27.131Z",
13
+ "size": 3193
14
+ },
15
+ {
16
+ "ipfsHash": "QmPVqaiNyVDBZZqBdQGtRJHhfuEtwap32t7BWB6qWkZar5",
17
+ "attestationUID": "0xa581f72f1aa99dff97488d117b4dde0d9b5d3f92e23c40f9b486350b78097ed6",
18
+ "timestamp": "2025-09-12T04:37:39.852Z",
19
+ "size": 3063
20
+ }
21
+ ]
22
+ }