R8 — The join half of D8 — the constant name the audit lists first — has no test that ConcatWorker asks for a per-job name #17

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

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

R8 — The join half of D8 — the constant name the audit lists first — has no test that ConcatWorker asks for a per-job name

severity: medium
verdict: CONFIRMED
where: app/src/main/java/org/libremediaconverter/work/ConcatWorker.kt:62
scenario: Reverting ConcatWorker to the exact constant the audit's D8 table names ("joined.${format.extension}" — collides for any two joins of one format) leaves all 257 tests green. PerJobStagingTest drives only the real ConversionWorker; StagingNamesTest pins only the pure function.
evidence: Mutation M32 full suite: VACUOUS 257/257 green. Control M31 (same reversion, conversion side) bites PerJobStagingTest 2/3 + WorkerOutputNamingTest 1/2 + DeniedForegroundStartTest 1/4.
fix: Mirror PerJobStagingTest for ConcatWorker: two TestListenableWorkerBuilder runs, different ids, same format -> two files in staging. Scaffolding exists in DeniedForegroundStartTest.concatWorker().
risk: ConcatEngine is native, so assert on staged names after doWork() (WorkerCancellationTest's pattern), not on success. JVM-verifiable.


Cut: above — worked autonomously overnight.

🤖 Generated with Claude Code

_Finding **R8** from the overnight max-effort review (Fable lead, Opus sub-agents). Full report: `scratchpad/overnight/REVIEW.md`._ ### R8 — The join half of D8 — the constant name the audit lists first — has no test that ConcatWorker asks for a per-job name severity: medium verdict: CONFIRMED where: app/src/main/java/org/libremediaconverter/work/ConcatWorker.kt:62 scenario: Reverting ConcatWorker to the exact constant the audit's D8 table names ("joined.${format.extension}" — collides for any two joins of one format) leaves all 257 tests green. PerJobStagingTest drives only the real ConversionWorker; StagingNamesTest pins only the pure function. evidence: Mutation M32 full suite: VACUOUS 257/257 green. Control M31 (same reversion, conversion side) bites PerJobStagingTest 2/3 + WorkerOutputNamingTest 1/2 + DeniedForegroundStartTest 1/4. fix: Mirror PerJobStagingTest for ConcatWorker: two TestListenableWorkerBuilder runs, different ids, same format -> two files in staging. Scaffolding exists in DeniedForegroundStartTest.concatWorker(). risk: ConcatEngine is native, so assert on staged names after doWork() (WorkerCancellationTest's pattern), not on success. JVM-verifiable. --- **Cut:** `above` — worked autonomously overnight. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
JMR-dev commented 2026-08-23 04:52:43 +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#17