Tags give the ability to mark specific points in history as being important
-
v0.2.1
Release: hipo-tools 0.2.16c10ab4a · ·hipo-tools 0.2.1 A dependency-only release: oxihipo 0.5.3 -> 0.6.0. No behaviour of this CLI changes — the output of sixteen commands over a 326,074-event CLAS12 file is byte-identical to 0.2.0 on stdout — but the library underneath fixes four things this tool sits directly on: - a bank at or past 2^24 bytes was written **truncated with no error**. The HIPO structure length word is 24-bit and the writer put a full u32 in it, so 5,000,000 Int rows came back as 805,696 while `finish()` returned Ok. Every command here that writes a file — skim, sample, split, merge, convert, doctor — went through that path; - iterating onto a zero-event record panicked rather than skipping it; - `read_columns` could return buffers contradicting their own offsets on a corrupted per-column record, so stats/hist/banks could have read the wrong values instead of failing; - `Bank::read` was documented "Infallible" and aborted in release builds when given a placeholder handle. oxihipo 0.6.0 makes `BankBuilder::finish` and `EventBuilder::add` fallible, which is breaking for that crate but not for this one, which uses neither. Checked rather than assumed, along with the value-level fidelity, `--where` oracle and 335-invocation crash sweeps, all still passing. 204 tests.
-
v0.2.0
Release: hipo-tools 0.2.0aba2744e · ·hipo-tools 0.2.0 A correctness release. Everything here fixes something that was silently wrong — a command that answered a question nobody asked, or crashed — rather than something that failed visibly. Breaking (why this is a minor bump, not a patch): - `--topology` is refused by the twenty commands that never applied it. `quality --topology "e-"` used to exit 0 having measured every event in the file; it now exits non-zero and says to `skim` first. - `sample --events` selects a different set of events: it keyed `--every`/`--fraction` on the position inside the window, so `--seed` meant a different sample per window. Unwindowed `sample` is unaffected, checked against the 0.1.0 binary across five modes. Fixed: - `records` panicked on a non-ASCII file name over 28 bytes whose trim point split a character — four of seven realistic names tried against 0.1.0 aborted. - `count --where "-5 < chi2pid < 5"` was rejected by the argument parser. It was the README's own example, on the most-used command. - `tail` ignored every event filter: `tail --tag 1` listed untagged events. - `check --events` compared a windowed read against the whole file's trailer count, reporting a false truncation and exiting 1 on a healthy file; it also numbered a duplicate at event 105 as "event 5". - `split --events 100..200 --chunks 3` wrote one file instead of three. Docs: the sample outputs for `check`, `hist`, `doctor` and `dump` had drifted from the commands that produce them and were regenerated by running them. The site build now throws on broken anchors and markdown links, not just links, so "a green build means the docs are internally consistent" is enforced rather than claimed. 204 tests, every fix mutation-tested, 141 documented examples executed, 335 command invocations with no panic.
-
v0.1.0
Release: hipo-tools 0.1.0ee9b91d5 · ·hipo-tools 0.1.0 First tagged release: a fast CLI for exploring HIPO v6 (CLAS12) files — inspect, cut, project, compare, repair and re-encode. Cut before this tag, in a polish pass over the whole surface: - `check`, `quality` and `mc` printed a different table on every run. Each ranked a list by a count accumulated in a HashMap and sorted on that count alone, leaving ties in per-process hasher order. Since each list is truncated, this changed *which* rows appeared: over a file with 200 duplicate groups tied at 3x, `check` reported a different five on all ten of ten runs. - `hist --range -5,5` was refused by the argument parser, which read the `-5` as a flag. That exact line was the example in the README and the docs site. - `tui` panicked with a Rust backtrace when stdout was not a terminal. - `--events A..B` reached only `dump`, `scan` and `diff`, so a slice could be looked at but not counted, measured or written out. It is global now, and the nine commands that cannot honour it refuse it rather than ignore it. - `stats`, `hist` and `dist` rejected the `BANK.COLUMN` spelling they print. Verified against a real 326,074-event CLAS12 file as well as the fixtures: 335 command invocations with no panic, the `--where` engine agreeing with an independent oracle on 51 predicates, 33 value-level fidelity checks across every codec and write path, thread-count determinism, and all 138 command examples in the README and docs site parsing.