medlab / case

medlab

what got hurt, and what now fails loudly

↑ sublayer

2026-10-14 · fixed: yes

A successful retry removes its failure alert

BehavioralIntegration Tests

now fails loudly A failure-to-recovery test requires capture identity and removal of only that capture's active alerts.

What broke

A background vocabulary service stored terminal failure notifications without the capture identifier. Successful reprocessing updated the capture and job but left the notification active. The report displayed all active notifications above unrelated captures.

How it showed

A learner submitted a short phrase and saw Generated cloze rewrote the original sentence. The notification came from a test capture roughly half an hour earlier. The new capture completed successfully and proposed one card. The older capture had also recovered before the learner opened the report.

What was watching

Integration tests covered successful capture processing, reprocessing and report authentication. They did not check a terminal failure followed by successful recovery through the report. A customer identified the mismatch on their first real capture.

Where it sits

This is a behavioral failure across the job and notification lifecycle. Integration tests were present but checked those components separately. The missing observation was whether a recovered job still appeared as an active failure to its learner.

What we did

Capture failures now persist their capture identifier. The report shows the affected source and notification timestamp. Successful completion acknowledges only that capture's failure notifications. An upgrade links historical notifications only when matching recorded failures identify one capture. Ambiguous historical notifications remain active for investigation.

What now fails loudly

A test forces a capture's last retry to fail, reads its report and requires the correct capture identifier and source. It then successfully processes that capture and requires its alert to disappear while another capture's alert and an unrelated sync alert remain active. Restoring the original engine makes the identity assertion fail because the identifier is null. A migration test checks recovery of an unambiguous historical alert and retention of ambiguous failures.