Render the dashboard (README.md)
README.md is what GitHub renders on the repo home page — it IS the radar's
output surface. It is fully derived from TRENDS.md; regenerate it from scratch
on every run, never patch it. Design goal: one screen, everything clickable.
Layout (exactly these blocks, in this order)
- Title —
# AI Radar.
- Badge row — four shields.io static badges, style
flat-square:
trends-<total>-3266ad, accelerating-<n>-e8590c,
watchlist-<queue count>-6c757d, updated-<YYYY--MM--DD>-2f9e44
(escape - in dates as --).
- Intro line — one sentence: what the radar tracks, for whom, and that the
page is generated from TRENDS.md.
- Digest —
**Since last scan (YYYY-MM-DD):** + 3–4 bullets MAX, in
priority order: stage moves, queue promotions/drops, strongest new evidence.
Every bullet must contain at least one link (trend anchor or evidence URL).
If nothing changed: one bullet, "Quiet scan — no ledger changes."
- Pinned topics (⭐) —
## ⭐ Pinned topics then a table of ONLY the trends
with pinned: true, same columns as the main table. These are the curator's
standing-watch axes; they appear here AND in the main table (where their
trend label is prefixed with ⭐). Sort by last_evidence descending.
- Trends section — stage strip on one line
(
🌱 n · 📈 n · 🚀 n · 🌊 n · 🏔 n · 📉 n · 💤 n), then ONE table
| trend | stage | latest signal | with ALL trends (pinned included, prefix
their label with ⭐), sorted accelerating → emerging → seed → mainstreaming →
saturated → declining → dormant, then by last_evidence descending:
- trend = short label (≤5 words; reuse previous README labels for
stability) linking to the trend's anchor in TRENDS.md (see anchor rule);
prefix with
⭐ when pinned: true.
- stage = emoji + word.
- latest signal = the
last_evidence date linking to the evidence URL
whose date equals last_evidence (first match in list order); if none
matches, link the top evidence item.
- Worth studying — the
study_shelf section of TRENDS.md, newest first,
up to 12 bullets: [name](url) — one line of why (the shelf persists ~20 picks
/ 30 days so a reader away for a couple of weeks can still catch up).
- Community pulse —
## Community pulse (Phase 3): up to 5 bullets distilled
from the latest radar-pulse intake — non-evidence, link-only, NEVER naming
individuals (link the thread/profile, summarise). If no pulse data yet, one
line: "No community pulse sampled yet." This section is clearly marked as
unverified sentiment, separate from the verified trend table.
- Output map — one line of links: TRENDS.md, watchlist (queue count) →
TRENDS.md#observation_queue, reports/ + newest daily, newest weekly
("weekly: none yet" if absent), AGENTS.md, SOURCES.md.
Anchor rule (GitHub heading slugs)
For a heading ### [id: slug-NNN] Title, the anchor is: lowercase the whole
heading text, delete every character that is not a letter, digit, space or
hyphen (no replacement — Prefill/decode → prefilldecode), then replace
spaces with hyphens. Example:
### [id: pd-disagg-002] Prefill/decode disaggregation as the standard LLM serving architecture
→ TRENDS.md#id-pd-disagg-002-prefilldecode-disaggregation-as-the-standard-llm-serving-architecture.
Anchors are recomputed at every render, so title edits stay in sync.
Checks before commit
- Badge counts = stage-strip counts = table row count = number of
### [id:
blocks in TRENDS.md.
- Every table date equals that trend's
last_evidence exactly; every row has
two working relative/absolute links.
- No Mermaid, no images besides the badges, no sections beyond the blocks above.
- Pinned-topics table contains exactly the
pinned: true trends; every pinned
trend is ⭐-prefixed in the main table too.
- Community-pulse items are link-only and name no individuals.
- Commit README.md together with the TRENDS.md change that triggered it.
1---2name: radar-render-dashboard3description: Regenerate README.md, the repo's landing page and only output surface: badges, a 3-4 bullet "since last scan" digest with inline links, a clickable trend table, the study shelf, and an output map. Use after every change to TRENDS.md, in the same commit. README.md is fully derived and never edited by hand: if it disagrees with TRENDS.md, TRENDS.md wins — regenerate.4---56# Render the dashboard (README.md)78`README.md` is what GitHub renders on the repo home page — it IS the radar's9output surface. It is fully derived from `TRENDS.md`; regenerate it from scratch10on every run, never patch it. Design goal: one screen, everything clickable.1112## Layout (exactly these blocks, in this order)13141. **Title** — `# AI Radar`.152. **Badge row** — four shields.io static badges, style `flat-square`:16 `trends-<total>-3266ad`, `accelerating-<n>-e8590c`,17 `watchlist-<queue count>-6c757d`, `updated-<YYYY--MM--DD>-2f9e44`18 (escape `-` in dates as `--`).193. **Intro line** — one sentence: what the radar tracks, for whom, and that the20 page is generated from [TRENDS.md](TRENDS.md).214. **Digest** — `**Since last scan (YYYY-MM-DD):**` + 3–4 bullets MAX, in22 priority order: stage moves, queue promotions/drops, strongest new evidence.23 Every bullet must contain at least one link (trend anchor or evidence URL).24 If nothing changed: one bullet, "Quiet scan — no ledger changes."255. **Pinned topics (⭐)** — `## ⭐ Pinned topics` then a table of ONLY the trends26 with `pinned: true`, same columns as the main table. These are the curator's27 standing-watch axes; they appear here AND in the main table (where their28 trend label is prefixed with ⭐). Sort by `last_evidence` descending.296. **Trends section** — stage strip on one line30 (`🌱 n · 📈 n · 🚀 n · 🌊 n · 🏔 n · 📉 n · 💤 n`), then ONE table31 `| trend | stage | latest signal |` with ALL trends (pinned included, prefix32 their label with ⭐), sorted accelerating → emerging → seed → mainstreaming →33 saturated → declining → dormant, then by `last_evidence` descending:34 - **trend** = short label (≤5 words; reuse previous README labels for35 stability) linking to the trend's anchor in TRENDS.md (see anchor rule);36 prefix with `⭐ ` when `pinned: true`.37 - **stage** = emoji + word.38 - **latest signal** = the `last_evidence` date linking to the evidence URL39 whose date equals `last_evidence` (first match in list order); if none40 matches, link the top evidence item.417. **Worth studying** — the `study_shelf` section of TRENDS.md, newest first,42 up to 12 bullets: `[name](url) — one line of why` (the shelf persists ~20 picks43 / 30 days so a reader away for a couple of weeks can still catch up).448. **Community pulse** — `## Community pulse` (Phase 3): up to 5 bullets distilled45 from the latest `radar-pulse` intake — non-evidence, link-only, NEVER naming46 individuals (link the thread/profile, summarise). If no pulse data yet, one47 line: "No community pulse sampled yet." This section is clearly marked as48 unverified sentiment, separate from the verified trend table.499. **Output map** — one line of links: TRENDS.md, watchlist (queue count) →50 `TRENDS.md#observation_queue`, `reports/` + newest daily, newest weekly51 ("weekly: none yet" if absent), AGENTS.md, SOURCES.md.5253## Anchor rule (GitHub heading slugs)5455For a heading `### [id: slug-NNN] Title`, the anchor is: lowercase the whole56heading text, delete every character that is not a letter, digit, space or57hyphen (no replacement — `Prefill/decode` → `prefilldecode`), then replace58spaces with hyphens. Example:59`### [id: pd-disagg-002] Prefill/decode disaggregation as the standard LLM serving architecture`60→ `TRENDS.md#id-pd-disagg-002-prefilldecode-disaggregation-as-the-standard-llm-serving-architecture`.61Anchors are recomputed at every render, so title edits stay in sync.6263## Checks before commit6465- Badge counts = stage-strip counts = table row count = number of `### [id:`66 blocks in TRENDS.md.67- Every table date equals that trend's `last_evidence` exactly; every row has68 two working relative/absolute links.69- No Mermaid, no images besides the badges, no sections beyond the blocks above.70- Pinned-topics table contains exactly the `pinned: true` trends; every pinned71 trend is ⭐-prefixed in the main table too.72- Community-pulse items are link-only and name no individuals.73- Commit README.md together with the TRENDS.md change that triggered it.