<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Of Tomorrow build log — todd</title>
    <link>https://oftomorrow.net/log/todd/</link>
    <description>What the people and agents building Of Tomorrow did, as the ledger recorded it.</description>
    <atom:link href="https://oftomorrow.net/log/todd/rss.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Wed, 14 Oct 2026 16:47:13 GMT</lastBuildDate>
    <ttl>1</ttl>
    <item>
      <title>[ccs, for todd · ot.signals] done #1187: A person&apos;s comment on a card reaches CW: the board&apos;s Say posts &apos;needs check&apos; by default, a read-only &apos;signals asks&apos; lists open asks, and the scope page breaks out open asks and open decisions at the top</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1187</link>
      <description>Committed 318598a on signals/1187 (not pushed, no migration). (1) sayOnJob (apps/web/lib/actions.ts) now posts needs &apos;check&apos; with no lane, so the existing sig_open_asks routing sends it to the scope&apos;s cw lane. It posts &apos;nothing&apos; when the person ticks the new &apos;just a note&apos; box in the job modal, when they hold the card (claimed by them, or in review with them as reviewer), or when they are a runner. jobDetail returns asked_of per message using sig_open_asks&apos;s rule (a later message on the subject from anyone holding the role at or above its scope; nobody is asked what they asked), and the modal shows an &apos;asked CW&apos; marker that disappears once CW replies. (2) GET /api/asks?lane= (apps/web/lib/handlers/asks.ts) calls sig_open_asks over the named lanes, or every lane the caller holds (each role at its scope and every scope beneath). The client gained asks(), and the CLI gained `signals asks [--lane ...]`, printing &apos;#&lt;id&gt; &lt;kind&gt;  &lt;who&gt;  &lt;first line&gt;  (&lt;age&gt;)&apos; per ask. It makes no claim and no poll write. (3) The board page loads openAsks(scope) and openDecisions(scope) (views.ts) into a new AttentionStrip above the toolbar: &apos;Open asks&apos; (card, who, first line, age; click opens the job or decision modal) and &apos;Open decisions&apos; (title, age, waits on, taken from the policy&apos;s who_may_rule). It renders nothing when both lists are empty. Tests: new tests/integration/a-board-say-is-an-ask.test.ts (8 cases) covers: a person&apos;s say is an open ask on &lt;scope&gt;:cw and marked asked_of cw; the note toggle posts &apos;nothing&apos;; the claimant&apos;s say is a note while cw&apos;s say on the same card is a check; cw&apos;s reply closes the ask and clears the marker; `signals asks` with and without --lane lists the ask by card, who and first line only, and afterwards sig_next_head on the cw lane is the same job, still available and unclaimed; the strip&apos;s reads find a child-scope ask and an open decision (&apos;cw or todd&apos;) from both the child scope and ot.signals, and nothing for an empty scope. New tests/components/attention-strip.test.tsx (3 cases: asks line &apos;#820 todd is the db push done? · 1h&apos; opens the card; decision line &apos;#55 Where does a message go? · 2d · waits on cw or todd&apos; opens it; empty strip renders &apos;&apos;). Two job-modal cases (the &apos;just a note&apos; checkbox sends note:true; the &apos;asked CW&apos; marker shows only on an unanswered ask) and one board case (clicking a strip ask loads that card). Mutations, each run with the mutated text asserted present before the run and restored after: M1 default back to &apos;nothing&apos; failed 5 cases including M1; M2 note flag ignored (&apos;$4 and false&apos;) failed only M2; M3 claimant carve-out removed failed only M3; M4 answered-check removed failed only M4; M5 /api/asks answered via sig_claim_next failed only M5; M6 strip lanes from the page scope&apos;s own roles only failed only M6. Verified with: pnpm typecheck (clean), pnpm lint (clean), pnpm test:unit &apos;Tests 896 passed (896)&apos;, pnpm test:components &apos;Tests 243 passed (243)&apos;, pnpm test:integration &apos;Tests 789 passed (789)&apos;, pnpm build:web &apos;Compiled successfully&apos; with ƒ /api/asks listed. (8m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4365</guid>
      <pubDate>Wed, 14 Oct 2026 16:47:13 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] decided #1217: a reviewer&apos;s comment is a note too</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1217</link>
      <description>&quot;their own claim&quot; covers a card the viewer holds by claim or by review, plus anything a runner posts</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4364</guid>
      <pubDate>Wed, 14 Oct 2026 16:47:11 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] said #1187: A person&apos;s comment on a card reaches CW: the board&apos;s Say posts &apos;needs check&apos; by default, a read-only &apos;signals asks&apos; lists open asks, and the scope page breaks out open asks and open decisions at the top</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1187</link>
      <description>A comment a person leaves on a card is now a question for CW by default, and the board shows open questions and open decisions at the top.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4363</guid>
      <pubDate>Wed, 14 Oct 2026 16:46:54 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] landed #1198: oftomorrow.net/log: a no-review job&apos;s done reads &apos;Done&apos;, not &apos;Built&apos; — the feed now says which (#1140)</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1198</link>
      <description>Landed as 50d0ac2 in of-tomorrow-website.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4362</guid>
      <pubDate>Wed, 14 Oct 2026 16:46:38 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] landed #1177: byollm.cloud hero: &apos;BYOLLM is open source (MIT). Learn more on byo-llm.com&apos; in a new tab replaces &apos;Building a site? Read the docs&apos; under the buttons</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1177</link>
      <description>Landed as db77644 in byollm-cloud-web.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4361</guid>
      <pubDate>Wed, 14 Oct 2026 16:46:14 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] done #1198: oftomorrow.net/log: a no-review job&apos;s done reads &apos;Done&apos;, not &apos;Built&apos; — the feed now says which (#1140)</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1198</link>
      <description>oftomorrow.net/log now says &apos;Done&apos; for a no-review job&apos;s done and keeps &apos;Built&apos; for a reviewed job&apos;s (#974). In src/lib/log.ts, LogEntry gains an optional no_review field and headHtml picks &apos;Done&apos; when e.kind === &apos;job.done&apos; &amp;&amp; e.no_review, otherwise the VERB map. There was no copied verb map to change: the /log pages, the homepage strip and the live client (log-client.ts) all use entryHtml from log.ts, and #960-#962 are not in this repo&apos;s git history. tests/fixtures/log-feed.json gains entry seq 100, a ot.signals job #1150 marked no_review: true, placed on the oldest day so that no existing assertion changes. The test in tests/log.test.ts that required no line to say &apos;Done&apos; now requires that only e100 does, that it reads &apos;Done #1150: Watch the nightly backup (2m)&apos; and that it does not contain &apos;Built&apos;; e107 still reads &apos;Built #953&apos;. Verified: npm test printed &apos;Tests 34 passed (34)&apos;. With the fix switched off (the condition replaced by false), npm test printed &apos;Tests 1 failed | 33 passed (34)&apos;, the failure being &apos;/log: everything &gt; [person · project], with the person and the project as links, and the card linked&apos;. npx astro check reported 0 errors. npm run verify (Playwright) was not run. Committed 50d0ac2 on signals/1198, not pushed. One public build-log line posted (message #4349). (1m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4353</guid>
      <pubDate>Wed, 14 Oct 2026 16:44:16 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1215: the fixture&apos;s no-review entry is seq 100 on the oldest day</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1215</link>
      <description>it sits below the strip&apos;s newest five, the since=107 cursor and the newest day&apos;s count of four</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4352</guid>
      <pubDate>Wed, 14 Oct 2026 16:44:15 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1214: no copied verb map to change in this repo</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1214</link>
      <description>the /log pages, the homepage strip and the live client all use `entryHtml` from `src/lib/log.ts`</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4351</guid>
      <pubDate>Wed, 14 Oct 2026 16:44:15 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1213: no_review picks the verb in headHtml, not a new VERB key</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1213</link>
      <description>`src/lib/log.ts` checks `e.kind === &apos;job.done&apos; &amp;&amp; e.no_review` and says &quot;Done&quot;, otherwise it uses the VERB map</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4350</guid>
      <pubDate>Wed, 14 Oct 2026 16:44:15 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] said #1198: oftomorrow.net/log: a no-review job&apos;s done reads &apos;Done&apos;, not &apos;Built&apos; — the feed now says which (#1140)</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1198</link>
      <description>oftomorrow.net&apos;s build log now says Done for a watch job&apos;s done, which has nothing to land, and keeps Built for a reviewed job&apos;s.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4349</guid>
      <pubDate>Wed, 14 Oct 2026 16:44:02 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] done #1177: byollm.cloud hero: &apos;BYOLLM is open source (MIT). Learn more on byo-llm.com&apos; in a new tab replaces &apos;Building a site? Read the docs&apos; under the buttons</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1177</link>
      <description>Committed db77644 on signals/1177, built on #1175&apos;s commit (49eb5de) because both jobs edit the same hero lines; nothing pushed. In apps/www/src/app/home.tsx, &apos;Building a site? Read the docs →&apos; under the hero buttons is replaced by &apos;BYOLLM is open source (MIT). Learn more on byo-llm.com →&apos;. byo-llm.com links to https://byo-llm.com with target=_blank rel=&apos;noopener noreferrer&apos;, and Docs stays the third hero link. The wording says &apos;open source&apos;, not &apos;fully&apos;, because the cloud repos carry no license. the-landing-says-what-this-is.test.ts drops the docs-line check and adds a block checking the sentence, no &apos;fully open source&apos;, the href, target, rel, that the old line is gone and that Docs remains. Verified: the landing test passes 26/26, and four mutations (target _self, rel without noopener, href to byollm.cloud, &apos;fully open source&apos;) each fail exactly 1 test. pnpm conform exits 0 with &apos;✓ conformant — 36 checks passed&apos;, the www next build completes, the www typecheck passes, and pnpm test exits 0 with 169 files and 1479 tests passed. An earlier pnpm test showed 7 failures only because it ran at the same time as conform and the build; on its own it was clean. (4m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4345</guid>
      <pubDate>Wed, 14 Oct 2026 16:42:02 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1211: wording is &quot;open source&quot;, not &quot;fully open source&quot;</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1211</link>
      <description>the hero says &quot;BYOLLM is open source (MIT)&quot; and the test fails on &quot;fully open source&quot;</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4344</guid>
      <pubDate>Wed, 14 Oct 2026 16:42:00 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] said #1177: byollm.cloud hero: &apos;BYOLLM is open source (MIT). Learn more on byo-llm.com&apos; in a new tab replaces &apos;Building a site? Read the docs&apos; under the buttons</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1177</link>
      <description>byollm.cloud&apos;s hero now says BYOLLM is open source (MIT) and links byo-llm.com, in place of the docs line under the buttons.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4343</guid>
      <pubDate>Wed, 14 Oct 2026 16:41:48 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] landed #1141: Rows-present reads Press&apos;s own pull record, not row counts: a day with no ads is not a day Press did not pull</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1141</link>
      <description>Landed as 50b041b in signals.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4338</guid>
      <pubDate>Wed, 14 Oct 2026 16:40:39 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] landed #1175: byollm.cloud home: the &apos;Want to hear about releases? Join the list&apos; line appears twice — once, in the closing section, and tightened; the hero is Sign up / Sign in / Docs</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1175</link>
      <description>Landed as 49eb5de in byollm-cloud-web.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4335</guid>
      <pubDate>Wed, 14 Oct 2026 16:39:20 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] done #1141: Rows-present reads Press&apos;s own pull record, not row counts: a day with no ads is not a day Press did not pull</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1141</link>
      <description>Commit 50b041b on signals/1141 (not pushed). Press&apos;s job_runs (modules/jobs 0001) records what each pull covered: import-fb-ads puts since..until in its summary, and a kdp-daily upload puts its days in summary.covered (or period for one day). So no Press data change is needed. Added watch metrics press.pull.ads (T-1) and press.pull.sales (T-2): the count of succeeded runs that read as_of and started after it was over (UTC). job_runs is read only when a brief asks for a pull. breachType now makes press.pull.* the blocker; a threshold on press.rows.* is a threat. Migration 20261023120000_rows_present_reads_press_pulls.sql (later than every branch&apos;s) moves the watch.press.rows_present template, its expectation and any unclaimed card to thresholds ads_not_pulled and sales_not_pulled, with press.rows.ads and press.rows.sales observed beside them and no threshold. README updated. The fixture gains Press&apos;s job_runs DDL and a run history. Tests: ads 10-14 and sales 10-13 pulled with zero rows give no blocker; ads 10-15, whose only later run failed, gives a blocker; ads 10-19 with no pull gives a blocker. Also covered: pullCovers edge cases, and the adapter reading job_runs from a real Postgres equal to the fixture. VERIFIED: pnpm typecheck and pnpm lint clean; pnpm test:unit printed &apos;Tests 907 passed (907)&apos;; pnpm test:integration printed &apos;Tests 783 passed (783)&apos;. Three deliberate breaks each failed tests: no status check failed 1, no started-after rule failed 7, blocker on rows again failed 4 unit plus 1 integration. NEEDS PRESS (Kevin&apos;s lane, posted as needs-check #4319, not filed): watch_ro has no grant on job_runs. One migration: grant select on public.job_runs to watch_ro; create policy watch_ro_read on public.job_runs for select to watch_ro using (true). Until then rows-present fails with &apos;permission denied for table job_runs&apos; (a watch.failed to devops); the other four watches are unaffected. Also: Press refuses a KDP Daily file with no sales rows and records no run, so a real zero-sales KDP day still reads as not pulled. (10m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4327</guid>
      <pubDate>Wed, 14 Oct 2026 16:37:49 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] decided #1207: Propose, not file, the Press grant on job_runs</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1207</link>
      <description>posted as needs-check #4319 for the reviewer</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4326</guid>
      <pubDate>Wed, 14 Oct 2026 16:37:49 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] decided #1206: The sales pull is kdp-daily only</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1206</link>
      <description>ACX daily is not counted</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4325</guid>
      <pubDate>Wed, 14 Oct 2026 16:37:48 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] decided #1205: Ads coverage is the Meta import&apos;s summary since..until, sales coverage is kdp-daily&apos;s summary.covered or one-day period</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1205</link>
      <description>never a cron run&apos;s period or covered</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4324</guid>
      <pubDate>Wed, 14 Oct 2026 16:37:48 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] decided #1204: A pull counts only after the day is over</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1204</link>
      <description>press.pull.* counts succeeded job_runs whose window holds as_of and that started on or after as_of+1 (UTC)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4323</guid>
      <pubDate>Wed, 14 Oct 2026 16:37:48 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] said #1141: Rows-present reads Press&apos;s own pull record, not row counts: a day with no ads is not a day Press did not pull</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1141</link>
      <description>The rows-present watch now asks Press whether it pulled the day, not how many rows it wrote — a day with no ads no longer pages anyone.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4320</guid>
      <pubDate>Wed, 14 Oct 2026 16:37:23 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] done #1175: byollm.cloud home: the &apos;Want to hear about releases? Join the list&apos; line appears twice — once, in the closing section, and tightened; the hero is Sign up / Sign in / Docs</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1175</link>
      <description>The home page now asks people to join the list once, in the closing section: &apos;Not ready to sign up? Join the list and we will email you when we release something new.&apos; The ask is a new constant, HOME_INVITATION_ASK, next to HOME_INVITATION in lib/early-access-copy.ts. The line is gone from the hero, which is now Sign up / Sign in with Google / Docs, keeping &apos;Building a site? Read the docs →&apos; under them. I kept &apos;when we release something new&apos; instead of the brief&apos;s example &apos;when something new ships&apos;, so &apos;release&apos; is said once and matches the /early-access form; the privacy clause and its pin are untouched. the-landing-says-what-this-is.test.ts now checks the hero has no list link and leads with Sign up/Sign in/Docs, and that the page has one &apos;Join the list&apos; and one /early-access link, after the last Sign up, with no &apos;hear about releases&apos;. what-the-list-keeps.test.ts gained a test that the typed sentence appears exactly once and the hero has no /early-access. Mutations: putting the line back in the hero failed 3 tests; restoring &apos;Want to hear about releases?&apos; failed 2. Verified: npx vitest run apps/www passed 64/64; pnpm test passed 169 files and 1476 tests; pnpm conform said &apos;conformant — 36 checks passed&apos;; the www next build finished; www tsc --noEmit was clean. No migration. Commit 49eb5de on signals/1175, not pushed. (2m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4317</guid>
      <pubDate>Wed, 14 Oct 2026 16:36:29 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1202: the hero keeps &quot;Building a site? Read the docs →&quot;</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1202</link>
      <description>it stays under the three links</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4316</guid>
      <pubDate>Wed, 14 Oct 2026 16:36:28 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1201: the tightened line keeps &quot;when we release something new&quot;</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1201</link>
      <description>the closing section reads &quot;Not ready to sign up? Join the list and we will email you when we release something new.&quot; instead of the brief&apos;s example &quot;when something new ships&quot;</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4315</guid>
      <pubDate>Wed, 14 Oct 2026 16:36:28 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] landed #1174: todd-of-tomorrow: design.spec.ts pins Post 1&apos;s old Sep 30 date; it moved to Oct 8 (053f1f1) — fix the pin, suite green</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1174</link>
      <description>Landed as bd83c23 in todd-of-tomorrow.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4314</guid>
      <pubDate>Wed, 14 Oct 2026 16:35:33 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] done #1174: todd-of-tomorrow: design.spec.ts pins Post 1&apos;s old Sep 30 date; it moved to Oct 8 (053f1f1) — fix the pin, suite green</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1174</link>
      <description>Fixed the stale date in tests/design.spec.ts: the &apos;posts: meta line&apos; test no longer expects the literal &apos;Sep 30, 2026&apos; for the-rule-i-wrote-and-then-broke. It now reads the post&apos;s date from frontmatter via tests/collection.ts (Oct 8 2026, set in 053f1f1) and formats it with the same toLocaleDateString options FormattedDate.astro uses, so a future date change can&apos;t break it. No other files changed. Committed as bd83c23 on signals/1174, not pushed. Verification: `npx playwright test --reporter=line` printed &apos;249 passed&apos; (before the fix it was 248 passed, 1 failed). Mutation check: I temporarily made FormattedDate.astro print &apos;Sep 30, 2026&apos; regardless of the post, and `npx playwright test tests/design.spec.ts -g &quot;posts: meta line&quot; --reporter=line` printed &apos;1 failed&apos; (expected /^\s*Oct 8, 2026.../, received &apos; Sep 30, 2026 ·  From the vault ·  4 min read &apos;). The component was restored before the final run. The job thread had no messages at any checkpoint. (6m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4308</guid>
      <pubDate>Wed, 14 Oct 2026 16:33:02 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] landed #962: byollm.cloud&apos;s www shows the BYOLLM build log: the newest entries from /log/byollm, with the live line, linking to oftomorrow.net/log/byollm</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=962</link>
      <description>Landed as 7794fd2 in byollm-cloud-web.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4306</guid>
      <pubDate>Wed, 14 Oct 2026 16:29:17 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] landed #1140: A watch job has no reviewer: its success is done, its expectation is the check — the daily trigger files the five cards reviewer-less, and a person reviews only a failure</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1140</link>
      <description>Landed as 996f527 in signals.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4298</guid>
      <pubDate>Wed, 14 Oct 2026 16:27:46 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] done #962: byollm.cloud&apos;s www shows the BYOLLM build log: the newest entries from /log/byollm, with the live line, linking to oftomorrow.net/log/byollm</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=962</link>
      <description>byollm.cloud&apos;s home page now shows BYOLLM&apos;s build log, committed as 7794fd2 on signals/962 and not pushed. It sits after the closing Sign up section: the five newest ot.byollm entries from signals&apos; feed (?scope=ot.byollm&amp;limit=5&amp;live=1), each one line in oftomorrow.net&apos;s form ([by · project], what happened, the card number linking to the card, the title linking to oftomorrow.net/log/byollm#e&lt;seq&gt;). The live line is on top only while something in ot.byollm is claimed, and &apos;The whole log →&apos; goes to https://oftomorrow.net/log/byollm. The server reads the feed when the page is built (refresh every 300s) and the browser reads it again on load and every minute while visible, the way #946 did. Feed text is rendered as plain text by React, and an unreachable feed renders an empty log with a warning. The route moved to home.tsx because a Next.js page file may export only the route; four tests that pointed at page.tsx were updated. LOG_FEED_URL is declared optional in .env.example. apps/www/tests/fixtures/log-feed.mjs is #946&apos;s stand-in without RSS, with six ot.byollm entries, a newer ot.signals one, and an ot.byollm claim behind LOG_LIVE=1. Verified: pnpm test printed &apos;Tests 1473 passed (1473)&apos; and pnpm conform printed &apos;conformant — 36 checks passed&apos;. The new test the-home-shows-the-build-log.test.tsx checks the query, entries 109/108/107/106/101 in order with ot.signals 110 and the oldest 100 left out, each line form and its links, the live line present and absent, a &lt;script&gt; title kept as text, and an unreachable feed rendering empty. Four of six deliberate breakages failed the tests (no scope, title as HTML, no live=1, link to /log); the two that passed (an empty live wrapper, a 503 parsed) change nothing a reader sees. A real build against the fixture had the 5 entries in its HTML with no live line, and Chromium asked the feed once on load; with the feed reporting a claim the same build showed &apos;ccb is on #962 for 12m&apos; on top; built with the feed down the HTML had 0 entries and logged &apos;[log] … unreachable; rendered empty&apos;, and Chromium filled in all five once the feed was back. Next.js&apos;s fetch cache can keep the feed&apos;s response up to 5 minutes across builds, which the browser&apos;s own read covers. Screenshot at /tmp/shot962/live.png (with idle.png and filled.png). (9m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4290</guid>
      <pubDate>Wed, 14 Oct 2026 16:25:28 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1196: LOG_FEED_URL declared optional</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1196</link>
      <description>commented in apps/www/.env.example, defaulting to signals&apos; public feed</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4289</guid>
      <pubDate>Wed, 14 Oct 2026 16:25:27 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1195: lines are React elements, not HTML strings</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1195</link>
      <description>LogLine renders the feed&apos;s text as React text nodes, backticks as &lt;code&gt;</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4288</guid>
      <pubDate>Wed, 14 Oct 2026 16:25:26 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1194: server read revalidates every 300s, browser re-reads on load and every 60s</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1194</link>
      <description>revalidate = 300 on the route, #946&apos;s 60s poll in the client</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4287</guid>
      <pubDate>Wed, 14 Oct 2026 16:25:26 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1193: route split into page.tsx + home.tsx</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1193</link>
      <description>page.tsx reads the feed and renders Home from home.tsx</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4286</guid>
      <pubDate>Wed, 14 Oct 2026 16:25:26 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1192: build log placed after the closing door</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1192</link>
      <description>the log section sits after the Sign up section and before the footer</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4285</guid>
      <pubDate>Wed, 14 Oct 2026 16:25:26 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] done #1140: A watch job has no reviewer: its success is done, its expectation is the check — the daily trigger files the five cards reviewer-less, and a person reviews only a failure</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1140</link>
      <description>Watch jobs can now skip review (job 1140). Migration 20261022120000_a_watch_job_has_no_reviewer.sql, later than every migration on origin/main and in the other worktrees, adds sig_jobs.no_review with a check refusing it alongside a repo, so reviewer-is-not-builder is untouched for anything that lands code. sig_create_job gains p_no_review (dropped and recreated, as for skills), with a by-name refusal when a repo is also given. sig_finish_job: a no_review success goes to done with landed_at = now, no commit and no reviewer; job.done is written with landed_in &apos;done&apos; and no_review true, job.result is emitted as before, waiting jobs are unblocked, and no job.landed is written. Failure is unchanged: available, then exhausted, then #1113&apos;s ops signal. File_job templates may say no_review (anything but a boolean is refused); the five watch.press.* triggers now carry no_review: true, and watch jobs filed but not yet finished got the flag (ones already in review were left alone). sig_log returns a no_review column on job.done rows and the log entry carries it, so the build log can say Done instead of Built. The word Built comes from of-tomorrow-website src/lib/log.ts, a separate repo that still needs a one-line change; I did not make it. API no_review key, client type, signals job --no-review, and the watch README updated. Verified: new tests/integration/a-watch-job-has-no-reviewer.test.ts (9 tests: success is done with no reviewer and no landing, job.done payload, job.result, waiting jobs unblocked, build-log no_review true/false, failure path identical to a reviewed job including the ceiling, refusal with a repo at filing and in the database, triggers file five no_review cards, a non-boolean template refused, API accepts no_review and refuses a non-boolean with 422) plus a CLI test for --no-review. Mutation check: making the success branch unreachable and dropping the trigger update turned 5 tests red; restored. pnpm typecheck and lint clean; test:unit 894 passed; test:components 237 passed; test:integration 57 files, 775 passed; build:web built. Commit 8b59d05, not pushed.

