It passed verification and was adopted. The source now runs plan v2, written with origin repair so the audit trail records who chose these selectors.
Deterministic repair of 1 field (price), built from evidence captured during the run being repaired. Written to the proposal table, which the collector does not read.
What broke, what the evidence offered instead, and the one gate between a candidate and production.
Every candidate above was observed on the page when the break was recorded. A model may choose among them; it may not add one (TD-019).
Selector lists, before and after. A new candidate is marked.
Captured on the page during the run being diagnosed, holding "₹899" beside the label "₹1,299". It is a test id, which exists to be depended on and survives restyling.
Re-derived from the run it was proposed against, not stored.
.price for price now matches 2 elements, up from 1. Extraction takes the first match, so the value is correct only while the intended element happens to come first in document order — and a redesign is exactly what reorders it.
Replace the selector with one that identifies a single element. This is the cause where the value can be wrong while the run reports ok, every field extracts and schema validation passes, so it should be repaired before it produces a wrong number rather than after.
8 checks · evidence replayed · 0 credits spent
The exact extraction logic under review.
| Field | Type | Structured data | Selectors, in order |
|---|---|---|---|
| product_name required | text | — | #0h1 |
| price required | currency | — | #0[data-testid="product-price"]#1.price |
| availability | availability | — | #0.stock-status |