Repository navigation
Expand file tree
/
Copy pathv2.json
More file actions
128 lines (128 loc) · 12.3 KB
/
Copy pathv2.json
File metadata and controls
128 lines (128 loc) · 12.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
{
"version": 2,
"domain_tag_b64": "dmVjdG9ycGluL3YyAA",
"comment": "Cross-language test vectors for VectorPin protocol v2. The signing key seed is intentionally public \u2014 it exists only to make these fixtures reproducible. Do not use in production.",
"key_id": "test-vectors-v2-2026-05",
"public_key_b64": "A6EHv_POEL4dcN0Y50vAmWfk1jCbpQ1fHdyGZBJVMbg",
"private_key_b64": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8",
"fixtures": [
{
"name": "vector_0_f32_small",
"description": "Small f32 vector, no extras, no model_hash.",
"input": {
"source": "hello world",
"model": "test-model-v1",
"vec_b64": "bL8APn9GB7698iM_39XWPaEhCb_9Irk-eemmP-Zzcj_-JzS_Vfmhv-qOH79uRSk9Ts0UwOwKYL4Dep-_4HU7vw",
"vec_dtype": "f32",
"vec_dim": 16,
"timestamp": "2026-05-05T12:00:00Z"
},
"pin_json": "{\"kid\":\"test-vectors-v2-2026-05\",\"model\":\"test-model-v1\",\"sig\":\"UOiAisL0mR2C1OJ8-t2I8L2mS1lYJrOQxAG1dHFhbJWWBsFzzpRLHo2dm11mVQh4n1a92Xt4bkSQnE_KFaebBg\",\"source_hash\":\"sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9\",\"ts\":\"2026-05-05T12:00:00Z\",\"v\":2,\"vec_dim\":16,\"vec_dtype\":\"f32\",\"vec_hash\":\"sha256:5f74ef6ec2c639ff447cb52256353b79599321a956d6cf9921aa9599585cb836\"}",
"expected_canonical_bytes_b64": "dmVjdG9ycGluL3YyAHsia2lkIjoidGVzdC12ZWN0b3JzLXYyLTIwMjYtMDUiLCJtb2RlbCI6InRlc3QtbW9kZWwtdjEiLCJzb3VyY2VfaGFzaCI6InNoYTI1NjpiOTRkMjdiOTkzNGQzZTA4YTUyZTUyZDdkYTdkYWJmYWM0ODRlZmUzN2E1MzgwZWU5MDg4ZjdhY2UyZWZjZGU5IiwidHMiOiIyMDI2LTA1LTA1VDEyOjAwOjAwWiIsInYiOjIsInZlY19kaW0iOjE2LCJ2ZWNfZHR5cGUiOiJmMzIiLCJ2ZWNfaGFzaCI6InNoYTI1Njo1Zjc0ZWY2ZWMyYzYzOWZmNDQ3Y2I1MjI1NjM1M2I3OTU5OTMyMWE5NTZkNmNmOTkyMWFhOTU5OTU4NWNiODM2In0",
"expected_vec_hash": "sha256:5f74ef6ec2c639ff447cb52256353b79599321a956d6cf9921aa9599585cb836",
"expected_source_hash": "sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
},
{
"name": "vector_1_f64_small",
"description": "Small f64 vector with multi-line source.",
"input": {
"source": "multi\nline\ntext",
"model": "test-model-v1",
"vec_b64": "obO7KA0e1j8faAQiskrqPwr85YzhJdU_B5a0ZbvZ9L_zSdPdrPjsP0dxhKdmkdw_dVIrjbgu4b8iYZT-hJjiPw",
"vec_dtype": "f64",
"vec_dim": 8,
"timestamp": "2026-05-05T12:00:00Z"
},
"pin_json": "{\"kid\":\"test-vectors-v2-2026-05\",\"model\":\"test-model-v1\",\"sig\":\"kXp0DaM4TlCyFC8G3KXTW2j1Ao698NJPTcO1i0yocEkkhWJeD31de8R7isieFYkZo3umyJMEPz1ZZtUKulCvAQ\",\"source_hash\":\"sha256:40d2ac7e90e01413544cf5bd00823522b99d4343f045724fae516ad694e1aad5\",\"ts\":\"2026-05-05T12:00:00Z\",\"v\":2,\"vec_dim\":8,\"vec_dtype\":\"f64\",\"vec_hash\":\"sha256:064fd16f8ae7063a5448de1eedb6629434d55efd54928b4a8fedb162f7482253\"}",
"expected_canonical_bytes_b64": "dmVjdG9ycGluL3YyAHsia2lkIjoidGVzdC12ZWN0b3JzLXYyLTIwMjYtMDUiLCJtb2RlbCI6InRlc3QtbW9kZWwtdjEiLCJzb3VyY2VfaGFzaCI6InNoYTI1Njo0MGQyYWM3ZTkwZTAxNDEzNTQ0Y2Y1YmQwMDgyMzUyMmI5OWQ0MzQzZjA0NTcyNGZhZTUxNmFkNjk0ZTFhYWQ1IiwidHMiOiIyMDI2LTA1LTA1VDEyOjAwOjAwWiIsInYiOjIsInZlY19kaW0iOjgsInZlY19kdHlwZSI6ImY2NCIsInZlY19oYXNoIjoic2hhMjU2OjA2NGZkMTZmOGFlNzA2M2E1NDQ4ZGUxZWVkYjY2Mjk0MzRkNTVlZmQ1NDkyOGI0YThmZWRiMTYyZjc0ODIyNTMifQ",
"expected_vec_hash": "sha256:064fd16f8ae7063a5448de1eedb6629434d55efd54928b4a8fedb162f7482253",
"expected_source_hash": "sha256:40d2ac7e90e01413544cf5bd00823522b99d4343f045724fae516ad694e1aad5"
},
{
"name": "vector_2_with_model_hash",
"description": "f32 vector with optional model_hash committed under the signature. Verifiers reconstruct the signed bytes with model_hash included.",
"input": {
"source": "The quick brown fox jumps over the lazy dog.",
"model": "text-embedding-3-large",
"vec_b64": "NpdBPtjSBb8RfdO-AEEcwNBc5j8HdJI_0p2mvjAYRj_Y-o8-VccNv9xBej9FAZ--m1uoviHKSr9E8Og-WSjLvQuYCz-GcBu_Kd8BPhJsZL9Aalc_RYxAPppAqT6SLdI-gGCBv41-SD8FoQNAfLjRv1td3b9RnsC_2mlXPwrOAz4",
"vec_dtype": "f32",
"vec_dim": 32,
"timestamp": "2026-05-05T12:00:00Z",
"model_hash": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
"pin_json": "{\"kid\":\"test-vectors-v2-2026-05\",\"model\":\"text-embedding-3-large\",\"model_hash\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"sig\":\"JPaznNPvaqQ9Soki5PZGbD7LS7eFzGYHYcy244t0RkalVtmPUAAmNgGRFBY4eEITjlLsPCiMJihgH1fWHhRNAg\",\"source_hash\":\"sha256:ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c\",\"ts\":\"2026-05-05T12:00:00Z\",\"v\":2,\"vec_dim\":32,\"vec_dtype\":\"f32\",\"vec_hash\":\"sha256:b98db6fc8984b750ddf3d88d4440809bc51902003f9713be00898e9c7c3bd8b1\"}",
"expected_canonical_bytes_b64": "dmVjdG9ycGluL3YyAHsia2lkIjoidGVzdC12ZWN0b3JzLXYyLTIwMjYtMDUiLCJtb2RlbCI6InRleHQtZW1iZWRkaW5nLTMtbGFyZ2UiLCJtb2RlbF9oYXNoIjoic2hhMjU2OmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLCJzb3VyY2VfaGFzaCI6InNoYTI1NjplZjUzN2YyNWM4OTViZmE3ODI1MjY1MjlhOWI2M2Q5N2FhNjMxNTY0ZDVkNzg5YzJiNzY1NDQ4Yzg2MzVmYjZjIiwidHMiOiIyMDI2LTA1LTA1VDEyOjAwOjAwWiIsInYiOjIsInZlY19kaW0iOjMyLCJ2ZWNfZHR5cGUiOiJmMzIiLCJ2ZWNfaGFzaCI6InNoYTI1NjpiOThkYjZmYzg5ODRiNzUwZGRmM2Q4OGQ0NDQwODA5YmM1MTkwMjAwM2Y5NzEzYmUwMDg5OGU5YzdjM2JkOGIxIn0",
"expected_vec_hash": "sha256:b98db6fc8984b750ddf3d88d4440809bc51902003f9713be00898e9c7c3bd8b1",
"expected_source_hash": "sha256:ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c"
},
{
"name": "vector_3_with_extra_and_record_id",
"description": "f32 vector with a free-form extra entry plus the reserved vectorpin.record_id replay-protection key. Source is NFC-normalized Unicode ('caf\u00e9').",
"input": {
"source": "caf\u00e9",
"model": "unicode-model",
"vec_b64": "a54CQASQI8ANEdY-WVkRv6bB576BxVy-dEcBwK5_bb6bfl2_BqxUQJs0Zz4GjLS-6ASQvhYFK78sD4e_ERfIvg",
"vec_dtype": "f32",
"vec_dim": 16,
"timestamp": "2026-05-05T12:00:00Z",
"extra": {
"region": "us-west",
"vectorpin.record_id": "rec-2026-05-05-001"
}
},
"pin_json": "{\"extra\":{\"region\":\"us-west\",\"vectorpin.record_id\":\"rec-2026-05-05-001\"},\"kid\":\"test-vectors-v2-2026-05\",\"model\":\"unicode-model\",\"sig\":\"Ag2L1crLsMRGRFKX-V4ghJRJXYaz79BzFfFqzlSPOvhelX35OVxSB6iLA1y4VqWN9CSOytolgr2uwP2hixt0Ag\",\"source_hash\":\"sha256:850f7dc43910ff890f8879c0ed26fe697c93a067ad93a7d50f466a7028a9bf4e\",\"ts\":\"2026-05-05T12:00:00Z\",\"v\":2,\"vec_dim\":16,\"vec_dtype\":\"f32\",\"vec_hash\":\"sha256:786591a1975a5b9811dde437f033950a1aecab1f54876a55c43531ae2883c49e\"}",
"expected_canonical_bytes_b64": "dmVjdG9ycGluL3YyAHsiZXh0cmEiOnsicmVnaW9uIjoidXMtd2VzdCIsInZlY3RvcnBpbi5yZWNvcmRfaWQiOiJyZWMtMjAyNi0wNS0wNS0wMDEifSwia2lkIjoidGVzdC12ZWN0b3JzLXYyLTIwMjYtMDUiLCJtb2RlbCI6InVuaWNvZGUtbW9kZWwiLCJzb3VyY2VfaGFzaCI6InNoYTI1Njo4NTBmN2RjNDM5MTBmZjg5MGY4ODc5YzBlZDI2ZmU2OTdjOTNhMDY3YWQ5M2E3ZDUwZjQ2NmE3MDI4YTliZjRlIiwidHMiOiIyMDI2LTA1LTA1VDEyOjAwOjAwWiIsInYiOjIsInZlY19kaW0iOjE2LCJ2ZWNfZHR5cGUiOiJmMzIiLCJ2ZWNfaGFzaCI6InNoYTI1Njo3ODY1OTFhMTk3NWE1Yjk4MTFkZGU0MzdmMDMzOTUwYTFhZWNhYjFmNTQ4NzZhNTVjNDM1MzFhZTI4ODNjNDllIn0",
"expected_vec_hash": "sha256:786591a1975a5b9811dde437f033950a1aecab1f54876a55c43531ae2883c49e",
"expected_source_hash": "sha256:850f7dc43910ff890f8879c0ed26fe697c93a067ad93a7d50f466a7028a9bf4e"
},
{
"name": "vector_4_f32_float_edge_cases",
"description": "f32 vector of IEEE-754 edge values: +0.0 and -0.0 (distinct), smallest normal and subnormal (positive and negative), f32 max, 1 + ulp. Locks byte-exact encoding with no FTZ/DAZ.",
"input": {
"source": "f32 edge cases",
"model": "test-model-v1",
"vec_b64": "AAAAAAAAAIAAAIA_AACAvwAAgAAAAICAAQAAAAEAAID__39___9__wEAgD_NzMw9_-bbLuaxYX_h_38AAgAAgA",
"vec_dtype": "f32",
"vec_dim": 16,
"timestamp": "2026-05-05T12:00:00Z"
},
"pin_json": "{\"kid\":\"test-vectors-v2-2026-05\",\"model\":\"test-model-v1\",\"sig\":\"dNiR3DWGActQzgSkKOt3BunhHzHNoKlijA7Z1LmoR-Xv69BbnqccShy113QW8i3eDCfdRqFyC7fCcAtMHlYsCg\",\"source_hash\":\"sha256:0223c5eae1039727f75e8660e0a64158b63ad8aa2fd5b5fe4f1e33be16625e8e\",\"ts\":\"2026-05-05T12:00:00Z\",\"v\":2,\"vec_dim\":16,\"vec_dtype\":\"f32\",\"vec_hash\":\"sha256:6d6c5a956c3bd7dc497beef19b947baf949389351159c71357d5ca6a87eb7499\"}",
"expected_canonical_bytes_b64": "dmVjdG9ycGluL3YyAHsia2lkIjoidGVzdC12ZWN0b3JzLXYyLTIwMjYtMDUiLCJtb2RlbCI6InRlc3QtbW9kZWwtdjEiLCJzb3VyY2VfaGFzaCI6InNoYTI1NjowMjIzYzVlYWUxMDM5NzI3Zjc1ZTg2NjBlMGE2NDE1OGI2M2FkOGFhMmZkNWI1ZmU0ZjFlMzNiZTE2NjI1ZThlIiwidHMiOiIyMDI2LTA1LTA1VDEyOjAwOjAwWiIsInYiOjIsInZlY19kaW0iOjE2LCJ2ZWNfZHR5cGUiOiJmMzIiLCJ2ZWNfaGFzaCI6InNoYTI1Njo2ZDZjNWE5NTZjM2JkN2RjNDk3YmVlZjE5Yjk0N2JhZjk0OTM4OTM1MTE1OWM3MTM1N2Q1Y2E2YTg3ZWI3NDk5In0",
"expected_vec_hash": "sha256:6d6c5a956c3bd7dc497beef19b947baf949389351159c71357d5ca6a87eb7499",
"expected_source_hash": "sha256:0223c5eae1039727f75e8660e0a64158b63ad8aa2fd5b5fe4f1e33be16625e8e"
},
{
"name": "vector_5_f64_float_edge_cases",
"description": "f64 vector of IEEE-754 edge values: signed zeros, smallest normal and subnormal, f64 max, 1 + ulp, 1e-300.",
"input": {
"source": "f64 edge cases",
"model": "test-model-v1",
"vec_b64": "AAAAAAAAAAAAAAAAAAAAgAAAAAAAABAAAQAAAAAAAAABAAAAAAAAgP_______-9_________7_8BAAAAAADwP5qZmZmZmbk_WfP4wh9upQE",
"vec_dtype": "f64",
"vec_dim": 10,
"timestamp": "2026-05-05T12:00:00Z"
},
"pin_json": "{\"kid\":\"test-vectors-v2-2026-05\",\"model\":\"test-model-v1\",\"sig\":\"QxI-CHFweNeoDKloxYAKvUdsYbJ8u-yLEfcWOcg9lsFoA3cam8FabImFAG_xt4obrkpQiaCg-noIPeifNTHKAQ\",\"source_hash\":\"sha256:0cfb069a3bbc94daec3de7089d89c233669eac6ebcd1477f9b10bd781cfa5ba5\",\"ts\":\"2026-05-05T12:00:00Z\",\"v\":2,\"vec_dim\":10,\"vec_dtype\":\"f64\",\"vec_hash\":\"sha256:03cf76011eca0fa6d998aee8190367ea892e3ccbdef155fde79082f93e7e48ce\"}",
"expected_canonical_bytes_b64": "dmVjdG9ycGluL3YyAHsia2lkIjoidGVzdC12ZWN0b3JzLXYyLTIwMjYtMDUiLCJtb2RlbCI6InRlc3QtbW9kZWwtdjEiLCJzb3VyY2VfaGFzaCI6InNoYTI1NjowY2ZiMDY5YTNiYmM5NGRhZWMzZGU3MDg5ZDg5YzIzMzY2OWVhYzZlYmNkMTQ3N2Y5YjEwYmQ3ODFjZmE1YmE1IiwidHMiOiIyMDI2LTA1LTA1VDEyOjAwOjAwWiIsInYiOjIsInZlY19kaW0iOjEwLCJ2ZWNfZHR5cGUiOiJmNjQiLCJ2ZWNfaGFzaCI6InNoYTI1NjowM2NmNzYwMTFlY2EwZmE2ZDk5OGFlZTgxOTAzNjdlYTg5MmUzY2NiZGVmMTU1ZmRlNzkwODJmOTNlN2U0OGNlIn0",
"expected_vec_hash": "sha256:03cf76011eca0fa6d998aee8190367ea892e3ccbdef155fde79082f93e7e48ce",
"expected_source_hash": "sha256:0cfb069a3bbc94daec3de7089d89c233669eac6ebcd1477f9b10bd781cfa5ba5"
},
{
"name": "vector_6_f64_input_pinned_f32_rne_ties",
"description": "f64 input values that are exact ties (and near-ties) between adjacent f32 values, pinned explicitly as f32. Every port must apply round-to-nearest-even when casting at sign time. The input bytes are f64 (vec_native_dtype); verify with the f32 cast.",
"input": {
"source": "f64 to f32 ties",
"model": "test-model-v1",
"vec_b64": "AAAAEAAA8D8AAAAwAADwPwAAABAAAPC_ABAAEAAA8D8A8P8PAADwP5qZmZmZmbk_YVUsJM5EYjYAAAAAAACoNgAAAOD__-9HAAAAVDRvnUE",
"vec_dtype": "f32",
"vec_dim": 10,
"timestamp": "2026-05-05T12:00:00Z",
"vec_native_dtype": "f64"
},
"pin_json": "{\"kid\":\"test-vectors-v2-2026-05\",\"model\":\"test-model-v1\",\"sig\":\"FDd9XyHx59tHETPGLg1I6GRZFVU56nZuppgKgGeEIPm5JDkHZbhx3qJSzEcqLKwH5gmFHPrtnQ-SpU8PtS8TAA\",\"source_hash\":\"sha256:4dd5a9295336fe72a5bb706ef019f1e1949a29b5d9561d703bd789ca7fd1bd9b\",\"ts\":\"2026-05-05T12:00:00Z\",\"v\":2,\"vec_dim\":10,\"vec_dtype\":\"f32\",\"vec_hash\":\"sha256:7ca09c2447c16c025cae0d4ae1facb119bf580f471d0a6ac84dfb80b15a0e1e3\"}",
"expected_canonical_bytes_b64": "dmVjdG9ycGluL3YyAHsia2lkIjoidGVzdC12ZWN0b3JzLXYyLTIwMjYtMDUiLCJtb2RlbCI6InRlc3QtbW9kZWwtdjEiLCJzb3VyY2VfaGFzaCI6InNoYTI1Njo0ZGQ1YTkyOTUzMzZmZTcyYTViYjcwNmVmMDE5ZjFlMTk0OWEyOWI1ZDk1NjFkNzAzYmQ3ODljYTdmZDFiZDliIiwidHMiOiIyMDI2LTA1LTA1VDEyOjAwOjAwWiIsInYiOjIsInZlY19kaW0iOjEwLCJ2ZWNfZHR5cGUiOiJmMzIiLCJ2ZWNfaGFzaCI6InNoYTI1Njo3Y2EwOWMyNDQ3YzE2YzAyNWNhZTBkNGFlMWZhY2IxMTliZjU4MGY0NzFkMGE2YWM4NGRmYjgwYjE1YTBlMWUzIn0",
"expected_vec_hash": "sha256:7ca09c2447c16c025cae0d4ae1facb119bf580f471d0a6ac84dfb80b15a0e1e3",
"expected_source_hash": "sha256:4dd5a9295336fe72a5bb706ef019f1e1949a29b5d9561d703bd789ca7fd1bd9b"
}
]
}