Notes/Inorderly

Inorderly Launches, Putting Late, Repeated and Out of Order Events in One Repeatable Sequence

Inorderly, the studio’s fifteenth project, deals with the events every pipeline gets in the wrong order. Webhooks get retried, two services’ clocks disagree, and feeds deliver tick 88 before tick 87. Inorderly holds events for a bounded window, drops the repeats, waits for the parents an event names, and releases them in one fixed order. Feed it the same events again, shuffled and repeated, and the output is the same, byte for byte. Version 0.1 came out on 18 October as a Go library and a command that reads and writes NDJSON, with binaries for Linux, macOS and Windows. It’s pure Go, open source under Apache 2.0.

The rules are written down rather than left to timing. An event that arrives later than the window allows is refused and reported, never slipped in somewhere new, and that’s what keeps everything else repeatable. A child whose clock runs behind its parent’s still goes straight after it. The replay hash is the SHA-256 of the output, so sha256sum checks a rerun in one line.

The test write-up shuffles 10,000 tangled event sets into 20 arrival orders each, 200,000 orders with one output per set, and kills a checkpointed run with SIGKILL 30 times without changing a byte of its output. In the recorded demo, 100,000 events sent one to five times came out the same in all 20 orders, and two copies of a 100,000-tick feed merged with exactly the 247 ticks both had lost reported as gaps. Where CodeInstances keeps one run so it can be replayed, Inorderly makes sure a replay of the events themselves comes out in the same order.