A long night and morning, from just before 01:00 to about 10:40, mostly on the leads tool I'm building for a function venue client.
Getting the tool ready to send
I wanted staff to have one place to download from, so builds now go on a release page on my Forgejo, behind a login.
Logs and a new name
Staff can't tell me what went wrong if the tool leaves nothing behind. Every command now writes its own log with the command line, version and build ID, Windows and Python versions, everything printed, and the full error. A failed run ends with a Log: line giving the path, and run.cmd logs zips the ten newest logs onto the Desktop.
I also gave the tool a proper name. The install folder, shortcuts and download name changed, and "Pack ID" became "Build ID". The name the tool sends to websites still identifies the venue, because it should say who is responsible for the visits.
A review of the rename found a real bug. The installer's "don't run from inside the install folder" check matched on the start of the folder name, so a normal download folder with a similar name would have been refused. I fixed it, then installed from exactly that kind of folder on the Windows sandbox VM. It took 66 seconds and all eight smoke steps passed.
A Forgejo login trap
A staff account kept getting "wrong password". The password was never checked. Forgejo only accepts an email address at sign-in once that address is marked verified, and with no mail server nobody can verify it. Signing in with the username works. I put the trap, and the rule that client accounts are Restricted read-only collaborators, into the Forgejo runsheet.
Pull requests
Until today I pushed straight to main. With a live version staff will run and a main that keeps moving, that has to stop. main now accepts changes only through pull requests, admins included, and release tags are protected. I also added pre-commit with error-only ruff checks and the full test suite before every push, and wrote a glossary of the tool's terms. One finding: the client's template has a "Date last verified" column that really holds the date a fact was merged in. I can't rename their column, so the help text now says "merged".
The first push from a separate git worktree switched the shared repo into bare mode and filled its file list with junk. A test helper passes git's repository environment variables to the throwaway repos it creates, and in a worktree they point at the real repo. I restored the repo, fixed the helper, and made the pre-push launcher clear those variables too.
Release candidate 5
Nine tickets went in as pull requests: plain-English error messages, a "Confirm (Yes/No)" review-sheet column, a cleaner log command line and a slimmer download, down from 225 files to 104 by leaving out tests and developer docs. A release-gate review found three low notes, which I fixed before tagging. The suite passes with 2714 tests, and the sandbox passed all eight smoke steps with a 61-second install.
The nightly backup started at 02:35 in the middle of the sandbox test, and my shutdown failed with "VM is locked (backup)". I excluded that VM from the job.
Drift report and a CI plan
My daily docs drift report went from 13 drift items and 4 broken checks to 2 and 0. Three were stale docs and nine were checks that had rotted, for example one still pointing at Kuma on n5ubuntu. I tested each rewritten check to make sure it can still fail. A new daily check at 06:30 fails if a client repo isn't private.
I also wrote a plan for a Forgejo Actions runner: CT 149 runner1 at x.x.0.49 on pve04, with Docker inside an unprivileged container and a firewall that keeps jobs off the LAN. It would serve one repo only.
Explaining the hotel room rollout
I drafted a plain message for the hotel's owners on why the new TVs can't be enabled in random rooms. Each building has its own switch, and the hotel's IT provider has to configure it and its link to the main cabinet first. That is done for only one wing so far. Each room has a single socket, so switching it ends the old channels there, and the room has to be empty or have the new box and power ready.
Still open
- Send the staff trial note and questionnaire with rc5.
- Decide whether to build the CI runner on pve04.
- Three unused files stay in the repo until tests confirm they are dead.
- Nothing has confirmed that the hotel's first core switch config was saved.