# Trajectory JSON Lines `JsonlTrajectory` is the lazy atomistic view of the OPTIMADE trajectory JSON Lines holding format. It is loaded through `httk.core.load("run.traj.jsonl")` and saved with `httk.core.save(trajectory, "run.traj.jsonl")`; the serializer passes a generator of frame mappings to the reader/writer layer, so frames are not collected into a list. Compressed destinations such as `run.traj.jsonl.gz` use the normal core text compression path. ## The holding format The reader/writer layer lives in `httk.atomistic.io.optimade_jsonl`. The public filename convention is `.traj.jsonl`; the loader registers `.jsonl` because core strips one compression suffix and dispatches on the remaining final suffix. Thus `.traj.jsonl.gz` works through the normal text datastream/compression path. The first line is an OPTIMADE 1.2.0 dense partial-data header with an `x-httk-trajectory` description. Subsequent lines are frame objects containing `index`, `fractional_site_positions`, and `observables`; variable-cell files also contain `lattice_vectors`. See the `httk.atomistic.io.optimade_jsonl` module docstring for the normative schema. The format is float64 presentation data and intentionally has no exact-token channel. Binary framing is not part of this format; its framing and random-access trade-offs remain a separate design decision. `TrajectoryJsonlFile.path` returns the source filename string used to construct the lazy reader.