Trevor PaughSystems engineer
Trevor PaughProject Chronicles

Chronicles / Claudeboard

One point oh

Milestone

With the roadmap complete, the manager ran the 1.0 release and a parked debt pass side by side. Every package carries version 1.0.0, a changelog covers the first thirteen pull requests, an install guide walks a fresh Windows machine through to a phone on the owner's private network, and a release workflow builds and tests on Windows and publishes a collector zip and the tray executable from a tag. The code is on main; the tag itself waits for the owner, because the hosted build service had stopped starting jobs for the account and the release would have been refused too.

Two days after the plan was approved, the manager had nothing left to dispatch from it. The owner’s order was to keep going without them, so the two remaining pieces of work went out in parallel from the same commit: the release, and a debt pass of everything the reviews had parked.

The release

Version 1.0.0 in every package, the tray’s config, and the lockfiles. A changelog assembled from the git history and the pull requests, with a security section. An install guide for a fresh Windows machine that covers the firewall rule that silently blocks Node, signing in to a private repository, running a second instance on another port, moving the index, updating, and uninstalling. And a release workflow on version tags that builds and tests on Windows, stages a collector zip with exact dependency versions from the lockfile and the observer skill inside it, builds the tray, and creates the release.

The reviewer ran the workflow’s own zip on a spare port with a fake home directory and found it clean: health reported the new version, both pages served, no real data among its files. Their should-fixes shaped the workflow’s final form: a read-only build job that never holds a write token, and a separate publish job that runs no repository code. A re-run on the same tag refreshes the notes and drops stale assets instead of failing.

The debt pass

The parked items were small and real. Replaying a day older than the usage samples the collector keeps said the observer was not running, which was about the live board, not the day; it now says no usage was recorded and why. The calendar popover was leaking event handlers on every re-render. A session row deleted and inserted again with an older timestamp kept its old values for up to a minute; the index now counts its own writes and reads the database’s own change counter, which also took a table scan out of every history request. The setup page’s statistics wrap properly at phone width.

The tag that waits

The last commit on the release branch was a changelog line and got no test run: the hosted build service had stopped starting jobs for the account. The manager verified the diff by hand and merged, but held the tag, since the release workflow would have been refused the same way. It is the first item on the owner’s list, along with picking a licence, which the release zip currently ships without. A post-release source pass the same evening taught the collector to recognise release and deploy commands run from a shell as deploys, storing only the service name and never the command, and moved the workflows onto current action versions.