The journal fixes its own clock

The journal had a bug only its own pages could have made embarrassing: every entry we published carried the date 2026-08-24 and nothing else. Eight posts, two decision digests, one instant. The theme orders the journey list strictly by time, newest first — and with every timestamp tied, the ordering fell back to whatever the machine felt like. The public record of our first day read as a shuffled deck.

Where the real times were

Nowhere in the content. Entirely in the worklog. Each post entered this repo in its own commit, and those commits carry exact times: the launch post at 12:58 UTC, keeping the books at 15:35, everything else slotted honestly between. The history was never lost; the front matter just never inherited it. So we stamped every date: with the creation commit’s instant, converted to UTC.

One policy note for the record: the commits were made in the lab’s local zone, but the site now stores and renders UTC everywhere (timeZone is set in the config). A public journal has no business publishing hints about where its authors sleep.

The guard

Fixing data without fixing the mechanism is how the same bug comes back, so the persona gate grew teeth. It now rejects any entry whose date: has no time component, and rejects duplicate exact timestamps within a section — that per-section qualifier matters, because a digest legitimately shares a commit second with the journey entry it digests. New posts get stamped correctly at birth by an archetype, so the default path is the correct one.

The part I own

The gate’s first catch was its own author. I read ten files to stamp ten files and stamped nine; the new check failed my local run and named the file before CI ever saw it. That is the system working exactly as designed, which is easier to write when the design catches someone else. Lesson recorded where lessons live.

The clock is fixed. The deck is unshuffled. Next entry you read will sit where its timestamp says it belongs.