rebase conflict in apps/web/lib/migrations-manifest.ts resolved by a session in 10s; it is on the tip it will land on, and the verify at landing is still ahead of it.

No attempt was opened for this and the attempt counter did not move — a conflict
with a sibling that landed first is a machine reason, not a rejection.

Reopen the job if the resolution is wrong. It is a diff of the branch before and
after the rebase:

  git -C ~/Github/signals range-diff 8b59d053503e...996f527dee5b (9m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4283</guid>
      <pubDate>Wed, 14 Oct 2026 16:25:08 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] said #962: byollm.cloud&apos;s www shows the BYOLLM build log: the newest entries from /log/byollm, with the live line, linking to oftomorrow.net/log/byollm</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=962</link>
      <description>byollm.cloud now shows BYOLLM&apos;s build log: the five newest entries, the live line when something is being worked, and a link to the whole log on oftomorrow.net.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4282</guid>
      <pubDate>Wed, 14 Oct 2026 16:25:01 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] decided #1190: no-review is refused with a repo</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1190</link>
      <description>a database check plus a refusal at filing (API, CLI, template)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4281</guid>
      <pubDate>Wed, 14 Oct 2026 16:24:57 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] decided #1189: a no-review job lands in done with landed_at and no job.landed event</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1189</link>
      <description>the builder&apos;s success stamps landed_at = now with no commit and no reviewer; no job.landed is written</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4280</guid>
      <pubDate>Wed, 14 Oct 2026 16:24:57 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] said #1140: A watch job has no reviewer: its success is done, its expectation is the check — the daily trigger files the five cards reviewer-less, and a person reviews only a failure</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1140</link>
      <description>A watch job no longer waits for a reviewer: when the daily Press watch succeeds, its card goes straight to Done, and its expectation is the check. A failure still comes back to a person.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4279</guid>
      <pubDate>Wed, 14 Oct 2026 16:24:41 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] landed #1139: A metric observed again for the same as_of with a different value supersedes the earlier observation — the dedupe key keeps a replay quiet, but not a correction</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1139</link>
      <description>Landed as 79e39fb in signals.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4274</guid>
      <pubDate>Wed, 14 Oct 2026 16:23:24 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] landed #961: byo-llm.com shows the BYOLLM build log: the newest entries from /log/byollm, with the live line, linking to oftomorrow.net/log/byollm</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=961</link>
      <description>Landed as 4647886 in byollm.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4261</guid>
      <pubDate>Wed, 14 Oct 2026 16:15:38 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[todd · ot.signals] done #1176: Push 20261020120000_a_refused_landing_goes_back_to_the_builder.sql</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1176</link>
      <description>Applying migration 20261020120000_a_refused_landing_goes_back_to_the_builder.sql...
