About 145 commits landed on the working branch since the last entry, across a day and a night. The gym account learned to prove the address behind it and to get back in when the password is gone, moderation stopped being a set of routes and became a screen somebody works in, and the search and claim path reached the site.
A gym confirms its address, and the account waits until it does
The owner ruled that every user of every kind has an email address, and the account was rebuilt around it. Registering mails a code to the address given: never in the subject line, no link to click, good for 24 hours and five tries, and bound to the address it went to.
Until that code comes back, the account can do nothing with a gym: all nine gym writes are refused, and each refusal names the act it refused — added, claimed, changed — and the address it is waiting on. The events the account records carry no IP address and no user agent.
Getting back in, and three mails in Design’s words
A forgotten password is now a route rather than a dead end. The request answers the same thing for every address typed, with the limits charged before the account is looked up at all, so the answer says nothing about who exists. One live code, good for 30 minutes and five tries, is accepted without being spent: what spends it is the password actually changing. Completing the reset asks for the account’s own second factor as well.
Then, in one transaction, the password is replaced, the code spent and every session of that identity ended. The device that made the change stays signed in, and the screen says exactly that. The three mails behind all this now carry Design’s own words rather than a developer’s, with the code on its own line, no link, no button, no reply-to.
Moderation is a screen now, and a taken item stays taken
The moderation queue has a panel of its own. Rows are oldest first, each naming its gym by a read-back of its stored address rather than a typed name, and opening a row opens the item: a claim with what was proved and the four refusal sentences word for word, a dispute with each side’s evidence in its own column, a flag carrying the paragraph the gym would be sent.
A grant now sets the keeper, closes the item and records the decision in a single transaction, and a dispute is taken, held and decided as one unit, so two sides of the same record cannot be decided apart. An item somebody took stays theirs for ten minutes after their session ends; letting it go frees it at once. Every decision stores an evidence id, and the operator’s lookup of a record is the public name search: the panel sees what a visitor sees.
Moderators by code, and a gym’s right of reply
The administration has two roles, owner and moderator, and only the owner adds or removes one. A moderator is added by address: a code of two groups of four goes there — fifteen minutes, five tries, single use — and typing it back opens the passkey ceremony for that one addition. Removing an addition cancels it and its code, and a token already handed out enrols nobody.
The keeper of a record that has stopped being shown can now answer: one answer while one waits, one question from a closed set, at most 600 characters. The answer is its own kind of queue item, decided with show it, ask about it, or leave it. Reporting a gym is specified alongside it, and a reporter is told in their own account how their report ended.
Finding and claiming a gym, on screen
The search and claim path is on the site, and one page carries all of it: rows that say whether a record already has a keeper, the website and the postal address checked in the browser before anything is sent, the code step with the server’s own refusals, and the two ends — proved, or waiting.
45 checks, 8,538 unit tests and 1,067 browser tests
The gate every change has to clear grew from 44 checks to 45, and the suites read 8,538 unit tests and 1,067 browser tests green, up from 8,063 and 962 at the last entry. The standing counts, each written by the check that derives it: 55 routes, 27 of them rate-limited; 1,555 rule citations resolving by number, up from 1,453; coverage across 211 modules, up from 203; and Node pinned at 22.23.2. The plan’s own figure moved from 63.4 to 73.2 per cent done.
Eighteen rounds of design were curated in over the same period, and a long-running measurement closed with them — every board that draws a foot now draws its licence line on every frame, across all 70 boards.
What comes next
The gym side now has an account that proves its address, a way back in, a moderation panel with its acts, and a search and claim path on screen. What follows: the screen the report specification is waiting for, and the rest of the console’s rooms.
If you would rather be told when GymAI opens than keep checking, the waiting list is on gymai.coach.
No comments yet
Nobody has written anything here. You can be the first.