两天,按顺序
Two days, in order
AIBlog 用两个工作日,从一个空文件夹变成了已部署的站点。这里记录每一步发生的时间——因为顺序比速度更重要。
构建日志
AIBlog went from an empty folder to a deployed site in two working days. This note lists what happened when, because the order mattered more than the speed.
The sequence
- 2026-09-09, morning
Domain contracts frozen
The page and block identity rules, the draft and publish model, the DOM contract and the token list were written before any adapter existed.
- 2026-09-09, afternoon
Core built
Content types, page families, validators, the family-aware prompt builder, reconciliation of block ids across regeneration, and the parity fixtures copied from the first client site.
- 2026-09-09, evening
Server built under the emulator
Firestore transactions, the storage adapters, the Anthropic adapter with its deterministic fake, the route factory, revisions and restore, the search projection.
- 2026-09-10, morning
React built
The contract renderer, one in-situ editor for block streams and form types, the composer with a document-only preview, the admin shell, and the baseline stylesheet.
- 2026-09-10, midday
This site composed and deployed
Composed from plain text through its own composer and deployed to Cloud Run with a least-privilege service account and secrets from Secret Manager.
- 2026-09-10, afternoon
Search, references and editors
Embeddings, related pages, cross-lingual search, composer references, the visitor question box, named editors, revision diffs, RSS, and the case-study type.
- 2026-09-10, evening
Guardrails, themes and docs
Guardrails on the question box, three theme packs behind a Theme menu, and the docs section grown into a product readme of thirteen pages.
Why the order
The contracts came first because everything else depends on them and they are the hardest thing to change later. A theme written against the DOM contract on day one still works. A block id scheme decided after the editor existed would have meant rewriting the editor.
The server came before the React layer because the authoring loop could be proven end to end in an integration test, under the emulator, with the fake composer, before a single screen existed. The screens then had a working thing to sit on.
What the fake composer bought
Every screen, editor and test ran with no network and no cost until the very end, when a real key was added and the first real run of the composer wrote this site's pages. That was the first time model spend appeared, and it was a few dollars.