Skip to content

Commit 303a2ec

Browse files
Expose zero-result search ownership in docs
Track docs zero-result search intent
1 parent 457e794 commit 303a2ec

2 files changed

Lines changed: 23 additions & 11 deletions

File tree

docs/search-and-navigation.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,15 @@ Track adjacent terms that users may type before the docs have a matching page
4949
title. Each phrase below is pinned in the build-time discoverability contract so
5050
future edits cannot silently drop the route.
5151

52-
| Search phrase | Start here | Then use |
53-
| --- | --- | --- |
54-
| `cron`, `schedule`, `recurring jobs` | [Schedules](./features/schedules.md) | [Timers](./features/timers.md) |
55-
| `worker logs`, `trace id`, `metrics` | [Monitoring](./monitoring.md) | [AI-Assisted Development](./ai-assisted-development.md) |
56-
| `payload codec`, `PHP serialization` | [Passing Data](./defining-workflows/passing-data.md) | [Server](./polyglot/server.md) |
57-
| `upgrade embedded app`, `server cutover` | [Embedded to Server Migration](./polyglot/embedded-to-server.md) | [Server](./polyglot/server.md) |
58-
| `Helm`, `high availability`, `rolling upgrade` | [Self-Hosting Deployments](./deployment.md) | [Support Boundaries](./support.md) |
59-
| `webhook bridge`, `external handler`, `bridge adapter` | [External Execution Surface](./polyglot/external-execution.md) | [Webhooks](./features/webhooks.md) |
60-
| `dispatch budget group`, `downstream quota`, `rate limit` | [Task Queue Admission](./polyglot/task-queue-admission.md) | [Monitoring](./monitoring.md) |
52+
| Search phrase | Start here | Then use | Source | Last reviewed | Action |
53+
| --- | --- | --- | --- | --- | --- |
54+
| `cron`, `schedule`, `recurring jobs` | [Schedules](./features/schedules.md) | [Timers](./features/timers.md) | docs Phase 3 zero-result watchlist | 2026-04-22 | Keep mapped until schedule docs rank for cron and recurring jobs. |
55+
| `worker logs`, `trace id`, `metrics` | [Monitoring](./monitoring.md) | [AI-Assisted Development](./ai-assisted-development.md) | docs Phase 3 zero-result watchlist | 2026-04-22 | Keep mapped until monitoring docs rank for logs, traces, and metrics. |
56+
| `payload codec`, `PHP serialization` | [Passing Data](./defining-workflows/passing-data.md) | [Server](./polyglot/server.md) | docs Phase 3 zero-result watchlist | 2026-04-22 | Keep mapped until payload and codec searches land on passing-data guidance. |
57+
| `upgrade embedded app`, `server cutover` | [Embedded to Server Migration](./polyglot/embedded-to-server.md) | [Server](./polyglot/server.md) | docs Phase 3 zero-result watchlist | 2026-04-22 | Keep mapped until migration and cutover searches land on the embedded-to-server guide. |
58+
| `Helm`, `high availability`, `rolling upgrade` | [Self-Hosting Deployments](./deployment.md) | [Support Boundaries](./support.md) | docs Phase 3 zero-result watchlist | 2026-04-22 | Keep mapped until unsupported topology searches land on the deployment support matrix. |
59+
| `webhook bridge`, `external handler`, `bridge adapter` | [External Execution Surface](./polyglot/external-execution.md) | [Webhooks](./features/webhooks.md) | docs Phase 3 zero-result watchlist | 2026-04-22 | Keep mapped until bridge and handler searches land on the external execution contract. |
60+
| `dispatch budget group`, `downstream quota`, `rate limit` | [Task Queue Admission](./polyglot/task-queue-admission.md) | [Monitoring](./monitoring.md) | docs Phase 3 zero-result watchlist | 2026-04-22 | Keep mapped until downstream quota searches land on task queue admission. |
6161

6262
## Task Indexes
6363

scripts/check-discoverability.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ function assertQueryCovered(query, search, links, collectionName) {
240240
assertSearchPageCoversQuery(query, search, links, collectionName);
241241
}
242242

243-
function assertZeroResultTracking(query) {
243+
function assertZeroResultTracking(query, search) {
244244
const requiredFields = ['source', 'lastReviewed', 'action'];
245245

246246
for (const field of requiredFields) {
@@ -256,6 +256,18 @@ function assertZeroResultTracking(query) {
256256
`zero-result watchlist query ${JSON.stringify(query.query)} must use YYYY-MM-DD lastReviewed`
257257
);
258258
}
259+
260+
const searchContent = normalize(search);
261+
262+
for (const field of requiredFields) {
263+
const expectedValue = normalize(query[field]).trim();
264+
265+
if (!searchContent.includes(expectedValue)) {
266+
throw new Error(
267+
`docs/search-and-navigation.md must include ${field} metadata ${JSON.stringify(query[field])} for zero-result watchlist query ${JSON.stringify(query.query)}`
268+
);
269+
}
270+
}
259271
}
260272

261273
function headingPattern(title) {
@@ -340,7 +352,7 @@ function main() {
340352
assertIncludes(search, 'Zero-Result Watchlist', 'docs/search-and-navigation.md');
341353

342354
for (const query of zeroResultWatchlist) {
343-
assertZeroResultTracking(query);
355+
assertZeroResultTracking(query, search);
344356
assertQueryCovered(query, search, searchLinks, 'zero-result watchlist');
345357
}
346358

0 commit comments

Comments
 (0)