QDG Knowledge Base Read-only viewer QWebHub

Recently maintained

Latest Updates

Current project pages ordered by their most recent published version.

overview

Overview

QDBAuth

QDBAuth QDBAuth is the central login/2FA service for the QDB ecosystem. It owns the ONLY username/password check and the ONLY TOTP 2FA check across every consuming site — QDBAdmin, the CMS (built in A…

Sept. 7, 2026, 8:54 a.m. Version 3 Replaced the outdated "Site-specific roles" section (hardcoded ROLE_GROUPS) with the 2026-09-06/07 database-backed role model and role-based dashboard access, and added a Site Clients section.
bugs

Known Limitations & Security Notes

QDBAuth

Known Limitations & Security Notes Open — temporary CMS-New TOTP test-code bypass left in production code Status: open as of 2026-09-06, added deliberately for QA testing, not yet removed. views.py's…

Sept. 7, 2026, 8:53 a.m. Version 2 Added the temporary CMS-New TOTP test-code bypass (open, needs removal), the resolved group member-count bug, and updated the one-role-column limitation to reference the new site_roles table.
user-guide

Administrator User Guide

QDBAuth

QDBAuth Administrator User Guide Audience: anyone with Super Admin or Admin role access to QDBAuth's own dashboard, who creates/manages accounts for the QDB ecosystem's sites (CMS, TD, QDB admin, migr…

Sept. 7, 2026, 8:52 a.m. Version 2 Added sections for the 5-tier role model, the new Roles management page, Site Clients, My Account self-service, and bulk-delete/search-fix behavior from the 2026-09-06/07 deliveries.
general

Authentication, MFA & Token Internals

QDBAuth

Authentication, MFA & Token Internals Written for the "official developer and integration guide" requested in ClickUp task 86d40a7qe. Complements API Reference (endpoint shapes) and Administrator User…

Sept. 7, 2026, 8:51 a.m. Version 3 Corrected an error from the previous version: no dash_* session key was actually renamed (that was part of the dropped site-to-Organization rename). The only session change on 2026-09-06 was a new dash_is_admin key.
general

Roles, Permissions & Multi-Tenancy

QDBAuth

Roles, Permissions & Multi-Tenancy Written for the "official developer and integration guide" requested in ClickUp task 86d40a7qe, which frames QDBAuth as "similar to Keycloak." This page documents wh…

Sept. 7, 2026, 8:49 a.m. Version 2 Rewrote the Roles section for the 2026-09-06/07 changes: the 5-tier Super Admin/Admin/Developer/Support Lead/User model, is_admin-flag-based access checks, and the site_roles DB table replacing the hardcoded ROLE_GROUPS dict. Added Site Clients to the multi-tenancy/client comparison.
changelog

Changelog

QDBAuth

2026-09-07 — Site Clients + per-site role management Added apps/auth/site_clients.py + db/create_site_clients_table.sql (new site_clients table): each registered site's own clients/customers — previou…

Sept. 7, 2026, 8:48 a.m. Version 2 Added 2026-09-06 and 2026-09-07 entries: role-based dashboard access, self-service account page, 8 QA bug fixes, Site Clients, and per-site role management
changelog

Changelog

BreedingInfill

Changelog Consolidated history of BreedingInfill, newest first. Entries dated 23–25 August 2026 come from the retired RQDG/BreedingInFill2 repository and are folded in here so the record is continuous…

Sept. 6, 2026, 11:59 p.m. Version 2 Add the 7 September 2026 documentation entry: HANDOVER 3.0.0, RUNBOOK 2.0.0, new DECISIONS.md, README 1.2.0, and the missing ANALYSIS document recorded rather than reconstructed.
overview

BreedingInfill Overview

BreedingInfill

BreedingInfill Last reviewed: 2026-09-07 Repository: https://github.com/RQDG/BreedingInFill.git — working copy C:\Users\Robert\Projects\BreedingInfill Schema: breeding v4 (post-key_name drop, 27 Augus…

Sept. 6, 2026, 11:57 p.m. Version 3 Repository documentation is no longer stale - HANDOVER 3.0.0, RUNBOOK 2.0.0 and DECISIONS.md landed 7 September. Replace the drift warning with a pointer to the repository document set.
notes

Status and Open Items

BreedingInfill

Status and Open Items Last reviewed: 2026-09-07 — measured against the live databases. Where things stand The rebuild is done and shipped. rs.breeding holds 3,106,726 rows and qdb.breeding holds the s…

Sept. 6, 2026, 11:57 p.m. Version 2 Documentation drift resolved: HANDOVER 3.0.0, RUNBOOK 2.0.0 and a new DECISIONS.md are now in the repository. Narrow item 9 to the one document still genuinely missing.
changelog

Change Log

QDG Identity

QDG Identity change log Document version: 1.0.15. Updated 7 September 2026. Successful candidate preparation and smarter regression selection The corrected-candidate run completed on Odin. Its returne…

Sept. 6, 2026, 11:55 p.m. Version 16 Record successful Odin candidate preparation and focused testing policy while keeping production cutover pending.
workflow

How to Use

QDG Identity

QDG Identity: operating and deployment workflow Document version: 1.0.14. Updated 7 September 2026. This page describes the current delivery workflow. It does not authorise a production change or clai…

Sept. 6, 2026, 11:54 p.m. Version 16 Record verified Odin candidate preparation and change-impact testing; retain outstanding production and ingress gates.
notes

August 2026 Validation

BreedingInfill

August 2026 Validation Source document: reports/Breeding_validation_August_2026.docx Figures taken against the live databases on 5 September 2026. What was tested and why The rebuilt breeding table wa…

Sept. 6, 2026, 11:45 p.m. Version 1 Publish the independent validation of the rebuilt breeding table against race-day runners for 1, 2, 8 and 9 August 2026, including the year-convention evidence and recommendations.
workflow

Pipeline and Operations

BreedingInfill

Pipeline and Operations Last reviewed: 2026-09-07 Every command is a dry run unless given --apply (or apply for the batch driver). Nothing writes by default. Full rebuild run_breeding_rebuild.bat dry…

Sept. 6, 2026, 11:45 p.m. Version 1 Publish the operational runbook: full rebuild sequence, per-step behaviour and timings, dedup, reconcile, shipping to QDB, reports and safety rules.
general

Breeding Table Schema

BreedingInfill

Breeding Table Schema Last reviewed: 2026-09-07 — verified against live rs.breeding and qdb.breeding. rs.breeding (local, DESKTOP-7UDSBA1) and qdb.breeding (ODIN) are column-identical: 23 columns, sam…

Sept. 6, 2026, 11:44 p.m. Version 1 Publish the data dictionary for rs.breeding / qdb.breeding as it stands live on 7 September 2026, with indexes, the recursive ancestry query, and the schema history.
general

Data Sources

BreedingInfill

Data Sources Last reviewed: 2026-09-07 breeding is built from two independent sources. Neither is authoritative on its own, and the fact that they were assembled from different origins is what makes t…

Sept. 6, 2026, 11:41 p.m. Version 1 Publish the source description: PedigreeQuery scrape and parse chain, the Australian Studbook dump, what each supplies, measured coverage and known defects.
general

Breeding Rules

BreedingInfill

Breeding Rules Last reviewed: 2026-09-07 Authoritative code: rebuild/common.py, rebuild/load_pq.py, rebuild/load_studbook.py, rebuild/linking.py, rebuild/reconcile_sources.py, rebuild/dedup_adjacent_y…

Sept. 6, 2026, 11:40 p.m. Version 1 Publish the current breeding rule set: identity, the never-overwrite merge rule, load rules R1-R7, link rules R8-R11 and rule B, cross-source matching C5, the year-convention rule, duplicate resolution and locking - each with the measurement or decision behind it.
user-guide

User Guide

QDG Identity

QDG Identity user guide Document version: 1.0.2. Updated 6 September 2026. Robert's bounded Codex pilot has passed; production OAuth onboarding is not yet complete. Who this service is for The first r…

Sept. 6, 2026, 2:38 p.m. Version 3 Update user guidance with the verified Codex pilot, renewal and policy-denial findings while preserving the outstanding production onboarding and recovery checks.
overview

Project Description

QDG Identity

QDG Identity: purpose, architecture and decisions Document version: 1.0.2. Updated 6 September 2026. Owner: Robert. QDG Identity establishes Auth0 as QDG's shared identity platform. The first integrat…

Sept. 6, 2026, 2:38 p.m. Version 3 Update the executive project state with completed Robert/Codex pilot evidence, saved production Auth0 registration, and the current fail-closed Odin IIS inspection gate.
changelog

Historical Changelog

Gary Breeding Project

Changelog This page consolidates the repository's historical changelog, handover corrections, validation notes, and Git baseline. Entries are in reverse chronological order. Dates are absolute. 2026-0…

Sept. 6, 2026, 4 a.m. Version 4 Added the verified FTP configuration location and warned that the ProperBet profile cannot deploy Gary/QWebHub.
overview

Project Overview

Gary Breeding Project

Gary Breeding Project Purpose The Gary Breeding Project rewrites Racing & Sports breeding and pedigree report tooling as a testable Python data layer with a Node.js document renderer. It reads the leg…

Sept. 6, 2026, 4 a.m. Version 3 Recorded the canonical external FTP profile directory and the Gary/QWebHub versus ProperBet account boundary.
general

Report Files and Outputs

Gary Breeding Project

Report Files and Outputs What the project produces The project has two output families: Breeding and pedigree reports from breeding_report_v3. Each run writes a structured JSON file. The Node renderer…

Sept. 6, 2026, 3:44 a.m. Version 3 Added the browser-based five-generation QWebHub pedigree output and distinguished it from JSON/DOCX report families.
changelog

Change Log

Troyen Website

Troyen Website — Change Log Document set version: 0.2.0 v0.3.0 documentation correction — 2026-09-05 The local Flask site now renders the original API Documentation: Race Cards v2.0.0 and complete Int…

Sept. 5, 2026, 7:29 a.m. Version 4 Record the exact-source documentation correction and verified local tests.
general

User Guide

Troyen Website

Troyen Website — User Guide Document set version: 0.2.0 Date: 2026-09-05 Status: This guide describes the verified current public experience. It will be revised as the Python replacement website is im…

Sept. 4, 2026, 10:08 p.m. Version 3 Add the API Documentation and Integration Notes user guidance.
overview

Project Description

Troyen Website

Troyen Website — Project Description Document set version: 0.2.0 Date: 2026-09-05 Status: Framework-neutral Python foundation created and the supplied reference site captured; the replacement website…

Sept. 4, 2026, 10:08 p.m. Version 3 Add the four-page reference capture, rebuild findings, and browser/source boundaries.
workflow

How to Start a Project

How to Start a Project

How To Start A Project Use this guide when starting a new Codex-assisted project. Important: Copy this template's AGENTS.md into the new project root before opening or starting the agent task there. A…

Sept. 4, 2026, 4:14 p.m. Version 3 Explain that AGENTS.md must be copied into the new project root for the mandatory prompts to load.
general

Project Documentation Template

How to Start a Project

[Project Name] Documentation Document set version: [x.y.z] Date: [YYYY-MM-DD] Status: [Current status in one sentence.] Primary language/framework: [Python / .NET / Django / other confirmed selection]…

Sept. 4, 2026, 4:14 p.m. Version 2 Add the confirmed primary technology and technology-stack section.
workflow

QDG Knowledge Base Documentation Rules

How to Start a Project

QDG Knowledge Base project documentation rules These instructions apply when starting or continuing a project from this template. They supplement the local documentation, changelog, handover and versi…

Sept. 4, 2026, 4:13 p.m. Version 2 Require an explicit setup interview and record the confirmed project technology.
workflow

Version Control

How to Start a Project

Version Control Use this document as the standard version-control rule set for Codex-assisted projects. Version Format Use Semantic Versioning: MAJOR.MINOR.PATCH Example: 1.4.1 Display versions may in…

Sept. 4, 2026, 4:04 p.m. Version 1 Publish VERSION_CONTROL.md as an individual standard project-start document.
workflow

Handover Template

How to Start a Project

[Project Name] Handover - v[x.y.z] Date: [YYYY-MM-DD] Document set version: [x.y.z] Current State Local project source: [local project path] OneDrive target, if any: [OneDrive project path or none] Cu…

Sept. 4, 2026, 4:03 p.m. Version 1 Publish HANDOVER_TEMPLATE.md as an individual standard project-start document.
changelog

Change Log Template

How to Start a Project

[Project Name] Changelog Document set version: [x.y.z] Date: [YYYY-MM-DD] Rules Record meaningful source, config, prompt, workflow, and documentation changes. Keep entries newest first. Keep entries c…

Sept. 4, 2026, 4:03 p.m. Version 1 Publish CHANGELOG_TEMPLATE.md as an individual standard project-start document.
changelog

Changelog

QDG KB

Changelog Naming: QDG Knowledge Base (QDG KB) is the canonical product and data platform. qdb.qdatasite.com is its public host. “QDG Wiki” and “KB Wiki” refer to the superseded localhost pilot or are…

Sept. 4, 2026, 9:30 a.m. Version 6 Reconstructed the missing August and September QDG KB history, including canonical naming, audit findings, secure Odin MCP deployment, database/ACL/IIS fixes, verification, team onboarding, remaining follow-ups and process lessons.
user-guide

Team setup: QDG Knowledge Base MCP

QDG Knowledge Base MCP

Team setup: QDG Knowledge Base MCP What this connects to The product is QDG Knowledge Base (QDG KB). The qdb.qdatasite.com name is the public host; it does not mean there is a separate product called…

Sept. 4, 2026, 9:20 a.m. Version 1 Published team onboarding instructions for Codex and Claude Code, token handling, naming, documentation policy, verification and troubleshooting.
workflow

Production handover

QDG Knowledge Base MCP

QDG Knowledge Base MCP production handover Date: 4 September 2026 Outcome The QDG Knowledge Base MCP is a central team service on Odin. Codex and Claude clients connect to https://qdb.qdatasite.com/mc…

Sept. 4, 2026, 9 a.m. Version 3 Publish the reviewed production handover and verify the versioned update path.
general

Database

QDG CMS

QDG CMS — Database No direct database access This repository contains no direct database access of any kind — no ORM, no SQL driver, no connection string, no database config. A repo-wide search for sq…

Sept. 2, 2026, 6:21 a.m. Version 1 Initial database doc based on codebase exploration
general

Project Architecture

QDG CMS

QDG CMS — Project Architecture Stack React 19.1 + TypeScript ~5.8.3, built with Vite 7 (vite.config.ts: @vitejs/plugin-react), styled with Tailwind CSS 3.4, linted with ESLint 9 (flat config, eslint.c…

Sept. 2, 2026, 6:21 a.m. Version 1 Initial architecture doc based on codebase exploration
general

API Documents

QDG CMS

QDG CMS — API Integration QDG CMS is a pure API-consuming frontend. All data access goes through the QDG CMS API backend (see the qdg-cms-api KB project) or, for raw file bytes, directly to Wasabi obj…

Sept. 2, 2026, 6:21 a.m. Version 1 Initial API integration doc based on codebase exploration
user-guide

User Guide

QDG CMS

QDG CMS — User Guide This guide covers what an authenticated CMS operator can do in the app. Logging in There is no in-app login form. Signing in redirects to the centralized auth portal (auth.qdatasi…

Sept. 2, 2026, 6:19 a.m. Version 1 Initial user guide based on codebase exploration
overview

Overview

QDG CMS

QDG CMS QDG CMS is the frontend content management application for QDG and affiliated horse-racing sites. It is a React single-page app that lets CMS operators author stories and manage photo/video me…

Sept. 2, 2026, 6:19 a.m. Version 1 Initial overview page based on codebase exploration
general

API Reference

QDG CMS API

API Reference All routes are versioned: api/v{version:apiVersion}/[controller], currently v1. Except where noted, every endpoint requires the qdg_session cookie ([Authorize(AuthenticationSchemes = Ses…

Sept. 2, 2026, 4:49 a.m. Version 1 Initial API reference: full endpoint table for Auth, Story, Media, Lookup controllers plus health check and error conventions
general

Database

QDG CMS API

Database QDG CMS API reads/writes three separate MySQL databases (same server in the current environment, but modeled as distinct connections/credentials in code — see Architecture). All access goes t…

Sept. 2, 2026, 4:49 a.m. Version 1 Initial database doc: three-database layout, tblcms/tblphotos/qdb schema detail, quirks (visible enum-string, Story/StoryContent mapping, photoVersion/site_id hardcodes), and query patterns
general

Project Architecture

QDG CMS API

Project Architecture QDG CMS API follows a clean/onion layering split across four projects, all targeting .NET 9. Layers QDG.CMS.API (controllers, auth handler, Swagger, versioning, DI wiring) -> QDG.…

Sept. 2, 2026, 4:48 a.m. Version 1 Initial architecture doc: layering, multi-database connection-factory pattern, Story/Media/Lookup/Auth feature flows, cross-cutting concerns
user-guide

User Guide

QDG CMS API

User Guide Prerequisites .NET 9 SDK Network access to the MySQL server hosting the cms, qdb, and photogallery databases Network access to the QDBAuth service and a Wasabi bucket (or equivalent S3-comp…

Sept. 2, 2026, 4:48 a.m. Version 1 Initial user guide: configuration, running locally, session auth flow, story/media/lookup workflows, health check usage
overview

Overview

QDG CMS API

QDG CMS API A .NET 9 Web API that provides content management services for QDG and affiliated sites: story/article authoring, an image/video gallery backed by Wasabi (S3-compatible) storage, and refer…

Sept. 2, 2026, 4:46 a.m. Version 2 Expand overview beyond auth: add Story/Media/Lookup feature areas, three-database data layer, and cross-links to the new architecture/database/api/user-guide pages
changelog

Changelog

AdminManagement

Changelog 2026-08-20 — QDBAdmin v1.16.0 Added Added a dedicated Pedigree tile immediately after Breeding, linking to the QWebHub Gary Breeding Reports module at /breeding-reports/. Added a distinct Pe…

Aug. 20, 2026, 11:32 p.m. Version 5 Bring the AdminManagement changelog current from the 7 August baseline through QDBAdmin v1.16.0, including Odin deployment improvements and verified GitHub delivery.
changelog

Changelog

QWebHub

QWebHub Changelog v1.2.2 — 2026-08-20 Changed Replaced the overly brown light theme with a soft neutral-grey palette. Kept the main background visibly darker than white while using lighter cards and i…

Aug. 20, 2026, 7:24 a.m. Version 1 Create the canonical changelog for delivered QWebHub v1.2.0 through v1.2.2 changes.
general

Database Configuration

QWebHub

QWebHub Database Configuration All DB config resolution lives in one place: qwebhub/config.py. Modules mounted under the hub defer to this instead of each reading their own db.json, as they did before…

Aug. 20, 2026, 7:24 a.m. Version 2 Correct shared static discovery to use the optimized Global Assests Icons set.
faq

QWebHub Q&A

QWebHub

QWebHub Q&A How do I change the Odin FTP password used by QWebHub deployments? The credential must be changed in two places: Change the Windows ftpuser account credential on Odin. Update the local use…

Aug. 20, 2026, 7:24 a.m. Version 2 Add the durable answer for shared light/dark theme ownership and cache updates.
workflow

Odin Deployment

QWebHub

Odin Deployment Purpose QWebHub and its sibling modules deploy to Odin through local Windows BAT launchers backed by the shared Python FTP helper. The FTP password is stored once in the Windows user e…

Aug. 20, 2026, 7:24 a.m. Version 3 Add current launchers, SHA-256 deployment, shared assets, and scoped restart procedures.
overview

Architecture

QWebHub

QWebHub Architecture QWebHub is a shared Django hub that mounts several otherwise-independent Django projects (QDBAdmin, QProcess, QDG KB Viewer) under one server, each under its own URL prefix, plus…

Aug. 20, 2026, 7:24 a.m. Version 2 Document the fourth mounted module and QWebHub-owned shared theme architecture.
general

User Guide

GateKeeper

GateKeeper — User Guide Hands-on walkthrough for running GateKeeper locally and doing the actual admin tasks — onboarding a client, issuing/rotating tokens, assigning packages, adding overrides. For t…

Aug. 13, 2026, 8:50 a.m. Version 1 New page: hands-on run/configure/onboard walkthrough describing each step, derived from README.md — distinct from the conceptual Overview page; runnable command examples deliberately left in README.md rather than duplicated here
general

Database

GateKeeper

GateKeeper — Database Table-by-table reference for the MySQL schema. Full DDL + seed data: docs/gatekeeper-schema.sql. High-level entity summary and design rationale: Architecture. Seed-data/FK issues…

Aug. 13, 2026, 8:46 a.m. Version 1 New page: full table-by-table DB reference, derived from docs/gatekeeper-db-documentation.md, adding the data_types and api_request_logs tables that were missing from Architecture's summary
overview

Overview

GateKeeper

GateKeeper — Overview What is GateKeeper? GateKeeper is the access-control layer for our racing data APIs. Every external client (e.g. CWS, WSB) that wants meetings, racecards, speed maps, or results…

Aug. 13, 2026, 8:45 a.m. Version 2 Re-synced with docs/OVERVIEW.md and added a link to the new Database reference page
overview

Overview

Troyon Data

Troyon Data — Racing Data Platform Troyon Data ("Troyen"/"Troyon" are used interchangeably across the codebase — e.g. TroyenService builds as TroyonService) is a thoroughbred / harness / greyhound rac…

Aug. 13, 2026, 4:29 a.m. Version 5 Link the new TD Architecture (infrastructure/deployment) doc; note the Docker vs IIS ambiguity is now written up in detail there
general

TD Architecture (Infrastructure & Deployment)

Troyon Data

TD Architecture (Infrastructure & Deployment) This is the infrastructure view — environments, deployment targets, network topology, external dependencies, ports/domains. For the business-logic archite…

Aug. 13, 2026, 4:28 a.m. Version 1 Create initial infrastructure/deployment architecture doc: environments, deployment matrix, Docker topology, external dependencies, S3 buckets, monitoring, security posture
general

Database Reference

Troyon Data

Database Reference The primary datastore is MongoDB (Troyon_Dev DB). A legacy, read-only MySQL database ("RS" / Racing & Sports) is joined into occasionally for RS-client race cards and an id cross-re…

Aug. 13, 2026, 4:17 a.m. Version 1 Create initial database reference covering MongoDB collections (main pipeline schema) and the legacy read-only RS MySQL tables
overview

Overview

Stats

Stats (Meeting Stats API) Single-file FastAPI service (trainer_stats_api.py, app title "Meeting Stats API", currently v2.0.0) that computes trainer and jockey performance statistics for horse-racing m…

Aug. 12, 2026, 9:51 a.m. Version 2 Trimmed detailed architecture/DB/API content into dedicated architecture, database, and api-reference pages; overview now summarizes and links out, plus links to new user-guide and faq pages
faq

FAQ

Stats

FAQ Is this API session-based? No. There is no server-side session store, session cookie, or per-user login state. Auth is a single shared static bearer token (tds-stats-secure-token-2026) — anyone wh…

Aug. 12, 2026, 9:50 a.m. Version 1 New FAQ page seeded from FULL_PROJECT_DOCUMENTATION.md Q&A section and repository evidence
user-guide

User Guide

Stats

User Guide Audience Anyone setting up, running, or operating this API for the first time — locally for development, or as a standing Windows service. Prerequisites Python 3.x with pip Network access t…

Aug. 12, 2026, 9:50 a.m. Version 1 New setup/operating guide derived from CLAUDE.md, README.md, and repository scripts
general

API Reference

Stats

API Reference Base app: Meeting Stats API v2.0.0. Interactive docs when running: Swagger /docs, ReDoc /redoc, hand-written reference /api-docs, manual tester /api-test. Auth Every endpoint below excep…

Aug. 12, 2026, 9:49 a.m. Version 1 New page with the full endpoint reference, auth, and request/response examples
general

Database

Stats

Database MySQL/MariaDB, accessed via PyMySQL with DictCursor and autocommit=True. See architecture for how the two connections fit into the overall data flow. Configuration config.json (git-ignored; c…

Aug. 12, 2026, 9:48 a.m. Version 1 New page documenting DB connections, schema, and query patterns, derived from trainer_stats_api.py and schema.json
general

Architecture

Stats

Architecture Single-file FastAPI app (trainer_stats_api.py) — no package/module split. Everything below is one process: routing, SQL, calculation, and persistence. Data flow Source DB (MySQL/MariaDB,…

Aug. 12, 2026, 9:48 a.m. Version 1 Extracted and expanded architecture detail out of the overview page into its own document
bugs

Known Issues & Limitations

Runner Form

Runner Form — Known Issues & Limitations Open: hard-coded login credentials Status: Open — dev-only, must fix before production. Symptoms: Login accepts a single hard-coded username/password checked d…

Aug. 12, 2026, 9:44 a.m. Version 3 Restored the 'Not built: upcoming races' item that was accidentally dropped in the previous edit; still confirmed accurate (queries.py:1047 hard-codes upcoming_races to [])
quick-reference

Quick Reference

Runner Form

Runner Form — Quick Reference For full detail see [[api-reference]] (endpoints), [[database-schema]] (tables/columns), and [[architecture]] (request flow, deployment). Run locally .\venv\Scripts\Activ…

Aug. 12, 2026, 9:43 a.m. Version 2 Added /guide/ routes and cache keys, corrected DB name to qdb, linked the new detailed API/DB/architecture pages
overview

Overview

Runner Form

Runner Form A Django horse-racing form viewer. Users log in and browse runner (horse), jockey, and trainer profiles with race-by-race history and computed career stats. Purpose Entity URL pattern What…

Aug. 12, 2026, 9:43 a.m. Version 2 Corrected DB name to qdb (verified against config/settings.py), added the /guide/ form-guide feature, linked new user-guide/architecture/database-schema/api-reference pages
user-guide

User Guide

Runner Form

Runner Form — User Guide Audience Racing analysts and internal staff looking up horse/jockey/trainer form. Requires a login — ask a maintainer for credentials (see [[bugs]] for why they're currently h…

Aug. 12, 2026, 9:43 a.m. Version 1 Initial user guide: setup, verification, day-to-day usage, troubleshooting
general

Architecture

Runner Form

Runner Form — Architecture Request flow Browser sends an HTTP request to Django. config/urls.py includes runner_form.urls at the /form/ prefix. @custom_login_required checks request.session['is_authen…

Aug. 12, 2026, 9:43 a.m. Version 1 Initial detailed architecture doc: request/auth flow, data layer, caching, deployment
general

API Reference

Runner Form

Runner Form — API Reference Base path: /form/ (mounted by config/urls.py). All routes below are relative to that. A prior Runner_Form_API_Documentation.docx (repo root) documents a shared dev/staging…

Aug. 12, 2026, 9:43 a.m. Version 1 Initial detailed API reference, reconciled against urls.py/views.py/queries.py (adds /guide/ endpoints missing from the older API docx)
general

Database Schema

Runner Form

Runner Form — Database Schema Connects to MySQL database qdb at 138.226.220.168:3306 (user web_admin), configured in config/settings.py. There is no Django ORM — every table below is queried with raw…

Aug. 12, 2026, 9:43 a.m. Version 1 Initial DB schema reference, verified against config/settings.py and queries.py
changelog

Changelog

Stats

Changelog Unreleased (working tree, as of 2026-08-12) Uncommitted changes on dev touch trainer_stats_api.py (~380 lines), config.example.json, and config.json. Net effect versus the last commit: row n…

Aug. 12, 2026, 9:43 a.m. Version 1 Initial changelog seeded from git history and current working-tree state
user-guide

User Guide

Titan Command

User Guide A walkthrough of Titan Command from an operator's seat — what you'll actually see and click. For how the system works under the hood, see the Architecture page. Roles Admin — everything, in…

Aug. 12, 2026, 9:13 a.m. Version 1 Initial page: operator-facing walkthrough of the app — roles, login, configuration setup, the 5-step migration wizard, post-run tools, Auto Sync, copy/repair tools, and navbar map.
general

Architecture

Titan Command

Architecture A system-level view of how Titan Command is put together. For the local database's own schema, see the Database Schema page; for every HTTP route, see the API Reference page; for how the…

Aug. 12, 2026, 9:12 a.m. Version 1 Initial page: system-level architecture — component diagram, tech stack, request pipeline, DI service graph, background services, auth flow, deployment, and config/secrets notes.
overview

Overview

SmartMail

SmartMail SmartMail is a Flask web application that connects a mailbox (Outlook via Microsoft Graph, and Gmail) to an AI-assisted triage and drafting workflow: it syncs mail, stores it in MongoDB/Post…

Aug. 12, 2026, 9:09 a.m. Version 2 Add See also section linking the new Architecture, Database, API Reference, User Guide, and Workflow pages; correct token cache filename to cache.bin
workflow

Development & Deployment Workflow

SmartMail

SmartMail Development & Deployment Workflow Local development setup python -m venv .venv then activate it. pip install -r requirements.txt — note this file does not include pyinstaller, pywin32, or wa…

Aug. 12, 2026, 9:09 a.m. Version 1 Initial workflow page covering local dev setup, running locally, building the exe/service, and the third run_api.cmd deployment path
user-guide

User Guide

SmartMail

SmartMail User Guide Two separate logins — don't confuse them SmartMail app login (/login) — a plain username/password form (no Microsoft branding). Credentials are hardcoded in app/main.py as a fixed…

Aug. 12, 2026, 9:08 a.m. Version 1 Initial user guide covering login, the Outlook-style inbox, compose, and admin dashboard tabs
general

API Reference

SmartMail

SmartMail API Reference Single Flask app (app/main.py). Auth model: a session cookie (session["logged_in"], set by /login) gates almost nothing except /logout and the GPT Prompt admin endpoints; every…

Aug. 12, 2026, 9:07 a.m. Version 1 Initial API reference documenting live routes only, with dead/unregistered blueprints called out separately
general

Database

SmartMail

SmartMail Database SmartMail runs two storage systems side by side with overlapping responsibilities. See Architecture for how they're used at runtime. SQLite (SQLAlchemy) — app/database.py Fixed path…

Aug. 12, 2026, 9:07 a.m. Version 1 Initial database page inventorying SQLite models, MongoDB collections, and connection config from source
general

Architecture

SmartMail

SmartMail Architecture Evidence-based trace of how SmartMail actually behaves at runtime (not just intended design). See also Overview, Database, API Reference, Workflow. 1. App boot sequence (app/mai…

Aug. 12, 2026, 9:06 a.m. Version 1 Initial architecture page from code-level tracing of boot sequence, auth, background sync, AI pipeline, and deployment
quick-reference

CLI Quick Reference

SmartMail

SmartMail CLI Quick Reference All commands run via python -m app.main <command> ... after pip install -r requirements.txt and a .env/env/.env.development with CLIENT_ID etc. set. Auth python -m app.ma…

Aug. 12, 2026, 8:55 a.m. Version 1 Seed quick reference from README CLI usage examples
changelog

Changelog

SmartMail

Changelog In progress (branch NEW_POPUP) Editing app/templates/outlook.html (uncommitted at time of writing). Recent history (main) 4336a16 — Fixed the send button. a586aa6 — Addressed an inbox-loadin…

Aug. 12, 2026, 8:55 a.m. Version 1 Seed changelog from recent git history on main and the in-progress NEW_POPUP branch
general

Auto Sync Feature

Titan Command

Auto Sync Feature This is a current-state explanation of how "Auto Sync" behaves today. For the commit-by-commit history of how it got here, see docs/auto-sync-v3-features.md and docs/auto-sync-v4-fea…

Aug. 12, 2026, 8:27 a.m. Version 1 Initial page: current-state explanation of Sync Jobs and Copy-Sync, end to end, distinct from the branch-history docs in auto-sync-v3/v4-features.md.
general

API Reference

Titan Command

API Reference Every reachable route in QDG.Migration.Web, grouped by controller. "Page routes" render a View or redirect for browser navigation; "JSON endpoints" are meant to be called via fetch/AJAX…

Aug. 12, 2026, 8:27 a.m. Version 1 Initial page: full endpoint reference for QDG.Migration.Web, grouped by controller, plus auth/antiforgery conventions and known inconsistencies.
general

Database Schema

Titan Command

Local Database Schema This documents the app's own local SQLite database (titan_command.db) — the state store for migration sessions, field mappings, ID mappings, and sync jobs. It is not the remote M…

Aug. 12, 2026, 8:25 a.m. Version 1 Initial page: local SQLite app-state schema (titan_command.db) — table catalog, repository map, and notable EF/hand-rolled-patch quirks.
overview

Overview

Titan Command

Titan Command Internal ASP.NET Core 8 web app that migrates/syncs data from a legacy MySQL database (QDB, tblXxx-prefixed tables) into a redesigned destination MySQL schema (QDG). Migration-session st…

Aug. 12, 2026, 8:05 a.m. Version 1 Initial project overview distilled from CLAUDE.md: solution structure, migration pipeline, ID mapping, sync jobs, auth, and known connection-resilience gap.
changelog

Changelog

DemonBets

Changelog Durable, notable changes to DemonBets. This page is seeded from recent commits on the dev branch; add new entries at the top as work ships. Recent (as of 2026-08-11, dev) Race-card cache byp…

Aug. 11, 2026, 12:20 p.m. Version 1 Seed changelog from recent notable commits on dev
workflow

Deployment

DemonBets

Deployment DemonBets deploys automatically to IIS as the site WSB-Web through GitHub Actions. Trigger .github/workflows/deploy.yml runs on every push to dev, and can also be started manually via workf…

Aug. 11, 2026, 12:20 p.m. Version 1 Document the GitHub Actions IIS deployment workflow
overview

Overview

DemonBets

DemonBets DemonBets is a single-page web frontend for horse-racing race cards and form. It is built as a Vite + React + TypeScript app and deployed to IIS as the site WSB-Web. It renders meeting race…

Aug. 11, 2026, 12:20 p.m. Version 1 Create initial project overview from repository inspection
quick-reference

Quick Reference

GateKeeper

GateKeeper — Quick Reference Run it locally # Prereqs: .NET 8 SDK, MySQL 8.0.16+, Redis dotnet restore dotnet build # Load schema against a fresh database (see Known Issues — seed rows 101/205/310 wil…

Aug. 11, 2026, 11:13 a.m. Version 2 Replace the inline HTTP API section with a pointer to the new dedicated API Reference page, to avoid maintaining the same endpoint contracts in two places
general

API Reference

GateKeeper

GateKeeper — API Reference GateKeeper exposes exactly two HTTP surfaces, both hosted by GateKeeper.Api (Program.cs). It calls no external/outbound APIs itself — it is only ever a callee. See Architect…

Aug. 11, 2026, 11:13 a.m. Version 1 New dedicated API page with exact endpoint contracts (request/response DTOs) read directly from AdminEndpoints.cs, MeetingsEndpoint.cs, and the route table in Program.cs — supersedes the summary version in Quick Reference
bugs

Known Issues & Discrepancies

GateKeeper

GateKeeper — Known Issues & Discrepancies Found by comparing the running code against entitlement-system-design.md and the seed data. None block local development, but worth knowing before building on…

Aug. 11, 2026, 10:20 a.m. Version 1 Initial known-issues page: discrepancies against the original design doc plus what's intentionally not built yet — derived from docs/PROJECT_DOCUMENTATION.md §11-12
general

Architecture & Technical Reference

GateKeeper

GateKeeper — Architecture & Technical Reference Technical deep dive backing Overview. Reflects the code as it exists in the repository, not just the original design proposal — divergences from that pr…

Aug. 11, 2026, 10:19 a.m. Version 1 Initial technical deep-dive: data model, resolution algorithm, caching, request pipeline — derived from docs/PROJECT_DOCUMENTATION.md and a read of GateKeeper.Cache source (including the in-progress configurable-TTL change)
workflow

Scraper & File Generator Process

Troyon Data

Scraper & File Generator Process How the core pipeline actually works, step by step: PunterScraper scrapes punters.com.au/racenet, writes Mongo + drops an S3 flag file; TroyenDataFilesGenerator polls…

Aug. 11, 2026, 10:14 a.m. Version 1 Create initial deep-dive process doc for the PunterScraper -> S3 flag file -> TroyenDataFilesGenerator pipeline, for debugging stuck/missing meetings
user-guide

User Guide

Troyon Data

Troyon Data — User Guide This is a day-to-day guide for people who actually operate the system — data-entry staff and whoever triages a failed scrape — not another architecture doc (see Overview, Troy…

Aug. 11, 2026, 10:01 a.m. Version 1 Create initial user guide: logging into TroyenDataWeb, admin-portal navigation, and the scraper backup/fallback chain for data-entry staff
general

TroyenDataHelpers API Reference

Troyon Data

TroyenDataHelpers API Reference TroyenDataHelpers is the internal, read/write admin API behind the TroyenDataWeb admin portal — meetings, races, horses, results, silks, comments, users, system prompts…

Aug. 11, 2026, 9:55 a.m. Version 1 Create initial TroyenDataHelpers internal admin API reference from controller source and Program.cs
general

TroyenAPI Reference

Troyon Data

TroyenAPI Reference TroyenAPI is the customer/external-facing, read-only REST API over the Mongo-backed racing data (meetings, races, race cards, speed maps, stats). Source: TroyenAPI/Controllers/. Co…

Aug. 11, 2026, 9:46 a.m. Version 1 Create initial TroyenAPI endpoint reference from controller source, versioning/auth config, and Program.cs
user-guide

User Guide

Race Day Dashboard

Audience Anyone running or operating the Race Day Dashboard on the hosting Windows machine -- setting up the login for the first time, starting/stopping the server day to day, and using the dashboard…

Aug. 11, 2026, 8:46 a.m. Version 1 Initial user guide covering first-time setup, running, daily use, troubleshooting, and verification, derived from run.bat, setup-auth.js, and server.js
changelog

Changelog

Race Day Dashboard

10-11 Aug 2026 -- Templates split out of raceView.js Moved all CSS out of the JS template literal into public/styles.css, served statically by Express. Moved the dashboard and login pages' static HTML…

Aug. 11, 2026, 8:44 a.m. Version 1 Initial changelog, reconstructed from git log and in-repo comments describing prior changes
overview

Overview

Race Day Dashboard

Purpose A single-page web dashboard for reviewing one date's race meetings at a glance: a grid of meeting x race number, colored/badged to surface data problems before race day (missing or duplicate j…

Aug. 11, 2026, 8:44 a.m. Version 1 Initial project documentation, derived from repository inspection (server.js, raceView.js, db-config.js, setup-auth.js, run.bat, package.json, git history)
overview

Overview

Troyen Beta

Troyen Beta — Racing Data Scrapers Troyen Beta is a monorepo of racing data scrapers. Three independent .NET console apps each pull race data from a different source, transform it into a standardized…

Aug. 11, 2026, 8:20 a.m. Version 1 Create initial project overview from repository README and layout
quick-reference

API Reference

QDBAuth

QDBAuth API Reference Full interactive docs: GET /api/docs/ (Swagger UI over apps/auth/static/auth/openapi.yaml). This page is the condensed version for quick lookup while integrating a consuming app.…

Aug. 11, 2026, 7:57 a.m. Version 1 Initial API reference for consuming apps integrating against QDBAuth's JSON API, derived from apps/auth/static/auth/openapi.yaml and apps/auth/views.py
changelog

FormCrawler Changelog

FormCrawler

FormCrawler Changelog Document set version: 1.0.0 Created: 2026-08-07 Last updated: 2026-08-10 02:14:13 AEST (UTC+10:00) Maintenance rule: Keep Unreleased cumulative for the current document-set versi…

Aug. 10, 2026, 3:22 a.m. Version 24 Record the concurrent daily-run dashboard release, full validation run, job outcomes, fixes, and remaining source issues