QDG Knowledge Base Read-only viewer QWebHub
notes

Harness and Greyhound Source Research - August 2026

Version 5 · Record complete unbounded Denmark, Finland and Netherlands verification

Harness and Greyhound Source Investigation

Version: 1.2.0 Last updated: 2026-08-08

Git baseline note: the eight adapters in this report, including LeTROT and the independent discipline registries, were developed through 490b0c9 and merged with the Thoroughbred line from 4d68b42 in main merge commit ab0441e. The unified registry contains all three disciplines.

Scope and decision rules

This report covers every unticked Harness and Greyhound source that was listed in SITE_LINKS.md on 2026-08-08. Investigation used the public site in the in-app browser. FormCrawler code captures raw source responses only. It does not parse racing values. Supplementary resources are linked for operator review but are not acquired.

The investigation was bounded: blocked/authenticated/licensed sources were not bypassed; the approved Racing and Sports proxy was used only for HVT after direct public GETs produced a redirect challenge; implementation repair stopped at three bounded cycles.

Status meanings:

  • Implemented: adapter, unit tests, index test, and at least one raw target capture passed.
  • Partial: useful verified routes exist, but an important phase, archive, queue edge, access condition, or stable programmatic route remains unresolved.
  • Documented: routes were verified, but no adapter was added in this pass.
  • Blocked/abort: access, licensing, catalogue mismatch, or the bounded search prevented a safe implementation.

Harness summary

# Jurisdiction/source Status Pre-race and history Post-race and history Method / implementation
1 Australia — Harness Racing Australia Implemented, partial archive and result coverage Current fields; example lifecycle meeting. The same URL is overwritten after completion, so old cards are not preserved. The uncapped test captured 25 of 26 published/listed cards; future DU090826 remained not-ready after a bounded recheck. Monthly results index; verified result Mildura 31-Jul-2026. Two indexed dates did not yield a fully ready national day: 31-Jul was 2/7 and 16-Jul was 1/3. Server HTML. au_harness_racing; results date-range by monthly list, current pre list fallback. Stored artifacts passed integrity checks, but national full-day result coverage remains partial because several index links did not publish the required final-results markers within three bounded repair cycles.
2 New Zealand — HRNZ Implemented Fields list; example. Results list; example; month archive. Static HTML/PDF. nz_hrnz; list/month fallback because filenames omit year. Index found 8 targets and archived result capture passed.
3 France — LeTROT Implemented Dated calendar; pre-race programme. Historical calendars were verified through 2015. Completed programme; richer race 1 result. Public server-rendered HTML; no internal API or proxy required. fr_letrot uses one dated calendar per day and one whole-meeting programme per discovered meeting, classified by first-party INCOMING/DEFINITIVE status.
4 Denmark — Paris-Turf Abort: catalogue mismatch Programme by date; race starters. Race result. French general racing publication; bounded Denmark/Aalborg/Charlottenlund search found no reliable Denmark source.
5 Denmark — Swedish Horse Racing Implemented Calendar; Danish Odense example. Same race service publishes finishing positions. dk_swedish_horse_racing; first-party /services/calendar, /services/raceday and /services/race JSON filtered to country=DK and trot. Odense pre/post passed live validation.
6 Belgium — Belgium Horse Racing Documented, strong candidate Date-range index uses POST; future example. Same deterministic route; completed example. Server HTML; explicit POST date range and deterministic meeting GET. Recommended next adapter.
7 Finland — Heppa Implemented Coming races and exact date/track/start routes. Results use the same race JSON after publication. fi_heppa_harness; first-party range, meeting and start JSON. Härmä race 1 pre/post passed live validation. Horse IDs/registration countries and public profile routes are present; breeding is available on profiles.
8 Netherlands — NDR Implemented Koersen upcoming index and stable printable meeting HTML. Year/month selector calls first-party WordPress AJAX zoek_koersen, then the same printable meeting route. nl_ndr_harness; Eenrum upcoming card and Emmeloord result meeting passed live validation. Horse IDs are present; programmes, calendars, downloads and bulletins remain linked supplementary assets.
9 Norway — RaceBets Abort: licensed commercial data Dated calendar pattern. Site advertises cards and results. Betting application requires JavaScript and explicitly states its data/database may not be used without a licence. Not an appropriate crawler source.
10 Norway — Swedish Horse Racing Documented, partial Calendar; Norwegian Bjerke evidence includes official race-page PDF. Same Angular race route carries results; historical PDFs are indexed. AngularJS/XHR. Bjerke PDFs show detailed form, sire/dam, age and country suffix. Internal API still unresolved.
11 Spain — Federació Balear de Trot Documented, strong candidate Monthly GET calendar, e.g. August 2026; future meeting; race card. Same meeting lifecycle; completed meeting and result race IDs use idTipo=3. Server-rendered PHP with stable numeric IDs. Excellent next adapter; monthly list fallback is immediately practical.
12 Hungary — Kincsem Park Documented, strong candidate Trotting year calendar; deterministic /racecards/trotting/YYYY-MM-DD. Verified deterministic result route. Same server HTML/embedded-calendar-JSON design as implemented greyhound adapter. Recommended next adapter.
13 Sweden — Travsport Blocked/partial Sportapp presented bot verification. Indexed routes show /race/raceday/{id}/.... Example indexed result race day. Access verification was not bypassed. Approved proxy check remains a future task.
14 Sweden — Swedish Horse Racing Documented, partial Calendar. Same route after publication. Same Angular/XHR source as Denmark/Norway; one shared future adapter should filter country flag/track.
15 USA — USTA Racing Partial Week at a Glance; card shell. Same ASP.NET pages expose result status and races. Stateful ASP.NET postbacks require session cookies and hidden form state. The current workflow cannot safely model dependent token/session navigation, so no adapter.
16 Canada — Standardbred Canada Implemented Entries; direct meeting documents under /racing/entries/data/e....dat. Historical cards are not retained; current list fallback. Dated GET index, e.g. 2-Aug-2026; completed example. Server HTML. ca_standardbred_canada; 9 meetings discovered; cancelled and completed result artifacts both validated.
17 Germany — HVT Implemented via approved proxy Monthly index June 2026; starter pattern /{track}/starter/YYYYMMDD/. Result summary pattern /{track}/rennbericht/YYYYMMDD/; example. Server HTML. de_hvt_harness; direct GET redirect challenge, then approved proxy discovered and captured the pre/post pair. Regular tracks only; regional tracks remain documented partial.
18 Italy — SNAI Ippica Implemented Current/declarations list; signed meeting URLs are discovered fresh. Historical pre cards are unavailable. Dated index, e.g. 6-Aug-2026; signed meeting pages contain all races. Server HTML with signed links. it_snai_ippica_harness; 2 meetings discovered and 1 complete meeting captured in the bounded test.

