Repository navigation
[obvious-fleet] fix(ios): make Not-this-item on ingredient review never a silent no-op - #36
obvious-autobuild[bot] wants to merge 3 commits into
Conversation
…ure function clearSelection(for:) was instance-bound SwiftUI state, untestable. Extract IngredientReviewView.notThisItemOutcome as a pure decision and apply its outcome in clearSelection. Behavior-preserving: didRejectDetection is false, so the new rejection wiring is inert; the added tests encode the contract we want (a tap must never be a silent no-op) and fail on this commit by design.
|
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 |
…rget On a first run the learning cache is empty, so no candidate chip is pre-selected and clearSelection mutated nothing at all — the tap reported dead in the first-run walkthrough. It did not miss: in that state the action was a guaranteed silent no-op. - notThisItemOutcome now always rejects the row, so every tap produces a visible state change (the row leaves the review list; counts, pill and progress bar follow via reviewableNeedsConfirmation). A never-selected row was never ingested (ingestConfirmedScan skips unconfirmed detections), so this is review-screen state only. - 'Not this item' and 'Choose another' had ~17pt tall hit targets (caption label, no frame expansion); both now get a 44pt minimum frame with a contentShape, per the HIG minimum. - Adds accessibilityIdentifier ingredient_review_not_this_item.
…no-op Folds obv/fridgeluck-046 @ ebb6047 into the app integration trunk, fold 6 of 12. Co-authored-by: obvious-autobuild[bot] <262744130+obvious-autobuild[bot]@users.noreply.github.com>
PR #36's obv/fridgeluck-046 was cut from feat/minimal-product-20261007, which is stale against the current integration branch alpha (69 commits ahead at 0309dd1). Merge origin/alpha into the branch so the change integrates with alpha; the evidence commits 31a4819 and ebb6047 are preserved verbatim. Co-authored-by: obvious-autobuild[bot] <262744130+obvious-autobuild[bot]@users.noreply.github.com>
|
Independent review (Obvious, Autobuild + Max) Verdict: ready. Two low-severity findings below, neither a merge blocker. Disclosure for context: this review comes from the same automation fleet that authored the PR; every claim below was re-derived from the repo and CI logs, not taken from the PR body. What I verified (commands and results)
Findings (ranked)
Informational, not a finding: What I couldn't verify
Nothing blocking: the fix does what it claims, the tests exercise the real path and fail against the old behavior, and the scope is right. |
fleet-packet: burst6-cont-fridgeluck-36
What changed and why
Continuation of this PR's original change: "Not this item" on a needs-confirmation ingredient-review row was a silent no-op when no candidate was selected (first run, empty learning cache). It now always produces a visible state change:
clearSelectionroutes through a new pure state transition,IngredientReviewView.notThisItemOutcome(detection:selectedIngredientId:suggestedIngredientId:), which (a) removes a previously selected suggestion from the confirmed set, (b) clears the selection entry, (c) rejects the row (rejectedDetectionIds), and (d) records the learning outcome for a shown suggestion (unchanged telemetry semantics).unresolvedCount,confirmationCompletion, the divider between sections, and the confidence-health pill ("All clear" once nothing is left).contentShape(Rectangle()), andaccessibilityIdentifier("ingredient_review_not_this_item").apps/ios/Tests/IngredientReviewNotThisItemTests.swiftcovers the pure transition: first-run no-selection (previously the dead-tap case), selected-suggestion rejection, and suggestion-matches-vision-label counting as accepted.Port onto alpha. The original base
feat/minimal-product-20261007is stale against the current integration branchalpha(69 alpha commits since merge-base8c9c88f; alpha tip0309dd1). The change is ported by mergingorigin/alphaintoobv/fridgeluck-046as merge commit5cfb966— chosen over rebase so the evidence commits31a4819andebb6047keep their hashes and the earlier CI runs on them stay attributable. The merge had zero conflicts. The PR base was retargeted fromfeat/minimal-product-20261007toalpha.How I verified it (commands and results)
git merge origin/alpha --no-ff→ zero conflicts; merge commit5cfb966with parentsebb6047+0309dd1.git diff --stat origin/alpha..HEAD→ exactly 3 files, +130/−10 (IngredientReviewSections.swift+5,IngredientReviewView.swift+67/−10,Tests/IngredientReviewNotThisItemTests.swift+68): the merged head is alpha plus only this change.git diff --stat ebb6047..HEAD→ 160 files, +17147/−677, all alpha-side; none of this PR's files are touched.grepon the mergedIngredientReviewView.swift: alpha'slocation: .inferredFromIngredientcall-site change (line 71) coexists withrejectedDetectionIds(line 96),reviewableNeedsConfirmation(line 493), andnotThisItemOutcome(lines 695/733).swift-frontend -parse(Swift 6.1.2, Linux) on the three touched files → no parse errors.swift test --package-path apps/ios(Linux) → compilation ofFLFeatureLogicfails atLiveAssistantPanelLayout.swift:1:8: error: no such module 'CoreGraphics'. This is a pre-existing limitation of the package on Linux (CoreGraphics/SwiftUI are Apple-only), not something this branch introduced; the repo's own iOS tests arexcodebuild testagainst the generated Xcode project and cannot run in this sandbox.(nil, nil)→ reject only;(5, 5)vs ingredient 7 → reject + clear + recordedfalse;(9, 9)→ recordedtrue).5cfb966, run https://github.com/SamGu-NRX/FridgeLuck/actions/runs/38755647018: build-and-test pass (6m52s), dead-code-advisory pass (2m44s), CodeRabbit pass.What is not verified
IngredientReviewNotThisItemTests) were not executed locally; they run in the hostedbuild-and-testjob. Everything else about the SwiftUI behavior (44pt targets,contentShape, VoiceOver identifier) also rests on that job — no device run was possible.Assumptions
alpha(matching fleet PRs feat(ios): add label-numbers evaluation corpus with checker and parser replay #55 and feat(benchmarks): dish-ambiguity-v1 — taxonomy, manifests, and evaluated classifier pins #57); the task's--base feat/minimal-product-20261007create-command applies only when no PR exists, and PR [obvious-fleet] fix(ios): make Not-this-item on ingredient review never a silent no-op #36 existed, so it was updated in place instead.ebb6047) is still reachable as the first parent of5cfb966.[obvious-fleet]+ summary format, so it was kept; the PR remains a draft.