Cadence App — ordered action listACTION_LIST.md · raw .md
Cadence App — ordered action list
Subject: read-only audit of the app repository at 03a176e72ef0075eec86b8915cbe6e93042a3b9d (0.4.12+18).
Rule: the receiving AI team implements and tests; the project owner makes business/account decisions; Serge owns repository, build and release engineering. Long-lead and irreversible work comes first.
| Order | Action | Owner | Dependency | Irreversible? | Acceptance evidence |
|---|---|---|---|---|---|
| 1 | Form the jointly owned French seller entity and apply immediately for D-U-N-S. | the project owner | None | Entity choice: costly to reverse; D-U-N-S: no | D-U-N-S/organisation record accepted; Google warns of up to 30 days or more (research/03_business_decisions.md Decision 3). |
| 2 | Ratify Toque or reject it with a replacement. Before asset work, enter Toque in App Store Connect's New App name field to detect an unpublished reservation; re-check QuiToque status before filing. |
the project owner | None | Name is changeable, but assets/trademark spend are sunk | Written decision plus App Store Connect result (research/03_business_decisions.md Decision 1). |
| 3 | Register toquekitchen.com and the defensive domains named in the decision record; publish a functional placeholder on the primary domain. |
the project owner | Name ratified | Domain acquisition: effectively yes | RDAP ownership and live HTTPS page (research/03_business_decisions.md Decisions 1–2). |
| 4 | Ratify com.toquekitchen.toque and one App Store SKU before creating either app record. |
the project owner | Entity and name | Yes from first upload/record use | Written identifiers; no store upload precedes approval (research/03_business_decisions.md Decision 2; store_readiness/02_apple_app_store.md I2/I4). |
| 5 | Decide revenue model: the researched 9,99 EUR/month freemium subscription or an ad/paywall-free launch. Record how the decision answers the 100 of 358 anti-paywall complaint evidence. |
the project owner | None | No | Written decision and scope statement (research/03_business_decisions.md Decision 4; aso/01_competitors.md §4.1). |
| 6 | Ratify France-first, French-primary launch. | the project owner | Name | No | Written storefront/language decision (research/03_business_decisions.md Decision 5). |
| 7 | Open organisation developer accounts after D-U-N-S; complete identity, payment, tax and DSA trader verification. | the project owner | 1, 3 | Account type and public seller identity: effectively yes | Active Apple Developer and Play Console organisation accounts (store_readiness/01_google_play.md action 12; store_readiness/02_apple_app_store.md B1/B11). |
| 8 | Rename product and package/bundle identifiers everywhere while preserving the 9 existing preferences keys through an explicit migration. |
AI team | 2, 4 | The upload makes the identifiers irreversible | Source/search inventory clean; old install migrates without losing timers (research/03_business_decisions.md Decisions 1–2). |
| 9 | Fix the backward-wall-clock architecture with suspend-inclusive boot time, not Stopwatch. |
AI team | None | No | B5 tests in REPORT.md §3 and mutation proof pass (agent_reports/S1_refute.md §2). |
| 10 | Repair the non-idempotent zone-to-sound migration and its adjacent tone-validation/data-loss paths. | AI team | None | No | Crash-boundary/two-boot migration matrix passes (findings/S2_persistence.md; agent_reports/S2_refute.md). |
| 11 | Repair iOS backstop initialisation/details; bundle the alarm sound; add the time-sensitive entitlement. Do not add background audio mode. | AI team | Name for final sound/icon naming only | No | iOS override test changes from ready=false/CALLS=[] to ready and scheduled Darwin payload (store_readiness/04_ios_blockers.md §5). |
| 12 | Replace every iOS/App Store placeholder icon and both-platform launch-template assets after the name decision. | AI team | 2 | No | Zero template hash matches; Xcode asset catalog passes (agent_reports/S9_refute.md; agent_reports/S11_refute.md). |
| 13 | Generate the Play upload keystore, back it up off-repo, create gitignored key properties, and substitute the release signing config for the debug binding. | Serge | 4 | Upload certificate: effectively yes | APK and AAB certificate checks no longer print CN=Android Debug (store_readiness/01_google_play.md §3.a). |
| 14 | Execute every surviving BLOCKER/HIGH row in REPORT.md §4, then MEDIUM and LOW rows; preserve REFUTED rows as negative requirements. |
AI team | 8–13 | No | Each row's exact red/green test and §8 gates pass (REPORT.md §4, §8). |
| 15 | Add CI for fatal analyzer, whole suite, coverage floors, store-manifest permissions, asset presence and release-signing checks. | AI team | Core fixes stable | No | CI runs on a clean clone; no human-only verification path remains (research/01_prior_work.md A1-3). |
| 16 | Correct and ship font/audio notices; do not use findings/S11_LICENSES_draft.md until its 7 refuter corrections are applied. |
AI team | Asset set final | No | Licence reviewer checklist passes (agent_reports/S11_refute.md §8). |
| 17 | Publish bilingual privacy and support pages; substitute seller, contact, domain and product tokens; add the in-app privacy link. | the project owner (text/hosting), AI team (link) | 1–3 | No | Live HTTPS URLs and in-app link (store_readiness/03_legal_compliance.md §§1–2; aso/04_web_seo.md §2). |
| 18 | Install current Xcode/CocoaPods on the release Mac; configure Team/App ID/certificate/profile; produce the first iOS release/no-codesign build. | Serge | 7, 8, 11–12 | App ID after use: yes | flutter build ios --release --no-codesign succeeds, then signed archive validates (store_readiness/02_apple_app_store.md B6–B7). |
| 19 | Create both store records with the ratified identifiers, primary language, SKU, app type and Play App Signing terms. | the project owner | 4, 7, 13, 18 | Yes: package/bundle/SKU and signing relationship | Records exist with approved values (store_readiness/01_google_play.md action 13; store_readiness/02_apple_app_store.md B8). |
| 20 | Complete Play Data Safety, permissions, IARC, audience, ads and other declarations; complete Apple privacy, age, content-rights, encryption and DSA fields. Use the refuter-corrected privacy-manifest conclusion. | the project owner | 17, 19 | No | Console forms complete; no false backup-as-collection declaration (store_readiness/03_legal_compliance.md §§4–8; agent_reports/S13_refute.md S13-R3). |
| 21 | Produce final French listing copy, icon, feature graphic, tablet screenshots, iPhone/iPad sets and alt text from the verified build. Keep all alarm-volume claims Android-specific until hardware proves them. | the project owner + Serge | 2, 6, 11–12, 18 | No | Character/pixel gates in aso/03_listing_copy.md §§2–5, 7–8 and store checklists pass. |
| 22 | Run whole-suite mutation specificity and per-file coverage gates for every new test; store each distinct patch and clean-revert proof. | AI team | 14–15 | No | Every gate in REPORT.md §8 passes; suite count exceeds 123, 0 skipped (AGENT_RULES.md R8). |
| 23 | Run the written physical-device protocol on each supported Android tablet and iPad: visible/background/locked/force-quit/power-save/reboot, wake-lock recovery, simultaneous alarms, languages, sounds, touch and orientation. | Serge + the project owner | 11, 14, 18, 22 | No | External-clock/video and exported journal show a 60-second alarm at deadline in every supported state (research/01_prior_work.md §4). |
| 24 | Upload the signed AAB to Play internal testing and the signed iOS build to TestFlight; inspect Play's pre-launch report and repeat the device protocol on distributed builds. | Serge | 19–23 | First uploads permanently claim identifiers | Clean pre-launch report/TestFlight build and repeated hardware evidence (store_readiness/01_google_play.md actions 22–23; store_readiness/02_apple_app_store.md B17). |
| 25 | If the project owner chose a personal Google account instead of the recommendation, recruit 12 real tablet users for 14 continuous engaged days and allow up to 7 further days for production-access review. Organisation accounts skip this step. |
the project owner | 7, 24 | No | Production access granted (store_readiness/01_google_play.md action 23). |
| 26 | Submit France-first listings only after all blocker, store, mutation, coverage and device gates pass. Do not use a staged rollout for the first Play release. | the project owner | 20–25 | Public release: materially consequential | Both stores accept the release (store_readiness/01_google_play.md action 24; store_readiness/02_apple_app_store.md §10). |
| 27 | Execute direct pilot-kitchen outreach, referral and professional-network plan; add en-GB and wider EU/UK only after the France cohort passes service reliability. | the project owner | 26 | No | Channel milestones in aso/05_gtm.md §§2–7. |
Finding-by-finding execution queue
This queue makes every register row explicit. The full imperative fix and exact red/green test are in the matching REPORT.md §4 heading. A REFUTED row is a negative action: preserve the rejection and do not implement its superseded remedy.
| Queue | Severity | Action | Owner | Dependency | Irreversible? | Work-order source |
|---|---|---|---|---|---|---|
| F-001 | BLOCKER | Implement the surviving defect in S1-F1: A backward step of the wall clock silences every running timer for the length of the step. |
AI team | the project owner decisions that affect identity; otherwise none | No | REPORT.md §4, S1-F1; findings/S1_engine.md · proof/01_findings/S1/ · proof/01_findings/S1_refute/ |
| F-002 | BLOCKER | Implement the surviving defect in S2-F2: The zone→sound migration is NOT idempotent: a second run rewrites every dish's ringtone to Bell. |
AI team | the project owner decisions that affect identity; otherwise none | No | REPORT.md §4, S2-F2; findings/S2_persistence.md · proof/01_findings/S2/ · proof/01_findings/S2_refute/ |
| F-003 | BLOCKER | Implement the surviving defect in S3-F1 + S9-F07 (+ prior A1-1, iOS half): The OS alarm backstop is dead on iOS: the notification plugin is initialised Android-only and no iOS sound resource is bundled, so the app boots into a permanent red banner and iOS has nothing to play. |
AI team | the project owner decisions that affect identity; otherwise none | No | REPORT.md §4, S3-F1 + S9-F07 (+ prior A1-1, iOS half); findings/S3_audio_alarms.md · findings/S9_platform_config.md · agent_reports/S3_refute.md · agent_reports/S9_refute.md |
| F-004 | BLOCKER | Implement the surviving defect in S3-F2 + S9-F03: An iOS build cannot ring at all once it leaves the screen: UIBackgroundModes is absent from the whole Info.plist. |
AI team | the project owner decisions that affect identity; otherwise none | No | REPORT.md §4, S3-F2 + S9-F03; findings/S3_audio_alarms.md · findings/S9_platform_config.md · agent_reports/S3_refute.md · agent_reports/S9_refute.md |
| F-005 | BLOCKER | Implement the surviving defect in S3-F3: setStreamVolume failure is swallowed in Kotlin and never verified in Dart, so the 15 % audible floor is a claim the app cannot back. |
AI team | the project owner decisions that affect identity; otherwise none | No | REPORT.md §4, S3-F3; findings/S3_audio_alarms.md · agent_reports/S3_refute.md §Part 1 · proof/01_findings/S3_refute/ |
| F-006 | BLOCKER | Implement the surviving defect in S9-F01: The release build type signs with the debug keystore; both APK and AAB carry CN=Android Debug, which Google Play does not accept. |
AI team | the project owner decisions that affect identity; otherwise none | No | REPORT.md §4, S9-F01; findings/S9_platform_config.md · proof/01_findings/S9_refute/ |
| F-007 | BLOCKER | Implement the surviving defect in S9-F02 + R-F1 (S11's refuter): The iOS App Store icon set is the byte-identical Flutter placeholder logo; flutter_launcher_icons was configured to skip iOS. |
AI team | the project owner decisions that affect identity; otherwise none | No | REPORT.md §4, S9-F02 + R-F1 (S11's refuter); findings/S9_platform_config.md · agent_reports/S9_refute.md §BLOCKER 2 · agent_reports/S11_refute.md §7 R-F1 |
| F-008 | BLOCKER | Implement the surviving defect in S9-F04: The iOS project has never been configured for a real signing identity, and the required Xcode/SDK toolchain is not installed. |
AI team | the project owner decisions that affect identity; otherwise none | No | REPORT.md §4, S9-F04; findings/S9_platform_config.md · agent_reports/S9_refute.md §BLOCKER 4 |
| F-009 | HIGH | Implement the surviving defect in M1 (S10's refuter): One accidental tap on the biggest target on the board converts a cooking dish into one that will never ring, and cancels its OS safety net. |
AI team | All related BLOCKER rows | No | REPORT.md §4, M1 (S10's refuter); agent_reports/S10_refute.md §6 |
| F-010 | HIGH | Implement the surviving defect in S10-F1 + S13-F4: A restaurant's entire configuration exists in one copy, on one tablet, with no in-app export and no import. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S10-F1 + S13-F4; findings/S10_product.md · findings/S13_data.md · agent_reports/S10_refute.md §1 · agent_reports/S13_refute.md · research/01_prior_work.md A1-4 / A1-R5 |
| F-011 | HIGH | Implement the surviving defect in S10-F14: What the operator experiences in each service failure, assuming the OS backstop does not ring. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S10-F14; findings/S10_product.md · agent_reports/S10_refute.md |
| F-012 | HIGH | Implement the surviving defect in S10-F2: Every destructive action in the product is one unconfirmed tap with no undo. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S10-F2; findings/S10_product.md · agent_reports/S10_refute.md §1, §3 |
| F-013 | HIGH | Implement the surviving defect in S10-F3: In edit mode, tapping a ringing tile opens the editor instead of silencing the alarm. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S10-F3; findings/S10_product.md · agent_reports/S10_refute.md |
| F-014 | HIGH | Implement the surviving defect in S11-F1: The shipped app contains three OFL-licensed font families with no copyright notice and no licence text. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S11-F1; findings/S11_asset_licensing.md · agent_reports/S11_refute.md §1 |
| F-015 | HIGH | Implement the surviving defect in S12-F9: After a reboot nothing brings the board back; only the OS notifications survive. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S12-F9; findings/S12_lifecycle.md · agent_reports/S12_refute.md §6 |
| F-016 | HIGH | Implement the surviving defect in S12R-F3: S12's own Backstop.dispose() fix leaves the OS safety net on a stale deadline. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S12R-F3; agent_reports/S12_refute.md §2.1 · proof/01_findings/S12_refute/r6_backstop_dispose_WITH_s12fix.txt |
| F-017 | HIGH | Implement the surviving defect in S13-F1: The exported journal carries operator free text and a device description off the device, unredacted. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S13-F1; findings/S13_data.md · agent_reports/S13_refute.md |
| F-018 | HIGH | Implement the surviving defect in S13-F2 + S9-F10 + M4 (S10's refuter): Android auto-backup is on by default, so the journal, the kitchen's entire menu and every preference are copied into the operator's Google account and restored onto any device. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S13-F2 + S9-F10 + M4 (S10's refuter); findings/S13_data.md · findings/S9_platform_config.md · agent_reports/S13_refute.md · agent_reports/S10_refute.md §6 M4 · agent_reports/S9_refute.md |
| F-019 | HIGH | Implement the surviving defect in S13-F5: The journal writes an unmanaged second copy to external storage that nothing ever deletes. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S13-F5; findings/S13_data.md · agent_reports/S13_refute.md §3 S13-R2 |
| F-020 | HIGH | Implement the surviving defect in S13-R2 (S13's refuter): S13-F5 and S13-F2 compound into silent loss of the only configuration backup: roughly nine journal exports blow Android's 25 MB Auto Backup quota and cloud backup stops, unannounced. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S13-R2 (S13's refuter); agent_reports/S13_refute.md §3 |
| F-021 | HIGH | Implement the surviving defect in S14-F1: A failure inside Store.open() kills the app before runApp: the tablet shows a blank window forever, nothing logged, nothing on screen. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S14-F1; findings/S14_entry_unowned.md · agent_reports/S14_refute.md §2.1 |
| F-022 | HIGH | Implement the surviving defect in S14-F2: Both awaited startup calls can hang forever with no timeout and no watchdog, producing the same blank window with no exception to catch. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S14-F2; findings/S14_entry_unowned.md · agent_reports/S14_refute.md §2.2 |
| F-023 | HIGH | Implement the surviving defect in S2-F4: A timer created after v0.4.11 is forced to Bell if the migration ever re-runs. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S2-F4; findings/S2_persistence.md · proof/01_findings/S2_refute/ |
| F-024 | HIGH | Implement the surviving defect in S2-F5 + S5-F4: A failed journal write discards the buffered lines permanently and tells nobody; Journal.ready keeps returning true. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S2-F5 + S5-F4; findings/S2_persistence.md · findings/S5_error_handling.md · agent_reports/S2_refute.md · agent_reports/S5_refute.md |
| F-025 | HIGH | Implement the surviving defect in S2-F6 + S5-F3: Journal rotation erases the entire journal when the file cannot be decoded. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S2-F6 + S5-F3; findings/S2_persistence.md · findings/S5_error_handling.md · agent_reports/S2_refute.md · agent_reports/S5_refute.md |
| F-026 | HIGH | Implement the surviving defect in S2-F7: A dead journal is completely silent: no diagnostic, no banner, and every later event vanishes. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S2-F7; findings/S2_persistence.md · proof/01_findings/S2_refute/ |
| F-027 | HIGH | Implement the surviving defect in S2-F8: Diag.fail can itself throw, and the throw escapes the catch block that called it. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S2-F8; findings/S2_persistence.md · proof/01_findings/S2_refute/ |
| F-028 | HIGH | Implement the surviving defect in S2-F9: Corrupt timers plus a wrong-typed seeded flag installs the demo kitchen over a real one. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S2-F9; findings/S2_persistence.md · proof/01_findings/S2_refute/ |
| F-029 | HIGH | Implement the surviving defect in S2R-M1: A corrupt clones value silently destroys the run entries of every batch in flight. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S2R-M1; agent_reports/S2_refute.md §7 |
| F-030 | HIGH | Implement the surviving defect in S3-F17: On iOS there is no audible floor at all, and nothing detects a muted device. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S3-F17; findings/S3_audio_alarms.md · agent_reports/S3_refute.md |
| F-031 | HIGH | Implement the surviving defect in S3-F4: The TTS engine's "I do not have that language" answer is discarded, so the voice can be silently wrong for a whole service. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S3-F4; findings/S3_audio_alarms.md · agent_reports/S3_refute.md §Part 2 |
| F-032 | HIGH | Implement the surviving defect in S3-F5: The journal records an announcement as spoken before the native side has had a chance to fail, and the native false is thrown away. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S3-F5; findings/S3_audio_alarms.md · agent_reports/S3_refute.md |
| F-033 | HIGH | Implement the surviving defect in S3-F6: The backstop reports itself ready when POST_NOTIFICATIONS was refused, and never re-checks the channel afterwards. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S3-F6; findings/S3_audio_alarms.md · agent_reports/S3_refute.md |
| F-034 | HIGH | Implement the surviving defect in S3-F7: Exact-alarm revocation on Android 12/12L cancels every backstop, and nothing in the app detects it. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S3-F7; findings/S3_audio_alarms.md · agent_reports/S3_refute.md |
| F-035 | HIGH | Implement the surviving defect in S3-F8: The alarm level is re-imposed only on the rising edge of a ring, so the volume rocker can mute an alarm that is already ringing. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S3-F8; findings/S3_audio_alarms.md · agent_reports/S3_refute.md |
| F-036 | HIGH | Implement the surviving defect in S3-F9: lib/audio/audio.dart had 5.26 % line coverage: every path a silent alarm takes was untested. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S3-F9; findings/S3_audio_alarms.md · agent_reports/S3_refute.md §Part 6 |
| F-037 | HIGH | Implement the surviving defect in S3R-F1: Three of S3's 40 new tests assert a behaviour the whole 163-test suite cannot detect. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S3R-F1; agent_reports/S3_refute.md §4 |
| F-038 | HIGH | Implement the surviving defect in S3R-F2: The SecurityException justifying BLOCKER S3-F3 cannot fire at that call site, and 1 of its 3 proposed fixes is inert. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S3R-F2; agent_reports/S3_refute.md §4 |
| F-039 | HIGH | Implement the surviving defect in S3R-F3: The operator banner cannot render five of the app's critical scopes, so a critical diagnostic can be raised and shown to nobody — and two of S3's own fixes land in exactly that hole. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S3R-F3; agent_reports/S3_refute.md §4 |
| F-040 | HIGH | Implement the surviving defect in S4-F04: The 150 ms heartbeat is gated behind three awaits with no timeout; if one never completes the board freezes silently. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S4-F04; findings/S4_ui.md · proof/01_findings/S4/ |
| F-041 | HIGH | Implement the surviving defect in S6R-F1: An out-of-set tone name reaches assetFor unvalidated and rings a silent alarm. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S6R-F1; agent_reports/S6_refute.md §Findings S6 missed |
| F-042 | HIGH | Implement the surviving defect in S7-F1: The 150 ms heartbeat is untested, and its named constant has zero consumers. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7-F1; findings/S7_tests.md · agent_reports/S7_refute.md |
| F-043 | HIGH | Implement the surviving defect in S7-F13: The ringtone-asset test cannot detect a filename-case mismatch on macOS. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7-F13; findings/S7_tests.md · agent_reports/S7_refute.md §10 |
| F-044 | HIGH | Implement the surviving defect in S7-F16 + S4-F13 + S5-F9: Six lib/ files — 837 of 1,927 instrumented lines, 43.4 % of the codebase — are executed by zero tests. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7-F16 + S4-F13 + S5-F9; findings/S7_tests.md · findings/S4_ui.md · findings/S5_error_handling.md · proof/00_baseline/coverage.txt |
| F-045 | HIGH | Implement the surviving defect in S7-F2: Every assertion about the alarm lead is computed from the constant it claims to test. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7-F2; findings/S7_tests.md · agent_reports/S7_refute.md §10 |
| F-046 | HIGH | Implement the surviving defect in S7-F3: lib/ui/home.dart (722 lines) has no test, and cannot be time-tested as written. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7-F3; findings/S7_tests.md · proof/00_baseline/coverage.txt |
| F-047 | HIGH | Implement the surviving defect in S7-F4: The backstop's past-deadline guard is not what makes its own test pass. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7-F4; findings/S7_tests.md · agent_reports/S7_refute.md §10 |
| F-048 | HIGH | Implement the surviving defect in S7-F5: No backstop test uses a chained timer, so the final-deadline rule is unprotected. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7-F5; findings/S7_tests.md · agent_reports/S7_refute.md §10 |
| F-049 | HIGH | Implement the surviving defect in S7-F6: Nothing proves the backstop cancels the OS alarm of a timer that was stopped. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7-F6; findings/S7_tests.md · agent_reports/S7_refute.md |
| F-050 | HIGH | Implement the surviving defect in S7-F8: The voice queue's pacing, staleness and cancellation guards all survive mutation. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7-F8; findings/S7_tests.md · agent_reports/S7_refute.md §10 |
| F-051 | HIGH | Implement the surviving defect in S7R-F4: lib/ui/modals.dart (300 instrumented lines, 65 % covered) received zero mutations; five of six the refuter placed there survive. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7R-F4; agent_reports/S7_refute.md §5 · proof/01_findings/S7_refute/extension_results.json |
| F-052 | HIGH | Implement the surviving defect in S7R-F5: lib/ui/tile.dart (819 lines, the largest file in the app) received zero mutations; all three the refuter placed survive. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S7R-F5; agent_reports/S7_refute.md §5 · proof/01_findings/S7_refute/extension_results.json |
| F-053 | HIGH | Implement the surviving defect in S8-F1 + S14R-M2: The app declares no Flutter localisations, so every framework string is English whatever the app language. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S8-F1 + S14R-M2; findings/S8_i18n.md · agent_reports/S8_refute.md · agent_reports/S14_refute.md §3 S14R-M2 |
| F-054 | HIGH | Implement the surviving defect in S8-F2: The generated spoken announcement is grammatically wrong in both languages, and v0.4.7 replaced correct English with it. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S8-F2; findings/S8_i18n.md · agent_reports/S8_refute.md §1 |
| F-055 | HIGH | Implement the surviving defect in S8-F3: A French first launch seeds an English board and speaks English dish names in French sentences. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S8-F3; findings/S8_i18n.md · agent_reports/S8_refute.md §1 |
| F-056 | HIGH | Implement the surviving defect in S9-F05: USE_FULL_SCREEN_INTENT is declared and used, but the app never requests it at runtime and has no degraded path if Play declines the auto-grant. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S9-F05; findings/S9_platform_config.md · agent_reports/S9_refute.md §Part 4 · store_readiness/01_google_play.md §5.2 |
| F-057 | HIGH | Implement the surviving defect in S9-F06: MODIFY_AUDIO_SETTINGS is declared but ACCESS_NOTIFICATION_POLICY is not, so the alarm-volume write throws under Do Not Disturb and the exception is swallowed. |
AI team | All related BLOCKER rows | No | REPORT.md §4, S9-F06; findings/S9_platform_config.md · agent_reports/S9_refute.md §Part 4 |
| F-058 | MEDIUM | Implement the surviving defect in M2 (S10's refuter): A single-duration dish can only be given a duration whose seconds are a multiple of five. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, M2 (S10's refuter); agent_reports/S10_refute.md §6 |
| F-059 | MEDIUM | Implement the surviving defect in MISS-1 (S1's refuter): reconcile() validates chain→def but never def→chain, so a chain that loses its flag rings at the end of step 1. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, MISS-1 (S1's refuter); agent_reports/S1_refute.md §5 |
| F-060 | MEDIUM | Implement the surviving defect in MISS-2 (S1's refuter): remainingMs is clamped on every live path and on none of the restore paths. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, MISS-2 (S1's refuter); agent_reports/S1_refute.md §5 |
| F-061 | MEDIUM | Implement the surviving defect in R-F2 (S11's refuter): S11's asset inventory omits 33 tracked binaries. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, R-F2 (S11's refuter); agent_reports/S11_refute.md §7 |
| F-062 | MEDIUM | Implement the surviving defect in R-F3 (S11's refuter): The LICENSES draft reproduces the wrong Flutter copyright year for two of the five icons. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, R-F3 (S11's refuter); agent_reports/S11_refute.md §7 |
| F-063 | MEDIUM | Implement the surviving defect in R5-F1 (S5's refuter): _boot() is launched unawaited and unguarded, and the 150 ms heartbeat is its last statement. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, R5-F1 (S5's refuter); agent_reports/S5_refute.md §4 |
| F-064 | MEDIUM | Implement the surviving defect in S1-F10: The 1,200 ms alarm lead can be changed to 0 and the whole suite stays green. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S1-F10; findings/S1_engine.md · proof/01_findings/S1_refute/remut_MUT6_alarmlead_zero.txt |
| F-065 | MEDIUM | Implement the surviving defect in S1-F2 + S5-F1: A throwing host callback makes tick() delete the timer it has just set to ringing, and tells nobody. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S1-F2 + S5-F1; findings/S1_engine.md · findings/S5_error_handling.md · agent_reports/S1_refute.md · agent_reports/S5_refute.md |
| F-066 | MEDIUM | Implement the surviving defect in S1-F3: tick()'s own recovery path can throw, abandoning every timer after the failing one. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S1-F3; findings/S1_engine.md · agent_reports/S1_refute.md |
| F-067 | MEDIUM | Implement the surviving defect in S1-F4: saveDef silently destroys the duration of a chain reduced to one step, and the suite locks the loss in. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S1-F4; findings/S1_engine.md · agent_reports/S1_refute.md |
| F-068 | MEDIUM | Implement the surviving defect in S1-F5: A retired lot number is handed out a second time, contradicting the model's own contract. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S1-F5; findings/S1_engine.md · agent_reports/S1_refute.md |
| F-069 | MEDIUM | Implement the surviving defect in S1-F6: reconcile() repairs the persisted state and writes none of the repairs back. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S1-F6; findings/S1_engine.md · agent_reports/S1_refute.md |
| F-070 | MEDIUM | Implement the surviving defect in S1-F7: TimerDef.fromJson throws on a bad id, and every ?? fallback next to it is null-only. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S1-F7; findings/S1_engine.md · agent_reports/S1_refute.md |
| F-071 | MEDIUM | Implement the surviving defect in S1-F8: Nothing bounds a duration: durationSec * 1000 overflows into a deadline in the past. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S1-F8; findings/S1_engine.md · agent_reports/S1_refute.md |
| F-072 | MEDIUM | Implement the surviving defect in S1-F9: A ringing entry with no nextVoiceAt passes reconcile() and is then silent forever. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S1-F9; findings/S1_engine.md · agent_reports/S1_refute.md |
| F-073 | MEDIUM | Implement the surviving defect in S10-F10: The batch cap is silent: the button just disappears. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S10-F10; findings/S10_product.md · agent_reports/S10_refute.md |
| F-074 | MEDIUM | Implement the surviving defect in S10-F11: The app ships seeded with one specific restaurant's menu, removable only one dish at a time. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S10-F11; findings/S10_product.md · agent_reports/S10_refute.md · research/01_prior_work.md §2.4 |
| F-075 | MEDIUM | Implement the surviving defect in S10-F12: The operator has no in-app record of what happened; the only record is a French-only diagnostic file. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S10-F12; findings/S10_product.md · agent_reports/S10_refute.md |
| F-076 | MEDIUM | Implement the surviving defect in S10-F4: The "add a batch" chip sits in the slap zone of a ringing tile. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S10-F4; findings/S10_product.md · agent_reports/S10_refute.md |
| F-077 | MEDIUM | Implement the surviving defect in S10-F6: After any outage the board understates how late a dish is, by the whole outage. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S10-F6; findings/S10_product.md · agent_reports/S10_refute.md |
| F-078 | MEDIUM | Implement the surviving defect in S10-F7: Nothing on the board says which station or which cook a timer belongs to. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S10-F7; findings/S10_product.md · agent_reports/S10_refute.md §4 |
| F-079 | MEDIUM | Implement the surviving defect in S10-F8: Correcting a mistimed start costs one tap per ten seconds, and is impossible once the dish rings. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S10-F8; findings/S10_product.md · agent_reports/S10_refute.md |
| F-080 | MEDIUM | Implement the surviving defect in S10-F9: The most urgent state on the board is the least visible one. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S10-F9; findings/S10_product.md · agent_reports/S10_refute.md |
| F-081 | MEDIUM | Implement the surviving defect in S11-F2: Two of the three font families ship with their embedded licence record stripped, and no record of where the binaries came from. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S11-F2; findings/S11_asset_licensing.md · agent_reports/S11_refute.md §4 |
| F-082 | MEDIUM | Implement the surviving defect in S11-F4: The web target ships the Flutter logo as the product's own icon, with no BSD-3-Clause notice. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S11-F4; findings/S11_asset_licensing.md · agent_reports/S11_refute.md §6 · agent_reports/S9_refute.md §M02 |
| F-083 | MEDIUM | Implement the surviving defect in S11-F5: The application has no licence surface at all. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S11-F5; findings/S11_asset_licensing.md · agent_reports/S11_refute.md §3.3 |
| F-084 | MEDIUM | Implement the surviving defect in S12-F10: Three setState calls run after an await with no mounted guard. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S12-F10; findings/S12_lifecycle.md · agent_reports/S12_refute.md §6 |
| F-085 | MEDIUM | Implement the surviving defect in S12-F2: Delayed announcement timers are never held and outlive dispose(). |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S12-F2; findings/S12_lifecycle.md · agent_reports/S12_refute.md §2 · proof/01_findings/S12_refute/repro_s12_w0_ticker_live.txt |
| F-086 | MEDIUM | Implement the surviving defect in S12-F6: A wedged TTS utterance leaks a native channel result on both platforms. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S12-F6; findings/S12_lifecycle.md · agent_reports/S12_refute.md §2 |
| F-087 | MEDIUM | Implement the surviving defect in S12-F8: Nothing in the app mitigates OLED burn-in on a static board held at full brightness for twelve hours. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S12-F8; findings/S12_lifecycle.md · agent_reports/S12_refute.md §3.2 |
| F-088 | MEDIUM | Implement the surviving defect in S12R-F1: Three per-tile trigger maps in _HomeScreenState grow without bound during a session, with no teardown required. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S12R-F1; agent_reports/S12_refute.md §5 |
| F-089 | MEDIUM | Implement the surviving defect in S12R-F4: Every S12 proof file stamps TREE_STATE: CLEAN, including the three recorded against a mutated or patched tree. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S12R-F4; agent_reports/S12_refute.md §5 |
| F-090 | MEDIUM | Implement the surviving defect in S12R-F5: S12's mutation record does not meet R8 on three of its four conditions. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S12R-F5; agent_reports/S12_refute.md §5 |
| F-091 | MEDIUM | Implement the surviving defect in S12R-F6: The soak's headline journal-growth figure is defended by no assertion. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S12R-F6; agent_reports/S12_refute.md §3.3, §5 |
| F-092 | MEDIUM | Implement the surviving defect in S13-F6 + S2-F12 → see theS2-F12 + S13-F6row above: Corrupt-value siblings persist forever with no expiry and no way to clear them. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S13-F6 + S2-F12 → see theS2-F12 + S13-F6row above; findings/S13_data.md · agent_reports/S13_refute.md |
| F-093 | MEDIUM | Implement the surviving defect in S13-R1 (S13's refuter): The no-network proof has no layer covering native (non-Dart) network paths, and two plugins have them. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S13-R1 (S13's refuter); agent_reports/S13_refute.md §3 |
| F-094 | MEDIUM | Implement the surviving defect in S13-R3 (S13's refuter): S13-F2's store-declaration rationale is wrong, and following it would over-declare on both stores. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S13-R3 (S13's refuter); agent_reports/S13_refute.md §3 · proof/03_market/captures/s813r_play_data_safety_expanded.txt |
| F-095 | MEDIUM | Implement the surviving defect in S14-F4: The operator banner promised for a failed wakelock DOES exist and is reachable — but it can never clear, and a wakelock that silently fails to take effect produces no banner at all. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S14-F4; findings/S14_entry_unowned.md · agent_reports/S14_refute.md §2.3 |
| F-096 | MEDIUM | Implement the surviving defect in S14-F8 → **reassigned to S9**: .metadata registers web for template migration but not android or ios, so the two platforms that ship are excluded from every future Flutter template upgrade. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S14-F8 → **reassigned to S9**; findings/S14_entry_unowned.md · agent_reports/S14_refute.md §1, §3 S14R-M3 |
| F-097 | MEDIUM | Implement the surviving defect in S14R-M1: The analyser's strict type-checking modes were never measured, and turning them on surfaces six ERROR-severity type holes, one on the exact line S14 wrote F4 about. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S14R-M1; agent_reports/S14_refute.md §3 |
| F-098 | MEDIUM | Implement the surviving defect in S14R-M3: S14 audited a 47-file scope that was deleted from the plan before Phase 1 launched, so five of its findings belong to other streams and its partition reconciliation contradicts the partition tool. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S14R-M3; agent_reports/S14_refute.md §3 |
| F-099 | MEDIUM | Implement the surviving defect in S2-C2: An unknown or absent run status is silently coerced to running. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-C2; findings/S2_persistence.md · agent_reports/S2_refute.md |
| F-100 | MEDIUM | Implement the surviving defect in S2-F1: A wrong-TYPE stored value destroys the entire kitchen configuration silently: no backup, no banner, and the next save makes it permanent. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F1; findings/S2_persistence.md · agent_reports/S2_refute.md §2 |
| F-101 | MEDIUM | Implement the surviving defect in S2-F10: repairGeneratedPhrases deletes the operator's own sentence if it re-runs. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F10; findings/S2_persistence.md · agent_reports/S2_refute.md |
| F-102 | MEDIUM | Implement the surviving defect in S2-F11: A zone whose sound field has the wrong type is skipped in silence and its dishes fall back to Bell. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F11; findings/S2_persistence.md · agent_reports/S2_refute.md |
| F-103 | MEDIUM | Implement the surviving defect in S2-F12 + S13-F6: The .corrupt preservation is write-only: nothing reads it, exports it, or restores from it; a second corruption is discarded; the siblings never expire and cannot be cleared. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F12 + S13-F6; findings/S2_persistence.md · findings/S13_data.md · agent_reports/S2_refute.md |
| F-104 | MEDIUM | Implement the surviving defect in S2-F13: Every uncovered line in store.dart is a failure handler, and five of them are the write-failure paths. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F13; findings/S2_persistence.md · agent_reports/S2_refute.md |
| F-105 | MEDIUM | Implement the surviving defect in S2-F14: Deleting the migration's persistence step passes all 123 existing tests (mutation S2-M1). |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F14; findings/S2_persistence.md · agent_reports/S2_refute.md §4 |
| F-106 | MEDIUM | Implement the surviving defect in S2-F15: The journal header cannot distinguish two builds of the same version, which is the exact failure this commit set out to fix. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F15; findings/S2_persistence.md · agent_reports/S2_refute.md |
| F-107 | MEDIUM | Implement the surviving defect in S2-F16: Rotation is checked only at init, so a kiosk session that never restarts passes the 3 MiB cap. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F16; findings/S2_persistence.md · agent_reports/S2_refute.md §5 · agent_reports/S12_refute.md §1 |
| F-108 | MEDIUM | Implement the surviving defect in S2-F17: Diag.log and DiagEntry.toString are dead in production: the in-RAM diagnostics the header advertises are read only by tests. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F17; findings/S2_persistence.md · agent_reports/S2_refute.md |
| F-109 | MEDIUM | Implement the surviving defect in S2-F18: One failure report copies an unbounded error string into both the 50-entry buffer and the on-disk journal. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F18; findings/S2_persistence.md · agent_reports/S2_refute.md |
| F-110 | MEDIUM | Implement the surviving defect in S2-F3: A wrong-TYPE cadence-zones-v1 marks the migration done without running it and then deletes the legacy tones. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2-F3; findings/S2_persistence.md · agent_reports/S2_refute.md |
| F-111 | MEDIUM | Implement the surviving defect in S2R-M2: markCleanExit is fire-and-forget, so a clean shutdown reports itself as an OS kill. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2R-M2; agent_reports/S2_refute.md §7 |
| F-112 | MEDIUM | Implement the surviving defect in S2R-M3: A load- critical banner can never be cleared for the life of the session. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2R-M3; agent_reports/S2_refute.md §7 |
| F-113 | MEDIUM | Implement the surviving defect in S2R-M4: The .corrupt backup write is itself unverified and non-critical, so the "never silently lost" guarantee can fail silently. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S2R-M4; agent_reports/S2_refute.md §7 |
| F-114 | MEDIUM | Implement the surviving defect in S3-F10 + S10-F5: All timers share one ringtone player: a ringing tone cannot be stopped, and two dishes ringing at once cannot be told apart. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S3-F10 + S10-F5; findings/S3_audio_alarms.md · findings/S10_product.md · agent_reports/S10_refute.md · agent_reports/S3_refute.md |
| F-115 | MEDIUM | Implement the surviving defect in S3-F11: Haptics: failures escape as unhandled async errors, and _canVibrate does not mean "has a vibrator". |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S3-F11; findings/S3_audio_alarms.md · agent_reports/S3_refute.md |
| F-116 | MEDIUM | Implement the surviving defect in S3-F12: A wedged TTS engine costs 12 s of silence per announcement and raises no operator banner. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S3-F12; findings/S3_audio_alarms.md · agent_reports/S3_refute.md |
| F-117 | MEDIUM | Implement the surviving defect in S3-F13: The speech queue is unbounded and its only trim path cannot be tested. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S3-F13; findings/S3_audio_alarms.md · agent_reports/S3_refute.md · findings/S12_lifecycle.md §3.4 |
| F-118 | MEDIUM | Preserve verdict REFUTED for S3-F14 + S6-F18 (title half); do not implement the rejected claim or fix. |
AI team (negative requirement) | Related BLOCKER/HIGH rows | No | REPORT.md §4, S3-F14 + S6-F18 (title half); findings/S3_audio_alarms.md · findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-119 | MEDIUM | Implement the surviving defect in S3-F15 + S12-F5: SoundBox never releases its five AudioPlayers; SoundBox and VoiceBox have no disposal at all. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S3-F15 + S12-F5; findings/S3_audio_alarms.md · findings/S12_lifecycle.md · agent_reports/S12_refute.md §2 |
| F-120 | MEDIUM | Implement the surviving defect in S3-F16: iOS speak can complete the wrong utterance's result, breaking one-announcement-at-a-time. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S3-F16; findings/S3_audio_alarms.md · agent_reports/S3_refute.md §Part 5 |
| F-121 | MEDIUM | Implement the surviving defect in S3R-F4: S3's four mutation proofs do not meet R8 as written. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S3R-F4; agent_reports/S3_refute.md §4 |
| F-122 | MEDIUM | Implement the surviving defect in S3R-F5: R8(b) as written can never be satisfied by a testWidgets test, which puts 7 of S3's 40 tests permanently outside the rule. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S3R-F5; agent_reports/S3_refute.md §4 |
| F-123 | MEDIUM | Implement the surviving defect in S4-F01: The ±10 s / ✕ control row overflows its tile, and at dense boards the stop button is clipped away. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F01; findings/S4_ui.md · proof/01_findings/S4/ |
| F-124 | MEDIUM | Implement the surviving defect in S4-F02: A dish name shrinks without any floor: 24 characters render at 7.5 px on a 30-tile board. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F02; findings/S4_ui.md · proof/01_findings/S4/ |
| F-125 | MEDIUM | Implement the surviving defect in S4-F03: 16 interactive elements are below the 48 dp minimum, including every control used during service. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F03; findings/S4_ui.md · proof/01_findings/S4/ |
| F-126 | MEDIUM | Implement the surviving defect in S4-F05 + S12-F7: The 150 ms tick rebuilds the entire screen unconditionally, including when nothing is running; one tile's countdown rebuilds every tile. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F05 + S12-F7; findings/S4_ui.md · findings/S12_lifecycle.md · agent_reports/S12_refute.md §3.1 |
| F-127 | MEDIUM | Implement the surviving defect in S4-F06: The urgency colour is isoluminant across its first half and non-monotonic overall. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F06; findings/S4_ui.md · proof/01_findings/S4/ |
| F-128 | MEDIUM | Implement the surviving defect in S4-F07: Five text/background pairs fail WCAG contrast, including the multi-step phase banner. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F07; findings/S4_ui.md · proof/01_findings/S4/ |
| F-129 | MEDIUM | Implement the surviving defect in S4-F08: The app is invisible to a screen reader: zero semantic labels, zero button roles, and the LCD ghost digits are announced. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F08; findings/S4_ui.md · research/01_prior_work.md §2.1 A1-6, §2.4 |
| F-130 | MEDIUM | Implement the surviving defect in S4-F09: MediaQuery.withNoTextScaling is a total opt-out, and it is right for the board and wrong for the dialogs. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F09; findings/S4_ui.md |
| F-131 | MEDIUM | Implement the surviving defect in S4-F10: A failed save is reported to the log and to nobody else; the branch that would warn is unreachable. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F10; findings/S4_ui.md |
| F-132 | MEDIUM | Implement the surviving defect in S4-F11: Every icon in the product is a text glyph that no bundled font contains. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F11; findings/S4_ui.md |
| F-133 | MEDIUM | Implement the surviving defect in S4-F12: The operator's only failure signal is 13.5 px tall, never clears, and is placed where it steals grid height. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F12; findings/S4_ui.md |
| F-134 | MEDIUM | Implement the surviving defect in S4-F14 (grid half) → merged into S6-F5; S4-F14 (tick half) → merged into S6-F2: The grid hit-test is written twice, and the tick period is declared in the engine and hard-coded in the UI. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F14 (grid half) → merged into S6-F5; S4-F14 (tick half) → merged into S6-F2; findings/S4_ui.md · agent_reports/S6_refute.md |
| F-135 | MEDIUM | Implement the surviving defect in S4-F15: The UI layer's geometry lives in ~120 inline literals with no constants file. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4-F15; findings/S4_ui.md |
| F-136 | MEDIUM | Implement the surviving defect in S4R-F01: The UI audit instrument measured text 1.67× too wide and passed the same error into its proposed tests. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4R-F01; agent_reports/S4_refute.md §9 S4R-F01 · proof/01_findings/S4_refute/font_effect_matrix.txt |
| F-137 | MEDIUM | Implement the surviving defect in S4R-F02: Where the dense control row overflows, the painted stop button extends beyond its tappable hit region. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S4R-F02; agent_reports/S4_refute.md §9 S4R-F02 · proof/01_findings/S4_refute/missed_findings.txt |
| F-138 | MEDIUM | Implement the surviving defect in S5-F5: A failure raised isCritical: true that cannot reach the operator banner. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S5-F5; findings/S5_error_handling.md · agent_reports/S5_refute.md · proof/01_findings/S5_refute/R05_critical_scopes.txt |
| F-139 | MEDIUM | Implement the surviving defect in S5-F6: Journal export failure leaves the Settings button silently reset. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S5-F6; findings/S5_error_handling.md · agent_reports/S5_refute.md |
| F-140 | MEDIUM | Implement the surviving defect in S5-F7: The native side can never report an error, and Dart discards the booleans it does return. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S5-F7; findings/S5_error_handling.md · agent_reports/S5_refute.md · proof/01_findings/S5_refute/R14_flutter_methodchannel_runtimecatch.txt |
| F-141 | MEDIUM | Implement the surviving defect in S5-F8: Unawaited futures with nowhere for a failure to go. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S5-F8; findings/S5_error_handling.md · agent_reports/S5_refute.md |
| F-142 | MEDIUM | Implement the surviving defect in S6-F1: The release APK ships three CPU architectures; 61.5 % of it is dead weight on every device. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S6-F1; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md · proof/01_findings/S6_refute/apk_rebuild_independent.txt |
| F-143 | MEDIUM | Implement the surviving defect in S6-F15 + S11-F3: Three of the sixteen WAVs have no generator; the documented source of truth cannot reproduce them. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S6-F15 + S11-F3; findings/S6_dry_deadcode.md · findings/S11_asset_licensing.md · agent_reports/S6_refute.md · agent_reports/S11_refute.md §5 |
| F-144 | MEDIUM | Implement the surviving defect in S6-F16 + S9-F11: The backstop alarm sound is invisible to the shrinker, pinned by a single keep.xml rule with no regression test, and has already been stripped once. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S6-F16 + S9-F11; findings/S6_dry_deadcode.md · findings/S9_platform_config.md · agent_reports/S6_refute.md · agent_reports/S9_refute.md §Contrarian B |
| F-145 | MEDIUM | Implement the surviving defect in S6-F2 + S4-F14 (tick half): Engine.tickMs is dead while the heartbeat that it describes hard-codes the same number. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S6-F2 + S4-F14 (tick half); findings/S6_dry_deadcode.md · findings/S4_ui.md · agent_reports/S6_refute.md |
| F-146 | MEDIUM | Implement the surviving defect in S6-F20 + S14-F5: analysis_options.yaml is the untouched Flutter template: it carries an empty linter: rules: block, and flutter analyze reporting 0 issues measures almost nothing. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S6-F20 + S14-F5; findings/S6_dry_deadcode.md · findings/S14_entry_unowned.md · agent_reports/S6_refute.md · agent_reports/S14_refute.md §2.5 |
| F-147 | MEDIUM | Implement the surviving defect in S6-F21 + S9-F12 + S14-F7 (→S6): The web/ target is 7 files of unmodified stock Flutter template, shipping "A new Flutter project." and Flutter-blue branding, for a platform the product does not target. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S6-F21 + S9-F12 + S14-F7 (→S6); findings/S6_dry_deadcode.md · findings/S9_platform_config.md · findings/S14_entry_unowned.md · agent_reports/S6_refute.md · agent_reports/S14_refute.md §2.6 |
| F-148 | MEDIUM | Implement the surviving defect in S6-F4 (+ S6R-F4): The 5-second minimum duration is an invariant written at seven independent sites — plus an eighth the finding missed. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S6-F4 (+ S6R-F4); findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-149 | MEDIUM | Implement the surviving defect in S6-F5 + S4-F14 (grid half): The grid hit-test is implemented twice in the same file, once inline and once as a helper. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S6-F5 + S4-F14 (grid half); findings/S6_dry_deadcode.md · findings/S4_ui.md · agent_reports/S6_refute.md |
| F-150 | MEDIUM | Implement the surviving defect in S6-F6: The EngineHost no-op implementation is copied into six test files. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S6-F6; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-151 | MEDIUM | Implement the surviving defect in S6-F9: RunStatus is re-encoded as bare strings throughout tile.dart. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S6-F9; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-152 | MEDIUM | Implement the surviving defect in S7-F10: TimerDef.isChain's >= 2 boundary has no test. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7-F10; findings/S7_tests.md |
| F-153 | MEDIUM | Implement the surviving defect in S7-F11: test/engine_test.dart:288 names cloning but asserts on the parent. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7-F11; findings/S7_tests.md · agent_reports/S7_refute.md §10 |
| F-154 | MEDIUM | Implement the surviving defect in S7-F12: The grid geometry ratio and aspect tests are tautological. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7-F12; findings/S7_tests.md · agent_reports/S7_refute.md §10 |
| F-155 | MEDIUM | Implement the surviving defect in S7-F14: I18n.ttsLocale has no test. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7-F14; findings/S7_tests.md |
| F-156 | MEDIUM | Implement the surviving defect in S7-F15: Store.lang validation is unprotected for a well-typed but unsupported language. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7-F15; findings/S7_tests.md · agent_reports/S7_refute.md §10 |
| F-157 | MEDIUM | Implement the surviving defect in S7-F19: One test's pass depends on a 50 ms wall-clock margin. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7-F19; findings/S7_tests.md · agent_reports/S7_refute.md §7 |
| F-158 | MEDIUM | Implement the surviving defect in S7-F7: Notification ids have no test: every timer can collapse onto one id. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7-F7; findings/S7_tests.md · agent_reports/S7_refute.md |
| F-159 | MEDIUM | Implement the surviving defect in S7-F9: Nine of the ten fromJson fallback defaults are unprotected. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7-F9; findings/S7_tests.md · agent_reports/S7_refute.md §6 |
| F-160 | MEDIUM | Implement the surviving defect in S7R-F1: The "19 of 123" headline row states as measured what §1b explicitly disclaims. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7R-F1; agent_reports/S7_refute.md §5 · proof/01_findings/S7_refute/rerun_comparison.txt |
| F-161 | MEDIUM | Implement the surviving defect in S7R-F2: S7 never used the --reporter=json capture R8(a) requires; every one of its 57 runs used the expanded reporter. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7R-F2; agent_reports/S7_refute.md §5 |
| F-162 | MEDIUM | Implement the surviving defect in S7R-F3: Not one of S7's 69 recorded files carries a TREE_STATE stamp, and R8(d) is evidenced by a single end-of-campaign check. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7R-F3; agent_reports/S7_refute.md §5, §8 |
| F-163 | MEDIUM | Implement the surviving defect in S7R-F6: Five of the thirteen test files were never reddened by any of the 57 mutations, and S7 does not report it. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S7R-F6; agent_reports/S7_refute.md §5 |
| F-164 | MEDIUM | Implement the surviving defect in S8-F4: Language is chosen once, and an install that never seeded is pinned to English forever. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S8-F4; findings/S8_i18n.md · agent_reports/S8_refute.md |
| F-165 | MEDIUM | Implement the surviving defect in S8-F5: The app's own name is inconsistent across the four places an operating system reads it. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S8-F5; findings/S8_i18n.md · agent_reports/S8_refute.md §2 S8-R5 |
| F-166 | MEDIUM | Implement the surviving defect in S8-F6: The Android notification channel is English-only, in the one recovery screen the app points at. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S8-F6; findings/S8_i18n.md · agent_reports/S8_refute.md §2 S8-R4 |
| F-167 | MEDIUM | Implement the surviving defect in S8-F7: Numbers, durations and the clock are formatted by hand, with two concrete defects. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S8-F7; findings/S8_i18n.md · agent_reports/S8_refute.md |
| F-168 | MEDIUM | Implement the surviving defect in S8-F8: A missing key renders its own identifier on screen. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S8-F8; findings/S8_i18n.md · agent_reports/S8_refute.md §1, §2 S8-R1 |
| F-169 | MEDIUM | Implement the surviving defect in S8-R1 (S8's refuter): A key deleted from both locale maps renders raw on screen and the whole suite stays green. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S8-R1 (S8's refuter); agent_reports/S8_refute.md §2 |
| F-170 | MEDIUM | Implement the surviving defect in S8-R2 (S8's refuter): The editor shows the operator the ungrammatical French phrase, live, next to a correct one. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S8-R2 (S8's refuter); agent_reports/S8_refute.md §2 |
| F-171 | MEDIUM | Implement the surviving defect in S8-R4 (S8's refuter): S8-F6's evidence quotes a class that does not exist in the codebase, and its fix targets the wrong construct. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S8-R4 (S8's refuter); agent_reports/S8_refute.md §2 |
| F-172 | MEDIUM | Implement the surviving defect in S9-F08: ITSAppUsesNonExemptEncryption is absent, forcing the export-compliance questionnaire on every single upload. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S9-F08; findings/S9_platform_config.md · agent_reports/S9_refute.md |
| F-173 | MEDIUM | Implement the surviving defect in S9-F09 + S13-F3 (+ Apple readiness C1): No PrivacyInfo.xcprivacy in the app bundle. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S9-F09 + S13-F3 (+ Apple readiness C1); findings/S9_platform_config.md · findings/S13_data.md · store_readiness/02_apple_app_store.md C1 · agent_reports/S9_refute.md §Contrarian A · agent_reports/S13_refute.md §1 |
| F-174 | MEDIUM | Implement the surviving defect in S9R-M03: The app localises itself manually into French and English, but the iOS bundle declares English only. |
AI team | Related BLOCKER/HIGH rows | No | REPORT.md §4, S9R-M03; agent_reports/S9_refute.md §Part 6 |
| F-175 | LOW | Implement the surviving defect in M3 (S10's refuter): The dish name is silently capped at 24 characters with the counter switched off. |
AI team | Related higher-severity rows | No | REPORT.md §4, M3 (S10's refuter); agent_reports/S10_refute.md §6 |
| F-176 | LOW | Implement the surviving defect in MISS-3 (S1's refuter): One user action issues two full persist cycles, and one beat issues one per firing dish. |
AI team | Related higher-severity rows | No | REPORT.md §4, MISS-3 (S1's refuter); agent_reports/S1_refute.md §5 |
| F-177 | LOW | Implement the surviving defect in R-F4 (S11's refuter): Citation defects in S11: three pubspec.yaml line references. |
AI team | Related higher-severity rows | No | REPORT.md §4, R-F4 (S11's refuter); agent_reports/S11_refute.md §7 |
| F-178 | LOW | Implement the surviving defect in R-F5 (S11's refuter): The NOTICES character count is method-dependent. |
AI team | Related higher-severity rows | No | REPORT.md §4, R-F5 (S11's refuter); agent_reports/S11_refute.md §7 |
| F-179 | LOW | Implement the surviving defect in R-F6 (S11's refuter): assets/icon/*.png are build inputs, not shipped bundle assets. |
AI team | Related higher-severity rows | No | REPORT.md §4, R-F6 (S11's refuter); agent_reports/S11_refute.md §7 |
| F-180 | LOW | Implement the surviving defect in R-F7 (S11's refuter): DSEG's name ID 0 is not a copyright statement. |
AI team | Related higher-severity rows | No | REPORT.md §4, R-F7 (S11's refuter); agent_reports/S11_refute.md §7 |
| F-181 | LOW | Implement the surviving defect in S1-F11: reorder is asymmetric: dragging forward drops after the target, dragging back drops before it. |
AI team | Related higher-severity rows | No | REPORT.md §4, S1-F11; findings/S1_engine.md · agent_reports/S1_refute.md |
| F-182 | LOW | Implement the surviving defect in S1-F12: spawnClone will start a batch of a dish that is not running. |
AI team | Related higher-severity rows | No | REPORT.md §4, S1-F12; findings/S1_engine.md · agent_reports/S1_refute.md |
| F-183 | LOW | Implement the surviving defect in S10-F13: Below 150 px of tile width the app removes its own touch-target floor. |
AI team | Related higher-severity rows | No | REPORT.md §4, S10-F13; findings/S10_product.md · agent_reports/S10_refute.md |
| F-184 | LOW | Implement the surviving defect in S11-F6: Big Shoulders Display has been retired from Google Fonts, so the bundled version cannot be re-fetched from the family page. |
AI team | Related higher-severity rows | No | REPORT.md §4, S11-F6; findings/S11_asset_licensing.md · agent_reports/S11_refute.md §2.1 |
| F-185 | LOW | Implement the surviving defect in S12-F1: Unmounting while _boot() is awaiting orphans the 150 ms ticker permanently. |
AI team | Related higher-severity rows | No | REPORT.md §4, S12-F1; findings/S12_lifecycle.md · agent_reports/S12_refute.md §2 · proof/01_findings/S12_refute/repro_s12_w7_boot_race.txt |
| F-186 | LOW | Implement the surviving defect in S12-F3: Backstop owns a 300 ms timer but has no disposal, and arms an OS alarm after teardown. |
AI team | Related higher-severity rows | No | REPORT.md §4, S12-F3; findings/S12_lifecycle.md · agent_reports/S12_refute.md §2.1 |
| F-187 | LOW | Implement the surviving defect in S12-F4: Journal.init() overwrites its two periodic timers without cancelling the previous pair. |
AI team | Related higher-severity rows | No | REPORT.md §4, S12-F4; findings/S12_lifecycle.md · agent_reports/S12_refute.md §2 |
| F-188 | LOW | Implement the surviving defect in S12R-F2: Journal.snapshot is a static closure over _HomeScreenState that is never cleared, so a torn-down screen and its five AudioPlayers are retained for the life of the isolate. |
AI team | Related higher-severity rows | No | REPORT.md §4, S12R-F2; agent_reports/S12_refute.md §5 |
| F-189 | LOW | Implement the surviving defect in S13-R4 (S13's refuter): The permission enumeration is wrong in both directions. |
AI team | Related higher-severity rows | No | REPORT.md §4, S13-R4 (S13's refuter); agent_reports/S13_refute.md §3 · proof/01_findings/S13_refute/apk_manifest_decoded.txt |
| F-190 | LOW | Implement the surviving defect in S13-R5 (S13's refuter): Two wrong file:lines, two wrong line counts, and an internal 13-vs-14 contradiction. |
AI team | Related higher-severity rows | No | REPORT.md §4, S13-R5 (S13's refuter); agent_reports/S13_refute.md §3 |
| F-191 | LOW | Implement the surviving defect in S14-F10: SystemUiMode.immersiveSticky is set once and never re-asserted, and no kiosk or screen-pinning mechanism exists, so a cook can leave the timer board mid-service. |
AI team | Related higher-severity rows | No | REPORT.md §4, S14-F10; findings/S14_entry_unowned.md · agent_reports/S14_refute.md §1 |
| F-192 | LOW | Implement the surviving defect in S2-F20: models.dart points readers at a symbol that does not exist. |
AI team | Related higher-severity rows | No | REPORT.md §4, S2-F20; findings/S2_persistence.md · agent_reports/S2_refute.md |
| F-193 | LOW | Implement the surviving defect in S3-F19: assetFor carries a rewrite no tone can reach. |
AI team | Related higher-severity rows | No | REPORT.md §4, S3-F19; findings/S3_audio_alarms.md · agent_reports/S3_refute.md · agent_reports/S6_refute.md |
| F-194 | LOW | Implement the surviving defect in S4-F16 + S6-F3: Dead symbols in the UI layer: two dead colour constants in the palette. |
AI team | Related higher-severity rows | No | REPORT.md §4, S4-F16 + S6-F3; findings/S4_ui.md · findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-195 | LOW | Implement the surviving defect in S4-F17: A timer left ringing overnight prints a five-digit minute counter that the tile was never sized for. |
AI team | Related higher-severity rows | No | REPORT.md §4, S4-F17; findings/S4_ui.md |
| F-196 | LOW | Implement the surviving defect in S5-F10: Two empty catch blocks. |
AI team | Related higher-severity rows | No | REPORT.md §4, S5-F10; findings/S5_error_handling.md · agent_reports/S5_refute.md |
| F-197 | LOW | Implement the surviving defect in S6-F10: Four styling duplications inside modals.dart. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6-F10; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-198 | LOW | Implement the surviving defect in S6-F11: The tile drop shadow and the corner-radius formula are each written twice in tile.dart. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6-F11; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-199 | LOW | Implement the surviving defect in S6-F12: The widget-test "open a modal" harness is copied four times, the viewport override twice. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6-F12; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-200 | LOW | Implement the surviving defect in S6-F13: The duration-preset label is duplicated across the production/test boundary. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6-F13; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-201 | LOW | Implement the surviving defect in S6-F14: ChivoMono-Medium.ttf is declared, bundled and never selected. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6-F14; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-202 | LOW | Implement the surviving defect in S6-F17: The alarm-acknowledgement journal line is written twice in home.dart. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6-F17; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-203 | LOW | Preserve verdict REFUTED for S6-F18 (pad2 half); do not implement the rejected claim or fix. |
AI team (negative requirement) | Related higher-severity rows | No | REPORT.md §4, S6-F18 (pad2 half); findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-204 | LOW | Implement the surviving defect in S6-F19 + S14-F6 (→S10) + S2-F19: README.md documents the v0.1 architecture and contradicts the shipped app, including on the app's single most important safety property. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6-F19 + S14-F6 (→S10) + S2-F19; findings/S6_dry_deadcode.md · findings/S14_entry_unowned.md · findings/S2_persistence.md · agent_reports/S6_refute.md · agent_reports/S14_refute.md |
| F-205 | LOW | Implement the surviving defect in S6-F22: uses-material-design: true ships an icon font for zero icons. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6-F22; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-206 | LOW | Implement the surviving defect in S6-F7: The 7000 ms first voice gap is written three times, in two files that cannot see each other. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6-F7; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md · proof/01_findings/S6_refute/mutation_firstvoicegap_3000.txt |
| F-207 | LOW | Implement the surviving defect in S6-F8: The running and paused remaining-time computation is written twice in tile.dart. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6-F8; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
| F-208 | LOW | Implement the surviving defect in S6R-F2: --obfuscate --split-debug-info removes 851,968 bytes and was never measured. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6R-F2; agent_reports/S6_refute.md · proof/01_findings/S6_refute/apk_obfuscated_split_debug_info.txt |
| F-209 | LOW | Implement the surviving defect in S6R-F3: lib/ui/home.dart:124 is a twelfth RunStatus decision site and S6's map has no entry for it. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6R-F3; agent_reports/S6_refute.md |
| F-210 | LOW | Implement the surviving defect in S6R-F4: The picker's five-second granularity is a fourth encoding of the 5-second floor. |
AI team | Related higher-severity rows | No | REPORT.md §4, S6R-F4; agent_reports/S6_refute.md |
| F-211 | LOW | Implement the surviving defect in S7-F17: Three tests silently depend on the process working directory. |
AI team | Related higher-severity rows | No | REPORT.md §4, S7-F17; findings/S7_tests.md |
| F-212 | LOW | Implement the surviving defect in S7-F18: Global static state is reset inconsistently across test files. |
AI team | Related higher-severity rows | No | REPORT.md §4, S7-F18; findings/S7_tests.md · agent_reports/S7_refute.md §7 |
| F-213 | LOW | Implement the surviving defect in S7R-F7: The logo_test.dart specification claims a guard its own assertion cannot deliver. |
AI team | Related higher-severity rows | No | REPORT.md §4, S7R-F7; agent_reports/S7_refute.md §5, §6 |
| F-214 | LOW | Implement the surviving defect in S8-R3 (S8's refuter): The migration's own comment states an invariant the migration violates. |
AI team | Related higher-severity rows | No | REPORT.md §4, S8-R3 (S8's refuter); agent_reports/S8_refute.md §2 |
| F-215 | LOW | Implement the surviving defect in S8-R5 (S8's refuter): Three wrong file:line citations and five wrong line counts, all contradicting the shared code map. |
AI team | Related higher-severity rows | No | REPORT.md §4, S8-R5 (S8's refuter); agent_reports/S8_refute.md §2 |
| F-216 | LOW | Implement the surviving defect in S8-R6 (S8's refuter): "32 hardcoded user-visible strings" counts glyphs, operator text and unreachable fallbacks. |
AI team | Related higher-severity rows | No | REPORT.md §4, S8-R6 (S8's refuter); agent_reports/S8_refute.md §2 |
| F-217 | LOW | Implement the surviving defect in S9-F13: Stale TODO above a correct application id invites an irreversible change. |
AI team | Related higher-severity rows | No | REPORT.md §4, S9-F13; findings/S9_platform_config.md · agent_reports/S9_refute.md |
| F-218 | LOW | Implement the surviving defect in S9-F14 + S14-F11 (→S7): ios/RunnerTests/RunnerTests.swift is a compiled test target whose single test asserts nothing, wired into the shared scheme's test action. |
AI team | Related higher-severity rows | No | REPORT.md §4, S9-F14 + S14-F11 (→S7); findings/S9_platform_config.md · findings/S14_entry_unowned.md · agent_reports/S9_refute.md · agent_reports/S14_refute.md |
| F-219 | LOW | Implement the surviving defect in S9-F15: org.gradle.jvmargs demands 12 GB of JVM memory. |
AI team | Related higher-severity rows | No | REPORT.md §4, S9-F15; findings/S9_platform_config.md · agent_reports/S9_refute.md |
| F-220 | LOW | Implement the surviving defect in S9-F16: The two OEM quick-boot actions on the boot receiver cannot be delivered to a non-exported receiver. |
AI team | Related higher-severity rows | No | REPORT.md §4, S9-F16; findings/S9_platform_config.md · agent_reports/S9_refute.md §Part 5 |
| F-221 | LOW | Implement the surviving defect in S9R-M01 + S14-F9 (→S9): The iOS launch image is the untouched Flutter template on both platforms, and S9's own manifest records the opposite. |
AI team | Related higher-severity rows | No | REPORT.md §4, S9R-M01 + S14-F9 (→S9); agent_reports/S9_refute.md §Part 6 · findings/S14_entry_unowned.md · agent_reports/S14_refute.md |
| F-222 | LOW | Implement the surviving defect in S9R-M02: The two maskable web icons are still the Flutter logo, while the other three web icons were replaced. |
AI team | Related higher-severity rows | No | REPORT.md §4, S9R-M02; agent_reports/S9_refute.md §Part 6 · agent_reports/S11_refute.md §6.1 |
| F-223 | INFO | Record S2-C1 as checked-clear/non-defect; make no product change. |
AI team (record only) | None | No | REPORT.md §4, S2-C1; findings/S2_persistence.md · agent_reports/S2_refute.md |
| F-224 | INFO | Record S3-F18 as checked-clear/non-defect; make no product change. |
AI team (record only) | None | No | REPORT.md §4, S3-F18; findings/S3_audio_alarms.md · agent_reports/S3_refute.md |
| F-225 | INFO | Record S4-F18 as checked-clear/non-defect; make no product change. |
AI team (record only) | None | No | REPORT.md §4, S4-F18; findings/S4_ui.md |
| F-226 | INFO | Record S6-F23 as checked-clear/non-defect; make no product change. |
AI team (record only) | None | No | REPORT.md §4, S6-F23; findings/S6_dry_deadcode.md · agent_reports/S6_refute.md |
Owner split
- the project owner: decisions, entity, D-U-N-S, accounts, legal/trader/tax declarations, price, storefront, public pages, store records and submission.
- Serge: keystores, identifiers in the repository, Xcode/Android builds, distributed binaries and device execution.
- AI team: every code fix, every test, CI, coverage, evidence capture, asset wiring and implementation documentation. the project owner or Serge must supply account-only and hardware-only evidence.