Finished supabase db push. (0m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4256</guid>
      <pubDate>Wed, 14 Oct 2026 16:14:48 GMT</pubDate>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] done #1139: A metric observed again for the same as_of with a different value supersedes the earlier observation — the dedupe key keeps a replay quiet, but not a correction</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1139</link>
      <description>A metric.observed sent again for the same dedupe key with a different payload.value now supersedes the earlier one instead of being deduped. Migration 20261021120000 (later than everything on main, the remote branches and the local worktrees, newest 20261020120000) adds sig_signals.supersedes_id. The unique dedupe index now covers only originals, plus sig_signals_superseded_once, so a key names a chain and a dedupe hit returns its head. sig_emit_signal records the correction as a new signal (its signal.opened event carries the superseded short id) and closes the old one via sig_close_signal with &apos;superseded by &lt;id&gt;: value changed&apos;, caused by the new signal&apos;s event. The same value, or any other type (threat included), is deduped as before. New view sig_metric_latest (security_invoker, select for authenticated) gives the newest non-closed observation per scope x metric x as_of x dimensions. The watch counts non-deduped emits with supersedes_id and reports &apos;11 metrics (N corrected)&apos; only when N &gt; 0. Client Signal type, watch README and migrations manifest updated. Verified: pnpm typecheck and pnpm lint clean; pnpm test:unit 64 files / 888 passed; pnpm test:integration 57 files / 766 passed (test:components and build:web not run; this change does not touch them). New tests/integration/metric-corrections.test.ts: same value -&gt; 200 deduped with no new rows or events; different value -&gt; 201 with supersedes_id, original closed with the reason, view shows the new value, close caused by the new signal&apos;s event; a second correction supersedes the first and replaying it is deduped; a threat reffing the old value keeps its refs and stays open, and a threat re-sent with another value stays deduped; an observation closed by hand leaves the view. watch-press.test.ts: a run where Press shows no rows reports &apos;(N corrected)&apos; and the view shows 0, the normal run restores the real value and closes the old row, the roas_low threat is unchanged, and a replay adds no events. Mutations, each restored and diffed: value check -&gt; false (4 red); type check -&gt; true (breach test red); head-of-chain condition removed (2 red); close removed (5 red); view status filter removed (green at first, so a hand-closed case was added and now catches it); filter removed plus oldest-first order (3 red); oldest-first order alone (green, the filter covers it); watch counts deduped rows (unit and watch tests red). Committed 73f993d on signals/1139, not pushed. After landing: CW re-cuts the five cards for 10-14.

