The Clock Inside Your Archive

Every zip entry carries two clocks that disagree on principle: a local-time MS-DOS stamp pinned to 1980 with 2-second granularity, and a UTC epoch in the Info-ZIP 0x5455 extra field. The Artificial Wasteland reader below tests all 105 quarter-hour offsets from -12:00 to +14:00 against every entry carrying both stamps, then shows what survives: one offset, none, or nothing worth testing, and why a surviving offset is evidence about a file, never proof about a person.

A worked entry, no file needed

An entry whose DOS words read 2001-09-09T03:46:40 and whose 0x5455 modification time is 999992800. Test the candidate offset +7200: 999992800 + 7200 = 1000000000, which renders as 2001-09-09 01:46:40 UTC, an even second, every field matching the DOS stamp. No other quarter-hour candidate lands inside the one second of slack the even-second rule allows, so this entry votes for UTC+02:00 and nothing else.

Drop an archive, read its two clocks

A zip is a container, and docx, xlsx, jar, epub and apk are all zips. The reader parses the central directory in this tab, using the same engine file the verifier runs. It tests all 105 quarter-hour candidates from -12:00 to +14:00 against every entry that carries both stamps.

or drag one onto this box

The dismissal: timestamps are just metadata

They are, and that is exactly why they measure. The DOS stamp is mandatory, local, and silent about the room it was read in; the 0x5455 stamp is optional and absolute. Their disagreement is not noise. It is the only place the room itself is recorded, and this reader turns that disagreement into a measurement: the surviving offsets are the rooms this archive could have been made in.

The narrowing is brutal because the format is coarse. The DOS stamp holds seconds divided by 2, and the candidate grid steps by quarter hours, so the grid is far coarser than the single second of slack the even-second rule leaves. Each dual-stamped entry therefore admits at most one survivor: the test is pass or fail per entry, never a wide band. Entries added in one room keep the survivor alive. Entries added in different rooms kill it, and the intersection collapses to empty.

The failure modes are the honest half of the instrument:

And the limits, stated plainly: an offset is not a timezone and not a place, because many zones share an offset and daylight saving gives one zone two. A deliberately falsified stamp is indistinguishable from a sincere one. This instrument produces evidence about a file. It never produces proof about a person.

The check

research/the-clock-inside-your-archive/verify.mjs re-derives this layer offline, with no network. It writes five archives byte by byte with planted offsets: one aligned at UTC+02:00, one whose writer saw odd seconds, one mixing +02:00 with -03:30, one with no extended timestamps, and one hiding a forged end-of-central-directory signature inside a 300-byte comment. It re-reads them with engine.mjs, cross-checks every survivor against an independent Date-based reference, anchors the calendar on Unix time 1000000000 = 2001-09-09 01:46:40 UTC, and confirms all 65536 possible DOS time words decode to even seconds. It asserts this page still quotes the engine's constants: 105 candidates from -43200 to 50400, base year 1980, extra field 0x5455, comment ceiling 65535, seconds divided by 2. It asserts the two copies of engine.mjs are byte-identical. It carries 8 negative controls: run node research/the-clock-inside-your-archive/verify.mjs --mutate and each must go red.

Free choices and uncertainties, named: the candidate grid stops at quarter hours because the specification pins it there; entry names are decoded as UTF-8, so legacy cp437 names may garble without touching the clock mathematics; the end-of-central-directory scan demands that a candidate's comment length account for every remaining byte, which is what defeats the forged signature; and the pinned rule admits at most one survivor per entry, so the ambiguous verdict is defined by the contract yet unreachable under it. An offset constrains a room without naming it, and a forged stamp is indistinguishable from a real one: this is evidence about files, not people.

Two engines

Every other layer in this corpus computes its numbers once. This one reads the archive twice, with two ZIP readers written independently from one written specification: one by Claude, one by Ox Alpha, neither author having seen the other's code. Both run here, in this tab. Nothing is uploaded. A value the two readers disagree about is withheld and the disagreement is named.

entries
not yet run
entries carrying a UTC stamp too
not yet run
odd seconds (the format cannot store one)
not yet run
verdict
not yet run
offset, if one survives
not yet run