W19 — andersjensen1.com, restyled and restructured
The week the marketing site stopped pretending to be an architecture studio and admitted it's the front door of Axiom Engine. New shell, new color palette sampled from the running console, new IA, real telemetry on /metrics, three weekly dev-logs to seed the format.
A self-referential week. The marketing site you’re reading was built this week, on this branch, in this voice.
What shipped
The full restyle
Five-route information architecture: / (manifesto-first), /axiom (dense product long-scroll), /journey (bio + interval timeline), /journal (filterable list with tag chips), /metrics (live aggregate dashboard). The legacy “Agentic Archive” wordmark and the hallucinated Danish-architect about-page retired in the same commit.
Design tokens lifted from the console
The accent red (#c1121f), the navy (#003049), the cream surface — sampled directly from playground/svelte/src/styles.css. The marketing site is now visually inseparable from the working tool. Tailwind CDN dropped; Inter Variable + JetBrains Mono Variable self-hosted via Fontsource (13 @font-face decls bundled, zero CDN calls).
Real telemetry on /metrics
Two scripts (generate-git-history.mjs, export-metrics.mjs) consolidate playground + aj-blog git logs into JSON the page consumes. D3 + Observable Plot infographics: weekly commits bar, cumulative LOC area with net-line overlay, top-milestones lollipop, flow-run status distribution. The headline numbers visible at /metrics are real and updated by checking in fresh JSON.
Dogfooded screenshot harvest
A Playwright script (harvest-axiom-screenshots.mjs) navigates the running console at localhost:8081, clicks each sidebar panel, and writes 1440×900 DPR=2 captures to public/images/axiom/. 15 of 16 panels captured this week. The /axiom page displays them in chrome-frames so the marketing site stays visually in sync with whatever the product looks like today.
Schema, additively
The posts collection grew type (dev-update, essay, reflection, moment, note), era, tools[], end_date, images[], hidden — all optional with defaults so the existing node/blog-publish.js pipeline keeps publishing without modification.
Three (now eleven) sample dev-logs
W06, W15, W18 seeded the format mid-week. With this post, the backfill catches up to the present. Going forward: a new dev-log every Sunday, eventually written by an Axiom Engine flow on a cron trigger.
Architecture moves
The biggest call this week was delete-and-replace over iterate. The previous site’s CSS was a runtime Tailwind + Material Symbols + cream-and-forest-green stack that fought the new direction at every step. Iterating on it would have left visual debt for months. Replacing it cost a few days; the result is a token system that maps 1:1 to the product’s own design language and can absorb every future change without further rework.
The second call was dogfood the metrics pipeline. The data on /metrics will eventually be written by an Axiom Engine flow (Cron trigger → MetricsExportNode → Filter/Transform → GitWriteFile). The flow nodes don’t exist in the runtime yet — that’s a separate session — but the contract for the flow exists in scripts/export-metrics.mjs. When the nodes ship, they snap into place.
By the numbers
- 5 commits across the week (all aj-blog)
- 19 pages built, 8.4M total deploy size (700K of fonts/JS/CSS, 7.7M of images)
- 51 essays archived to
_archive/ - 5 timeline moments seeded across the journey
- 11 dev-logs written, this post inclusive
What’s next
Port the metrics pipeline into actual Axiom Engine flow nodes (MetricsExportNode, GitWriteFileNode) so the page updates itself. Promote /journey with pre-2026 era screenshots. Curate three to five real flow showcases for /metrics. Then back to the cockpit itself — there’s a flow builder roadmap waiting.