{
"schemaVersion": 1,
"format": "sha256-path-list-v1",
"description": "Canonical payload digest vectors. An implementation materialises each case's entries, derives each record's content digest, serialises the canonical stream, and must reproduce streamBase64 and sha256 exactly.",
"cases": [
{
"name": "an empty payload still commits to its format",
"entries": [],
"streamBase64": "c2hhMjU2LXBhdGgtbGlzdC12MQo=",
"sha256": "7774b93cbe3885bca0b65a24b06f7e510efaea4894d6224b2b5a8952afe6e798"
},
{
"name": "a single regular file",
"entries": [
{
"path": "box.json",
"kind": "file",
"contentBase64": "eyJzY2hlbWFWZXJzaW9uIjoyfQo="
}
],
"streamBase64": "c2hhMjU2LXBhdGgtbGlzdC12MQpib3guanNvbgBmADY1OWY3ZTQxODI3ZTc2NjkwNjg5ZWM0MTRiZjU3OTYyNTJmNTU1YmE1MmIzNGVjYWRhYmYxMDU2Y2ZlMzI1ZjkK",
"sha256": "70de80106f6d1f8aa72329a6a4980d8f0eda2575b7fce3a7304a0e56bd9ef6de"
},
{
"name": "ordering places a dot before a slash",
"entries": [
{
"path": "a/b",
"kind": "file",
"contentBase64": "dW5kZXIgYSBkaXJlY3Rvcnk="
},
{
"path": "a.txt",
"kind": "file",
"contentBase64": "YmVzaWRlIGl0"
}
],
"streamBase64": "c2hhMjU2LXBhdGgtbGlzdC12MQphLnR4dABmADBiOTM0NWJiODVlZjZmMGNkOWEyODAzODJmMDZmYmM2MDFlOGQ3ODljYzQ3ODA2N2Y1YjFhNjg2NGJjMTczOTQKYS9iAGYAMDRhYjdhYzA4YmEyYmU5MjEwOWVlYmY0YThlOTg0Yjk2Y2ZhOTQ5ZTliMjcyNDMwM2EwODZhMWMxMzgzZjk1ZAo=",
"sha256": "debd6969fd92adf50d2c69cf9639a32c7cc42005a5a7bd33a43d4a1e4605c5e8"
},
{
"name": "ordering is by UTF-8 bytes, not UTF-16 code units or code points",
"entries": [
{
"path": "😀",
"kind": "file",
"contentBase64": "YXN0cmFs"
},
{
"path": "�",
"kind": "file",
"contentBase64": "cmVwbGFjZW1lbnQ="
}
],
"streamBase64": "c2hhMjU2LXBhdGgtbGlzdC12MQrvv70AZgA5NTcxM2U5Y2JkZDFkZmNiMmQ0MDgwYzI1MzdmNDE4ZDQzY2EwZGEyNWYwZDdkNjYzMWY0ZjdjOTdiODlkYzQ3CvCfmIAAZgAyZTlmNzY4MzQ0ZmYzOWFjN2MxZTQxMjE4YjBhNDg4YTBmYjY2Njk5Mjc3N2Y3YmZlMDNkMDk0NTBkZjRmNWIxCg==",
"sha256": "1a68ff0c870e8eeb508b4985e394dad23c8136bb73407d3816a5d14c1c2717c8"
},
{
"name": "a newline inside a filename does not break the framing",
"entries": [
{
"path": "we\nird",
"kind": "file",
"contentBase64": "b25lIGZpbGU="
},
{
"path": "weird",
"kind": "file",
"contentBase64": "YW5vdGhlciBmaWxl"
}
],
"streamBase64": "c2hhMjU2LXBhdGgtbGlzdC12MQp3ZQppcmQAZgA1YTYyZDRkYjRjZTM3N2IwNGY1ODhiMjEyMjJiZmMzNDMyNzM5NjY5OGNkZGM3NWUwOWE0YTk4NjJiMDdhMmE2CndlaXJkAGYAMTAwZWY2YTcxYmFjOTI1ZjcwOWZlOWMxMTRjNjA0NjBiZjZlNDcyY2ZkYjlkNDRiZDhhZGYxNjk4MTM1MjYwZgo=",
"sha256": "d89bb873f9231c07129a96b76f4ee3fcbf768d9868b49f6c34461c8f6e2ef719"
},
{
"name": "a link is not a file whose bytes are its target",
"requiresSymlinks": true,
"entries": [
{
"path": "p",
"kind": "link",
"linkTarget": "p-real"
},
{
"path": "q",
"kind": "file",
"contentBase64": "cC1yZWFs"
},
{
"path": "p-real",
"kind": "file",
"contentBase64": "dGhlIHJlYWwgYnl0ZXM="
}
],
"streamBase64": "c2hhMjU2LXBhdGgtbGlzdC12MQpwAGwAYzNhYjA2OTJjZGEwMWE0MWRmNjBlNzhkZDBkN2Q5OTllNzZkODM0YWEyNTlhNTE5N2FkOTg5MWMzM2EyMGJiOApwLXJlYWwAZgAxY2E2ZTJiZWU0OTQwYzA2M2NhYWM4ZjE2OGY5YjQ0YTQ4ZTViNDRjMWQ5OGZmYTFjNWNiMjBmYWVlMGEwYmFiCnEAZgBjM2FiMDY5MmNkYTAxYTQxZGY2MGU3OGRkMGQ3ZDk5OWU3NmQ4MzRhYTI1OWE1MTk3YWQ5ODkxYzMzYTIwYmI4Cg==",
"sha256": "8db58d6312529f85d0d654809013f60e52c957f10177c4e9708553478adab86d"
},
{
"name": "nested paths sort by their whole byte sequence",
"entries": [
{
"path": "venv/lib/python3.12/site-packages/z.py",
"kind": "file",
"contentBase64": "eg=="
},
{
"path": "venv/lib/python3.12/site-packages/a.py",
"kind": "file",
"contentBase64": "YQ=="
},
{
"path": "venv/bin/python",
"kind": "file",
"contentBase64": "aW50ZXJwcmV0ZXI="
},
{
"path": "box.json",
"kind": "file",
"contentBase64": "e30="
}
],
"streamBase64": "c2hhMjU2LXBhdGgtbGlzdC12MQpib3guanNvbgBmADQ0MTM2ZmEzNTViMzY3OGExMTQ2YWQxNmY3ZTg2NDllOTRmYjRmYzIxZmU3N2U4MzEwYzA2MGY2MWNhYWZmOGEKdmVudi9iaW4vcHl0aG9uAGYAOTY2NmQ5ZTg4OTk0NDc3MzVjYjk4OTdiNzdkYmIxMjE3NTRmZDRkNTAzNjA5NzU4NzU1YmQzZmRhZTNhNGIyMgp2ZW52L2xpYi9weXRob24zLjEyL3NpdGUtcGFja2FnZXMvYS5weQBmAGNhOTc4MTEyY2ExYmJkY2FmYWMyMzFiMzlhMjNkYzRkYTc4NmVmZjgxNDdjNGU3MmI5ODA3Nzg1YWZlZTQ4YmIKdmVudi9saWIvcHl0aG9uMy4xMi9zaXRlLXBhY2thZ2VzL3oucHkAZgA1OTRlNTE5YWU0OTkzMTJiMjk0MzNiN2RkOGE5N2ZmMDY4ZGVmY2JhOTc1NWI2ZDVkMDBlODRjNTI0ZDY3YjA2Cg==",
"sha256": "619490fb8fba18079b1591756f04f7ece849658415476a6d57bf1a80308f5cb6"
}
]
}