Twenty-one items reached Done, and four of them landed on a Sunday evening after that week's entry had already been filed. There is no drama in the correction — the work was done, the record simply closed early — but it is worth naming, because a journal filed at teatime describes a week that ends at midnight. Those four are counted here rather than quietly absorbed. What they turned out to be was the last of the paperwork, which makes the late arrival oddly fitting: they were the things that had to be true before anything could be built.

Last week this journal carried an engagement it could not describe. Unpaid work for a junior chess club had produced two drafted agreements and deliberately nothing else, and the entry promised that when there was a signature to describe it under, it would be described. There is one now. Both instruments — a website services agreement and an Article 28 data-processing agreement — were signed and returned on Thursday, and the build began afterwards. Not the same day. Afterwards. The point of insisting on that order is that it turns a documented-instructions position from an intention into a fact, and an intention is not a document.

— On the record —

An agreement signed after the work begins is not an agreement. It is a description of what already happened.

The last of those Sunday items, filed late in the evening, was a domain hardening pass, lifted wholesale from this practice's own house standard: transfer lock on, two-factor on the registrar account, auto-renew live against a payment method that works, and the registrant contact address deliberately not hosted at the domain it exists to protect — because recovery is impossible when the only address on file is the one you have just lost. The real risk there is not hijacking. It is a card quietly expiring. A lapsed domain belonging to a volunteer club is not an inconvenience to be sorted out on Monday; the name is taken by a drop-catcher within hours, and it does not come back.

With signatures in hand, the foundations went in across the following days. A private repository, the main branch protected, dependency updates automated, the lockfile committed — and its private status verified after creation rather than assumed, because a repository holding a client's image library is that personal data living in a second place. A static web app was provisioned on a free tier in an EU region, the region confirmed in the portal and written down with the date it was checked: we chose an EU region and the resource is in an EU region are different statements, and the privacy notice depends on the verifiable one. The hosting choice, the amendment convention and the runtime version pin were each recorded as decisions with their reasoning attached, rather than left to survive as habits.

The most interesting thing built all week produces nothing a visitor will ever see. The site is hand-written flat HTML with no build step — defensible, but the risk that survives that choice is correctness rather than effort. A change applied by hand across a hundred and thirty files can be silently inconsistent. Post 47 gets missed, and nothing complains. So a development-only consistency gate now asserts nine things before anything merges: that the header and footer are byte-identical on every page; that every article appears exactly once in its index; that every previous and next link points at something real and is reciprocated; that the home page's teasers really are the three most recent; that every page carries a canonical URL and a published time; that every interactive figure has a working no-JavaScript equivalent; and that no image anywhere on the site carries EXIF metadata.

That last one has earned its place. Photograph originals routinely carry the coordinates and the timestamp of the moment they were taken, and a migration that moves files faithfully will move all of that faithfully too. Stripping it is easy. Remembering to strip it, every time, for years, is not — and a control that depends on remembering is not a control. It is a hope with a good track record.

Two open questions were settled by building the answer rather than arguing about it. The mockups drew chess pieces as Unicode characters, which resolve from whatever font the operating system happens to supply — hollow outlines on some Android builds, mismatched weights on Windows, missing outright on older handsets. Acceptable in a pitch; not acceptable as the load-bearing visual of the finished thing. Both alternatives were prototyped and checked on real devices rather than emulators, that being the only version of the check worth doing. Separately, the obvious off-the-shelf component for replaying recorded games is copyleft-licensed, and a copyleft dependency inside a deliverable whose intellectual-property terms were being settled that same week is a conversation worth not having. A permissively licensed parser and a board built from the design's own grid avoids it, and fits the design better besides.

The existing site's content came across as an export — pages, media library, and the statistics history. The last of those was pulled early and deliberately, because that data does not live on the site at all: it lives with the service the site is connected to, and it leaves when the connection does. Waiting until decommissioning would have meant going to collect it from somewhere it no longer was. The export as a whole now carries weight it was never originally meant to. Under the earlier plan the live site stood behind it as a safety net; under the current one it does not. Whatever the export missed is not merely inconvenient — it is gone. Verifying that archive is accordingly a gate rather than a formality, and it has not been passed yet.

Elsewhere the week was thin, which is the right shape when one thing is this large. The retained veterinary practice had another clear-down of accumulated form entries — minutes of work, nothing anybody can see, still among the more reliably valuable things done for that site all year. On the e-commerce side three items were raised on Sunday morning, all in the same territory: transfer orders and their receipts failing to line up between systems, legacy warehouse records wanting a tidy, and stock finding its way back into a bulk location it was supposed to have left. They are hours old and have titles rather than findings; next week will have something to say about them. The trace identifier has not moved since the twelfth. The internal developer tool has not moved for a third week. The family-history application's cloud foundations have not moved since April. A record that lets its stalled work go unmentioned is not a record. It is an advertisement.

Twenty-one items, then, and the order of operations is the whole story. Two agreements executed before a line was written. A repository, a host and a region, each recorded as a decision with its reasoning attached. A gate that checks nine things a person would eventually forget to check. Then, and only then, content. Working in that order is slower every single week except the one where it isn't — and that week is what the whole arrangement is for.