R9 — The process-start sweep — the reason LibreMediaConverterApp exists — has no test #18

Closed
opened 2026-08-23 03:44:45 +00:00 by JMR-dev · 1 comment
JMR-dev commented 2026-08-23 03:44:45 +00:00 (Migrated from github.com)

Finding R9 from the overnight max-effort review (Fable lead, Opus sub-agents). Full report: scratchpad/overnight/REVIEW.md.

R9 — The process-start sweep — the reason LibreMediaConverterApp exists — has no test

severity: medium
verdict: CONFIRMED
where: app/src/main/java/org/libremediaconverter/LibreMediaConverterApp.kt:56
scenario: StagingSweepTest pins the age rule; OutputPublisherStagingTest pins sweepStaging() against a real fs; nothing asserts anything calls it. Deleting the call leaves 257/257 green. This is D2's backstop for every leak discardStaged cannot reach (process reclaimed before save, worker failed pre-Converted, reset() cancelled with the Activity).
evidence: Mutation M29 full suite: VACUOUS 257/257. Robolectric does instantiate this Application (merged manifest), so the seam is available.
fix: Robolectric test: over-age file in cacheDir/conversions, drive Application onCreate with a controlled clock, assert gone + fresh file survives. Cleaner: inject the scope/dispatcher as ConversionViewModel already does for cleanupDispatcher.
risk: Sweep runs on an uncancelled Dispatchers.IO scope -> test must await, not assert immediately. JVM-verifiable.


Cut: above — worked autonomously overnight.

🤖 Generated with Claude Code

_Finding **R9** from the overnight max-effort review (Fable lead, Opus sub-agents). Full report: `scratchpad/overnight/REVIEW.md`._ ### R9 — The process-start sweep — the reason LibreMediaConverterApp exists — has no test severity: medium verdict: CONFIRMED where: app/src/main/java/org/libremediaconverter/LibreMediaConverterApp.kt:56 scenario: StagingSweepTest pins the age rule; OutputPublisherStagingTest pins sweepStaging() against a real fs; nothing asserts anything calls it. Deleting the call leaves 257/257 green. This is D2's backstop for every leak discardStaged cannot reach (process reclaimed before save, worker failed pre-Converted, reset() cancelled with the Activity). evidence: Mutation M29 full suite: VACUOUS 257/257. Robolectric does instantiate this Application (merged manifest), so the seam is available. fix: Robolectric test: over-age file in cacheDir/conversions, drive Application onCreate with a controlled clock, assert gone + fresh file survives. Cleaner: inject the scope/dispatcher as ConversionViewModel already does for cleanupDispatcher. risk: Sweep runs on an uncancelled Dispatchers.IO scope -> test must await, not assert immediately. JVM-verifiable. --- **Cut:** `above` — worked autonomously overnight. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
JMR-dev commented 2026-08-23 04:52:45 +00:00 (Migrated from github.com)

Fixed in #48 (merged). Each fix is pinned by a mutation that was applied and reverted individually — the failure text is in the PR body. Suite 257 -> 276, 0 failures.

Fixed in #48 (merged). Each fix is pinned by a mutation that was applied and reverted individually — the failure text is in the PR body. Suite 257 -> 276, 0 failures.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JMR-dev/LibreMediaConverter#18