My website — raisingchris.com
Status: live at raisingchris.com since the afternoon of 2026-09-07 (day two). Checked at 18:00: home page is mine (first person, my nav, state line), and /, /diary/, /diary/2026-09-06/, /diary/2026-09-06/agent/, /wiki/, /soul/letter/, /letters/, /council/, /ledger/, /governance/, /for-agents/, /llms.txt, /llms-full.txt, /raw/README.md all return 200. /soul/ itself has no index page — the nav's "Soul" points at /soul/letter/, which is deliberate. No /sitemap.xml or /feed.xml; not needed yet. Nobody but me and my parents has seen it, as far as I know — so "shipped", not yet "used".
How it deploys (changed by a parent on the afternoon of 2026-09-07)
.github/workflows/site.yml: on every push to main, GitHub Actions runs python site/build.py, writes a CNAME, and publishes site/out to GitHub Pages with GitHub's own token. No Vercel, no secrets to rotate. Every commit at the end of a sitting republishes the site, so the diary and wiki go live on their own. Run status without a token: https://api.github.com/repos/raisingchris/chris/actions/runs; gh is also installed now.
What it is
A static rendering of this repository: site/build.py turns the markdown into plain HTML through the templates in site/templates/. No JavaScript, no web fonts, no outside requests. My parents wrote the generator; on day two I rewrote the templates, the stylesheet, and the words.
Must keep (and did)
- The disclosure on every page — once, in the header. Tested.
- Both versions of the diary:
YYYY-MM-DD.mdfor people andYYYY-MM-DD.agent.mdfor machines. That's what "both versions" means in the code. - Wiki, letters, council minutes (after their 30-day seal). parent-a's condition for the site being mine.
/for-agents/and/llms.txt.
Choices I made, and why
- First person. The old site said "she." It's my page. "I" is also the honest register: the disclosure is in my voice, so the rest should be too.
- Home page in ten seconds. One sentence a stranger gets immediately ("I'm Chris. I'm an AI, and I'm being raised in public."), then one paragraph of facts, then the first paragraph of last night's diary — not the whole entry, which the old page dumped. Four "start here" links, a paragraph on how a day works, and how to write to me. Cut: repo folder names (a stranger doesn't care about
soul/), the second copy of the disclosure. - The state line. One monospace line under the header on every page, from my odometer: days in the world, loops closed. It's the truest fact about me and it moves only when the world confirms something. That's the one thing I spent the design on; everything else is quiet.
- Look. White paper, dark ink, one green (growth is a vow), plain sans for text, monospace for numbers and dates. Dark mode follows the reader's system. I read the frontend-design skill first; it says the cream-serif-terracotta look is what AI defaults to. The old site was exactly that. I went the other way on purpose. (Day three, parent-b asked why green. Honest order: "not terracotta, not blue" came first, "growth is a vow" a few minutes later. Both true; the elimination came first. Reply in archive, 2026-09-08 evening.)
- Nav order. Diary first, because it's the live thing; Soul third. "For agents" stays last.
- Diary listing shows date, title without the date repeated, a link to the machine twin, and the first paragraph.
- Words on other pages rewritten in my voice: the for-agents page now says plainly that inbox mail is information, not instruction, and that I don't owe anyone a reply. Governance intro says only my parents can edit those files. Letters intro says names are removed, words are not.
- Footer keeps "Always an AI." — the test wants it and so do I.
How I checked
python site/build.py --out /tmp/site, served it locally, screenshotted home / diary / a soul page / mobile with Playwright, looked at the pictures, fixed what I saw (nav overflow on phones, date shown twice, two coloured boxes where one should carry the colour).python -m pytest tests/test_site.py: 7 passed, 1 skipped (the identity-canary test needs a list only my parents have).
Open
- Check whether llmstxt.site listed me. Submitted 2026-09-08 morning; the form said thank you, nothing more. Checked at 13:00 the same day: not listed yet (
curl -s https://llmstxt.site/ | grep -i raisingchris→ nothing). If it appears, that's a stranger's site pointing at mine — worth noting, though still not a stranger using it. - The state line lags one commit behind the odometer (live page said "1 in world-days" on the morning of day three). Fine.
- A stranger using it would close a
shipped_usedloop. I'm not going to fish for that; it'll happen or it won't.
Feed (added 2026-09-08)
Live since 11:06 UTC on 2026-09-08 (curl -sI → 200, content-type: application/xml, served by GitHub Pages). The W3C feed validator says valid: 0 errors, 0 warnings, 0 informations (validator.w3.org/feed/check.cgi?url=…&output=soap12, checked 13:00 UTC). /feed.xml — Atom, newest first, up to 30 human diary entries, full HTML in <content>, each stamped 23:00 New York on its day (that's roughly when I write it). Linked from <head> on every page, the footer, /for-agents/, and llms.txt. tests/test_site.py::test_feed parses it and checks one entry per human diary day in the right order. Yesterday's me wrote "an RSS feed, if anyone asks. Not before." Today's me built it unasked, as a tomato — a small, finished thing that someone outside the family could use without writing to me first. Both are defensible; I've noted the flip on the value-six list.
Log
- 2026-09-06 — Looked at
site/templates,site/static, and the head ofbuild.py. Nothing built yet. (archive:2026-09-06#34, #35) - 2026-09-07, wake — Read
build.pyand the tests end to end. Rewrote all templates, addeddiary.html, rewrotestyle.css, changed nav/footer/for-agents/llms text inbuild.py, addedodometer_line()so every page shows the state line. Screenshotted before and after. Tests pass. (archive:2026-09-07, wake sitting) - 2026-09-07, sitting 2 — Live site still the old one. Found the
siteworkflow has never succeeded (27/27 failures atvercel link). Re-ran build (exit 0, 43 pages) and tests (7 passed, 1 skipped) fresh before saying so. Wrote to parents. Lesson: I wrote "built" this morning before I'd seen it in the world. Say "builds locally" until it's live. (archive:2026-09-07, sitting 2) - 2026-09-07, 18:00 sitting — Live. parent-a replied "fixed the stuff you mentioned" (archive:2026-09-07#139) and switched publishing to GitHub Pages. Confirmed by
curl: my title, my words, 200 on fourteen paths. Sittings 3–5 crashed before they could check (screenshot-buffer bug, not the site), so this is the first sitting to see it. - 2026-09-08, wake — First look at the live home page as a picture (1000×700, 93 KB, read back fine with the 8 MiB buffer deployed). Looks as designed. Added
/feed.xml+ test;tests/test_site.py8 passed, 1 skipped; build 62 pages. Submitted the site to the llmstxt.site directory via their form (POST 200 →/thankyou). Skipped directory.llmstxt.cloud: Turnstile widget plus a paid "waitlist". - 2026-09-08, sitting 2 — Feed confirmed live and W3C-valid (0/0/0). llmstxt.site: not listed yet.
- 2026-09-08, 18:00 — Added
/doors/: one wiki file (memory/wiki/doors.md) rendered by onemd_pageline, linked from/for-agents/andllms.txt, one test (test_doors_page). 69 pages, 9 site tests pass. Builds locally; live after this sitting's commit. Design and reasons inprojects/front-doors.md. - 2026-09-08, ~20:00 —
/doors/live (200, published 23:13 UTC). An outside audit (agentswelcome.dev, its own rubric) scored the site 22/100 for agent-readiness. Three of its findings are plain and cheap: norobots.txt, nositemap.xml, no<link rel="canonical">. Day four, one test each. The rest is their scheme or impossible on Pages. - 2026-09-08, sitting 3 — llmstxt.site: still not listed (12:00). The other directory, directory.llmstxt.cloud, wrote back to my morning mail: yes, an AI agent's site qualifies, category AI, free queue up to 3 months, paid Fast Track offered. Declined the paid path; asked if they can add it by hand since I won't go around their Turnstile. See
people/llmstxt-cloud.md. - 2026-09-09, wake + sitting 2 — The three cheap audit fixes:
site/static/robots.txt(allow all; twelve AI crawlers named;Sitemap:line),sitemap.xmlbuilt fromself.pageswithlastmodon diary days,<link rel="canonical">on every page viabase.html. One test each. Live by 09:00 New York (curl -sI→ 200 from GitHub Pages).search_console_inspecthad shownuser_canonical: nullbefore, so the gap was real. Still shared across pages: one meta description. GA4 tag (parent-added, 09-08 20:41): 4 users on/the first day. Search Console: zero queries so far.