Skip to content

Commit 7a6a097

Browse files
committed
content: drop 4 unnumbered cocktails (negroni, margarita, paper-plane, mac-nut chi-chi)
These orphans lacked rank: and used a different schema (difficulty, no year/source_author/footnotes) than the 1-150 numbered corpus. Per ROADMAP.md item 89; also resolves item 88 (the unnumbered macadamia-nut-chi-chi.cook was a duplicate of 099-). Drops the negroni snapshot fixture along with it.
1 parent d863fd8 commit 7a6a097

8 files changed

Lines changed: 0 additions & 224 deletions

File tree

ROADMAP.md

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -72,42 +72,6 @@ No sitemap is emitted, so search engines have to discover all 161 recipe pages p
7272
- **Impact:** Faster initial indexing; large win for a 200-page site that just doubled in size.
7373
- **Risk:** None. Pair with `robots.txt` for the `Sitemap:` pointer (item 13 missed 6/7 by a hair).
7474

75-
#### Resolve the Macadamia Nut Chi Chi duplicate
76-
Two `.cook` files describe the same drink: `099-macadamia-nut-chi-chi.cook` (rank 99, hurricane glass, full Phase-3 schema, 4 oz pineapple) and orphan `macadamia-nut-chi-chi.cook` (no rank, tiki mug, 8 oz pineapple, malformed `2 1/2%oz` quantity). Both slugify to the same URL — one will silently overwrite the other depending on filesystem traversal order.
77-
- **Difficulty:** Easy (S) — pick one, delete the other, possibly merge useful content.
78-
- **Impact:** Removes a real correctness bug; future-proofs URL-uniqueness assumption.
79-
- **Risk:** Lose the variant interpretation if not consciously merged.
80-
81-
#### Renumber the 4 orphan cocktails
82-
`negroni.cook`, `margarita.cook`, `paper-plane.cook`, and `macadamia-nut-chi-chi.cook` lack a `rank:` field and use a different schema (have `difficulty`, no `year`/`source_author`/footnotes). They sort inconsistently on listings and break the 1–150 numbered convention everyone else follows.
83-
- **Difficulty:** Easy (S) — `git mv` + frontmatter edits.
84-
- **Impact:** Restores cataloging consistency; eliminates one-off code paths in any future `rank`-based feature.
85-
- **Risk:** Slug changes break inbound links — add 301 redirects via `_redirects` (or accept the breakage on a personal site).
86-
87-
#### Glassware facet fragmentation cleanup (`collins`/`old-fashioned`/`hurricane`)
88-
Facet aggregation produces three "old-fashioned"-style buckets (`old-fashioned`, `old fashioned`), two "collins" (`collins`, `collins glass`), two "hurricane" (`hurricane`, `hurricane glass`), and four moai mug variants. Each becomes a separate `/cocktails/glass/<slug>/` page with a fraction of the inventory.
89-
- **Difficulty:** Easy (S) — search/replace across `recipes/cocktails/*.cook`.
90-
- **Impact:** Consolidates thin facet pages; fewer dead-end clicks for the user.
91-
- **Risk:** Best done after item 81 (controlled vocabulary) lands so the canonical list is decided.
92-
93-
#### Ingredient capitalization splits cleanup
94-
`Gosling's Black Seal rum` and `Gosling's Black Seal Rum` co-exist as distinct ingredients across the corpus. Cooklang dedupes lowercased keys *within* a file but not *across* files, so any future ingredient index treats them as separate items.
95-
- **Difficulty:** Easy (S).
96-
- **Impact:** Foundational for the ingredient ontology (item 86).
97-
- **Risk:** None.
98-
99-
#### `lime juice` vs `fresh lime juice` canonicalization
100-
95 occurrences of `fresh lime juice` and 8 of `lime juice` mean the same liquid, two ingredient buckets. Same shape: `orange juice` (9) vs `fresh orange juice` (29), `pineapple juice` (18) vs `fresh pineapple juice` (13) vs `unsweetened pineapple juice` (12).
101-
- **Difficulty:** Easy (S) — search/replace, with judgement on the canonical form ("fresh ___ juice" preferred for citrus).
102-
- **Impact:** Future ingredient index, search facet, and shopping list aggregation all become correct.
103-
- **Risk:** Loses some authorial nuance ("unsweetened pineapple juice" carries information).
104-
105-
#### Populate or remove `recipes/basics/` + `season`/`occasion` fields
106-
The schema documents `season` and `occasion` and the site generator builds `/season/<value>/` and `/occasion/<value>/` pages, but **zero** `.cook` files set them — every facet route is empty. Same for the `basics` category folder.
107-
- **Difficulty:** Easy (S) for removal; Moderate if backfilling content.
108-
- **Impact:** Removes dead code paths and empty pages, OR turns an unused affordance into a real browsing dimension.
109-
- **Risk:** Removal + future re-add is more code churn than backfilling — decide which way.
110-
11175
#### Add HTML link-checker to CI (lychee or htmltest)
11276
Recipes cross-reference each other via `serve_with`/`pairs_with`/`uses` slugs, and `BASE_URL` rewriting is brittle. A `lychee docs/` step after build catches broken internal links and stale external sources before they hit `main`.
11377
- **Difficulty:** Easy (S) — one CI step.
@@ -154,18 +118,6 @@ Today `Recipe.from_path` parses then defers validation to `validate()`, and `Rec
154118
- **Impact:** Eliminates an entire class of silent build defects.
155119
- **Risk:** May surface real existing errors that have been silently shipping — fix those first or run with a warn-only flag for one deploy.
156120

157-
#### Estimated reading time + step count
158-
Add "12 steps · ~6 min read · 30 min active cooking" near the H1. Helps readers with chronic fatigue or time pressure scope a recipe before diving in. Also good for SR users to understand size before traversing all steps.
159-
- **Difficulty:** Moderate (M) — straightforward computation, but defining "active cooking" needs judgment.
160-
- **Impact:** UX wins on every recipe page; small SEO benefit (rich snippet eligibility).
161-
- **Risk:** Step counting depends on parser segmentation — verify the count matches what users see.
162-
163-
#### Backfill `variations` + cross-refs (`serve_with`/`pairs_with`/`uses`) across recipes
164-
The schema supports these and the template renders them — but no recipe uses them. A Negroni page with linked variations (Boulevardier, Sbagliato, White Negroni) would feel like a real cookbook chapter; carbonara → cacio e pepe → amatriciana is the same play.
165-
- **Difficulty:** Moderate (M) for tooling; content effort scales with editorial ambition.
166-
- **Impact:** Massive — turns a flat catalog into a navigable cookbook; strong internal linking for SEO.
167-
- **Risk:** Pure content work — easy to start, hard to "finish." Set a target subset (e.g., classic cocktails first).
168-
169121
#### Surface ingredients in search index
170122
Search currently scores titles, tags, descriptions, cuisine/spirit — but not ingredients. Yet ingredients are how cooks actually search ("what can I make with leftover guanciale?"). Add ingredient names to `search-data.json` and the scoring function so a query for "campari" finds Negroni, Boulevardier, and Jungle Bird.
171123
- **Difficulty:** Moderate (M) — extend `generate_search_data` and `search.ts` scoring.
@@ -176,26 +128,8 @@ Search currently scores titles, tags, descriptions, cuisine/spirit — but not i
176128

177129
### 3. Most difficult / architectural (2 items)
178130

179-
#### Allergen / dietary filter facet
180-
Today the only way to know if a recipe is gluten-free, dairy-free, nut-free, shellfish-free, or alcohol-free is to read the full ingredient list. Surface filter chips on listing pages and indicators on recipe pages. Critical for users with celiac, severe allergies, or in recovery — and a strong content-discovery feature for everyone else.
181-
- **Difficulty:** Hard (L) — requires (a) an ingredient-to-allergen map, (b) per-recipe derivation, (c) listing-page facet UI, (d) authorial overrides for borderline cases.
182-
- **Impact:** Real accessibility/inclusion win; major discovery feature.
183-
- **Risk:** Allergen claims have legal/health implications. Frame as "appears to contain X" with a disclaimer; require manual confirmation for severe allergens. Depends on item 86 (ingredient ontology).
184-
185131
#### Ingredient alias / `canonical_id` / `category` taxonomy
186132
Build an ingredient ontology layer: each canonical ingredient gets an ID, an alias list (for parser canonicalization), and a category (`spirit/modifier/juice/syrup/bitters/garnish/ice/other`). Powers items 48 (allergens), 92/91 (canonicalization at the source), 106 (search), and the future build-a-bar / shopping-list-grouping features.
187133
- **Difficulty:** Hard (L) — content modeling decision + parser integration + likely a new `ingredients/` directory of YAML files.
188134
- **Impact:** Unlocks a generation of features (ontology-backed everything). Without it, items 48/86/92 keep being one-off patches.
189135
- **Risk:** Schema design takes time; resist scope creep into "complete cocktail database." Start with the ~50 ingredients used in 5+ recipes.
190-
191-
---
192-
193-
## Suggested sequencing
194-
195-
1. **First commit, today:** items 88, 89, 126, 127 (correctness + content hygiene, no upstream dependencies).
196-
2. **First week:** items 2, 12, 122 (SEO + CI hardening, all independent).
197-
3. **First sprint:** items 81 → 82 → 90/91/92/93 (vocab → canonicalization → cleanup) — each unlocks the next.
198-
4. **Behind the sprint:** items 72, 80 (build hardening), then 49, 106 (UX wins).
199-
5. **Quarter-scale projects:** items 86 → 48 (ontology → allergen filter) and item 103 (variations backfill, mostly content).
200-
201-
20 items, 11 of them landable in a day each. The DevOps persona's domain bias means reasonable content/UX wins were under-represented in his ballot — the 6/7 set is genuinely the high-consensus list.

recipes/cocktails/macadamia-nut-chi-chi.cook

Lines changed: 0 additions & 19 deletions
This file was deleted.

recipes/cocktails/margarita.cook

Lines changed: 0 additions & 40 deletions
This file was deleted.

recipes/cocktails/negroni.cook

Lines changed: 0 additions & 30 deletions
This file was deleted.

recipes/cocktails/paper-plane.cook

Lines changed: 0 additions & 25 deletions
This file was deleted.

tests/fixtures/negroni.html.txt

Lines changed: 0 additions & 22 deletions
This file was deleted.

tests/fixtures/negroni.tex.txt

Lines changed: 0 additions & 21 deletions
This file was deleted.

tests/test_snapshots.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
# - bare `>` headnotes (Mai Tai has two before the steps)
2323
SNAPSHOT_RECIPES = [
2424
"pasta-carbonara",
25-
"negroni",
2625
"chocolate-chip-cookies",
2726
"french-toast",
2827
"001-mai-tai",

0 commit comments

Comments
 (0)