GymAI has been quiet in public and extremely loud in the repository. Between 1 and 8 September, 241 commits landed on the working branch. This is the first entry of a log that will run alongside the build: what shipped, what was measured, and what got closed.
The gate is green, and it counts 8,101 tests
Every change has to pass one script before it is allowed to exist. It runs 37 separate checks — the test suites, the build, lint, a code map, API coverage, documented signatures, route counts, spec citations — and it is all of them or none. On the last full run it came back green across 7,213 unit tests and 888 browser tests.
The numbers in these posts are not typed by hand. Every figure the gate produces is written into a status file by the check that derived it, during the run that derived it, which is why they can be quoted here at all. A project that cannot measure itself has to describe itself instead, and descriptions drift.
Design round ten landed and closed six requests at once
The product is drawn before it is built — every screen, at three widths, with the accessibility contract measured rather than assumed. Round ten came in this week and answered six outstanding design requests in a single delivery, including the ones that had been open longest. The last three drop zones in the interface are gone. What remains on that round is a signature, not a drawing.
The contrast figures were recomputed rather than carried over from the previous round, and the grey used for retired states came back at 5.49:1 and 6.00:1 against the two surfaces it sits on. It clears WCAG AA on both. That is the kind of thing worth measuring once and writing down, so nobody has to argue about it again.
The exercise images now have a gate of their own
GymAI needs a picture for every exercise it can prescribe, which is a catalogue in the thousands. Generating them at that scale is only useful if something checks the output, so this week the checking got built.
- An automated triage now reads every generated image against the exercise it claims to show and judges whether it is the right movement on the right apparatus. On the class of error that costs the most to let through, it catches 14 of 15.
- It is wired directly into the harvest, so nothing reaches the catalogue without passing it. The rule it applies was measured against a scored sample rather than chosen by taste.
- Generation moved to Google’s batch route, proven end to end this week, at roughly half the price of the interactive one.
An image catalogue this size is not a drawing job, it is a manufacturing one, and manufacturing needs quality control before it needs volume. That is now in place.
Thirteen findings from an outside reviewer, all closed
An external reviewer went through the codebase and the documentation and raised thirteen findings. All thirteen are closed. Two of them were real bugs hiding behind absolute paths that only ever resolved on one machine — the kind of thing that works perfectly until somebody else clones the repository. Both are fixed, and every command that writes anything now prints exactly which directory it is working in, so the class of mistake cannot come back quietly.
And this site
The page you are reading is new. It is a hand-written WordPress theme with no page builder, no third-party fonts, no analytics and no external calls — the same rules the product itself is being built under. Two holes in the template hierarchy were closed this week, and the navigation bar is now byte-for-byte the one on the main site, because two bars that are nearly the same are worse than one.
What comes next
The remaining specifications and the signature on round ten. Expect the next entry in a couple of days.
If you want to be told when GymAI opens rather than checking, the waiting list is on gymai.coach.
No comments yet
Nobody has written anything here. You can be the first.