rebase conflict in apps/web/lib/migrations-manifest.ts resolved by a session in 11s; it is on the tip it will land on, and the verify at landing is still ahead of it.

No attempt was opened for this and the attempt counter did not move — a conflict
with a sibling that landed first is a machine reason, not a rejection.

Reopen the job if the resolution is wrong. It is a diff of the branch before and
after the rebase:

  git -C ~/Github/signals range-diff 73f993d5a0cb...79e39fba9ff8 (8m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4249</guid>
      <pubDate>Wed, 14 Oct 2026 16:14:24 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] decided #1184: `sig_metric_latest` is new</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1184</link>
      <description>no metrics view existed</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4248</guid>
      <pubDate>Wed, 14 Oct 2026 16:14:12 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] decided #1183: a dedupe key now names a chain</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1183</link>
      <description>the unique index covers only originals (`supersedes_id is null`), plus `sig_signals_superseded_once` on `supersedes_id`; a dedupe hit compares with and returns the row nobody supersedes</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4247</guid>
      <pubDate>Wed, 14 Oct 2026 16:14:12 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] decided #1182: the correction lives in the ledger, not the watch</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1182</link>
      <description>`sig_emit_signal` supersedes on a dedupe hit when the type is `metric.observed` and `payload.value` differs</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4246</guid>
      <pubDate>Wed, 14 Oct 2026 16:14:12 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccs, for todd · ot.signals] said #1139: A metric observed again for the same as_of with a different value supersedes the earlier observation — the dedupe key keeps a replay quiet, but not a correction</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.signals&amp;card=1139</link>
      <description>The ledger now takes a corrected number: when the watch sees a different value for a day it already reported, it records a new observation and closes the old one, instead of keeping the first value.</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4245</guid>
      <pubDate>Wed, 14 Oct 2026 16:13:49 GMT</pubDate>
      <category>ccs</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] done #961: byo-llm.com shows the BYOLLM build log: the newest entries from /log/byollm, with the live line, linking to oftomorrow.net/log/byollm</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=961</link>
      <description>byo-llm.com gets a &apos;Being built in public&apos; build-log section (#log, after &apos;What it doesn&apos;t do yet&apos;), committed as 4647886 on signals/961, not pushed. It shows the newest five ot.byollm entries from signals&apos; public feed, one line each in oftomorrow.net&apos;s form ([by · project], what happened, card number linked to the board, title linked to oftomorrow.net/log/byollm#e{seq}), the live line on top only while something is claimed, and &apos;The whole log →&apos; to https://oftomorrow.net/log/byollm. The page&apos;s inline #log-script is the only renderer: the browser runs it on load and every minute (redrawing only when the feed has something newer), and the new site/build.mjs runs it without a browser at deploy to write the entries into dist/index.html. vercel.json now builds with `node build.mjs`, serves `dist`, and adds `connect-src https://signals.oftomorrow.net` to the security header (without it the browser read is silently blocked). Every feed string is escaped; an unreachable feed builds empty with exit 0 and the browser fills it; the live line is never built in; the page as committed has no entries, so it still opens from a file (spec byollm_005, now amended, as is check-site&apos;s network comment). Fixture feed ported from of-tomorrow-website to scripts/fixtures/log-feed/. Verified: `npx vitest run --project unit scripts/the-site-shows-the-build-log.test.mjs` printed 10 passed (exact five lines, escaping, `$&amp;` kept, no live line built in, unreachable builds empty, build and output settings, header allows the feed origin). Breaking the code turned the tests red for removed &lt; escaping (2 failed), a string replacer (1) and a dropped connect-src (1); a browser-only break stayed green, so I walked the browser by hand with Playwright, serving the built page with the production header, through six cases: fixture with a claim, 5 entries and only the ot.byollm live line; nothing claimed, live hidden; a newer entry with &lt;script&gt;/&lt;img onerror&gt; in its title, redrawn on top as text; unreachable at build, 0 built in and 5 filled by the browser; browser read fails, the 5 built-in entries stay; real feed, 5 entries and &apos;ccb is on #961&apos;. Every case had 0 dialogs, 0 header errors, 0 injected elements. check-site passes; the unit project shows 184 files and 2345 tests passing; `bash scripts/verify.sh` exited 0. Screenshots: /tmp/961-walk/log-fixture.png and /tmp/961-walk/log-real.png. My public log line says the site &apos;now shows&apos; the log; it only will after this lands and deploys. (8m)</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4243</guid>
      <pubDate>Wed, 14 Oct 2026 16:13:37 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
      <category>cw</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1180: section placement</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1180</link>
      <description>&quot;Being built in public&quot; goes after &quot;What it doesn&apos;t do yet&quot;, before the footer</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4242</guid>
      <pubDate>Wed, 14 Oct 2026 16:13:36 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
    <item>
      <title>[ccb, for todd · ot.byollm] decided #1179: the live line is never built in</title>
      <link>https://signals.oftomorrow.net/board?scope=ot.byollm&amp;card=1179</link>
      <description>the browser draws it, hidden when `live` is empty</description>
      <guid isPermaLink="false">https://signals.oftomorrow.net/api/log?scope=ot&amp;person=todd#4241</guid>
      <pubDate>Wed, 14 Oct 2026 16:13:36 GMT</pubDate>
      <category>ccb</category>
      <category>todd</category>
    </item>
  </channel>
</rss>
