data/<block-ulid>/meta.json
meta.json
The one file in a block directory that is not binary: plain JSON, written last
and fsynced when a block is cut. Its presence is what marks a block directory as complete
and usable. It carries the block's identity (ulid), its time range, summary
statistics, and its compaction provenance.
Field notes & invariants
- End of the block's time range, EXCLUSIVE: samples satisfy minTime <= t < maxTime. minTime/maxTime here bound the whole block; the per-chunk mint/maxt in the index are both inclusive.
- 1 = written directly from the head block. Each compaction merge of blocks produces a block with level = max(input levels) + 1.
- ULIDs of the level-1 ancestor blocks whose data is inside. For a level-1 block, just itself. Compacted blocks also gain a "parents" list of their direct inputs.
- Deleting a block = deleting its directory; rewriting
meta.jsonatomically (write + rename) is how tools likepromtool tsdband Thanos annotate blocks.