ai-coding-minesIndexGitHub

A "done" record does not mean done

Python and databases

Symptom

~1,000 items logged ok; a sample of 40 was entirely unchanged. The only evidence for ok was status_code == 200.

Fix

When you record completion, record what verified it: re-fetched N / re-fetched all / unverified.

Unverified completion is written as "executed" and nothing more.

Enforce the success predicate as a function:

def ok(code, resp):
    return code == 200 and isinstance(resp, dict) and resp.get("code") != "ERROR"

Without it, ~700 items spun for nothing. All rejected, all recorded as put.

A contaminated done-list corrupts the denominator of the next job

A correction batch recorded 2,608 items ok on nothing but PUT 200 SUCCESS. A full-verification sample: 60 of 60 unchanged. Those 2,608 were counted as done and excluded from the next round's "remaining" set — the fiction didn't stay inside one batch; it poisoned the denominator of everything after it.

The enforced protocol:

write → wait → re-fetch → compare → ok only on match