@aleutian/verification 0.0.0 → 0.7.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.
package/package.json CHANGED
@@ -1,12 +1,103 @@
1
- {
1
+ {
2
2
  "name": "@aleutian/verification",
3
- "version": "0.0.0",
4
- "description": "Placeholder for Aleutian AI verification SDK. Real SDK lands later.",
3
+ "version": "0.7.0",
4
+ "description": "Aleutian AI verification SDK: offline V3 SAR chain entry verification (ML-DSA-65 / FIPS 204), anchor verification, webhook signature verification",
5
+ "author": "Aleutian AI <jinterlante@aleutian.ai>",
5
6
  "license": "Apache-2.0",
7
+ "keywords": [
8
+ "aleutian",
9
+ "verification",
10
+ "audit",
11
+ "chain",
12
+ "anchor",
13
+ "webhook",
14
+ "cryptography",
15
+ "post-quantum",
16
+ "ml-dsa",
17
+ "fips204",
18
+ "sar",
19
+ "dsar",
20
+ "gdpr",
21
+ "v3",
22
+ "ed25519",
23
+ "hmac"
24
+ ],
6
25
  "repository": {
7
26
  "type": "git",
8
- "url": "https://github.com/aleutian-ai/verification-js.git"
27
+ "url": "git+https://github.com/aleutian-ai/verification-js.git"
9
28
  },
10
29
  "homepage": "https://aleutian.ai",
11
- "keywords": ["aleutian", "verification", "audit", "placeholder"]
30
+ "bugs": {
31
+ "url": "https://github.com/aleutian-ai/verification-js/issues"
32
+ },
33
+ "type": "module",
34
+ "main": "./dist/index.cjs",
35
+ "module": "./dist/index.js",
36
+ "types": "./dist/index.d.ts",
37
+ "bin": {
38
+ "aleutian-verify": "dist/cli/aleutian-verify.js"
39
+ },
40
+ "exports": {
41
+ ".": {
42
+ "browser": {
43
+ "types": "./dist/browser/index.d.ts",
44
+ "default": "./dist/browser/index.js"
45
+ },
46
+ "import": {
47
+ "types": "./dist/index.d.ts",
48
+ "default": "./dist/index.js"
49
+ },
50
+ "require": {
51
+ "types": "./dist/index.d.cts",
52
+ "default": "./dist/index.cjs"
53
+ }
54
+ },
55
+ "./browser": {
56
+ "types": "./dist/browser/index.d.ts",
57
+ "default": "./dist/browser/index.js"
58
+ }
59
+ },
60
+ "files": [
61
+ "dist",
62
+ "testdata",
63
+ "LICENSE",
64
+ "README.md",
65
+ "CHANGELOG.md"
66
+ ],
67
+ "engines": {
68
+ "node": ">=19.0.0"
69
+ },
70
+ "scripts": {
71
+ "build": "tsup",
72
+ "test": "vitest run",
73
+ "test:browser": "playwright test",
74
+ "test:watch": "vitest",
75
+ "test:coverage": "vitest run --coverage",
76
+ "lint": "eslint src/ test/ --ext .ts",
77
+ "lint:fix": "eslint src/ test/ --ext .ts --fix",
78
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
79
+ "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
80
+ "typecheck": "tsc --noEmit",
81
+ "clean": "rm -rf dist coverage",
82
+ "prepublishOnly": "npm run build && npm run test"
83
+ },
84
+ "dependencies": {
85
+ "@noble/hashes": "^1.5.0",
86
+ "@noble/post-quantum": "^0.5.4",
87
+ "tweetnacl": "^1.0.3"
88
+ },
89
+ "devDependencies": {
90
+ "@playwright/test": "^1.60.0",
91
+ "@types/node": "^20.11.0",
92
+ "@typescript-eslint/eslint-plugin": "^6.19.0",
93
+ "@typescript-eslint/parser": "^6.19.0",
94
+ "@vitest/coverage-v8": "^1.2.0",
95
+ "eslint": "^8.56.0",
96
+ "eslint-config-prettier": "^9.1.0",
97
+ "happy-dom": "^20.9.0",
98
+ "prettier": "^3.2.0",
99
+ "tsup": "^8.0.0",
100
+ "typescript": "^5.3.0",
101
+ "vitest": "^1.2.0"
102
+ }
12
103
  }
@@ -0,0 +1,85 @@
1
+ {
2
+ "$schema_comment": "Cross-language golden vectors for the capture.request.v3 leaf. Each vector's input uses language-neutral snake_case field names; expected_canonical_bytes_hex is the length-prefixed TLV encoding (a 4-field header followed by a 15-field alphabetical body) and expected_content_hash_sha512_hex is SHA-512 of domain_prefix_v3 || canonical_bytes. An implementation in any language should re-encode each input and assert byte-for-byte equality with both. NOTE: the header's first field is serialized in the position it was defined in, under its original name 'company_id'; it is now called 'subject' and the ORDER deliberately did not follow the rename, because these are positional values and moving one would change every content hash ever computed.",
3
+ "domain_prefix_v3": "aleutian.chain.entry.v3:",
4
+ "entry_type": "capture.request.v3",
5
+ "vectors": [
6
+ {
7
+ "$comment": "aleutian-managed custody + pii_inspection + full verdict; every field non-empty incl hyphenated trust_level.",
8
+ "name": "full_pii_inspection",
9
+ "input": {
10
+ "company_id": "comp_01HZX9K2M3N4P5Q6R7S8T9V0WA",
11
+ "signing_key_id": "capture-leaf-signer-2026-v1",
12
+ "timestamp_ms": 1751068800000,
13
+ "capture_method": "fetch_intercept",
14
+ "content_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
15
+ "dlp": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
16
+ "encryption_mode": "aleutian-managed",
17
+ "model": "gpt-4o-2024-08-06",
18
+ "pii_action": "flagged",
19
+ "pii_categories": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
20
+ "pii_detected": true,
21
+ "pii_digest_key_version": "sm:v1",
22
+ "processing_mode": "pii_inspection",
23
+ "provider": "openai",
24
+ "region": "us",
25
+ "source_type": "extension",
26
+ "trust_level": "self-reported",
27
+ "user_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
28
+ },
29
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031485a58394b324d334e34503551365237533854395630574100000012636170747572652e726571756573742e76330000001b636170747572652d6c6561662d7369676e65722d323032362d763100000197b3d574000000000f66657463685f696e7465726365707400000080616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616100000080626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626200000010616c65757469616e2d6d616e61676564000000116770742d346f2d323032342d30382d303600000007666c6167676564000000806363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363000000000000000100000005736d3a76310000000e7069695f696e7370656374696f6e000000066f70656e616900000002757300000009657874656e73696f6e0000000d73656c662d7265706f72746564000000806464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464",
30
+ "expected_content_hash_sha512_hex": "444491ecb9705c9dc27bbaf21aaad3f0fb1ec25398a2e1086bb7f557919b8e0aa12ac6c95d051cccd1263e00f7728d15a35f2bacb2de0f8896bab73e77951c94"
31
+ },
32
+ {
33
+ "$comment": "zero-knowledge custody + zk processing; compliance surface empty (the enforced zk invariant) + all optional fields 0-length.",
34
+ "name": "minimal_zk",
35
+ "input": {
36
+ "company_id": "comp_01HZX9K2M3N4P5Q6R7S8T9V0WA",
37
+ "signing_key_id": "capture-leaf-signer-2026-v1",
38
+ "timestamp_ms": 1751068800000,
39
+ "capture_method": "",
40
+ "content_hash": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
41
+ "dlp": "",
42
+ "encryption_mode": "zero-knowledge",
43
+ "model": "",
44
+ "pii_action": "none",
45
+ "pii_categories": "",
46
+ "pii_detected": false,
47
+ "pii_digest_key_version": "",
48
+ "processing_mode": "zk",
49
+ "provider": "",
50
+ "region": "",
51
+ "source_type": "",
52
+ "trust_level": "",
53
+ "user_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
54
+ },
55
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031485a58394b324d334e34503551365237533854395630574100000012636170747572652e726571756573742e76330000001b636170747572652d6c6561662d7369676e65722d323032362d763100000197b3d5740000000000000000806565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565000000000000000e7a65726f2d6b6e6f776c6564676500000000000000046e6f6e6500000000000000000000000000000000000000027a6b00000000000000000000000000000000000000806666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666",
56
+ "expected_content_hash_sha512_hex": "1a276c3a214a746c889c1c8e898186d578ba0399529420240e57005c456686375068ac04d1edc441b66faecc7f3bd0634a08a4a1303f2e319f125af9461d9c18"
57
+ },
58
+ {
59
+ "$comment": "inspection authorized but scanner found nothing — empty verdict with processing_mode=pii_inspection (disambiguated from zk by the sealed mode).",
60
+ "name": "inspected_clean",
61
+ "input": {
62
+ "company_id": "comp_01HZX9K2M3N4P5Q6R7S8T9V0WA",
63
+ "signing_key_id": "capture-leaf-signer-2026-v1",
64
+ "timestamp_ms": 1751068800000,
65
+ "capture_method": "fetch_intercept",
66
+ "content_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
67
+ "dlp": "",
68
+ "encryption_mode": "aleutian-managed",
69
+ "model": "gpt-4o-2024-08-06",
70
+ "pii_action": "none",
71
+ "pii_categories": "",
72
+ "pii_detected": false,
73
+ "pii_digest_key_version": "",
74
+ "processing_mode": "pii_inspection",
75
+ "provider": "openai",
76
+ "region": "us",
77
+ "source_type": "extension",
78
+ "trust_level": "self-reported",
79
+ "user_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
80
+ },
81
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031485a58394b324d334e34503551365237533854395630574100000012636170747572652e726571756573742e76330000001b636170747572652d6c6561662d7369676e65722d323032362d763100000197b3d574000000000f66657463685f696e746572636570740000008061616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161610000000000000010616c65757469616e2d6d616e61676564000000116770742d346f2d323032342d30382d3036000000046e6f6e65000000000000000000000000000000000000000e7069695f696e7370656374696f6e000000066f70656e616900000002757300000009657874656e73696f6e0000000d73656c662d7265706f72746564000000806464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464",
82
+ "expected_content_hash_sha512_hex": "40e5c4ce227cf66429f3527aa82d0c0d767e03e767b9cd5c9cb5bc780c41c05043ec6d98bf0a8adc87482261fdedd05770e40a5c1b4dd19a1017e3e8a041e805"
83
+ }
84
+ ]
85
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$comment": "chainlinker_modernization_01i signed capture leaf golden vector. Cross-language verify parity (Go/Python/JS). signing_key_id maps to public_key_b64 in a one-entry trust manifest; verify VerifyChainEntryV3(entry, content_hash, signature_b64, manifest) == OK.",
3
+ "expected_content_hash_hex": "9ca05471cb6d3de9de72f747bff4e7218654082eb4768c0fb835089a03c49a05883217bf5236ba63dfdfb0b48deede08559b4bdfd748d7af46d49ceb9952559e",
4
+ "input": {
5
+ "capture_method": "fetch_intercept",
6
+ "company_id": "comp_01HZX9K2M3N4P5Q6R7S8T9V0WA",
7
+ "content_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
8
+ "dlp": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
9
+ "encryption_mode": "aleutian-managed",
10
+ "model": "gpt-4o-2024-08-06",
11
+ "pii_action": "flagged",
12
+ "pii_categories": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
13
+ "pii_detected": true,
14
+ "pii_digest_key_version": "sm:v1",
15
+ "processing_mode": "pii_inspection",
16
+ "provider": "openai",
17
+ "region": "us",
18
+ "signing_key_id": "test-signer-2026-v1",
19
+ "source_type": "extension",
20
+ "timestamp_ms": 1751068800000,
21
+ "trust_level": "self-reported",
22
+ "user_id": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
23
+ },
24
+ "public_key_b64": "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",
25
+ "signature_b64": "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",
26
+ "signing_key_id": "test-signer-2026-v1"
27
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema_comment": "chain_b cross-language v3 golden vectors for sar_acknowledged. See v3_golden_sar_intent.json for the file-format conventions. Hashes baked from Go encoder 2026-05-10.",
3
+ "domain_prefix_v3": "aleutian.chain.entry.v3:",
4
+ "entry_type": "sar_acknowledged",
5
+ "vectors": [
6
+ {
7
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031484b37414141414141414141414141414141414141414141000000107361725f61636b6e6f776c656467656400000015616e63686f722d7369676e65722d323032362d76310000018f4df73e000000002430313866613162332d633464352d373030302d383030302d3132333435363738393061620000001a3031484b37424242424242424242424242424242424242424242",
8
+ "expected_content_hash_sha512_hex": "4367da6ee46bcafda03566b57a4ea34a2ab2a5dd6e68d6a1c55c423e18c08218c69d95516467b49cb52c16f1b249633efc07a259e69cefdb1a2e90fb81952af7",
9
+ "input": {
10
+ "company_id": "comp_01HK7AAAAAAAAAAAAAAAAAAAAA",
11
+ "entry_type": "sar_acknowledged",
12
+ "intent_entry_id": "018fa1b3-c4d5-7000-8000-1234567890ab",
13
+ "request_id": "01HK7BBBBBBBBBBBBBBBBBBBBB",
14
+ "signing_key_id": "anchor-signer-2026-v1",
15
+ "timestamp_ms": 1715000000000
16
+ },
17
+ "name": "sar_acknowledged"
18
+ }
19
+ ],
20
+ "version": 3
21
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema_comment": "dsar_p4_polish_v1_0_cleanup #4 (2026-05-15) cross-language v3 golden vectors for sar_extended. See v3_golden_sar_intent.json for the file-format conventions. Hashes baked from Go encoder via TestBakeSARExtendedGolden.",
3
+ "domain_prefix_v3": "aleutian.chain.entry.v3:",
4
+ "entry_type": "sar_extended",
5
+ "vectors": [
6
+ {
7
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031484b374141414141414141414141414141414141414141410000000c7361725f657874656e64656400000015616e63686f722d7369676e65722d323032362d76310000018f4df73e000000019000c79c000000002430313866613162332d633464352d373030302d383030302d3132333435363738393061620000008066666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666660000001a3031484b37424242424242424242424242424242424242424242",
8
+ "expected_content_hash_sha512_hex": "1db720a084a7be66c7be950f25e2c1eb3ec7bb62a53f138c2a06d7675d48d9c8a66001a13510845b53c5ce5ca988cf4fd4aa7bcfd49038d30a2831a15a4fdcdf",
9
+ "input": {
10
+ "company_id": "comp_01HK7AAAAAAAAAAAAAAAAAAAAA",
11
+ "entry_type": "sar_extended",
12
+ "extended_due_at_ms": 1718000000000,
13
+ "intent_entry_id": "018fa1b3-c4d5-7000-8000-1234567890ab",
14
+ "reason_hash": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
15
+ "request_id": "01HK7BBBBBBBBBBBBBBBBBBBBB",
16
+ "signing_key_id": "anchor-signer-2026-v1",
17
+ "timestamp_ms": 1715000000000
18
+ },
19
+ "name": "sar_extended"
20
+ },
21
+ {
22
+ "$comment": "pii_hmac_key_rotation_R4: versioned reason_hash leaf (pii_digest_key_version=sm:v1) emitted between intent_entry_id and reason_hash. Cross-language byte-identity (R6 review M2).",
23
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031484b374141414141414141414141414141414141414141410000000c7361725f657874656e64656400000015616e63686f722d7369676e65722d323032362d76310000018f4df73e000000018f4df73e000000002430313839306135642d616339362d373734622d626363652d62333032303939613830353700000005736d3a76310000008062626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262620000001a3031484b37424242424242424242424242424242424242424242",
24
+ "expected_content_hash_sha512_hex": "d50dc2aa7ee3570a414568d1004f5b019533df4dc6466ddb681de2ad960fdd904b1b78f05d5499d5c4bb5d090facaf28764839b8d1a82dc95ce743c1ca7d8ff2",
25
+ "input": {
26
+ "company_id": "comp_01HK7AAAAAAAAAAAAAAAAAAAAA",
27
+ "entry_type": "sar_extended",
28
+ "extended_due_at_ms": 1715000000000,
29
+ "intent_entry_id": "01890a5d-ac96-774b-bcce-b302099a8057",
30
+ "pii_digest_key_version": "sm:v1",
31
+ "reason_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
32
+ "request_id": "01HK7BBBBBBBBBBBBBBBBBBBBB",
33
+ "signing_key_id": "anchor-signer-2026-v1",
34
+ "timestamp_ms": 1715000000000
35
+ },
36
+ "name": "sar_extended_versioned"
37
+ }
38
+ ],
39
+ "version": 3
40
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "$schema_comment": "chain_b cross-language v3 golden vectors for sar_fulfilled. Two vectors cover the access (tombstone_count=0, certificate_id empty) and erasure (tombstone_count>0, certificate_id present) shapes. See v3_golden_sar_intent.json for file-format conventions. Hashes baked from Go encoder 2026-05-16 after dsar_fulfill_b_pre_02e added certificate_id as alphabetical-first body field (7 body fields total). manifest_root values are 128 hex chars (SHA-512 per OQ-8 hardening 2026-05-10).",
3
+ "domain_prefix_v3": "aleutian.chain.entry.v3:",
4
+ "entry_type": "sar_fulfilled",
5
+ "vectors": [
6
+ {
7
+ "$comment": "Access fulfillment: tombstone_count=0, certificate_id empty (encoded as 0-length prefix). legal_basis='art_15_access'.",
8
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031484b374141414141414141414141414141414141414141410000000d7361725f66756c66696c6c656400000015616e63686f722d7369676e65722d323032362d76310000018f4df73e0000000000000000066163636573730000002430313866613162332d633464352d373030302d383030302d3132333435363738393061620000000d6172745f31355f6163636573730000008063636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363630000001a3031484b374242424242424242424242424242424242424242420000000000000000",
9
+ "expected_content_hash_sha512_hex": "e358b102d71a488eef1df24410c53bd49c2da60408617448d5862d51ed5202f5b85bfb93f6549c2c6ab60092280d7e8346d91bec2eec5e4281fcde7d4544c2cc",
10
+ "input": {
11
+ "certificate_id": "",
12
+ "company_id": "comp_01HK7AAAAAAAAAAAAAAAAAAAAA",
13
+ "entry_type": "sar_fulfilled",
14
+ "fulfillment_kind": "access",
15
+ "intent_entry_id": "018fa1b3-c4d5-7000-8000-1234567890ab",
16
+ "legal_basis": "art_15_access",
17
+ "manifest_root": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
18
+ "request_id": "01HK7BBBBBBBBBBBBBBBBBBBBB",
19
+ "signing_key_id": "anchor-signer-2026-v1",
20
+ "timestamp_ms": 1715000000000,
21
+ "tombstone_count": 0
22
+ },
23
+ "name": "sar_fulfilled_access"
24
+ },
25
+ {
26
+ "$comment": "Erasure fulfillment: tombstone_count=42, certificate_id is a canonical-shape cert_<32-hex>. legal_basis='art_17_erasure'.",
27
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031484b374141414141414141414141414141414141414141410000000d7361725f66756c66696c6c656400000015616e63686f722d7369676e65722d323032362d76310000018f4df73e0000000025636572745f616161616161616161616161616161616161616161616161616161616161616100000007657261737572650000002430313866613162332d633464352d373030302d383030302d3132333435363738393061620000000e6172745f31375f657261737572650000008064646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464640000001a3031484b37424242424242424242424242424242424242424242000000000000002a",
28
+ "expected_content_hash_sha512_hex": "36dee5464297454779c0459b09d960f61b75ad92a6c2e04e290c98f711b1bfe09ca9796c4c56e68044aa0d7e59929cbb26f0388821420939eee754c68bcda147",
29
+ "input": {
30
+ "certificate_id": "cert_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
31
+ "company_id": "comp_01HK7AAAAAAAAAAAAAAAAAAAAA",
32
+ "entry_type": "sar_fulfilled",
33
+ "fulfillment_kind": "erasure",
34
+ "intent_entry_id": "018fa1b3-c4d5-7000-8000-1234567890ab",
35
+ "legal_basis": "art_17_erasure",
36
+ "manifest_root": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
37
+ "request_id": "01HK7BBBBBBBBBBBBBBBBBBBBB",
38
+ "signing_key_id": "anchor-signer-2026-v1",
39
+ "timestamp_ms": 1715000000000,
40
+ "tombstone_count": 42
41
+ },
42
+ "name": "sar_fulfilled_erasure"
43
+ }
44
+ ],
45
+ "version": 3
46
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "$schema_comment": "chain_b cross-language v3 golden vectors for sar_intent. Each vector lists the input fields, the expected canonical-bytes hex (length-prefixed TLV per pqc_05c v3 §3 + §4.5), and the expected content_hash hex (SHA-512 of 'aleutian.chain.entry.v3:' || canonical_bytes). Cross-language verifier ports (Python in chain_e, JS in chain_f) read this file and assert byte + hash equality on their re-encode. Hashes baked from the Go encoder 2026-05-10 via TestBakeV3SARFixtures.",
3
+ "domain_prefix_v3": "aleutian.chain.entry.v3:",
4
+ "entry_type": "sar_intent",
5
+ "vectors": [
6
+ {
7
+ "$comment": "Empty idempotency_key_hash + reason_hash (caller supplied neither). Validates the optional-SHA-512-hex empty-string path.",
8
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031484b374141414141414141414141414141414141414141410000000a7361725f696e74656e7400000015616e63686f722d7369676e65722d323032362d76310000018f4df73e00000000000000001a3031484b374242424242424242424242424242424242424242420000000661636365737300000003616c6c00000006706f7274616c",
9
+ "expected_content_hash_sha512_hex": "e0470089758aa3cffa70c2d90048ad0f9b18dd4aa0ac1f0757a30e71c553736b53aa13b4dbab0e024907783dba1a3fa4ef437b1f8d0a28d8db0edf637f99949a",
10
+ "input": {
11
+ "company_id": "comp_01HK7AAAAAAAAAAAAAAAAAAAAA",
12
+ "entry_type": "sar_intent",
13
+ "reason_hash": "",
14
+ "request_id": "01HK7BBBBBBBBBBBBBBBBBBBBB",
15
+ "sar_type": "access",
16
+ "scope": "all",
17
+ "signing_key_id": "anchor-signer-2026-v1",
18
+ "source_channel": "portal",
19
+ "timestamp_ms": 1715000000000
20
+ },
21
+ "name": "sar_intent_minimal"
22
+ },
23
+ {
24
+ "$comment": "Both hashes populated, source_channel=api, sar_type=both. Exercises every body field at non-empty values.",
25
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031484b374141414141414141414141414141414141414141410000000a7361725f696e74656e7400000015616e63686f722d7369676e65722d323032362d76310000018f4df73e000000008062626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262620000001a3031484b3742424242424242424242424242424242424242424200000004626f746800000003616c6c00000003617069",
26
+ "expected_content_hash_sha512_hex": "b15023b8d8f8ca28096a713c490c091f1d09dc3a7de8e84ec26e53c18db692af1c2b01eb0a2df78fff0ad3c23eb4e59a5c29d71b31811570012a8fd1fee1974d",
27
+ "input": {
28
+ "company_id": "comp_01HK7AAAAAAAAAAAAAAAAAAAAA",
29
+ "entry_type": "sar_intent",
30
+ "reason_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
31
+ "request_id": "01HK7BBBBBBBBBBBBBBBBBBBBB",
32
+ "sar_type": "both",
33
+ "scope": "all",
34
+ "signing_key_id": "anchor-signer-2026-v1",
35
+ "source_channel": "api",
36
+ "timestamp_ms": 1715000000000
37
+ },
38
+ "name": "sar_intent_full"
39
+ },
40
+ {
41
+ "$comment": "pii_hmac_key_rotation_R4: versioned reason_hash leaf (pii_digest_key_version=sm:v1) emitted at the alphabetical-first body slot. Proves cross-language byte-identity of the versioned SAR canonical (R6 review M2).",
42
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031484b374141414141414141414141414141414141414141410000000a7361725f696e74656e7400000015616e63686f722d7369676e65722d323032362d76310000018f4df73e0000000005736d3a76310000008062626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262620000001a3031484b374242424242424242424242424242424242424242420000000661636365737300000003616c6c00000006706f7274616c",
43
+ "expected_content_hash_sha512_hex": "ecdf02930893f1b6efd899d54796c917779bb41636b12712d93a7cc98c528af5b86abb9cc6b85c80258ce2a7458909a6134c43205b4287396ea7bb6181a3ab2f",
44
+ "input": {
45
+ "company_id": "comp_01HK7AAAAAAAAAAAAAAAAAAAAA",
46
+ "entry_type": "sar_intent",
47
+ "pii_digest_key_version": "sm:v1",
48
+ "reason_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
49
+ "request_id": "01HK7BBBBBBBBBBBBBBBBBBBBB",
50
+ "sar_type": "access",
51
+ "scope": "all",
52
+ "signing_key_id": "anchor-signer-2026-v1",
53
+ "source_channel": "portal",
54
+ "timestamp_ms": 1715000000000
55
+ },
56
+ "name": "sar_intent_versioned"
57
+ }
58
+ ],
59
+ "version": 3
60
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema_comment": "chain_b cross-language v3 golden vectors for sar_rejected. See v3_golden_sar_intent.json for file-format conventions. Hashes baked from Go encoder 2026-05-10. rationale_hash is REQUIRED non-empty (rejection without rationale is invalid).",
3
+ "domain_prefix_v3": "aleutian.chain.entry.v3:",
4
+ "entry_type": "sar_rejected",
5
+ "vectors": [
6
+ {
7
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031484b374141414141414141414141414141414141414141410000000c7361725f72656a656374656400000015616e63686f722d7369676e65722d323032362d76310000018f4df73e000000002430313866613162332d633464352d373030302d383030302d313233343536373839306162000000206172745f31375f335f625f66726565646f6d5f6f665f65787072657373696f6e0000008065656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565650000001a3031484b37424242424242424242424242424242424242424242",
8
+ "expected_content_hash_sha512_hex": "8b883803fdf2ed133d21a596be350bfa374174be9b6b406ee903be903a61256eac38cb592c1f6bdc90f435c8d0133199920be884bc0ea9c26c3db52e915115cc",
9
+ "input": {
10
+ "company_id": "comp_01HK7AAAAAAAAAAAAAAAAAAAAA",
11
+ "entry_type": "sar_rejected",
12
+ "intent_entry_id": "018fa1b3-c4d5-7000-8000-1234567890ab",
13
+ "legal_basis": "art_17_3_b_freedom_of_expression",
14
+ "rationale_hash": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
15
+ "request_id": "01HK7BBBBBBBBBBBBBBBBBBBBB",
16
+ "signing_key_id": "anchor-signer-2026-v1",
17
+ "timestamp_ms": 1715000000000
18
+ },
19
+ "name": "sar_rejected"
20
+ },
21
+ {
22
+ "$comment": "pii_hmac_key_rotation_R4: versioned rationale_hash leaf (pii_digest_key_version=sm:v1) emitted between legal_basis and rationale_hash. Cross-language byte-identity (R6 review M2).",
23
+ "expected_canonical_bytes_hex": "0000001f636f6d705f3031484b374141414141414141414141414141414141414141410000000c7361725f72656a656374656400000015616e63686f722d7369676e65722d323032362d76310000018f4df73e000000002430313839306135642d616339362d373734622d626363652d623330323039396138303537000000156172745f31375f335f6c6567616c5f636c61696d7300000005736d3a76310000008064646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464640000001a3031484b37424242424242424242424242424242424242424242",
24
+ "expected_content_hash_sha512_hex": "6aaede462efca0c8b90f4ef9bd22a33152091477cb3858c23307211de5eea00e72dc1dd0effe0073ded6a618149d0cb3c1d490a95af4c622e34c14fcaa88fd15",
25
+ "input": {
26
+ "company_id": "comp_01HK7AAAAAAAAAAAAAAAAAAAAA",
27
+ "entry_type": "sar_rejected",
28
+ "intent_entry_id": "01890a5d-ac96-774b-bcce-b302099a8057",
29
+ "legal_basis": "art_17_3_legal_claims",
30
+ "pii_digest_key_version": "sm:v1",
31
+ "rationale_hash": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
32
+ "request_id": "01HK7BBBBBBBBBBBBBBBBBBBBB",
33
+ "signing_key_id": "anchor-signer-2026-v1",
34
+ "timestamp_ms": 1715000000000
35
+ },
36
+ "name": "sar_rejected_versioned"
37
+ }
38
+ ],
39
+ "version": 3
40
+ }