R10 — MAX_FOREGROUND_START_ATTEMPTS is referenced only through its own symbol; the value 10 is unpinned #19

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 R10 from the overnight max-effort review (Fable lead, Opus sub-agents). Full report: scratchpad/overnight/REVIEW.md.

R10 — MAX_FOREGROUND_START_ATTEMPTS is referenced only through its own symbol; the value 10 is unpinned

severity: medium
verdict: CONFIRMED
where: app/src/main/java/org/libremediaconverter/work/FailureOutcome.kt:76
scenario: Both tests use the constant, pinning the relationship and leaving the value free. Changed to 2, the job gives up ~90 seconds after process death — losing exactly the long conversion D13 was fixed to protect — and nothing goes red.
evidence: Mutation M33 (10 -> 2) full suite: VACUOUS 257/257. Control: same class of mutation on StagingSweep.GRACE_PERIOD_MS bites StagingSweepTest 1/7 — the pattern exists in this codebase, just not applied here.
fix: Assert the derived property the KDoc argues (summed default backoff spans >= 8h) using WorkRequest.DEFAULT_BACKOFF_DELAY_MILLIS / MAX_BACKOFF_MILLIS — survives deliberate re-tuning, fails accidental. (A bare assertEquals(10, ...) is the cheap fallback.)
risk: The derived form depends on WorkManager's public constants. JVM-verifiable.


Cut: above — worked autonomously overnight.

🤖 Generated with Claude Code

_Finding **R10** from the overnight max-effort review (Fable lead, Opus sub-agents). Full report: `scratchpad/overnight/REVIEW.md`._ ### R10 — MAX_FOREGROUND_START_ATTEMPTS is referenced only through its own symbol; the value 10 is unpinned severity: medium verdict: CONFIRMED where: app/src/main/java/org/libremediaconverter/work/FailureOutcome.kt:76 scenario: Both tests use the constant, pinning the relationship and leaving the value free. Changed to 2, the job gives up ~90 seconds after process death — losing exactly the long conversion D13 was fixed to protect — and nothing goes red. evidence: Mutation M33 (10 -> 2) full suite: VACUOUS 257/257. Control: same class of mutation on StagingSweep.GRACE_PERIOD_MS bites StagingSweepTest 1/7 — the pattern exists in this codebase, just not applied here. fix: Assert the derived property the KDoc argues (summed default backoff spans >= 8h) using WorkRequest.DEFAULT_BACKOFF_DELAY_MILLIS / MAX_BACKOFF_MILLIS — survives deliberate re-tuning, fails accidental. (A bare assertEquals(10, ...) is the cheap fallback.) risk: The derived form depends on WorkManager's public constants. JVM-verifiable. --- **Cut:** `above` — worked autonomously overnight. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
JMR-dev commented 2026-08-23 04:52:47 +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#19