Greyhound summary

# Jurisdiction/source Status Pre/post/history Method / implementation
1 Australia — The Dogs Blocked Racing returned HTTP 403 in the browser. No bypass attempted. Approved proxy transport remains a future bounded check.
2 Australia — GRV Partial; official API preferred Watchdog calendar; card; result. Angular SPA. GRV directs programmatic users to the authenticated/licensed Topaz API; no key was available, so no adapter.
3 New Zealand — GRNZ Blocked Fields stopped at Cloudflare verification. No challenge/CAPTCHA bypass attempted. Approved proxy check remains future work.
4 United Kingdom — Racing Post Greyhounds Documented, partial Cards by date; results archive; result example. Hash-route SPA. Stable IDs are visible, but the first-party fragment/API request contract was not confirmed. Historical pre-card depth is uncertain.
5 Ireland — Greyhound Racing Ireland Implemented Upcoming cards list fallback; dated results range example; result. Server HTML. ie_gri; 9 meeting results discovered and 1 captured.
6 Hungary — Kincsem Park Implemented; catalogue URL corrected Correct greyhound year calendar; card; result. Server HTML with embedded racing_days JSON. hu_kincsem_park_greyhound; pre/post pair discovered and both captured on the third bounded repair cycle. The discipline-qualified ID avoids collision with Hungary Thoroughbred.

Breeding and profile availability

