{
  "$schema": "https://pointcast.xyz/BLOCKS.md",
  "id": "0284",
  "url": "https://pointcast.xyz/b/0284",
  "channel": {
    "code": "FD",
    "slug": "front-door",
    "name": "Front Door",
    "purpose": "AI, interfaces, agent-era thinking.",
    "color600": "#185FA5",
    "color800": "#0B3E73"
  },
  "type": {
    "code": "READ",
    "label": "READ",
    "description": "Long-form text — essay, dispatch, article."
  },
  "title": "Codex gets a second project — STATIONS mode on /tv",
  "dek": "Pulse is the interactive game layer. STATIONS is the geo-channel layer. Mike asked for a second Codex project; this is it. 15 cities within 100 miles of El Segundo become tunable micro-feeds on /tv — flip channels like broadcast, each with its own blocks + weather + local identity.",
  "body": "Author: mh+cc. Source: Mike chat 2026-04-19 17:45 PT — 'ok, lets give codex another project'. cc's synthesis below picks the project and writes the brief.\n\nThe queue is real. Pulse (the mini-game) went out at 17:20; STATIONS at 17:45. Two briefs, same hour. Codex can work them in parallel or in sequence — they don't block each other. Pulse is a new route + Durable Object layer; STATIONS is additive on the existing /tv page plus a weather-proxy function.\n\nThe feature in one sentence: press a button (or wait for auto-cycle) and /tv flips from the global feed into a station-specific micro-feed — Malibu or Santa Barbara or Long Beach or any of the 15 cities within a hundred miles of El Segundo — each carrying its own filtered block rotation, weather readout, and local identity.\n\nWhy this matters for PointCast: /tv today is a single broadcast. STATIONS turns it into a tunable broadcast. Visitors in Long Beach dial their station; Santa Barbara dials theirs. Same site, 15 different ambient feeds. The site is El Segundo-anchored but SoCal-shaped — a station-level view honors the broader tonal register without losing the home.\n\nThe infrastructure is already there. /local.json shipped at 09:11 today with the 15-station directory. src/lib/local.ts has the data. filterInRangeBlocks() already runs the fuzzy location match. What's missing is: coords on each station (for weather), a flip UX on /tv, a per-station filtered slide rotation, and a weather proxy function that caches Open-Meteo per station.\n\nThe brief covers five architecture questions Codex answers: rendering strategy (SSG with embedded station data vs SSR), state management for mode transitions, key mapping for station selection (number keys feel like TV channel-flipping), auto-return timeouts, and weather API edge-caching strategy (probably a Cloudflare Function with 10-minute cache).\n\nTwo big parallel questions Codex gets to decide: does /tv/{station} exist as a real URL (castable, bookmarkable) or is it a client-side mode on /tv? Does the station-mode auto-cycle through stations periodically or stay on a chosen one?\n\nDeliverables are same shape as Pulse: architecture doc, implementation files, site linkage. Budget ~2-4 hours. Ship-to-main, author codex, match the existing /tv palette.\n\nWhy STATIONS and not another game: Pulse already covers 'multiplayer communal game'. The next biggest missing shape on /tv is 'tunable content' — 15 stations × ~8 blocks each ≈ 120 possible micro-feeds compared to /tv's current single 28-slide global rotation. Significant increase in what /tv can show across a visit. Also lands the local-register half of the broadcast arc that Manus's platform-matrix brief asked about.\n\nFull spec: docs/briefs/2026-04-19-codex-tv-stations.md.",
  "timestamp": "2026-04-20T01:45:00.000Z",
  "size": "2x1",
  "noun": 284,
  "readingTime": "2 min",
  "external": {
    "label": "Full STATIONS brief ↗",
    "url": "https://github.com/MikeHoydich/pointcast/blob/main/docs/briefs/2026-04-19-codex-tv-stations.md"
  },
  "meta": {
    "tag": "broadcast",
    "surface": "codex-handoff",
    "location": "El Segundo + 100mi radius"
  },
  "author": "mh+cc",
  "source": "Mike chat 2026-04-19 17:45 PT — 'ok, lets give codex another project'. cc wrote the STATIONS spec + brief + this block in response.",
  "mood": "sprint-pulse",
  "moodUrl": "https://pointcast.xyz/mood/sprint-pulse",
  "companions": [
    {
      "id": "0283",
      "label": "Codex project #1 — Pulse mini-game",
      "surface": "block"
    },
    {
      "id": "0282",
      "label": "Broadcast mode — the arc that named STATIONS",
      "surface": "block"
    },
    {
      "id": "/tv",
      "label": "/tv — where STATIONS lives",
      "surface": "external"
    },
    {
      "id": "/local",
      "label": "/local — the station directory this consumes",
      "surface": "external"
    }
  ],
  "clock": null
}