Record size corpusstable
§1 The five quantities
Copied from `VER-1.1-draft.md` §7, verbatim except for layout:
| # | Quantity | Limit | Level |
|---|---|---|---|
| (a) | The serialized Record document (compact UTF-8 JSON, as transmitted) | 10 MiB | MUST NOT exceed |
| (b) | Sum of all metadata.raw[].bytes, after base64 decoding | 6 MiB | MUST NOT exceed |
| (c) | Any single inline vector (vector, or vector_b64 after decoding) | 6 MiB | MUST NOT exceed |
| (d) | spaces[] and embeddings[] entry counts, each | 64 | SHOULD NOT exceed |
| (e) | provenance.chain[] entry count | 1024 | SHOULD NOT exceed |
1 MiB = 1,048,576 bytes, so 10 MiB = 10,485,760 bytes and 6 MiB = 6,291,456 bytes — the exact integers `ver_validator/schema_stage.py` carries as RECORD_ADVISORY_BYTES, RAW_ADVISORY_BYTES and VECTOR_ADVISORY_BYTES (and SPACES_SHOULD_MAX / EMBEDDINGS_SHOULD_MAX / CHAIN_SHOULD_MAX for (d)/(e)). scripts/measure_record_sizes.py imports these constants rather than retyping them, and imports the module's own _b64_decoded_length and _inline_vector_bytes functions rather than reimplementing their arithmetic, so every "fraction of budget" figure below is computed exactly as VER105/VER106 would compute it against the same bytes.
