R2 — The FAILED exclusion is only tested with pathless FAILED jobs; a FAILED job carrying a file would be reattached to unnoticed #11

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

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

R2 — The FAILED exclusion is only tested with pathless FAILED jobs; a FAILED job carrying a file would be reattached to unnoticed

severity: high
verdict: CONFIRMED
where: app/src/main/java/org/libremediaconverter/work/Reattachment.kt:173; app/src/test/java/org/libremediaconverter/work/ReattachmentTest.kt:32-36,127
scenario: Not D16 (the design question) — this is the guard's test coverage. Every FAILED fixture in the suite has outputPath=null. A regression that ranks FAILED like SUCCEEDED-with-file passes all 257 tests. Live shape: a job killed mid-write leaves a partial in staging (the audit's own 2 MB Pixel orphan); under the regression the user is offered a truncated file with a Save button.
evidence: Mutation M05b (FAILED -> RESULT when outputPath!=null && outputExists): paired run 20/20 green, full suite 257/257 green. Control (blunt FAILED -> RESULT) bites 2/20 — the narrow form is what slips through. Lead read ReattachmentTest:32-36 and confirmed the fixture shape.
fix: assertNull(Reattachment.choose(listOf(job(state = FAILED, outputPath = "/cache/out.mp4", outputExists = true)))). One line.
risk: None; strictly stronger assertion of the documented rule. JVM-verifiable.


Cut: above — worked autonomously overnight.

🤖 Generated with Claude Code

_Finding **R2** from the overnight max-effort review (Fable lead, Opus sub-agents). Full report: `scratchpad/overnight/REVIEW.md`._ ### R2 — The FAILED exclusion is only tested with pathless FAILED jobs; a FAILED job carrying a file would be reattached to unnoticed severity: high verdict: CONFIRMED where: app/src/main/java/org/libremediaconverter/work/Reattachment.kt:173; app/src/test/java/org/libremediaconverter/work/ReattachmentTest.kt:32-36,127 scenario: Not D16 (the design question) — this is the guard's test coverage. Every FAILED fixture in the suite has outputPath=null. A regression that ranks FAILED like SUCCEEDED-with-file passes all 257 tests. Live shape: a job killed mid-write leaves a partial in staging (the audit's own 2 MB Pixel orphan); under the regression the user is offered a truncated file with a Save button. evidence: Mutation M05b (FAILED -> RESULT when outputPath!=null && outputExists): paired run 20/20 green, full suite 257/257 green. Control (blunt FAILED -> RESULT) bites 2/20 — the narrow form is what slips through. Lead read ReattachmentTest:32-36 and confirmed the fixture shape. fix: assertNull(Reattachment.choose(listOf(job(state = FAILED, outputPath = "/cache/out.mp4", outputExists = true)))). One line. risk: None; strictly stronger assertion of the documented rule. JVM-verifiable. --- **Cut:** `above` — worked autonomously overnight. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
JMR-dev commented 2026-08-23 04:52:40 +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#11