Repository navigation
feat(data): add everyday-2026-10 recipe slice — 24 originals + 161 RS v1 rewrites - #163
Conversation
… v1 rewrites 24 FridgeLuck-original recipes (fl-everyday-0001-0024) and 161 RS v1 rewrites of PR #144's legacy rows 167-327 (fl-everyday-0101-0261), assembled by tools/build_slice.py with ingredient-label canonicalization and FSIS safety-class normalization. Checks (all run in the sandbox): - tools/check_everyday.py: 0 errors (ingredient resolution 100%, household grams, category/diet balance, step integrity, dedupe vs the #113 corpus and legacy #144 rows, step-text 12-gram overlap) - pinned suite-C validator (revision 26c7004) via the in-process adapter: VALIDATION GREEN, 185 recipes, bands 14/14 - tools/test_check_everyday.py: 23 tests OK Rights: rights_manifest.json + evidence/rights.json regenerated for all 185 recipes (LicenseRef-FL-Original); evidence/ carries the pinned allergen/conversion tables from the suite revision. Co-authored-by: obvious-autobuild[bot] <262744130+obvious-autobuild[bot]@users.noreply.github.com>
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
|
@coderabbitai review |
|
|
Independent review (Obvious, Autobuild + Max) Verdict: changes needed — the recipe data itself is sound and every substantive claim in the body reproduces (I re-ran the full claimed suite green), but the committed evidence file pins authoring-machine absolute paths, so the headline "slice gates: 0 errors" check fails on any fresh checkout of this branch. The fixes are small and mechanical; no recipe data changes are required. Findings (ranked by severity)
What I verified (commands and results)All at head
What I couldn't verify
Nothing above questions the recipe data: with the finding-1 fix (3 small edits + regenerate), the full claimed suite reproduces green from the committed tree. |
Independent review of PR #163 (comment 6199621078) ranked five findings; all five are addressed. 1. [high] evidence/rights.json pinned authoring-machine absolute paths, so the checker failed on any fresh checkout. gen_rights.py now writes bare filenames and rights_errors() resolves them against the slice directory. Regenerated evidence differs from the committed file in exactly the two recipes_file lines; the sha256 pins are unchanged. 2. [medium] --legacy144 crashed with AttributeError on PR #144's shipped data.json (recipes is an array of rows). dedupe_errors() now normalizes both shapes (title-keyed map and [id, title, minutes, servings, ingredients, tags, instructions, ...] rows), so the natural input works. 3. [medium] README Reproduce block did not run (missing --dir, wrong catalog path), omitted external inputs skipped checks silently, and the promised report.md was absent. README commands are corrected and documented, the checker now prints every skipped external check and counts it in the summary line, and report.md records this validation run. 4. [low] build_slice.py matched fish proteins by substring, so an ingredient list containing 'fish sauce' could reclassify an undercooked poultry endpoint. Matching is now word-boundary based and excludes fish sauce. Rebuilding with the fix reproduces converted-144.jsonl byte-identical. 5. [low] the body claimed the checker prints which inputs it needs; with the finding-3 SKIPPED lines it now does. Tests: 9 regression tests added, one per fix (plus portability controls); all 8 new failure-mode tests fail on the pre-fix code and all 32 tests pass after. Checker 0 error(s) and pinned suite-C validator (26c7004) VALIDATION GREEN (185 recipes, 100% resolution, bands 14/14) re-verified on a fresh detached checkout. See data/recipe-sources/everyday-2026-10/report.md. Co-authored-by: obvious-autobuild[bot] <262744130+obvious-autobuild[bot]@users.noreply.github.com>
Review fixes (16c1352) — changes-needed verdict addressed
The independent review (comment 6199621078) ranked five findings; all five are accepted and fixed — none were disputed. Recipe data itself was not changed.
evidence/rights.jsonpinned authoring-machine absolute paths; checker failed on any fresh checkout (FAIL evidence: pinned recipes files absent)gen_rights.pywrites bare filenames;rights_errors()resolves them against--dir(absolute paths still pass through)test_committed_evidence_uses_bare_filenames— FAIL pre-fix (committed evidence has/home/user/...paths)--legacy144crashed withAttributeError: 'list' object has no attribute 'keys'on PR #144's shippeddata.jsondedupe_errors()normalizes both shapes: title-keyed map and the[id, title, minutes, servings, ingredients, tags, instructions, ...]row array (title =row[1], instructions =row[6])test_row_array_title_match_is_planted+test_row_array_clean_passes— AttributeError pre-fix--dir, wrong catalog pathdata/evidence/usda*.sqlite); omitted external inputs skipped checks silently contradicting the fail-closed docstring; promisedreport.mdabsent;overrides/BRIEF.mdbaked in a dev-only/tmppathapps/ios/Resources/usda_ingredient_catalog.sqlite); checker now prints aSKIPPEDline per missing external input and counts them in the summary (slice-local checker: 0 error(s)is unambiguous);report.mdadded; BRIEF path made checkout-relativetest_all_missing_lists_three/test_present_inputs_list_none—external_skipsdidn't exist pre-fix (AttributeError)fix_safetymatched fish proteins by substring —"fish sauce"in a future ingredient list would reclassify an undercooked poultry endpoint toflesh_fish\b(salmon|fish|tuna|shrimp)\bwithfish saucestripped before matching; word-boundary matching also correctly excludes e.g. "fisherman's"test_fish_sauce_does_not_reclassify_poultry— FAIL pre-fix (meat_poultry150 °F becameflesh_fish); controltest_real_fish_ingredient_reclassifiesstays greenSKIPPEDlines name each input; body wording updatedNo findings were disputed. No recipe data changed: after the fix-4 assembler change,
python3 tools/build_slice.pyreproducesconverted-144.jsonlbyte-identical (sha256sum -cOK), and the regeneratedevidence/rights.jsondiffers from the previously committed file in exactly the tworecipes_filelines — therecipes_sha256pins are unchanged.Commands run on a fresh detached checkout of this branch (arbitrary path)
--legacy144 legacy-144.jsonis now the natural input (PR #144's shipped shape); the jq conversion the reviewer had to hand-build is no longer needed. Not re-verified here: hosted macOS CI on 16c1352 (the PR touches no Swift; the previous head's CI was green). Still a draft.What changed and why
Adds the everyday-2026-10 recipe slice under
data/recipe-sources/everyday-2026-10/, in the same RS v1 record shape as the PR #113 corpus:originals.jsonl,fl-everyday-0001…0024) — FridgeLuck-original recipes covering the eight everyday categories (breakfasts, packed lunches, 20-minute dinners, budget/student pantry, high-protein, vegetarian/vegan mains, batch/leftovers, sides/salads), all six cuisines, all three meal slots, and every cook-time band.converted-144.jsonl,fl-everyday-0101…0261), assembled from legacy ingredients (grams preserved) + authored title/step fragments viatools/build_slice.py, with legacy ingredient-label canonicalization and FSIS safety-class normalization.rights_manifest.json+evidence/rights.jsoncover all 185 recipes (LicenseRef-FL-Original, one authoring record each);evidence/also pins the allergen-alias and conversion tables from the suite revision.tools/check_everyday.py(slice-local gates) + an adapter that runs the pinned suite-C validator (revision 26c7004) against a temporary checkout with slice-specific affirmative-evidence forms, extended in-process;tools/build_slice.py(assembler),tools/gen_rights.py(evidence),tools/test_check_everyday.py(23 planted-failure tests).The slice closes out the two pending source batches noted for PR #158: originals-world already has a slice; this is the everyday one.
How I checked it
All commands run in the Linux sandbox (no Xcode; this PR is data + Python tooling only):
python3 tools/check_everyday.py --dir . --catalog ../../../apps/ios/Resources/usda_ingredient_catalog.sqlite --bundled ../../../apps/ios/Resources/data.json --corpus113 /tmp/corpus/data/recipes/corpus.jsonl --legacy144 /tmp/legacy144-dedupe.json--validate-suite /tmp/suite26 --corpus-tools /tmp/corpus/data/recipes/toolspython3 tools/test_check_everyday.pyThe checker's dedupe/overlap inputs come from PR #113's corpus (
/tmp/corpus/...) and PR #144's legacy records (/tmp/legacy144-dedupe.json), both fetched from the repo during development; the checker prints which inputs it needs when run.What I could not check
Assumptions
overrides/categories.jsonfor review.meat_poultryendpoint below 165 °F is reclassified to the recipe's actual protein class, e.g. eggs at 160 °F or ground beef at 160 °F).fl-everyday-0114).fl-originalauthoring pipeline; the checker adapter extends them locally (never modifies the validator) so each slice recipe is verified against its own pinned authoring record.🚢 Draft pending review.
Co-authored-by: obvious-autobuild[bot] <262744130+obvious-autobuild[bot]@users.noreply.github.com>