Expiry system deep-dive: secondary use windows and ingredient-specific post-date behavior #84

Closed
opened 2026-04-14 14:02:25 -07:00 by pyr0ball · 1 comment
Owner

Exact duplicate of #83. Closing this copy.

Exact duplicate of #83. Closing this copy.
Author
Owner

SAFETY CONSTRAINT: Bread mold is a hard gate

This is a food safety issue, not a UX softness issue. Any secondary-use feature for bread must enforce this clearly.

Bread mold (Aspergillus, Penicillium, Rhizopus and others) produces mycotoxins that penetrate the entire loaf through its porous structure. Unlike hard cheese — where a small mold patch can be safely cut away — by the time mold is visible on bread the colony has already propagated through the interior. The sniff test does not catch mycotoxins, which are odorless.

Required behavior

  • Any visible mold = discard, full stop. The app must never suggest a use for moldy bread under any circumstances.
  • "Stale" means dry or hardened texture, no mold. These are distinct states and the feature must treat them as distinct.
  • Any stale-bread suggestion in the UI must be gated behind a plain-language mold check prompt, e.g.:

    "Is there any mold on it? Even a small spot? → Discard it. Otherwise, stale bread works great for croutons."

  • The mold check must be a required step, not an optional disclaimer the user can skip.

Implementation note

This safety gate should be modeled in the secondary-window logic as a requires_visual_check: true flag on relevant categories. The UI renders the check prompt before surfacing any secondary-use recipe suggestions. If the user confirms mold, the item is marked for discard and no recipe is suggested.

Categories that likely need this flag: bread, soft cheese, cooked grains, cooked legumes, soft fruits.

Categories where mold is generally cuttable (but still warrants a note): hard cheese, firm root vegetables, hard salami/cured meats (verify per food safety guidelines).

Do not ship the secondary-window feature for bread without this gate in place.

## SAFETY CONSTRAINT: Bread mold is a hard gate **This is a food safety issue, not a UX softness issue.** Any secondary-use feature for bread must enforce this clearly. Bread mold (Aspergillus, Penicillium, Rhizopus and others) produces **mycotoxins** that penetrate the entire loaf through its porous structure. Unlike hard cheese — where a small mold patch can be safely cut away — by the time mold is visible on bread the colony has already propagated through the interior. The sniff test does not catch mycotoxins, which are odorless. ### Required behavior - **Any visible mold = discard, full stop.** The app must never suggest a use for moldy bread under any circumstances. - "Stale" means **dry or hardened texture, no mold.** These are distinct states and the feature must treat them as distinct. - Any stale-bread suggestion in the UI must be gated behind a plain-language mold check prompt, e.g.: > "Is there any mold on it? Even a small spot? → Discard it. Otherwise, stale bread works great for croutons." - The mold check must be a **required step**, not an optional disclaimer the user can skip. ### Implementation note This safety gate should be modeled in the secondary-window logic as a `requires_visual_check: true` flag on relevant categories. The UI renders the check prompt before surfacing any secondary-use recipe suggestions. If the user confirms mold, the item is marked for discard and no recipe is suggested. Categories that likely need this flag: bread, soft cheese, cooked grains, cooked legumes, soft fruits. Categories where mold is generally cuttable (but still warrants a note): hard cheese, firm root vegetables, hard salami/cured meats (verify per food safety guidelines). **Do not ship the secondary-window feature for bread without this gate in place.**
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/kiwi#84
No description provided.