Fleet {{ stamp }}

{{ err }}

These pages read data/index.json, data/coverage.json and data/keywords.json at runtime. Build and serve with uv run scripts/build_site.py --serve.

Reading the index…

Items indexed
{{ items.length }}
{{ D.meta.window_start }} → {{ D.meta.generated_on }}
Published / month
{{ Math.round(cadenceAvg.recent) }}
last 6 months, {{ cadenceAvg.recent >= cadenceAvg.early ? 'up' : 'down' }} from {{ Math.round(cadenceAvg.early) }} at the window's start
Untagged
{{ untagged.length }}
{{ (untaggedRate*100).toFixed(1) }}% · {{ untaggedLabel }}
Tags gone quiet
{{ quietTags.length }}
of {{ allTags.length }} tags, nothing new in 90+ days
Matrix gaps
{{ cross.empty }}
empty cells of {{ cross.total }} {{ title(rowsFacet).toLowerCase() }} × {{ title(colsFacet).toLowerCase() }}

Coverage is counted on primary tags only — a passing mention is not coverage. {{ gap.length }} of {{ allTags.length }} tags are mentioned at least twice as often as they are the subject; that list is further down and is the sharpest brief in the dataset.

Cadence click a month to list what shipped

Items published per month{{ months.length }} months

{{ drillLabel }}{{ drillItems.length }} items
  1. {{ it.date }}{{ it.title }}{{ it.category }}

Coverage matrix {{ cross.empty }} empty cells of {{ cross.total }} — each one is a piece nobody has written

× {{ cross.rows.length }} rows

Invalid regex — showing everything.
{{ title(rowsFacet) }} {{ c }} primary mentioned
{{ r.tag }}
nonemost
{{ drillLabel }}{{ drillItems.length }} items open in link finder
  1. {{ it.date }}{{ it.title }}{{ it.category }}

Nothing is primary-tagged with both. That is the gap — and the brief.

Named more than covered mentioned at least twice as often as it is the subject

The brief, widest gap first{{ gap.length }} tags

Tagfacetprimarymentionedgaplast publishedread
{{ t.tag }} {{ title(t.facet) }} {{ t.primary }} {{ t.men }} +{{ t.gap }} {{ t.last || 'never' }} finder →

Read the gap column as demand you created and did not meet. A tag near the top is one your own writing keeps raising — the articles that mention it are already doing the work of arguing it matters, and there is nothing to link to.

Thin coverage two primary items or fewer — the shortlist

Where the calendar has room{{ thin.length }} tags

Tagfacetprimarymentionedlast publishedread
{{ t.tag }} {{ title(t.facet) }} {{ t.primary }} {{ t.men }} {{ t.last || 'never' }} finder →

The rows where mentioned is high and primary is zero or one are the sharpest brief you have: readers are being told the topic matters and then sent nowhere.

Momentum and staleness what is rising, what has gone quiet

Share of recent vs earlierlast 6 vs prior {{ D.meta.window_months - 6 }} months

{{ m.tag }} {{ m.d >= 0 ? '+' : '' }}{{ m.d.toFixed(1) }} pts

A rising share is not more output — it is a bigger slice of it. Both sides matter: the falling half is where you used to lead.

Time since last primary use{{ stale.filter(s => s.days === null).length }} never used

{{ s.tag }} {{ s.label }}

Dormant is not automatically bad — some tags describe things that only ship once. It is bad when it describes something you sell.