{
 "schema_version": "1.0",
 "page_kind": "article",
 "pack_kind": "generate",
 "slug": "inside-a-gguf-file",
 "title": "Inside a GGUF file",
 "dek": "Many language models that run on a home machine arrive as a .gguf file, the format llama.cpp reads: this page opens one from its first byte, reading the header by hand, the metadata a file carries about itself, the table of its weights, the padding that lets it be memory-mapped and llama.cpp's own loading sequence, and says why this one self-describing file replaced three older formats on 2023-08-21.",
 "published": "2026-10-15",
 "series": [
  "guide"
 ],
 "licence": "CC BY 4.0",
 "status": "pending-judge",
 "pack_note": "no judge is seated, so every chip is held",
 "notice": "items with published:false are held and are not this page's published words",
 "source": {
  "url": "https://research.strata2signal.com/inside-a-gguf-file/",
  "md_url": "https://research.strata2signal.com/inside-a-gguf-file/index.md",
  "md_sha": "81357a31f7a19cc0a2164eadc25c9a2560a52206cd3dbe383447fb78fdbe57b7",
  "html_sha": "a252b38640b28ac31693d7358813188d2213bd081b3707d2afd5558a9e2bc6e0",
  "anchors_sha": "5d87ed49a75595f4d24530bfae47526503fcb57fc16c3a097604f04c8d8586a8"
 },
 "short": {
  "paragraph": "A GGUF file is a language model packed for programs built on the ggml library, llama.cpp first among them. It describes itself: four bytes that spell GGUF, a version number, a count of tensors (the model's weights, in named blocks) and a count of metadata entries; then the metadata, where the architecture, the context length, the whole tokenizer and the chat template ride inside the file; then a table giving every tensor's name, shape, type and position; then padding to a 32-byte boundary; then the weights. We read the header of the file we benched on Qwen3.8-Flash-Next in October 2026: version 3, 67 metadata entries (10.9 MB of them the tokenizer), 1,223 tensors in 13 different storage types (ten of them compressed) inside a file tagged IQ3S, 29 bytes of padding, and no draft head. For every one of the 1,223 tensors, the byte count worked out from its shape and its type's block size matched the file's own offsets, and the 29 bytes after the table are the only padding in 54.8 GB. llama.cpp opens such a file in a fixed order (magic, version, counts, keys, table, padding, then the weights by memory map or by copy), and its code at one commit is read beside the file below. llama.cpp merged the format on 2023-08-21, replacing GGML, GGMF and GGJT.",
  "from_dek": false,
  "counts": {
   "words": 7070,
   "minutes": 32,
   "tables": 8,
   "kit": false
  },
  "bullets": []
 },
 "sections": [
  {
   "id": "what-a-gguf-file-is",
   "heading": "What a GGUF file is",
   "level": 2,
   "span": [
    3906,
    5115
   ],
   "chunks": [
    [
     3906,
     5115
    ]
   ],
   "chars": 1209,
   "digest": "GGUF is a file format for storing models for inference with GGML and executors based on GGML. It aims for single-file deployment, extensibility, and mmap compatibility. Unlike tensor-only formats, GGUF encodes both tensors and a standardized set of metadata using a key-value structure for hyperparameters.",
   "digest_skipped": null
  },
  {
   "id": "four-parts-then-the-weights",
   "heading": "Four parts, then the weights",
   "level": 2,
   "span": [
    5115,
    6326
   ],
   "chunks": [
    [
     5115,
     6326
    ]
   ],
   "chars": 1211,
   "digest": "The specification writes the file as C structs in reading order: the header, metadata, the tensor table, padding, and then the weights. Everything a program needs to lay the model out comes before the first weight.",
   "digest_skipped": null
  },
  {
   "id": "the-first-147-bytes-by-hand",
   "heading": "The first 147 bytes, by hand",
   "level": 2,
   "span": [
    6326,
    11517
   ],
   "chunks": [
    [
     6326,
     11517
    ]
   ],
   "chars": 5191,
   "digest": null,
   "digest_skipped": null
  },
  {
   "id": "the-keys-that-matter",
   "heading": "The keys that matter",
   "level": 2,
   "span": [
    11517,
    18559
   ],
   "chunks": [
    [
     11517,
     18559
    ]
   ],
   "chars": 7042,
   "digest": "Shard 1 carries 67 keys, including architecture, name, and file type. The tokenizer is not a sidecar; its arrays take 99.9 % of the metadata's 10,946,709 bytes. The chat template is also inside, allowing an engine to serve a chat from one file.",
   "digest_skipped": null
  },
  {
   "id": "the-tensor-table",
   "heading": "The tensor table",
   "level": 2,
   "span": [
    18559,
    25881
   ],
   "chunks": [
    [
     18559,
     25881
    ]
   ],
   "chars": 7322,
   "digest": "Shard 1's 1,223 tensors take 77,622 bytes of table. The table contains no fixed row width, so a reader must walk it. Tensor byte counts are determined by their type, which defines how many weights a block holds and how many bytes the block takes.",
   "digest_skipped": null
  },
  {
   "id": "twenty-nine-bytes-and-the-memory-map",
   "heading": "Twenty-nine bytes, and the memory map",
   "level": 2,
   "span": [
    25881,
    30449
   ],
   "chunks": [
    [
     25881,
     30449
    ]
   ],
   "chars": 4568,
   "digest": null,
   "digest_skipped": null
  },
  {
   "id": "how-llamacpp-loads-one-step-by-step",
   "heading": "How llama.cpp loads one, step by step",
   "level": 2,
   "span": [
    30449,
    35224
   ],
   "chunks": [
    [
     30449,
     35224
    ]
   ],
   "chars": 4775,
   "digest": "llama.cpp loads a file by opening it, reading the header, metadata, and tensor table, then seeking to the data. It names the architecture, opens other shards, settles the file type, builds the tokenizer, and decides where each layer lives before mapping or reading the files.",
   "digest_skipped": null
  },
  {
   "id": "the-draft-head-that-is-not-there",
   "heading": "The draft head that is not there",
   "level": 2,
   "span": [
    35224,
    37266
   ],
   "chunks": [
    [
     35224,
     37266
    ]
   ],
   "chars": 2042,
   "digest": "The file analyzed carries no draft-head block. While the spec allows for multi-token prediction weights to be distributed inside the base model, the searched keys and tensor names in Shard 1 and Shard 2 came back empty.",
   "digest_skipped": null
  },
  {
   "id": "where-it-came-from",
   "heading": "Where it came from",
   "level": 2,
   "span": [
    37266,
    39610
   ],
   "chunks": [
    [
     37266,
     39610
    ]
   ],
   "chars": 2344,
   "digest": "The GGUF format evolved from GGML, GGMF, and GGJT. Unlike previous formats, GGUF uses key-value pairs for metadata, which allows for extensibility and prevents breaking changes when adding new hyperparameters.",
   "digest_skipped": null
  },
  {
   "id": "who-reads-it",
   "heading": "Who reads it",
   "level": 2,
   "span": [
    39610,
    40800
   ],
   "chunks": [
    [
     39610,
     40800
    ]
   ],
   "chars": 1190,
   "digest": null,
   "digest_skipped": null
  },
  {
   "id": "a-second-file-through-ollama",
   "heading": "A second file, through Ollama",
   "level": 2,
   "span": [
    40800,
    42036
   ],
   "chunks": [
    [
     40800,
     42036
    ]
   ],
   "chars": 1236,
   "digest": null,
   "digest_skipped": null
  },
  {
   "id": "what-this-page-does-not-say",
   "heading": "What this page does not say",
   "level": 2,
   "span": [
    42036,
    42795
   ],
   "chunks": [
    [
     42036,
     42795
    ]
   ],
   "chars": 759,
   "digest": "This page reads headers but does not measure anything. It does not compare compression or time memory-mapped loads. It does not state what any other engine does with each key.",
   "digest_skipped": null
  },
  {
   "id": "who-ran-this-and-thanks",
   "heading": "Who ran this, and thanks",
   "level": 2,
   "span": [
    42795,
    48733
   ],
   "chunks": [
    [
     42795,
     48733
    ]
   ],
   "chars": 5938,
   "digest": null,
   "digest_skipped": "credits"
  }
 ],
 "chips": [
  {
   "id": "c-d34ae6bf",
   "q": "what defines the gguf file format?",
   "a": "GGUF is a file format for storing models for inference with GGML and executors based on GGML. It is designed for single-file deployment, extensibility, and mmap compatibility, using a key-value structure for metadata rather than a list of untyped values.",
   "cites": [
    "what-a-gguf-file-is"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-fd70b7a1",
   "q": "how is a gguf file structured?",
   "a": "The file consists of a header, metadata, a tensor table, padding to an alignment, and finally the weights. Everything required to lay out the model is located before the first weight.",
   "cites": [
    "four-parts-then-the-weights"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-942eb2db",
   "q": "how are numbers written in gguf files?",
   "a": "Models are little-endian by default, meaning a number wider than one byte is written lowest byte first. For example, the four bytes 03 00 00 00 represent the number 3.",
   "cites": [
    "the-first-147-bytes-by-hand"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-1864f3b9",
   "q": "what steps does llama.cpp take to load a model?",
   "a": "The process involves opening the file, reading the header and metadata, reading the tensor table, seeking to the data, naming the architecture, opening other shards, settling the file type, loading hyperparameters, building the tokenizer, deciding layer placement, and finally mapping or reading the files.",
   "cites": [
    "how-llamacpp-loads-one-step-by-step"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-e257fb2e",
   "q": "what is the history of the gguf format?",
   "a": "GGUF evolved from unversioned GGML and versioned GGMF, and the aligned GGJT format. It was designed to solve issues where adding new hyperparameters would break older readers by using a key-value structure for metadata.",
   "cites": [
    "where-it-came-from"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  }
 ],
 "related": [
  {
   "slug": "the-compressed-photograph",
   "why": "shares ground with § The tensor table · § The reveal: a \"4-bit model\" is not 4-bit"
  },
  {
   "slug": "three-at-the-table",
   "why": "shares ground with § The tensor table · § The arithmetic that catches a mixture red-handed"
  },
  {
   "slug": "how-the-print-lab-works",
   "why": "shares ground with § The tensor table · § Numbers, so it isn't just talk"
  }
 ],
 "thanks": "## Who ran this, and thanks {#who-ran-this-and-thanks}\n\nISTA-DASLab (the two GGUF shards we opened, their GSQ-RCO quantization of Qwen3.8-Flash-Next, under the base model's licence); Qwen (the model and its card, Qwen Community License 1.0); Georgi Gerganov, philpax and the ggml authors (llama.cpp and ggml, MIT; the GGUF specification; the loader source read line by line here); Mistral AI (the two models in our Ollama library, each under the Apache License 2.0 its Ollama listing shows); Ollama (MIT); the Strata engine's author (github.com/Niko1221/Strata; MIT); Hugging Face (the GGUF page and the repository listings); Python's standard library (`struct`, which read every integer on this page). None of them owed us anything. A small (human) team chose the file, pressed the keys and read the pages; a fleet of AI agents wrote the reader, ran it and drafted the prose.\n\nRead first-hand on 2026-10-14 (UTC):\n\n- The GGUF specification: [`docs/gguf.md`](https://github.com/ggml-org/ggml/blob/6af560d55df03ad92116e3c0a697779584477e85/docs/gguf.md) in the ggml repository at commit `6af560d5` (2026-07-09; the `mtp` sidecar joined its naming convention in [#1496](https://github.com/ggml-org/ggml/pull/1496), 2026-05-21); [ggml #302](https://github.com/ggml-org/ggml/pull/302), the specification's pull request (opened 2023-06-25, merged 2023-11-01)\n- llama.cpp pull requests: [#613](https://github.com/ggml-org/llama.cpp/pull/613) (merged 2023-03-30), [#2398](https://github.com/ggml-org/llama.cpp/pull/2398) (opened 2023-07-26, merged 2023-08-21), [#2821](https://github.com/ggml-org/llama.cpp/pull/2821) (merged 2023-08-27), [#3552](https://github.com/ggml-org/llama.cpp/pull/3552) (merged 2023-10-20), [#29761](https://github.com/ggml-org/llama.cpp/pull/29761) (merged 2026-10-01, and its author's comment of the same day)\n- llama.cpp source at commit `efe3626b` (2026-10-12): [`gguf-py/gguf/constants.py`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/gguf-py/gguf/constants.py) (the type numbers, `MOSTLY_IQ3_S` = 26, `Q2_0` = 42, the `nextn` names, the `general.sampling` keys); [`ggml/src/gguf.cpp`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/ggml/src/gguf.cpp) and [`ggml/include/gguf.h`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/ggml/include/gguf.h) (the header reader: magic, version, counts, keys, table, padding, offsets); [`ggml/src/ggml-common.h`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/ggml/src/ggml-common.h) and [`ggml/src/ggml.c`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/ggml/src/ggml.c) (the block structs and the type table); [`src/llama.cpp`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/src/llama.cpp), [`src/llama-model-loader.cpp`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/src/llama-model-loader.cpp), [`src/llama-model.cpp`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/src/llama-model.cpp), [`src/llama-vocab.cpp`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/src/llama-vocab.cpp) and [`src/llama-mmap.cpp`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/src/llama-mmap.cpp) (the load order, the splits, the hyperparameters, the tokenizer, the layer placement, the map); [`common/arg.cpp`](https://github.com/ggml-org/llama.cpp/blob/efe3626b119ff81033e309c3ba07a770bef2c546/common/arg.cpp) (the `--load-mode`, `--lazy-mode` and `-ngl` help text); the [README](https://github.com/ggml-org/llama.cpp/blob/master/README.md), as of 2026-10-14\n- Hugging Face: [GGUF](https://huggingface.co/docs/hub/en/gguf) (\"GGUF was developed by @ggerganov\"; the viewer; the safetensors sentence); the model page [Qwen/Qwen3.8-Flash-Next](https://huggingface.co/Qwen/Qwen3.8-Flash-Next) (the parts and the context length); the repository listings of [ISTA-DASLab/Qwen3.8-Flash-Next-GSQ-RCO-GGUF](https://huggingface.co/ISTA-DASLab/Qwen3.8-Flash-Next-GSQ-RCO-GGUF) (revision `ed59f920`, last changed 2026-09-29; the RCO sentence and the 3.50 in its bpw column) and [ggml-org/Qwen3.8-Flash-Next-GGUF](https://huggingface.co/ggml-org/Qwen3.8-Flash-Next-GGUF) (last changed 2026-10-13)\n- Ollama: [Importing a model](https://docs.ollama.com/import) and the [Modelfile reference](https://docs.ollama.com/modelfile); [Improved performance and model support with GGUF](https://ollama.com/blog/improved-performance-and-model-support-with-gguf), 2026-06-05; [`server/routes.go`](https://github.com/ollama/ollama/blob/7a5ae12ead68342df402177cfabf4e7fc95aaca5/server/routes.go) at commit `7a5ae12e` (2026-10-13), line 2067; `ollama show --verbose` on Ollama 0.32.14, run 2026-10-14\n- LM Studio: its `lms get` reference (lmstudio.ai/docs/cli/get) and its front page (lmstudio.ai), as read 2026-10-14\n- The Strata engine: the [README](https://github.com/Niko1221/Strata) and [docs/DETAILS.md](https://github.com/Niko1221/Strata/blob/main/docs/DETAILS.md), as read 2026-10-14\n- This workshop's own released pages: [Qwen3.8-Flash-Next on three cards](https://research.strata2signal.com/flash-next-on-three-cards/) (\"carries no draft-head block\", the memory-map notes), [the full bench](https://research.strata2signal.com/flash-next-why-the-first-word-comes-sooner/) (the two shards' sizes and hashes), [The compressed photograph](https://research.strata2signal.com/the-compressed-photograph/), [A short history of Ollama](https://research.strata2signal.com/a-short-history-of-ollama/), [A short history of vLLM](https://research.strata2signal.com/a-short-history-of-vllm/)\n\nCorrections and later measurements will be added below, each dated (UTC), with a window at both ends where one applies and saying in plain words what it counts.",
 "kit": null,
 "seat_class": {
  "writer": "gemma-class",
  "judge": null,
  "writer_runtime": "vllm"
 },
 "bench": {
  "bullets_written": 3,
  "bullets_kept": 0,
  "digests_written": 12,
  "digests_kept": 8,
  "chips_written": 8,
  "chips_kept": 5,
  "chips_grounded": 0,
  "chips_published": 0,
  "dropped_by": {
   "new_noun": 0,
   "figure": 1,
   "length": 0,
   "cite": 0,
   "judge": 0,
   "quote": 0,
   "directive": 0,
   "redaction": 0,
   "profanity": 0,
   "identifier": 0,
   "bare_figure": 0,
   "house_voice": 0,
   "editorial": 0,
   "hand-edit": 9
  },
  "new_noun_tokens_checked": [
   "00",
   "03",
   "1",
   "1's",
   "10",
   "147",
   "2",
   "223",
   "29",
   "3",
   "32",
   "622",
   "67",
   "709",
   "77",
   "946",
   "99.9",
   "C",
   "Face",
   "GGJT",
   "GGMF",
   "GGML",
   "GGUF",
   "Hugging",
   "LM",
   "Ollama",
   "Ollama's",
   "Shard",
   "Strata",
   "Studio",
   "TEMPLATE"
  ],
  "new_noun_tokens_withheld": 0,
  "figure_definition": "v3",
  "figure_boundary": "guarded",
  "drops": [
   {
    "kind": "bullet",
    "reason": "figure",
    "item": "the first 147 bytes of shard 1 contain the magic GGUF",
    "detail": "terminal token carries no figure"
   },
   {
    "kind": "bullet",
    "reason": "hand-edit",
    "item": null,
    "item_chars": 42,
    "text_sha": "afa775c80a7d",
    "figure": "1,223",
    "withheld": "one bullet removed from this pack by hand",
    "removed_utc": "2026-10-14",
    "why": "drops its unit: the article gives shard 1's tensor table 1,223 tensors, and the line ends on a bare 1,223",
    "detail": "removed from this pack by hand on 2026-10-14 (UTC), after the writer ran and after the gates had counted: drops its unit: the article gives shard 1's tensor table 1,223 tensors, and the line ends on a bare 1,223. Not a gate drop, and recorded here so the ledger adds up."
   },
   {
    "kind": "bullet",
    "reason": "hand-edit",
    "item": null,
    "item_chars": 62,
    "text_sha": "a7795da82258",
    "figure": "99.9",
    "withheld": "one bullet removed from this pack by hand",
    "removed_utc": "2026-10-14",
    "why": "drops its condition: 99.9 % is the share of one file's metadata, shard 1's 10,946,709 bytes, that its three tokenizer arrays take; the line states it of GGUF metadata in general",
    "detail": "removed from this pack by hand on 2026-10-14 (UTC), after the writer ran and after the gates had counted: drops its condition: 99.9 % is the share of one file's metadata, shard 1's 10,946,709 bytes, that its three tokenizer arrays take; the line states it of GGUF metadata in general. Not a gate drop, and recorded here so the ledger adds up."
   },
   {
    "kind": "digest",
    "reason": "hand-edit",
    "item": null,
    "item_chars": 272,
    "text_sha": "27178f878d52",
    "section": "the-first-147-bytes-by-hand",
    "withheld": "one section digest removed from this pack by hand",
    "removed_utc": "2026-10-14",
    "why": "understates the section: the first 147 bytes hold the header and three whole metadata pairs, which the section's table prints, not one pair",
    "detail": "removed from this pack by hand on 2026-10-14 (UTC), after the writer ran and after the gates had counted: understates the section: the first 147 bytes hold the header and three whole metadata pairs, which the section's table prints, not one pair. Not a gate drop, and recorded here so the ledger adds up."
   },
   {
    "kind": "digest",
    "reason": "hand-edit",
    "item": null,
    "item_chars": 213,
    "text_sha": "4d8a4c40c565",
    "section": "who-reads-it",
    "withheld": "one section digest removed from this pack by hand",
    "removed_utc": "2026-10-14",
    "why": "says more than its section: no reader there is said to manage tokenizers, and vLLM reads the format through a separately installed plugin since v0.24.0, a condition the line drops",
    "detail": "removed from this pack by hand on 2026-10-14 (UTC), after the writer ran and after the gates had counted: says more than its section: no reader there is said to manage tokenizers, and vLLM reads the format through a separately installed plugin since v0.24.0, a condition the line drops. Not a gate drop, and recorded here so the ledger adds up."
   },
   {
    "kind": "digest",
    "reason": "hand-edit",
    "item": null,
    "item_chars": 201,
    "text_sha": "962d94fcb85b",
    "section": "a-second-file-through-ollama",
    "withheld": "one section digest removed from this pack by hand",
    "removed_utc": "2026-10-14",
    "why": "drops its condition: the section says Ollama's server deletes the chat template key from the metadata it returns, not from the file, and names no subset of models; the line drops both",
    "detail": "removed from this pack by hand on 2026-10-14 (UTC), after the writer ran and after the gates had counted: drops its condition: the section says Ollama's server deletes the chat template key from the metadata it returns, not from the file, and names no subset of models; the line drops both. Not a gate drop, and recorded here so the ledger adds up."
   },
   {
    "kind": "chip",
    "reason": "hand-edit",
    "item": null,
    "item_chars": 277,
    "text_sha": "692106c439b4",
    "chip_id": "c-a3431919",
    "withheld": "one chip removed from this pack by hand",
    "removed_utc": "2026-10-14",
    "why": "says more than its section: general.name is a display name, not a key a runtime needs, and general.file_type only overrides the loader's guessed type",
    "detail": "removed from this pack by hand on 2026-10-14 (UTC), after the writer ran and after the gates had counted: says more than its section: general.name is a display name, not a key a runtime needs, and general.file_type only overrides the loader's guessed type. Not a gate drop, and recorded here so the ledger adds up."
   },
   {
    "kind": "chip",
    "reason": "hand-edit",
    "item": null,
    "item_chars": 252,
    "text_sha": "1449688992ab",
    "chip_id": "c-9ca8d813",
    "withheld": "one chip removed from this pack by hand",
    "removed_utc": "2026-10-14",
    "why": "wrong as written: the first dimension divided by the block's weights, times the block's bytes, is one row's byte stride, not the tensor's size, which multiplies that by the number of rows",
    "detail": "removed from this pack by hand on 2026-10-14 (UTC), after the writer ran and after the gates had counted: wrong as written: the first dimension divided by the block's weights, times the block's bytes, is one row's byte stride, not the tensor's size, which multiplies that by the number of rows. Not a gate drop, and recorded here so the ledger adds up."
   },
   {
    "kind": "chip",
    "reason": "hand-edit",
    "item": null,
    "item_chars": 276,
    "text_sha": "165d24ae4544",
    "chip_id": "c-053bf424",
    "withheld": "one chip removed from this pack by hand",
    "removed_utc": "2026-10-14",
    "why": "wrong as written: the padding does not let the operating system map the file, which it can do for any file; it keeps each tensor at a multiple of 32 so the engine can use it in place from the map",
    "detail": "removed from this pack by hand on 2026-10-14 (UTC), after the writer ran and after the gates had counted: wrong as written: the padding does not let the operating system map the file, which it can do for any file; it keeps each tensor at a multiple of 32 so the engine can use it in place from the map. Not a gate drop, and recorded here so the ledger adds up."
   },
   {
    "kind": "digest",
    "reason": "hand-edit",
    "item": null,
    "item_chars": 243,
    "text_sha": "0d98434fb2b6",
    "section": "twenty-nine-bytes-and-the-memory-map",
    "withheld": "one section digest removed from this pack by hand",
    "removed_utc": "2026-10-14",
    "why": "wrong as written: the section calls the 32-byte padding the whole of mmap compatibility, the thing that keeps each tensor at a multiple of 32 in the map; the line credits that compatibility with the map itself, which is the operating system treating any file it maps as memory",
    "detail": "removed from this pack by hand on 2026-10-14 (UTC), after the writer ran and after the gates had counted: wrong as written: the section calls the 32-byte padding the whole of mmap compatibility, the thing that keeps each tensor at a multiple of 32 in the map; the line credits that compatibility with the map itself, which is the operating system treating any file it maps as memory. Not a gate drop, and recorded here so the ledger adds up."
   }
  ]
 },
 "generated_utc": "2026-10-14T17:42:35Z"
}
