|
| 1 | +# General address reliability |
| 2 | + |
| 3 | +The October 19 report exposed two geocoding representation differences and a |
| 4 | +deployment gap. Production still served the October 17 image, so the spatial |
| 5 | +OCR evidence fix pushed on October 18 had not reached the running application. |
| 6 | +The supplied original HEIC was converted and visually inspected; under the newer |
| 7 | +parser, all six street/unit lines already had three-engine agreement without |
| 8 | +package-counter warnings. |
| 9 | + |
| 10 | +Google's precise Hall Road result uses a different postal city. Reverse geocoding |
| 11 | +also returns the exact requested house/street/city 1.59 metres away. The Hilltop |
| 12 | +result uses Drive where the screenshot says Court; both its constrained original |
| 13 | +query and its canonical query return the same rooftop place ID. These are |
| 14 | +observations from private diagnostic responses, not address replacement rules. |
| 15 | + |
| 16 | +## General recovery contract |
| 17 | + |
| 18 | +Strict street matching remains the fast path. Recovery can propose only a unique, |
| 19 | +non-partial rooftop street-level result with the requested house number, street |
| 20 | +name, directions, state and country. The input must include city and state. Only |
| 21 | +one semantic dimension may differ: |
| 22 | + |
| 23 | +- If no recognized locality level explicitly corroborates the requested city, |
| 24 | + reverse geocoding must return a full matching house/street/locality address |
| 25 | + within ten metres. A city, county, postal-code centre or nearby different house |
| 26 | + cannot supply that proof. The original rooftop location remains the target. |
| 27 | +- For a different street type or compound-name spacing, a query containing the |
| 28 | + original house/street/unit and structured locality must return the proposed |
| 29 | + same rooftop place ID. A second query containing the canonical street must |
| 30 | + corroborate it again, within two metres. A competing same-number/stem destination |
| 31 | + in either proof blocks correction, regardless of result order. |
| 32 | + |
| 33 | +Recovery never rewrites house numbers, street-name letters, directions, apartment |
| 34 | +identifiers, state or country. It cannot combine city and street corrections. |
| 35 | +Missing or conflicting provider components, partial matches, invalid coordinates, |
| 36 | +ambiguous destinations and genuine unit conflicts remain guarded. Verification |
| 37 | +of a recovered apartment requires matching unit evidence in the proposal and |
| 38 | +proofs; otherwise only the building is verified and the apartment is retained. |
| 39 | + |
| 40 | +Proof queries share the existing eight-request stop ceiling, 25-second stop and |
| 41 | +90-second batch deadlines, per-owner/global budgets, transient retries and 60 ms |
| 42 | +global request pacing. They do not use a separate unlimited retry path. No |
| 43 | +per-address lookup table, hosted OCR or OpenAI key is introduced. |
| 44 | + |
| 45 | +## OCR, feedback and saved results |
| 46 | + |
| 47 | +Extraction `ocr-consensus-v9` also handles a far-column short counter that is |
| 48 | +vertically adjacent rather than overlapping: it cannot interrupt a wrapped unit |
| 49 | +or the street-to-city join. Nearby uncertain unit fragments remain evidence and |
| 50 | +still require review. Strict consensus packet validation and all three engines |
| 51 | +remain intact. |
| 52 | + |
| 53 | +Geocoding `street-address-v7` invalidates older location metadata in cache/session |
| 54 | +validation. Recovered rows show Google's map address and retain the original |
| 55 | +address text. Unit verification and building-only verification remain distinct; |
| 56 | +the normal retry/loading/success feedback and uncertain-command holds remain. |
| 57 | + |
| 58 | +## Validation and release |
| 59 | + |
| 60 | +- Clean package: 228 Java tests passed, including 36 name/state/unit combinations |
| 61 | + and rejection/proof-budget tests. All 36 frontend tests passed, including v5/v6 |
| 62 | + saved-session migration and safe rendering of provider text. |
| 63 | +- Eleven user-authorized Google diagnostics were recorded privately. Replaying |
| 64 | + those bodies through the actual geocoder verifies all six supplied rows in |
| 65 | + order while preserving address text: nine fixture requests, no external calls |
| 66 | + or vehicle commands. Hall uses two requests; Hilltop uses three. |
| 67 | +- Native baseline on the original HEIC and the prior Southfield screenshot: |
| 68 | + eight exact rows, 3/3 address agreement, no false review warnings, 36 Python |
| 69 | + tests passed, and disposable QA app/fixtures cleaned up. This baseline used |
| 70 | + source overlays and is not final-image qualification. |
| 71 | + |
| 72 | +Final image qualification and deployment evidence will be recorded after the |
| 73 | +source CI, security/storage/publication gates and immutable image checks finish. |
| 74 | +No vehicle commands are part of validation. Credentials, original delivery |
| 75 | +screenshots and provider bodies remain outside source control. Existing data, |
| 76 | +TAP authorization, CSRF, ordering/dedupe and eight-stop grouping are preserved. |
| 77 | + |
| 78 | +API references: Google's [forward geocoding response contract](https://developers.google.com/maps/documentation/geocoding/guides-v3/requests-geocoding) |
| 79 | +and [reverse-geocoding contract](https://developers.google.com/maps/documentation/geocoding/guides-v3/requests-reverse-geocoding). |
0 commit comments