Source Sire Dam Origin Foal year/date Example profile or closest stable detail
HRA Yes Yes Partial suffix Exact date on profile Horse 817467
HRNZ Yes Yes Not discrete Year Profile links are session/token dependent; field example
LeTROT Yes Yes Not observed Year Komeo du Dome
Paris-Turf Yes Yes Not discrete Age Ricinoa Boko
Swedish Horse Racing No in modal No in modal Yes, suffix No in modal No standalone URL; use the meeting route. PDFs for Norway do include sire/dam and age.
Belgium Horse Racing Yes Yes Yes Exact date Horse 87328
Heppa Yes on public horse profile Yes on public horse profile Registration country in race JSON Profile carries birth/breeding detail Race JSON exposes stable numeric horse IDs; horse statistics is the public lookup.
NDR Not confirmed Not confirmed Not confirmed Not confirmed Meeting HTML exposes stable horse IDs and links; no standalone public breeding profile was confirmed.
RaceBets Not assessed Not assessed Not assessed Not assessed Aborted for licensing.
Balearic Trot Yes Yes Breed/country suffix in pedigree Year; ancestors exact dates LIORNA
Kincsem trotting Expected on same platform, not reverified Expected Expected Expected No harness profile example recorded in this pass.
Travsport Yes on indexed result Yes Country suffix Age/year derivable No stable profile example established before verification block.
USTA Only for some young horses in cards Only for some young horses Not discrete Age Pathway search (separate service).
Standardbred Canada Partial: 2YO entries/top result finishers Partial Suffix/breeder location only Age TrackIT (separate service).
HVT Yes Yes Country suffix/breeder text Age, year derivable No standalone public horse link found.
SNAI Yes Yes Yes Age/year Lillibet del Sile (signature may expire).
The Dogs Unknown Unknown Unknown Unknown Blocked.
GRV Watchdog Yes Yes Not discrete Age Miss Irene race context
GRNZ Unknown Unknown Unknown Unknown Blocked.
Racing Post Greyhounds Yes Yes Not explicit Exact DOB Yankee Molly
GRI Yes Yes Not explicit Exact whelp date Ballymac Scheff
Kincsem greyhound Yes Yes Yes Exact DOB Diabolical Inez

Supplementary links (document only)

Validation evidence

  • Unit suite before merge: 131 passed after LeTROT and discipline-module integration. Current unified main: 209 passed with 26 T, nine H and two G adapters.
  • Re-examination live tests: Denmark Odense race 1 pre/post JSON (6,155 bytes each), Finland Härmä race 1 pre/post JSON (20,287 bytes each), NDR Eenrum upcoming meeting HTML (24,719 bytes), and NDR Emmeloord result HTML (35,292 bytes) passed source readiness validation.
  • Re-examination complete-day crawls ran concurrently and without target limits: Denmark Odense 7 August captured all 9 pre/post race pairs; Finland 7 August captured all 30 pre/post pairs across three meetings; NDR captured the whole latest-available Eenrum pre meeting and Emmeloord post meeting (the source publishes them as whole-meeting pages). Including discovery controls, their complete queues contain 20, 64 and four captured artifacts respectively, with matching FormParser handoffs and zero integrity or permanent failures. Seven later NDR future cards remain retryable because starters are not yet published, outside the selected complete evidence.
  • LeTROT full test: 7-Aug-2026 results 4/4 and 9-Aug-2026 pre-race 16/16, plus their dated calendars; zero retries/failures. All 26 accumulated LeTROT artifacts and handoffs passed the independent integrity audit.
  • Canada full test: current entries 14/14 and 2-Aug-2026 results 9/9; 25 direct HTTP 200 artifacts, zero retries/failures, 15.164-23.666-second request gaps.
  • HVT full test: complete 4-Jun-2026 starter and result day captured through the approved proxy; 2/2 artifacts, zero content failures.
  • SNAI full test: current entries 11/11 and 7-Aug-2026 results 3/3; 16/16 including both indexes, zero retries/failures.
  • GRI full test: all 29 published current cards and 7-Aug-2026 results 9/9 captured. Future DLK meeting 119081 remained not-ready after one queue attempt and one bounded direct recheck; 40 stored artifacts passed.
  • Kincsem greyhound full test: calendar plus complete 25-Jul-2026 pre/post pages, 3/3.
  • HRNZ full test: complete current fields 2/2 and results index 8/8. Two automatically paired future result targets remain retryable and do not reduce pre-race coverage.
  • HRA full test: current fields 25/26 with future DU090826 not-ready. A complete national results day could not be validated: 31-Jul-2026 was 2/7, then the final fallback 16-Jul-2026 was 1/3. The bounded repair limit was reached and HRA remains partial.

Every stored full-test artifact was non-empty and passed recomputed SHA-256, byte-length, raw-response metadata, and FormParser inbox handoff validation. The 86 Harness artifacts are visible under C:\Users\Robert\project-data\FormCrawler\h-artifacts; the 43 Greyhound artifacts use the required sibling g-artifacts tree. Canonical metadata and handoff URIs were regenerated and independently revalidated. No runtime racing data was written into the repository.

Updated by Codex on Aug. 8, 2026, 10:36 a.m. · Task: Complete unbounded pre/post day verification for re-examined jurisdictions