Add comprehensive spec audit results and pyMC_core issue reports

- CHANGELOG.md: Full audit findings organized by severity
- PYMC_CORE_ISSUES.md: 7 evidence-based bug reports for pyMC_core
  (wrong constants, broken path_len decoding, wrong TRACE hash,
  wrong SNR calculation)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Add comprehensive spec audit results and pyMC_core issue reports

- CHANGELOG.md: Full audit findings organized by severity
- PYMC_CORE_ISSUES.md: 7 evidence-based bug reports for pyMC_core
  (wrong constants, broken path_len decoding, wrong TRACE hash,
  wrong SNR calculation)
- Remove ERRATA.md: contents already covered by audit findings

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
swaitsandClaude Opus 4.6 committed 2026-04-01 21:37:57 -06:00
commit 9db901088e
79 files changed
+8923

No files matched your search

+165
View File
@@ -0,0 +1,165 @@
{
"$schema": "../../schema/test-vector.schema.json",
"name": "Header - Combined Field Encoding",
"spec_ref": "spec/02-header.md",
"protocol_version": 0,
"description": "Combinatorial tests of header byte encoding, exercising various combinations of version, payload type, and route type to verify correct bit packing.",
"vectors": [
{
"id": "hdr-000",
"description": "All-zero header: version=0, request=0, transport_flood=0",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "request",
"route_type": "transport_flood"
},
"transport_codes": [
0,
0
],
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"dest_hash": "00",
"src_hash": "00",
"cipher_mac": "0000",
"ciphertext": "00000000000000000000000000000000"
}
},
"binary": "00 0000 0000 00 0000 0000 00000000000000000000000000000000",
"notes": "Header: (0<<6)|(0<<2)|0 = 0x00."
},
{
"id": "hdr-001",
"description": "Version=0, ADVERT, DIRECT route",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "advert",
"route_type": "direct"
},
"path": {
"hash_size": 1,
"hash_count": 2,
"hashes": [
"AA",
"BB"
]
},
"payload": {
"data": "FF"
}
},
"binary": "12 02 AABB FF",
"notes": "Header: (0<<6)|(4<<2)|2 = 0x12. path_len=0x02 (hash_size=1, count=2). Path: AA BB."
},
{
"id": "hdr-002",
"description": "Version=1, CONTROL, FLOOD route",
"type": "encode_decode",
"structured": {
"header": {
"version": 1,
"payload_type": "control",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"data": "FF"
}
},
"binary": "6D 00 FF",
"notes": "Header: (1<<6)|(11<<2)|1 = 0x40+0x2C+0x01 = 0x6D."
},
{
"id": "hdr-003",
"description": "Version=0, RAW_CUSTOM, TRANSPORT_DIRECT with non-trivial transport codes",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "raw_custom",
"route_type": "transport_direct"
},
"transport_codes": [
256,
512
],
"path": {
"hash_size": 1,
"hash_count": 1,
"hashes": [
"AA"
]
},
"payload": {
"data": "CAFEBABE"
}
},
"binary": "3F 0001 0002 01 AA CAFEBABE",
"notes": "Header: (0<<6)|(15<<2)|3 = 0x3F. Transport codes: 256=0x0100 LE=0001, 512=0x0200 LE=0002."
},
{
"id": "hdr-004",
"description": "Version=0, TRACE, FLOOD with path",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "trace",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 3,
"hashes": [
"AA",
"BB",
"CC"
]
},
"payload": {
"data": "0102030405060708 09"
}
},
"binary": "25 03 AABBCC 010203040506070809",
"notes": "Header: (0<<6)|(9<<2)|1 = 0x25. path_len=0x03 (1-byte hashes, 3 hops)."
},
{
"id": "hdr-005",
"description": "Maximum header value that isn't 0xFF sentinel: version=2, RAW_CUSTOM, TRANSPORT_DIRECT",
"type": "encode_decode",
"structured": {
"header": {
"version": 2,
"payload_type": "raw_custom",
"route_type": "transport_direct"
},
"transport_codes": [
0,
0
],
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"data": "AA"
}
},
"binary": "BF 0000 0000 00 AA",
"notes": "Header: (2<<6)|(15<<2)|3 = 0x80+0x3C+0x03 = 0xBF."
}
]
}
@@ -0,0 +1,308 @@
{
"$schema": "../../schema/test-vector.schema.json",
"name": "Header - Payload Types",
"spec_ref": "spec/02-header.md",
"protocol_version": 0,
"description": "Tests encoding of all defined payload types in the header byte. Uses FLOOD routing and minimal payloads to isolate header encoding.",
"vectors": [
{
"id": "pt-000",
"description": "Payload type REQUEST (0x00) - header byte encodes type in bits 2-5",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "request",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"dest_hash": "AB",
"src_hash": "CD",
"cipher_mac": "1122",
"ciphertext": "DEADBEEFCAFEBABE0102030405060708"
}
},
"binary": "01 00 ABCD 1122 DEADBEEFCAFEBABE0102030405060708",
"notes": "Header: (0<<6)|(0<<2)|1 = 0x01. Payload: dest_hash(1) + src_hash(1) + MAC(2) + 16 bytes ciphertext."
},
{
"id": "pt-001",
"description": "Payload type RESPONSE (0x01)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "response",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"dest_hash": "AB",
"src_hash": "CD",
"cipher_mac": "1122",
"ciphertext": "DEADBEEFCAFEBABE0102030405060708"
}
},
"binary": "05 00 ABCD 1122 DEADBEEFCAFEBABE0102030405060708",
"notes": "Header: (0<<6)|(1<<2)|1 = 0x05."
},
{
"id": "pt-002",
"description": "Payload type TXT_MSG (0x02)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "txt_msg",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"dest_hash": "AB",
"src_hash": "CD",
"cipher_mac": "1122",
"ciphertext": "DEADBEEFCAFEBABE0102030405060708"
}
},
"binary": "09 00 ABCD 1122 DEADBEEFCAFEBABE0102030405060708",
"notes": "Header: (0<<6)|(2<<2)|1 = 0x09."
},
{
"id": "pt-003",
"description": "Payload type ACK (0x03)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "ack",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"ack_crc": "DEADBEEF"
}
},
"binary": "0D 00 EFBEADDE",
"notes": "Header: (0<<6)|(3<<2)|1 = 0x0D. CRC 0xDEADBEEF as LE = EFBEADDE."
},
{
"id": "pt-004",
"description": "Payload type ADVERT (0x04) - minimal advert with 1 byte payload",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "advert",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"data": "FF"
}
},
"binary": "11 00 FF",
"notes": "Header: (0<<6)|(4<<2)|1 = 0x11. Using raw payload to test header encoding in isolation."
},
{
"id": "pt-005",
"description": "Payload type GRP_TXT (0x05)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "grp_txt",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"channel_hash": "AB",
"cipher_mac": "1122",
"ciphertext": "DEADBEEFCAFEBABE0102030405060708"
}
},
"binary": "15 00 AB 1122 DEADBEEFCAFEBABE0102030405060708",
"notes": "Header: (0<<6)|(5<<2)|1 = 0x15."
},
{
"id": "pt-006",
"description": "Payload type GRP_DATA (0x06)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "grp_data",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"channel_hash": "AB",
"cipher_mac": "1122",
"ciphertext": "DEADBEEFCAFEBABE0102030405060708"
}
},
"binary": "19 00 AB 1122 DEADBEEFCAFEBABE0102030405060708",
"notes": "Header: (0<<6)|(6<<2)|1 = 0x19."
},
{
"id": "pt-007",
"description": "Payload type ANON_REQ (0x07)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "anon_req",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"data": "FF"
}
},
"binary": "1D 00 FF",
"notes": "Header: (0<<6)|(7<<2)|1 = 0x1D. Minimal payload to test header."
},
{
"id": "pt-008",
"description": "Payload type PATH (0x08)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "path",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"data": "FF"
}
},
"binary": "21 00 FF",
"notes": "Header: (0<<6)|(8<<2)|1 = 0x21."
},
{
"id": "pt-009",
"description": "Payload type TRACE (0x09)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "trace",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"data": "FF"
}
},
"binary": "25 00 FF",
"notes": "Header: (0<<6)|(9<<2)|1 = 0x25."
},
{
"id": "pt-010",
"description": "Payload type MULTIPART (0x0A)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "multipart",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"data": "FF"
}
},
"binary": "29 00 FF",
"notes": "Header: (0<<6)|(10<<2)|1 = 0x29."
},
{
"id": "pt-011",
"description": "Payload type CONTROL (0x0B)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "control",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"data": "FF"
}
},
"binary": "2D 00 FF",
"notes": "Header: (0<<6)|(11<<2)|1 = 0x2D."
},
{
"id": "pt-012",
"description": "Payload type RAW_CUSTOM (0x0F)",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "raw_custom",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"data": "CAFEBABE"
}
},
"binary": "3D 00 CAFEBABE",
"notes": "Header: (0<<6)|(15<<2)|1 = 0x3D."
}
]
}
+131
View File
@@ -0,0 +1,131 @@
{
"$schema": "../../schema/test-vector.schema.json",
"name": "Header - Route Types",
"spec_ref": "spec/02-header.md",
"protocol_version": 0,
"description": "Tests encoding and decoding of all 4 route types in the header byte, using ACK (payload_type=3) as a simple payload.",
"vectors": [
{
"id": "rt-000",
"description": "Route type TRANSPORT_FLOOD (0x00) with ACK payload",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "ack",
"route_type": "transport_flood"
},
"transport_codes": [
0,
0
],
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"ack_crc": "01020304"
}
},
"binary": "0C 0000 0000 00 04030201",
"notes": "Header: version=0, payload_type=3 (ACK), route_type=0 (TRANSPORT_FLOOD). 0x0C = (0<<6)|(3<<2)|0. Transport codes both zero. path_len=0x00 (hash_size=1, count=0). ACK CRC 0x01020304 as LE = 04030201."
},
{
"id": "rt-001",
"description": "Route type FLOOD (0x01) with ACK payload",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "ack",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"ack_crc": "01020304"
}
},
"binary": "0D 00 04030201",
"notes": "Header: 0x0D = (0<<6)|(3<<2)|1. No transport codes. path_len=0x00. ACK CRC as LE."
},
{
"id": "rt-002",
"description": "Route type DIRECT (0x02) with ACK payload",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "ack",
"route_type": "direct"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"ack_crc": "01020304"
}
},
"binary": "0E 00 04030201",
"notes": "Header: 0x0E = (0<<6)|(3<<2)|2. No transport codes."
},
{
"id": "rt-003",
"description": "Route type TRANSPORT_DIRECT (0x03) with ACK payload",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "ack",
"route_type": "transport_direct"
},
"transport_codes": [
4660,
22136
],
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"ack_crc": "01020304"
}
},
"binary": "0F 3412 7856 00 04030201",
"notes": "Header: 0x0F = (0<<6)|(3<<2)|3. Transport codes: 4660=0x1234 as LE=3412, 22136=0x5678 as LE=7856."
},
{
"id": "rt-004",
"description": "TRANSPORT_FLOOD with non-zero transport codes",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "ack",
"route_type": "transport_flood"
},
"transport_codes": [
65535,
1
],
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"ack_crc": "FFFFFFFF"
}
},
"binary": "0C FFFF 0100 00 FFFFFFFF",
"notes": "Transport code 1: 0xFFFF as LE = FFFF. Transport code 2: 1 as LE = 0100. CRC 0xFFFFFFFF as LE."
}
]
}
+97
View File
@@ -0,0 +1,97 @@
{
"$schema": "../../schema/test-vector.schema.json",
"name": "Header - Protocol Versions",
"spec_ref": "spec/02-header.md",
"protocol_version": 0,
"description": "Tests encoding of all 4 protocol version values in header bits 6-7. Uses ACK (type=3) with FLOOD routing as a simple baseline.",
"vectors": [
{
"id": "ver-000",
"description": "Version 0 (V1, current) - bits 6-7 = 00",
"type": "encode_decode",
"structured": {
"header": {
"version": 0,
"payload_type": "ack",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"ack_crc": "00000001"
}
},
"binary": "0D 00 01000000",
"notes": "Header: (0<<6)|(3<<2)|1 = 0x0D. Version 0 = V1."
},
{
"id": "ver-001",
"description": "Version 1 (V2, reserved) - bits 6-7 = 01",
"type": "encode_decode",
"structured": {
"header": {
"version": 1,
"payload_type": "ack",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"ack_crc": "00000001"
}
},
"binary": "4D 00 01000000",
"notes": "Header: (1<<6)|(3<<2)|1 = 0x4D. Version 1 = V2 (reserved)."
},
{
"id": "ver-002",
"description": "Version 2 (V3, reserved) - bits 6-7 = 10",
"type": "encode_decode",
"structured": {
"header": {
"version": 2,
"payload_type": "ack",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"ack_crc": "00000001"
}
},
"binary": "8D 00 01000000",
"notes": "Header: (2<<6)|(3<<2)|1 = 0x8D. Version 2 = V3 (reserved)."
},
{
"id": "ver-003",
"description": "Version 3 (V4, reserved) - bits 6-7 = 11",
"type": "encode_decode",
"structured": {
"header": {
"version": 3,
"payload_type": "ack",
"route_type": "flood"
},
"path": {
"hash_size": 1,
"hash_count": 0,
"hashes": []
},
"payload": {
"ack_crc": "00000001"
}
},
"binary": "CD 00 01000000",
"notes": "Header: (3<<6)|(3<<2)|1 = 0xCD. Version 3 = V4 (reserved)."
}
]
}