Specification

2. File layout

A .plxi file is a text section followed, optionally, by a binary appendix, followed by a fixed binary footer:

offset 0          header line: 256 bytes of header content padded with
                  spaces, then LF (257 bytes)
offset 257        body: zero or more JSONL record lines, each ending in LF
                  marker line "===PLXI_BINARY_APPENDIX===" LF
                  (only when an appendix exists)
T                 = text_section_size: first byte after the text section
                  padding: 0x00 bytes up to the next multiple of 64
                  (only when an appendix exists)
A                 = csdt_offset: embedded CSDT container, csdt_size bytes
                  (only when an appendix exists)
L - 96            footer: 96 bytes
L                 end of file
Two strips showing the parts of a pack in file order.First strip, a pack with an appendix: header line, 257 bytes; records, one JSON record per line; marker line; padding with zero bytes up to a multiple of 64; appendix, csdt_size bytes; footer, 96 bytes. Offsets under the strip: 0, 257, T, A, L − 96, L. A bracket over records, marker line, padding and appendix reads: the digest covers these bytes, 257 up to L − 96. Second strip, a pack without an appendix: header line, records, footer; T equals L − 96.The digest covers these bytes: 257 up to L − 96header line257 bytesrecordsone JSON recordper line ⋯marker lineonly with anappendixpaddingzero bytes up toa multiple of 64appendixcsdt_sizebytesfooter96 bytes0257TAL − 96LWithout an appendix: T = L − 96header line257 bytesrecordsone JSON recordper line ⋯footer96 bytes0257L − 96Lsolid: always presentdashed: only with an appendix
Figure 2-1. The parts of a pack, in file order. Not to scale; sizes are written in the cells. A dashed outline is present only when the pack has an appendix.First strip, a pack with an appendix: header line, 257 bytes; records, one JSON record per line; marker line; padding with zero bytes up to a multiple of 64; appendix, csdt_size bytes; footer, 96 bytes. Offsets under the strip: 0, 257, T, A, L − 96, L. A bracket over records, marker line, padding and appendix reads: the digest covers these bytes, 257 up to L − 96. Second strip, a pack without an appendix: header line, records, footer; T equals L − 96.

Rules:

  1. The header line MUST be exactly 257 bytes: 256 bytes of header content and padding (§3) followed by one LF (0x0A) at offset 256. The body therefore always starts at offset 257.
  2. The footer MUST occupy the last 96 bytes of the file. A file shorter than 257 + 96 = 353 bytes is not a PLXI v6 file (invalid_header).
  3. Without an appendix, the footer MUST follow the last body line directly: T = L - 96, csdt_offset = 0, csdt_size = 0, and no marker line is present.
  4. With an appendix (csdt_size > 0):
    • The marker line ===PLXI_BINARY_APPENDIX=== followed by LF MUST follow the last record line. T is the offset of the byte after that LF.
    • Padding of (64 - T mod 64) mod 64 bytes, each 0x00, MUST follow, so that csdt_offset = T rounded up to a multiple of 64.
    • The embedded container MUST start at csdt_offset and MUST end at L - 96: csdt_offset + csdt_size = L - 96.
  5. csdt_offset MUST be 0 whenever csdt_size is 0.

The 64-byte placement exists so that the embedded CSDT container's own 64-byte alignment guarantees hold when the whole .plxi file is memory-mapped at a page-aligned base.

© 2020-2026 Cintile Inc. All Rights Reserved.

Anyone may implement this format. Copying or republishing the text of this specification requires permission from Cintile Inc.

Sections