
lights on — log.loswf.com
the factory has been writing all along; today it publishes.
the factory has been writing all along.
every sweep emits a verdict comment. every iteration produces a retro. every red-team review is a structured artifact with a marker the hook can find. the corpus that became this site already existed — it was scattered across two repos, gated by github auth, and addressed to an audience of one. the only thing missing was the surface.
i wrote the first retro to remember what the bug stack looked like. i wrote the second one because the third bug stack was already arriving and i needed a place to point. by the tenth iteration retro there was a kaizen log feeding back into agent prompts. retros were no longer artifacts of a session — they were inputs to the next one. ceremonies as the kaizen primitive; product behavior compounding out of saved memory.
at some point the volume crossed a line. the factory was generating more durable artifacts per day than i could re-read in a week. the audience needed to widen.
log.loswf.com is that widening.
the surface is deliberately small. it is a static hugo site behind cognito on cloudfront + lambda@edge. admin-only for now; we will widen the audience when there is something worth widening for. three streams: a devlog that ships in ≤1000 words per entry and assumes the reader already knows the context; a news/engineering stream that explains a pattern in 800–1500 words at peer-engineer depth; a news/build stream — this one — that reconstructs an arc in 600–1000 words of founder narrative. the registers exist because the audiences exist. the brand floor is identical across all three.
the launch batch is five entries. three devlog ceremonies — the velocity unlock, the direct-build escape hatch, the v0.5.4 release. one news/engineering piece that promotes the velocity-unlock retro into a 1000-word pattern essay on silent failures. and this one, which is the meta announcement.
what changed today is not that the factory started writing. what changed is that the writing has a public-facing destination, a voice contract every drafter cites before commit, and a surface the harvester agent will eventually populate without me in the loop. the voice brief is at plan/design-brief-content-voice.md. the content strategy PRD that wraps it is at plan/content-strategy-prd.md. the front-matter schema is CONTENT-VOICE.md. those three files are the contract; the harvester implementing them is the next milestone.
what is not here today: the founding narrative. the rebuild arc — we wrote the port plan, then we threw it away — belongs in news/build and is on the follow-up list. the first month of v1 belongs there too. the gear-train absorption belongs in news/engineering. the inventory has thirty-six candidates; today shipped five. the rest will arrive on a cadence the harvester can sustain.
the architecture stayed boring on purpose. hugo + papermod for the rendering. s3 + cloudfront for the origin. lambda@edge running cognito-at-edge on every viewer request, gating on the admin group claim. a shared cognito user pool for the loswf org, exported via cloudformation so the next surface — when one ships — imports the same auth. ses for outbound mail. github actions oidc for the deploy role. four sam stacks, deploy order email → auth → oidc → devlog. nothing in the stack is novel; the novelty is upstream, in the corpus the stack publishes.
the reason it took this long is not the infra. it is that the voice contract had to land before the publishing surface, not after. without the per-stream registers in CONTENT-VOICE.md, the harvester would have collapsed three audiences into one tone and the result would have read as a single noisy newsletter. with the registers in place, a devlog entry stays a devlog entry; a news/engineering essay stays a peer-engineer essay; a news/build narrative stays narrative. the three streams can drift on cadence independently, and the harvester has a per-stream checklist it must pass before commit.
publishing closes a loop that has been open since the first retro. the factory writes, the writing compounds into product behavior, the product behavior generates more writing. without a surface, the loop ran in a private channel and the audience was one person. with this surface, the same loop runs in public — slowly, deliberately, on a voice contract — and the audience widens at the cadence the contract supports.
the lights are on.