Vendicator Health
VENDICATOR · HEALTH

How the site and the model are doing

Built by a check that runs on GitHub when you ask for it — never on a schedule, never on your Mac (R-30.3). What needs you comes first. Choose a fix on any report, or tick it off if it is already fixed; Claude applies the fixes you choose.

Nothing needs you
Checked 2026-10-18 19:34 UTCFindings 18Old website pages answering 11 / 11App built 39%
Check health

Starts a new check on GitHub. On this page it opens the check on GitHub: press Run workflow there, and the new page is ready with that run in about three minutes. The fixes you choose here are kept for Claude.

01

At a glance

0
need you
5
being watched
13
updates to look at
0
fixed by the check
39%
of the app built
—
page views, last 7 days
02

Bugs, problems and updates

Choose a fix and press Fix, or tick Already fixed. Your choices are kept with this page: Claude reads them and does the fixes marked Claude does it at the start of the next session, and ticks them off; on the private page, Check health also sends them with the check.

Being watched · 5
Watching
Actions minutes this month: about 1039 used, on pace for 1789 of 2000
Runs · first seen 2026-10-14 (4 days)
Watching
the users route lists 1 account name(s) to anybody — a login's first half
The old website · first seen 2026-10-14 (4 days) · block /wp-json/wp/v2/users for visitors (a security plugin, or the host's rules)
Watching
the old website does not send: HSTS, nosniff, Referrer-Policy, frame protection
Security · first seen 2026-10-14 (4 days)
Watching
to review against the paid feed: D1 2425 Union Berlin: its players scored 36, the club 35
The records · first seen 2026-10-14 (4 days)
Watching
to review against the paid feed: SP1 2526 Oviedo: its players scored 27, the club 26
The records · first seen 2026-10-14 (4 days)
Updates · 13
Watching
Python package numpy: 2.0.2 in use, 2.5.4 out
Updates · first seen 2026-10-14 (4 days)
Watching
Python package pandas: 2.3.3 in use, 3.0.6 out
Updates · first seen 2026-10-14 (4 days)
Watching
Python package scipy: 1.13.1 in use, 1.18.1 out
Updates · first seen 2026-10-14 (4 days)
Watching
Python package scikit-learn: 1.6.1 in use, 1.9.1 out
Updates · first seen 2026-10-14 (4 days)
Watching
Python package lightgbm: 4.6.0 in use, 4.7.0 out
Updates · first seen 2026-10-14 (4 days)
Watching
Python package xgboost: 2.1.4 in use, 3.4.1 out
Updates · first seen 2026-10-14 (4 days)
Watching
Python package requests: 2.32.5 in use, 2.34.2 out
Updates · first seen 2026-10-14 (4 days)
Watching
Python package python-dotenv: 1.2.1 in use, 1.2.4 out
Updates · first seen 2026-10-14 (4 days)
Watching
Python package pytest: 8.4.2 in use, 9.1.1 out
Updates · first seen 2026-10-14 (4 days)
Watching
GitHub Action actions/checkout: v4 in use, v7 out
Updates · first seen 2026-10-14 (4 days)
Watching
GitHub Action actions/setup-python: v5 in use, v7 out
Updates · first seen 2026-10-14 (4 days)
Watching
GitHub Action actions/upload-artifact: v4 in use, v7 out
Updates · first seen 2026-10-14 (4 days)
Watching
Container image python: 3.12.14 in use, 3.12.15 out
Updates · first seen 2026-10-14 (4 days)
03

Each part of the check

PartHealthFindingsChecked
RunsWatching12026-10-18 19:34 UTC
The old websiteWatching12026-10-18 19:34 UTC
The boardHealthy02026-10-18 19:34 UTC
The recordsWatching22026-10-18 19:34 UTC
The rulesetHealthy02026-10-18 19:34 UTC
UpdatesWatching132026-10-18 19:34 UTC
The repositoryHealthy02026-10-18 19:34 UTC
ImagesHealthy02026-10-18 19:34 UTC
SecurityWatching12026-10-18 19:34 UTC
04

The app: its size, its parts and their health

197.6 MB

in 3,482 files that git keeps · 63.6 MB on GitHub with its history

The last test run

Healthy 2026-10-18 04:28

changes: success · checks: success · images: skipped · migration: skipped

PartFolderFilesSizeLast changeTested byHealth
V-Nodds pricing enginemodel/src/vnodds35315.0 KB
2026-10-18T18:33checksHealthy
Prediction model and pipelinemodel/src44375.5 KB
2026-10-18T18:33checksHealthy
Project tools and the health checkscripts20223.3 KB
2026-10-18T18:33checksHealthy
Testsmodel/tests28163.1 KB
2026-10-18T18:33checksHealthy
The old website's plugin (WordPress)wp-deploy3410.3 KB
2026-10-18T18:33checksHealthy
Database migrationsdb24.6 KB
2026-10-18T18:33migrationHealthy
The job contractcontracts13.3 KB
2026-10-18T18:33checksHealthy
The Python containermodel/Dockerfile11.8 KB
2026-10-18T18:33imagesHealthy
Ruleset, plan and pagesdocs176.4 MB
2026-10-18T18:33checksHealthy
Automation on GitHub.github/workflows821.2 KB
2026-10-18T18:33——
Operations: Cloudflare and the health listsops518.4 KB
2026-10-18T18:33——
Data the model readsmodel/data3,277142.3 MB
2026-10-18T18:33——
Recordsrecords1220.1 MB
2026-10-18T18:33——
05

The app's sections — how far each is built

Each section of the new app, from its rules to members using it. The stages: rules written, plan, server-side code, the app's screens, tested, live. Live pages are the old website's for now; the new app's appear here when it is running.

SectionBuiltStages doneOn the new appOn the old website
Accounts and sign-in
R-29.8, R-13.11
20%
rules, planNot live yetWordPress accounts
/account/ Healthy
Vendicator Cards
§4
45%
rules, plan, serverNot live yetthe card pages
/card/ Healthy /cardgrid/ Healthy
Vendicator Football Clubs (VFC)
§6A, §19
20%
rules, planNot live yet—
Vendicator Football Manager (VFM)
§6C
20%
rules, planNot live yet—
Vendicator International Challenger (VIC)
§6D
20%
rules, planNot live yet—
Game Hub and the profile
§9
20%
rules, planNot live yetthe dashboard
/dashboard/ Healthy
Leagues, tables and fixtures
§22, §23
20%
rules, planNot live yetleagues and fixtures
/leagues/ Healthy /fixtures/ Healthy /team/ Healthy /player/ Healthy /compare/ Healthy
Leaderboards
§23
20%
rules, planNot live yet—
Boosters and the inventory
§10, §12
20%
rules, planNot live yet—
Vendicator Assistant Selections (VAS)
R-12.10, R-10.31
20%
rules, planNot live yet—
Transfers and the transfer list
§21
20%
rules, planNot live yet—
V-Nodds pricing engine
§3
92%
rules, plan, server, testedNot live yetoff in production until switched on
Prediction model and the board
§3, R-30.7
92%
rules, plan, server, testedNot live yetthe daily board
/ Healthy
Settlement and records
R-26.6, R-1.7
92%
rules, plan, server, testedNot live yetsettlement runs on GitHub
Notifications
R-9.39
20%
rules, planNot live yet—
Pro and payments
§11, R-11.5
20%
rules, planNot live yet—
Admin panel
§15
20%
rules, planNot live yetWordPress admin
Languages
§9B
20%
rules, planNot live yet—
Images, kits and avatars
R-9.49 to R-9.51 · interim — the owner's own image system replaces it
60%
rules, plan, server, testedNot live yet—
Help and the rules pages
§14
20%
rules, planNot live yetthe help page
/help/ Healthy
Health check
R-30.3
100%
rules, plan, server, tested, liveLive—
Hosting, containers and deployment
R-30.9 · images built and started in CI; no host yet
92%
rules, plan, server, testedNot live yet—
Mobile apps
R-30.6
20%
rules, planNot live yet—

The list is kept in ops/health/build_progress.json, updated as each part is built (as of 2026-10-15).

06

Updates to watch

What the app is built from, against the newest version out. Nothing is updated by the check — choose Claude updates it on the report above, and the tests run with it.

KindNameIn useNewestStatus
Container imageamacneil/dbmate2.36.02.36.0Healthy
Container imagepostgres17.1017.10Healthy
Container imagepython3.12.143.12.15Watching
Container imagepython3.12.143.12.15Watching
Container imagevalkey/valkey9.0.69.0.6Healthy
GitHub Actionactions/checkoutv4v7Watching
GitHub Actionactions/setup-pythonv5v7Watching
GitHub Actionactions/upload-artifactv4v7Watching
Python packagecatboost1.2.101.2.10Healthy
Python packagelightgbm4.6.04.7.0Watching
Python packagenumpy2.0.22.5.4Watching
Python packageopenpyxl3.1.53.1.5Healthy
Python packagepandas2.3.33.0.6Watching
Python packagepytest8.4.29.1.1Watching
Python packagepython-dotenv1.2.11.2.4Watching
Python packagereportlab5.0.15.0.1Healthy
Python packagerequests2.32.52.34.2Watching
Python packagescikit-learn1.6.11.9.1Watching
Python packagescipy1.13.11.18.1Watching
Python packagexgboost2.1.43.4.1Watching
07

Security and legal

Security

Credentials in the repository
checked 2026-10-18 19:34 UTC · 0 found
Healthy
Files a site must never serve
checked 2026-10-18 19:34 UTC · none answering
Healthy
Account names shown to anybody
checked 2026-10-18 19:34 UTC · the old website's users route
Watching
Security headers on the old website
checked 2026-10-18 19:34 UTC · HSTS, nosniff, Referrer-Policy, frame protection
Watching
Credentials kept out of git
R-29.13 · checked on every commit, in CI and in every health check; the whole history read on 13 October — none
Done
Old members' personal data
UK GDPR Art. 5(1)(e) · the old WordPress backup and accounts file moved to the Mac's Trash on 15 October, for the owner to empty
Done
Secrets in the containers
R-29.13, R-30.9 · nothing secret in the image — checked in CI on every push
Done
The engine's door
R-29.3 · a service token, rate limits, idempotency keys, no traces to callers
Done
Dependencies
R-29.9 · pinned; Dependabot proposes updates weekly; the health check lists newer versions
Watching
The health page's private address
R-30.3 · Cloudflare Access with the owner's email — the owner's set-up
Waiting
Backups at a second provider
R-30.2 · the nightly dump to Cloudflare R2 waits for the production database
Planned
An outside uptime monitor
R-30.7 · UptimeRobot's free plan recommended — the owner's account
Waiting
Sign-in security for members
R-29.8 · Better Auth, two-factor and passkeys — with the app
Planned

Legal

The solicitor's review of §13 (free-to-play, nothing of value)
§13 · the hour is not booked
Waiting
Age: 18 and over, by declaration
R-13.11 · for the solicitor's hour
Waiting
The 13+ account
R-13.12 · built in the plan and switched off until the solicitor
Waiting
No gambling wording
R-1.4 · every health check reads the board and the site for it
Watching
Cookies and consent (PECR)
R-30.3 · page views counted without cookies on the new app — no banner needed for them
Planned
The statistics' rights (API-Football)
§4 · for the solicitor's hour
Waiting
Image licences
R-9.49 · the owner's own image system replaces the interim kits and avatars
Waiting
Avatars that look like real players
R-9.51 · for the solicitor's hour; no photograph is analysed
Waiting
Payments (Stripe, declared as software and games)
R-11.5 · test mode only until Pro opens
Planned
Privacy notice and terms
§13 · written with the app, reviewed by the solicitor
Planned
Where members' data is held
§13 · the host's region — the hosting decision
Waiting

Kept in ops/health/compliance.json (as of 2026-10-15); the four live rows come from this check. None of this is legal advice — the solicitor's hour covers the legal rows.

08

Visits

No page views are counted yet, on either website. The old website — the WordPress staging site members use today — would need a change to its plugin, and that is not being made (owner, 14 October 2026). The new app counts its own page views from its launch; this chart then shows them, labelled as the new app's (plan §FFF).

09

Every page of the old website

The WordPress staging site members use today. The new app's pages join this list when it launches.

PageStatusFirst byteWeightProblems
/player/200441 ms64.8 KB—
/leagues/200410 ms156.8 KB—
/account/200296 ms64.5 KB—
/compare/200295 ms64.5 KB—
/dashboard/200292 ms63.5 KB—
/team/200286 ms64.4 KB—
/card/200280 ms64.4 KB—
/help/200276 ms98.7 KB—
/fixtures/200273 ms64.5 KB—
/200269 ms65.5 KB—
/cardgrid/200269 ms64.5 KB—
10

Runs and GitHub minutes

About 1,039 minutes used this month, on pace for 1,789 of the free 2,000. When the free minutes run out, GitHub stops the runs until the month turns — it never charges without a spending limit set.

  • Daily data run — 751 min
  • CI — 159 min
  • Settlement — 70 min
  • Daily scan — 34 min
  • Check health — 9 min
  • pip in /model - Update #1601468957 — 2 min
11

Your checks

Add a check with the Scan check form on GitHub — in words, with a pattern, a page or a number range. Every check runs it and answers on the issue; one it cannot run is labelled needs-amending with why.

How this page is made

The check (scripts/daily_scan.py) runs on GitHub when Check health is pressed — never on a schedule, and nothing of it on your Mac. It reads every page of the old website, the files a site must never serve, the security headers, the board, the records, the ruleset, the runs, the tests, the repository for credentials and size, and the versions the app is built from; scripts/health_page.py draws this page from what it found.