Incident log
Every failure, and whether we repaired it
A scraper that repairs everything it cannot read will eventually invent a safety recall. Two of the four failure causes here must never be repaired, and the log records the refusal rather than the silence. Newest first.
Timeline
Each entry shows what the contract measured, the classifier’s evidence word for word, and either the refusal or the prompt that was sent. The prompt is included in full because a repair instruction is the part of a self-healing scraper nobody normally lets you read.
the request was refused at the door. Rewriting selectors cannot clear a block, so attempting a repair would burn credits and can deepen the block.
What the contract measured
Evidence, verbatim
- listing returned HTTP 403
- healing cannot clear a block; backing off instead
- blocked cycle 1 in a row; holding off until 2026-08-20T19:34:31.295Z before the next request
What we declined to do
Refusal, recorded verbatimthe source refused the request; healing cannot clear a block
the data is still published in a different shape. This class is repairable, so a repair was attempted, unless the entry below says otherwise: a cycle that could not check every missing record also lands here, and refuses.
What the contract measured
Evidence, verbatim
- field location null rate 5.6% against a limit of 5.0% over 480 rows (examples: , , )
What we declined to do
Refusal, recorded verbatimheal reported "done" but the result still fails the contract: field location null rate 5.6% exceeds limit 5.0% over 568 rows
Repair prompt sent to the collector · took 264.4s
VerbatimExtraction returned 480 rows but these fields breached contract ebay@1: location (6% null). The listing at https://www.ebay.com/sch/i.html?_nkw=Cooluli+minifridge still returns HTTP 200 with 1765681 bytes, so it is not blocked. Permalinks for the previously extracted notices still return HTTP 200, so nothing was withdrawn. The previously working selector .permalink now matches 0 elements. Attribute hooks present in the live document: data-inlinepayload, data-type, data-variant, data-webpack, data-uvcc-ready, data-marko-key, data-id, data-marko. Re-extract every notice from https://www.ebay.com/sch/i.html?_nkw=Cooluli+minifridge.
All 1 contract breaches, verbatim
- field location null rate 5.6% exceeds limit 5.0% over 568 rows
the data is still published in a different shape. This class is repairable, so a repair was attempted, unless the entry below says otherwise: a cycle that could not check every missing record also lands here, and refuses.
What the contract measured
Evidence, verbatim
- field id null rate 100.0% against a limit of 0.0% over 0 rows (examples: )
- field permalink null rate 100.0% against a limit of 0.0% over 0 rows (examples: )
- field title null rate 100.0% against a limit of 0.0% over 0 rows (examples: )
- field price null rate 100.0% against a limit of 2.0% over 0 rows (examples: )
- field currency null rate 100.0% against a limit of 2.0% over 0 rows (examples: )
- field condition null rate 100.0% against a limit of 5.0% over 0 rows (examples: )
- field location null rate 100.0% against a limit of 5.0% over 0 rows (examples: )
- listing fetched cleanly (HTTP 200, 1782051 bytes) but yielded no rows
What we declined to do
Refusal, recorded verbatimheal reported "done" but the result still fails the contract: returned 0 rows, contract requires at least 5
Repair prompt sent to the collector · took 454.5s
VerbatimExtraction returned an empty array: 0 rows where several were expected, and no errors were raised. The listing at https://www.ebay.com/sch/i.html?_nkw=Cooluli+minifridge still returns HTTP 200 with 1782051 bytes, so it is not blocked. Permalinks for the previously extracted notices still return HTTP 200, so nothing was withdrawn. The previously working selector .permalink now matches 0 elements. Attribute hooks present in the live document: data-inlinepayload, data-uvcc-ready, data-marko-key, data-ebayui, data-marko, data-gh-search-form-field, data-view-type, data-pageci. Re-extract every notice from https://www.ebay.com/sch/i.html?_nkw=Cooluli+minifridge.
All 1 contract breaches, verbatim
- returned 0 rows, contract requires at least 5
the data is still published in a different shape. This class is repairable, so a repair was attempted, unless the entry below says otherwise: a cycle that could not check every missing record also lands here, and refuses.
What the contract measured
Evidence, verbatim
- field id null rate 100.0% against a limit of 0.0% over 0 rows (examples: )
- field permalink null rate 100.0% against a limit of 0.0% over 0 rows (examples: )
- field title null rate 100.0% against a limit of 0.0% over 0 rows (examples: )
- field price null rate 100.0% against a limit of 2.0% over 0 rows (examples: )
- field currency null rate 100.0% against a limit of 2.0% over 0 rows (examples: )
- field condition null rate 100.0% against a limit of 5.0% over 0 rows (examples: )
- field location null rate 100.0% against a limit of 5.0% over 0 rows (examples: )
- listing fetched cleanly (HTTP 200, 1812678 bytes) but yielded no rows
What we declined to do
Refusal, recorded verbatimheal reported "done" but the result still fails the contract: field id null rate 100.0% exceeds limit 0.0% over 0 rows; field permalink null rate 100.0% exceeds limit 0.0% over 0 rows
Repair prompt sent to the collector · took 294.3s
VerbatimExtraction returned an empty array: 0 rows where several were expected, and no errors were raised. The listing at https://www.ebay.com/sch/i.html?_nkw=Cooluli+minifridge still returns HTTP 200 with 1812678 bytes, so it is not blocked. Permalinks for the previously extracted notices still return HTTP 200, so nothing was withdrawn. The previously working selector .permalink now matches 0 elements. Attribute hooks present in the live document: data-inlinepayload, data-marko-key, data-id, data-marko, data-ebayui, data-view-type, data-pageci, data-operationid. Re-extract every notice from https://www.ebay.com/sch/i.html?_nkw=Cooluli+minifridge.
All 8 contract breaches, verbatim
- field id null rate 100.0% exceeds limit 0.0% over 0 rows
- field permalink null rate 100.0% exceeds limit 0.0% over 0 rows
- field title null rate 100.0% exceeds limit 0.0% over 0 rows
- field price null rate 100.0% exceeds limit 2.0% over 0 rows
- field currency null rate 100.0% exceeds limit 2.0% over 0 rows
- field condition null rate 100.0% exceeds limit 5.0% over 0 rows
- field location null rate 100.0% exceeds limit 5.0% over 0 rows
- returned 0 rows, contract requires at least 5
a record we published as withdrawn is on sale again. Nothing broke and the contract passed, which is exactly why this used to pass in silence.
What the contract measured
Evidence, verbatim
- 1 record(s) previously published as withdrawn are present in the listing again: TW-33887
- contract tradewell@1 passed over 12 rows, so this is the source's own change rather than a reading error on our part
- no longer marked withdrawn; the withdrawal and the return are both on the record
the listing is intact and the paging scheme moved. Repairable.
What the contract measured
Evidence, verbatim
- returned 7 rows against a baseline of 14, which is one page of 7
- all 7 missing notice(s) still return HTTP 200 at their permalinks, so they are published but unreached
What we declined to do
Refusal, recorded verbatima repair is already running on this collector, so this one could not start; nothing was attempted and the collector is unchanged
All 2 contract breaches, verbatim
- returned 7 rows, contract requires at least 10
- row count fell from 14 to 7, a 50.0% drop, limit 20.0%
the listing is intact and the paging scheme moved. Repairable.
What the contract measured
Evidence, verbatim
- returned 7 rows against a baseline of 14, which is one page of 7
- all 7 missing notice(s) still return HTTP 200 at their permalinks, so they are published but unreached
Repair prompt sent to the collector · took 330.6s
VerbatimExtraction returned 7 rows against a baseline of 14, and every field it did read satisfied contract tradewell@1. Rows are missing, not fields. The listing at https://tradewell-market-p5kff05i7-chirus-projects-a2862453.vercel.app/ still returns HTTP 200 with 8631 bytes, so it is not blocked. Permalinks for the previously extracted notices still return HTTP 200, so nothing was withdrawn. The previously working selector .permalink now matches 0 elements. Attribute hooks present in the live document: data-testid, data-listing-ref, data-explicit-opt-in, data-deployment-id. Visible field labels are now: Brand, Item condition, Seller, Location, Shipping, Listed. Re-extract every notice across https://tradewell-market-p5kff05i7-chirus-projects-a2862453.vercel.app/ and /page-2.html.
the records were removed at source and their permalinks no longer resolve. A repair here fabricates replacements for records somebody deliberately took down.
What the contract measured
Evidence, verbatim
- 3 notice(s) absent from the listing AND their permalinks return 404 or 410: TW-88214, TW-44903, TW-33887
- removed at source, not lost by us: retained as last-good, never healed
- all 3 missing record(s) accounted for by withdrawal; remaining 11 rows satisfy contract tradewell@1
What we declined to do
Refusal, recorded verbatimrecords were withdrawn at source and their permalinks no longer resolve; healing would fabricate replacements for records that were deliberately removed
All 1 contract breaches, verbatim
- row count fell from 14 to 11, a 21.4% drop, limit 20.0%
the request was refused at the door. Rewriting selectors cannot clear a block, so attempting a repair would burn credits and can deepen the block.
What the contract measured
Evidence, verbatim
- listing returned HTTP 200 with block signature "verify you are a human"
- healing cannot clear a block; backing off instead
What we declined to do
Refusal, recorded verbatimthe source refused the request; healing cannot clear a block
All 10 contract breaches, verbatim
- field id null rate 100.0% exceeds limit 0.0% over 0 rows
- field permalink null rate 100.0% exceeds limit 0.0% over 0 rows
- field title null rate 100.0% exceeds limit 0.0% over 0 rows
- field brand null rate 100.0% exceeds limit 0.0% over 0 rows
- field price null rate 100.0% exceeds limit 0.0% over 0 rows
- field condition null rate 100.0% exceeds limit 0.0% over 0 rows
- field location null rate 100.0% exceeds limit 0.0% over 0 rows
- field listedOn null rate 100.0% exceeds limit 0.0% over 0 rows
- returned 0 rows, contract requires at least 10
- row count fell from 11 to 0, a 100.0% drop, limit 20.0%
the data is still published in a different shape. This class is repairable, so a repair was attempted, unless the entry below says otherwise: a cycle that could not check every missing record also lands here, and refuses.
What the contract measured
Evidence, verbatim
- field id null rate 100.0% against a limit of 0.0% over 0 rows (examples: )
- field permalink null rate 100.0% against a limit of 0.0% over 0 rows (examples: )
- field title null rate 100.0% against a limit of 0.0% over 0 rows (examples: )
- field price null rate 100.0% against a limit of 2.0% over 0 rows (examples: )
- field currency null rate 100.0% against a limit of 2.0% over 0 rows (examples: )
- field condition null rate 100.0% against a limit of 5.0% over 0 rows (examples: )
- field location null rate 100.0% against a limit of 5.0% over 0 rows (examples: )
- listing fetched cleanly (HTTP 200, 8470 bytes) but yielded no rows
What we declined to do
Refusal, recorded verbatimheal reported "done" but the result still fails the contract: field id null rate 100.0% exceeds limit 0.0% over 0 rows; field permalink null rate 100.0% exceeds limit 0.0% over 0 rows
Repair prompt sent to the collector · took 246.5s
VerbatimExtraction returned an empty array: 0 rows where several were expected, and no errors were raised. The listing at https://tradewell-market.vercel.app/ still returns HTTP 200 with 8470 bytes, so it is not blocked. Permalinks for the previously extracted notices still return HTTP 200, so nothing was withdrawn. The previously working selector .permalink now matches 0 elements. Attribute hooks present in the live document: data-testid, data-item-id. Visible field labels are now: Brand, Condition, Seller, Location, Shipping, Listed. Re-extract every notice across https://tradewell-market.vercel.app/ and /page-2.html.
All 8 contract breaches, verbatim
- field id null rate 100.0% exceeds limit 0.0% over 0 rows
- field permalink null rate 100.0% exceeds limit 0.0% over 0 rows
- field title null rate 100.0% exceeds limit 0.0% over 0 rows
- field price null rate 100.0% exceeds limit 2.0% over 0 rows
- field currency null rate 100.0% exceeds limit 2.0% over 0 rows
- field condition null rate 100.0% exceeds limit 5.0% over 0 rows
- field location null rate 100.0% exceeds limit 5.0% over 0 rows
- returned 0 rows, contract requires at least 5