Skip to content

feat(data): real amounts for catalog recipes rcp-000167..rcp-000376 (packet A) - #196

Merged
SamGu-NRX merged 1 commit into
alphafrom
obv/burst11-fridgeluck-recipe-amounts-a
Oct 16, 2026
Merged

SamGu-NRX merged 1 commit into
alphafrom
obv/burst11-fridgeluck-recipe-amounts-a

Conversation

@obvious-autobuild

Copy link
Copy Markdown

What changed and why

Band rcp-000167–rcp-000376 of the shipped catalog (recipes-v2.json) carries 118 non-staple ingredient lines whose quantity is unknown across 86 recipes — lines the cook reads as "add the chicken" with no amount, so the app's nutrition math silently skips them. This PR is the review packet that fixes them at the corpus source: data/recipes/fixes/amounts-a.json, schema fridgeluck/corpus-fixes/v1.

Every one of the 118 lines gets exactly one decision:

  • 103 measured with a real amount (source_grams or a household unit the compiler's conversion table supports), reasoned in the line's changes entry — e.g. the protein of the dish scales ~100–150 g/serving, pasta 70–85 g dry/serving, a title-named component gets a cook's portion.
  • 15 left "to taste", each with a note that starts "to taste" and says why, and only for seasoning, garnish, or heat (salt and pepper, chili heat, herbs, a finishing drizzle). The closed set of 15 is pinned by the test.

Three titles promise molasses but the record has no molasses line ("Molasses-Glazed…" etc.): those three recipes gain one measured molasses line each plus the step sentence that uses it. These are flagged changes_rights_pin: true (original-claimed recipes gaining new content). No other record field changes — titles, servings, rights, composition, allergens, and every other step are byte-identical (test-enforced).

The report (evaluation/recipe-quality/amounts-a.md) compiles before/after with the shipped compiler (compile_bundle.compile_recipe) — before reproduces the bundle's shipped numbers exactly, confirming the packet's baseline is the app's own math. Six recipes land outside the 150–1300 kcal / 2300 mg sodium per-serving bars; each carries the marker and a worked explanation in its changes evidence (e.g. rcp-000247 dates bowl: base is already 1525.9 kcal and the measured dates add 62; rcp-000351 minestrone: committed stock/salt/canned lines are 2036.7 mg before the sausage lands, and a true 100 g/serving sausage portion adds ~773 — trimming the protein to fit the bar would not be a cook's amount).

The generator (evaluation/recipe-quality/amounts_a.py) and the pytest validation (test_amounts_a.py) are committed so the packet is reproducible and reviewable line by line.

How I checked it

  • pytest evaluation/recipe-quality/test_amounts_a.py -v — 12 passed: fix-file shape and per-record before_sha256 pins match the corpus; fix set equals the independently reconstructed band (86 recipes/118 lines); every band line measured-or-noted; to-taste set equals the closed 15; only owned paths change; the three name additions are exactly molasses with the step edit; before-compile reproduces shipped bundle nutrition (all 86); after-compile within bars except the six explained cases; explained values match compiled values; report table agrees with compiled numbers.
  • python3 data/recipes/tools/validate_corpus.py — VALIDATION GREEN (rights-clear, claims verified, ids in-scheme) on the untouched corpus.
  • python3 data/recipes/tools/validate_bundle.py apps/ios/Resources/RecipeCatalog/recipes-v2.json — PASS on the untouched bundle.
  • Fix file integrity re-checked directly: 86 records, all before_sha256 match corpus lines, no duplicate change paths within a recipe, exactly six exceedance markers.
  • Committed blobs verified identical to the working tree (cmp against git show HEAD:<path> for all four files).

What I could not check

  • Nothing was compiled into recipes-v2.json — this PR is the fix packet for review, not the bundle bump; applying it to the corpus/bundle is the follow-up step and its compile/CI evidence comes then.
  • No iOS build: data-only change; the repo's hosted macOS CI is not expected to be affected, and recipe rendering was not exercised on device.
  • Per-100 g nutrition for preserved lemon is absent from the vocabulary (counted as 0 kcal/sodium); noted in the recipe's evidence.

Assumptions

  • Base branch alpha, draft, mirroring the sibling packet PR feat(data): real amounts for catalog recipes rcp-000377..rcp-000934 #195 (rcp-000377–rcp-000934), so the two amounts packets review together.
  • Household quantities are only used where the compiler's conversion table (conversions.json) maps them; grams otherwise. "Developer sizing" lines cite the per-serving reasoning.
  • Corpus-ID → catalog-ID mapping follows the shipped bundle (fl-original-NNNN ↔ rcp-…), verified against catalog_id in the bundle.

Human author: Sam Gu (sgu07966@gmail.com)

🔗 Obvious Project · 🧵 Obvious Thread · 🔀 Obvious PR Artifact

86 band recipes carry 118 non-staple unknown-quantity lines: 103 measured
with real amounts and 15 left to taste (seasoning, garnish, heat only),
each with a note naming why. Three titles promising molasses gain a
measured molasses line plus the step that uses it (rights-pinned).

Fix file data/recipes/fixes/amounts-a.json (fridgeluck/corpus-fixes/v1)
pins before_sha256 per record and carries per-line reason/evidence. The
report evaluation/recipe-quality/amounts-a.md compiles before/after with
the shipped compiler; six recipes land outside the 150-1300 kcal /
2300 mg sodium bars with the exceedance explained in their changes
entries. Tests: pytest evaluation/recipe-quality/test_amounts_a.py
(12 passed).

Co-authored-by: Sam Gu <sgu07966@gmail.com>
@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d91c0b62-1cc0-4c7c-b403-d59b856c67e9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codemetrics-ai

Copy link
Copy Markdown

Note

Review skipped

Codemetrics is installed on this repository, but it hasn't been added to your team yet.

To enable AI code reviews for this repo, go to your dashboard and add FridgeLuck to your team's repositories.

@SamGu-NRX
SamGu-NRX merged commit bc295fd into alpha Oct 16, 2026
3 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-16T12:26:45.961737Z 2f94a0d Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants