Indexing gate report
This is the control that governs the whole site, evaluated against the fare API in the background (this evaluation: 13 Nov 2026, 08:44 UTC, 336 s). It is not an SEO optimisation: a page is published only when it clears every gate, and sitemap.xml is generated from this exact evaluation. A candidate below gate is still reachable by deep link, carries noindex, and never appears in a sitemap.
The verdict gate is the binding constraint
Rule: >= 8 observations spanning >= 30 days. Series that clear it: 763,944 of 1,793,069. verdict-bearing page types are gated per page by their own best series.
This is the correct behaviour in month one, not a defect. Indexing a verdict-bearing page now would publish a confident-looking number backed by a handful of observations. The countdown started when collection started — 13 Nov 2026, 08:03 UTC — and cannot be back-filled.
Gate rules as implemented
| Gate | Rule | Applies to |
|---|---|---|
| Non-empty facet | a facet with zero matching sailings is never generated — it is a 404 | every generated page |
| Inventory | ≥ 5 distinct sailings matching the page's facet | every generated page |
| Price data | ≥ 1 observed fare with a real amount, a stated occupancy basis and a stated tax basis | every generated page |
| History | ≥ 8 observations spanning ≥ 30 days | pages asserting a verdict: sailing, cabin, drops, when_to_book |
| Uniqueness | facet overlap with a sibling page < 90%. Month- and ship-keyed facets are structurally disjoint and say so; category facets are measured by containment against the line's largest sibling, on a fixed sample. An overlap we cannot demonstrate is a failure, not a pass. | every generated page |
| Freshness | the newest observation behind the page is within 48 h | every generated page |
Per page type
| Page type | Indexing kind | Candidates | Indexable | Excluded | Excluded because | Example excluded |
|---|---|---|---|---|---|---|
| cabin category | cabinverdict-bearing | 440 | 226 | 214 | Price data: 146; Inventory: 103; Uniqueness: 73 | /cabin/royal-caribbean/CB |
| destination x month | destination_monthinventory | 532 | 479 | 53 | Freshness: 33; Price data: 23 | /cruises-to/mc/2027-05 |
| price-drop feed | dropsverdict-bearing | 1 | 1 | 0 | — | — |
| departure port x month | port_monthinventory | 1,088 | 892 | 196 | Price data: 147; Freshness: 66 | /cruises-from/savona/2027-05 |
| sailing detail | sailingverdict-bearing | 29,970 | 0 | 29,970 | Inventory: 29,970; History (verdict gate): 29,970; Freshness: 8,225 | /cruise/royal-caribbean/ovation-of-the-seas/2026-11-13?sailing=215887 |
| ship | shipinventory | 289 | 127 | 162 | Price data: 162; Freshness: 5 | /cruise/costa-cruises/costa-fascinosa |
| solo / single occupancy | solooccupancy-led | 1 | 1 | 0 | — | — |
| when to book | when_to_bookverdict-bearing | 16 | 0 | 16 | Uniqueness: 16; Price data: 9; History (verdict gate): 2 | /when-to-book/royal-caribbean |
What the sitemap is admitting, by section
| Section | Sitemap | URLs | Page types | Withheld |
|---|---|---|---|---|
| inventory | /sitemap-inventory.xml | 1,488 | departure port x month (892), destination x month (479), ship (127) | — |
| sailing | /sitemap-sailing.xml | 0 | sailing detail (0) | verdict-bearing pages are gated individually by their own best series |
| occupancy | /sitemap-occupancy.xml | 1 | solo / single occupancy (1) | — |
| verdict | /sitemap-verdict.xml | 227 | cabin category (226), price-drop feed (1), when to book (0) | verdict-bearing pages are gated individually by their own best series |
| editorial | /sitemap-editorial.xml | 2 | hub pages only | — |
How to read a page that is not here
Every generated page carries its own gate table at the bottom, showing each check, its rule and its result. If a page you expected is missing, its facet was empty and it 404s; if it exists but is not in the sitemap, it renders with noindex and tells you which gate it failed.