Append +artifact.<sha256> to the llama.cpp runtime axis, computed from the exact bytes read by attest_loaded_runtime, so a differently-built shared object with copied lock values can no longer forge a certified runtime identity. Node/tracker parsers require the suffix; new test proves a byte-identical-lock but different-binary artifact produces a different recipe fingerprint. Regenerates conformance vectors accordingly. 105 passed in tests/test_native_identity_emission.py, tests/test_runtime_pin_identity.py, tests/test_runtime_recipe_identity.py.
110 lines
5.5 KiB
JSON
110 lines
5.5 KiB
JSON
{
|
|
"schema_version": 2,
|
|
"vectors": [
|
|
{
|
|
"description": "An undivided artifact: content digest is the source digest.",
|
|
"fingerprint": {
|
|
"catalogue_version": "2026.07.1",
|
|
"model_artifact_digest": "8a0f43d6aa49d77834bdb47bcae9f42c886b7ccfe0ac014932b2a2b38697a47b",
|
|
"recipe_id": "example-gguf",
|
|
"recipe_version": "1",
|
|
"runtime_recipe_digest": "73133ee50866da5b26e94a39e3e10865c41651d0b1fd1655ceae09d2234cb8eb"
|
|
},
|
|
"fingerprint_proto_hex": "0a40386130663433643661613439643737383334626462343762636165396634326338383662376363666530616330313439333262326132623338363937613437621240373331333365653530383636646135623236653934613339653365313038363563343136353164306231666431363535636561653039643232333463623865621a0c6578616d706c652d676775662201312a09323032362e30372e31",
|
|
"identity": {
|
|
"artifact": {
|
|
"architecture": "dense-llama",
|
|
"architecture_digest": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
"artifact_id": "example/model",
|
|
"content_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"derived_from": null,
|
|
"layer_count": 8,
|
|
"revision": "0123456789abcdef"
|
|
},
|
|
"fingerprint": {
|
|
"catalogue_version": "2026.07.1",
|
|
"model_artifact_digest": "8a0f43d6aa49d77834bdb47bcae9f42c886b7ccfe0ac014932b2a2b38697a47b",
|
|
"recipe_id": "example-gguf",
|
|
"recipe_version": "1",
|
|
"runtime_recipe_digest": "73133ee50866da5b26e94a39e3e10865c41651d0b1fd1655ceae09d2234cb8eb"
|
|
},
|
|
"recipe": {
|
|
"activation_dtype": "bfloat16",
|
|
"architecture_adapter": "llama/range-v1",
|
|
"backend_id": "llama.cpp",
|
|
"boundary_schema_version": 1,
|
|
"catalogue_version": "2026.07.1",
|
|
"compute_dtype": "float32",
|
|
"kv_dtype": "q8_0",
|
|
"kv_layout": "paged-v1",
|
|
"protocol_schema_version": 1,
|
|
"recipe_id": "example-gguf",
|
|
"recipe_version": "1",
|
|
"runtime_version": "llama.cpp@dddddddddddddddddddddddddddddddddddddddd+patchstack.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee+build.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff+artifact.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"tokenizer_revision": "tokenizer.v1:2d4e25eb9dd1a5e6ecef2fb36c0cb49a6cbe61161c807ea07a62ba268e9fb665",
|
|
"weight_quantization": "Q4_K_M"
|
|
},
|
|
"schema_version": 1,
|
|
"shard_end": 4,
|
|
"shard_start": 0
|
|
},
|
|
"name": "example-v1",
|
|
"shard_binding_digest": "f62d1f76cc18b548782c02850e05c2634da55c0e686c43b9f687bdee7bdefe19"
|
|
},
|
|
{
|
|
"description": "A split of the same source: same fingerprint, different Shard binding.",
|
|
"fingerprint": {
|
|
"catalogue_version": "2026.07.1",
|
|
"model_artifact_digest": "8a0f43d6aa49d77834bdb47bcae9f42c886b7ccfe0ac014932b2a2b38697a47b",
|
|
"recipe_id": "example-gguf",
|
|
"recipe_version": "1",
|
|
"runtime_recipe_digest": "73133ee50866da5b26e94a39e3e10865c41651d0b1fd1655ceae09d2234cb8eb"
|
|
},
|
|
"fingerprint_proto_hex": "0a40386130663433643661613439643737383334626462343762636165396634326338383662376363666530616330313439333262326132623338363937613437621240373331333365653530383636646135623236653934613339653365313038363563343136353164306231666431363535636561653039643232333463623865621a0c6578616d706c652d676775662201312a09323032362e30372e31",
|
|
"identity": {
|
|
"artifact": {
|
|
"architecture": "dense-llama",
|
|
"architecture_digest": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
"artifact_id": "example/model",
|
|
"content_digest": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
|
"derived_from": {
|
|
"shard_end": 8,
|
|
"shard_start": 4,
|
|
"source_artifact_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
},
|
|
"layer_count": 8,
|
|
"revision": "0123456789abcdef"
|
|
},
|
|
"fingerprint": {
|
|
"catalogue_version": "2026.07.1",
|
|
"model_artifact_digest": "8a0f43d6aa49d77834bdb47bcae9f42c886b7ccfe0ac014932b2a2b38697a47b",
|
|
"recipe_id": "example-gguf",
|
|
"recipe_version": "1",
|
|
"runtime_recipe_digest": "73133ee50866da5b26e94a39e3e10865c41651d0b1fd1655ceae09d2234cb8eb"
|
|
},
|
|
"recipe": {
|
|
"activation_dtype": "bfloat16",
|
|
"architecture_adapter": "llama/range-v1",
|
|
"backend_id": "llama.cpp",
|
|
"boundary_schema_version": 1,
|
|
"catalogue_version": "2026.07.1",
|
|
"compute_dtype": "float32",
|
|
"kv_dtype": "q8_0",
|
|
"kv_layout": "paged-v1",
|
|
"protocol_schema_version": 1,
|
|
"recipe_id": "example-gguf",
|
|
"recipe_version": "1",
|
|
"runtime_version": "llama.cpp@dddddddddddddddddddddddddddddddddddddddd+patchstack.eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee+build.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff+artifact.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
"tokenizer_revision": "tokenizer.v1:2d4e25eb9dd1a5e6ecef2fb36c0cb49a6cbe61161c807ea07a62ba268e9fb665",
|
|
"weight_quantization": "Q4_K_M"
|
|
},
|
|
"schema_version": 1,
|
|
"shard_end": 8,
|
|
"shard_start": 4
|
|
},
|
|
"name": "example-v1-derivative",
|
|
"shard_binding_digest": "55271611eb63cb81088b8109133f1dff845352298994fc8e9c5824a6a01c83e0"
|
|
}
|
|
]
|
|
}
|