Skip to the content
GymAI News
Dev log

Dev log #14: a help site of its own, and leaving takes a mailed link

Twenty-three commits landed on the working branch since the last entry. GymAI has a help site of its own, and every page on it has been read back against the product as built. A gym account is now closed or deleted through a mailed link rather than a typed name, the retention periods are confirmed and every sweep is armed, and the path to a release checks its own runbook.

A help site of its own, held to the product

help.gymai.coach is built: a static site beside gymai.coach and outside the product, with no server, no form, no session, no search and no third-party call. Seventeen pages are published with thirteen pictures, and the browser suite runs them clean for accessibility at 360, 834 and 1180 pixels wide. The words and frames are Design’s. Every string a page quotes from the product is asserted verbatim against the source, so the day a label changes in the console the help page goes red rather than going stale.

Before anything was published, all sixteen existing pages were re-read against the product as it stands, every verdict tied to a file and a line. Where the product had moved on since the words were drafted, the words now follow it, and the footer’s checked against the product date is written by a check that was actually performed. A slot whose picture is not there draws nothing at all, caption included, so a screen reader is never told about a photograph a sighted reader cannot see.

A sentence that says no has to say why

Every sentence the site says in its own voice that denies a capability is now registered. Eleven of fifteen are rules: the product behaves that way on purpose, and the entry carries the reason. The rest are not yet, and each one is anchored to a string in which the product itself says it does not do that thing. Whoever builds the capability has to delete that string to ship it, and the moment they do, the help page that denied it is flagged.

Leaving takes a mailed link

A gym account is closed or deleted by a link sent to its confirmed address, not by typing the profile name. A typed name never stopped someone already inside a stolen session, since they can read it off the screen in front of them; a mailed link does, and the mail also tells the real owner that somebody tried. The link opens one last page that asks again and says plainly that the act cannot be undone.

The split that carries the security is simple: opening the link only warns, and pressing the button acts. Mail clients and link scanners follow links on their own, and a link that deleted an account on a visit would be an account deleted by a spam filter. Only the token’s hash is stored, the link lives for one hour, and two presses cannot both pass. Twenty-four tests cover it, including one over real HTTP where visiting a live deletion link leaves the account untouched.

Retention is confirmed, and every sweep is armed

The retention periods were taken through one at a time with the owner rather than accepted as a table, and one came out shorter: access events are now kept for twelve months, long enough to outlast a keeper who signs in twice a year, and half the trail it replaced. Every sweep now runs on a deployed host with the confirmed period, and the legal texts in both languages have lost their last provisional marks, twenty-three of them.

The privacy page now names each outside party for what it actually does with a reader’s data, and that claim has a machine check of its own, driven to fail both when a party is missing and when one is over-credited. The shape of the legal pages is settled as well: privacy, terms and services each at their own address, so a person exercising a right never has to scroll past unrelated clauses to reach it, and each carries its own last-updated date.

A release path that checks itself

The release build now runs on any machine without anybody’s mail credentials and sends no real mail while it verifies a registration. And every command a runbook tells an operator to run on the server is now read out of the runbook and looked for in the bundle, so writing the sentence adds the check. The backup, the restore and the account export all travel with the release. On the gym record, the access note now tells the keeper what never to write in it, such as a door code, before they type it.

The standing counts, each written by the check that derives it: 55 routes, 27 of them rate-limited; 1,858 rule citations resolving by number, up from 1,821; documented coverage across 250 modules, up from 247; 81 artboards, up from 80; and Node pinned at 22.23.2. The last full run read 9,961 unit tests and 1,402 browser tests, up from 9,681 and 1,335.

What comes next

The legal pages get built in the shape now settled, and the work towards opening the free gym listing carries on.

If you would rather be told when GymAI opens than keep checking, the waiting list is on gymai.coach.

GymAI


Related

No comments yet

Nobody has written anything here. You can be the first.

Leave a comment

Your name and comment are published. Your email is not, and is never sent anywhere else. How we handle data