Timeline
Every entry from every project on one spine, newest at the top. Pick one project, a few, or all of them.
Nothing left without the owner
Two overnight slices cleared the last of the work the manager could do on its own. Each synth engine is now built once instead of twice, so the app stops caching two copies of the same sound code. And the build service now proves the production build plays every engine, through the background worker and without it. With both merged and the first live, the backlog that needs no owner decision is empty, and the manager's note to its successor is not to start product work without an answer.
Design ClaudeboardLabels that never overlap
Two polish slices for the board itself. Node labels now try eight positions around their node and, when none is free, the least important label in the crowd hides until hovered; the selected node and any 'waiting on you' line always stay readable, and auto-fit never zooms out so far that those lines disappear. The header keeps to one row at any width from 820 pixels, dropping whole parts of its status line in a fixed order rather than wrapping over the board.
Progress ClaudeboardTen pull requests before dawn
Between half past one and seven in the morning the manager merged ten pull requests without the owner, each one built by one agent, reviewed by another, and fixed before merging. The owner's new house rules went into every brief: tests named in the same change, a simplify pass and a code review before each request, a security review on anything touching files or the network, and the app checked by eye. Most of the night went into making every file source tell a locked file from a broken one.
Design ClaudeboardWho manages whom
The board can now see the management layer. A new collector source reads each project's team roster and manager handoff, keeping only table rows and ids, and the board draws a dashed edge from a manager session to every session it has dispatched. Selecting a manager shows what it has in flight, its peers, and how many things wait on the owner. The first review found the source could wander into folders it is forbidden to read; the fix guards every path by where it really leads.
Decision BopsmithPaying for CI once
The project's hosted build allowance ran out on 15 October, which turned continuous integration from a habit into a cost. Three slices followed. The server test suite boots its in-memory database once per worker instead of once per test, and runs about fifteen times faster. Pushes that touch only the manager's notes start no run at all, which had been four out of five runs. And a merge to main whose tree is identical to a pull request that already passed inherits that result instead of running again, with every doubt resolved in favour of running.
Design BopsmithAdvanced mode, one slice at a time
The studio now has two modes. Basic is what shipped; Advanced adds a per-instrument effects rack with seven effects in a fixed chain, a set of new sound engines for bass, keys, lead, and drums, and a deeper mixer, all still synthesized in code from the maker's seed. It arrived as four merged slices and one in review, each built against a hard size budget for the first page load, with the engine rendering moved into a background worker so the page never stutters.
Design BopsmithDrum accents
Every drum hit can now be Soft, Normal, or Accent. In an Advanced song an Accents chip turns the drum grid into a level editor: tap a lit pad to cycle through the three, hold to clear it, drag to move it with its level intact. Accent pads get a corner mark and a bigger dot, Soft a smaller dot on a paler fill, and the desktop adds a Strength row under the selected lane. Levels are stored only on lit steps and dropped when every hit is Normal, so an old song saves byte for byte as before. The song format moved to version four to carry them.
Decision BopsmithThe config that never arrived
Checking the live site after a deploy, the manager found that a security-policy change merged nine slices earlier had never reached it. The reverse proxy reads its configuration only when its container starts, and a changed file on disk does not make the deploy script restart it. The deploy now records which configuration the proxy started with, validates a changed one in a throwaway container, and recreates the proxy only if it passes. The same evening the owner handed the deploy button itself to the manager.
Decision BopsmithThe song-version guard, and analytics after all
An app build older than Advanced mode strips the new fields from a song it saves, and the stripped copy syncs back over the richer one. The fix is a version number on the song format: the server keeps fields an older client does not understand, an outdated app refuses to export, and an edit made from an old build comes back as an undo step rather than a silent overwrite. The owner confirmed those defaults and said not to hold the deploy for it. In the same week they reversed the plan's no-analytics rule.
Decision ClaudeboardArchived stays hidden
The first real session store had around a hundred archived sessions, and they buried the dozen live ones. The owner's call: archived sessions are hidden by default, with the filter starting on and a stored preference able to override it, and counters count only what is visible. In the same review, alerts were moved out of the collector: it emits only two kinds, and the board derives the rest locally from what it already knows.
Milestone ClaudeboardOne point oh
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.
Milestone ClaudeboardReplay, history, and forgetting
Three slices past version one, all on 15 October under the owner's standing order. Replay scrubs through any past day: the collector records the graph it serves as frames, because the event log alone cannot rebuild it, and the board plays them back at up to three hundred times speed with the live feed held aside. History is a searchable table of every session the machine has seen, metadata only, with a detail panel that links to replaying its day. And a retention setting lets the owner forget old frames, with pruned days still replayable from the log and marked fainter on the calendar.
Milestone ClaudeboardVersion one, code-complete in two days
Every slice of the plan is merged: transcript tailing with subagents orbiting their parents and animated flows on the edges, the dashboard chrome built to the approved mockups, an observer session for cloud sessions and usage windows, Lanes and Orbit layouts beside Islands, a setup screen, a tray icon that starts at login, and a phone layout over the owner's private network. Code-complete on 15 October, forty-odd hours after the plan was approved; the owner has walked the first four acceptance steps, and replay is already under way as version one point one.
Milestone Eboda GymnastFill from saved answers
One button in Fill & Sign fills every empty field from the answers the app has already learned, matching by the field's full name first and its label second, and skipping dates, passwords, locked and read-only fields. Each fill is a single undo step and nothing touches the file until Save. Parked on 8 October as a later version, it was pulled forward by the owner's standing order to keep moving without them, and took three review rounds to merge.
Decision Eboda GymnastSix holes in the change checker
The checker that says whether a signed or certified PDF has been changed since signing was reviewed as an attacker would review it. Two rounds found five ways a forged change could pass as untouched; the fix round found a sixth. Every one was closed with the reviewer's own attack tests landed, and none was written down as a known limit. The same day a redaction review found a font measurement that could let a letter survive inside a repeating pattern, and that path now refuses rather than guesses.
Progress Eboda GymnastFollow-ups, a sweep, and two branches still in review
With the roadmap delivered, the project turned to the review follow-ups it had been deferring and to its first quality sweep of a real build: six bugs and nine observations from one evening of use, fixed in a single branch. Two follow-up branches, for signing and for scanning, are still in review; the signing one found that a certified document could be quietly changed after the fact, and closed every path the reviewer could find.
Milestone Eboda GymnastThe follow-ups build
The review follow-ups batch is merged and a fresh build is with the owner. Five branches went in: editing fixes, fill from saved answers, the first quality sweep, the scanning follow-ups for compare, redact, compress, text recognition, and batch, and the signing follow-ups with the hardened change checker. Behind them sit a sweep of 136 checks on the previous build with every failure fixed, and seven review rounds across the two heaviest branches with every finding fixed and none recorded as a limit.
Design BopsmithBasic or Advanced, per song
The owner asked for a basic mode and an advanced mode: basic as the studio is now, advanced opening up a much larger choice of sounds and effects, closer to a full workstation. Mockup round three draws it. The mode lives in Song settings, one per song, and every song starts in Basic. Advanced adds a Sound tab per instrument with engine, oscillators, filter, envelope, FM, and voice groups, a choice of five melodic engines and three drum kits, a seven-effect rack per instrument, and a mixer with reverb and delay sends. The product's boundary held: still no samples, uploads, recording, timeline, or automation.
Decision BopsmithFour, go
The owner accepted the designer's defaults for round three in two words rather than re-deciding each question. Advanced mode and every effect in it are free; each new engine ships with two free presets and two for Pro members. The mode is per song, Basic by default, and a Basic maker hears an Advanced song exactly as it was made, with the panels hidden. Velocity and thirty-two steps stay; the extra cells go first if anything has to. The shared delay bus is dropped. Build order: the effects rack, then the engines, then the advanced mixer.
Decision BopsmithNo beacon
The site's security policy was blocking a hosting provider's analytics beacon on every page, and the brief said to allow it if the fix was a one-liner. It was, and the builder did it. The reviewer pointed out that the project's own privacy text promises no analytics or third-party tracking. The manager reverted the change and put the question to the owner. The owner chose to keep the analytics and disclose them: the privacy policy now names the cookieless analytics, the beacon is allowed, and the licensing page was brought into line with the legal redline in the same merge.
Milestone BopsmithThree slices without the owner
The owner gave the manager a standing order to make as much progress as possible alone and in parallel. The manager wrote three briefs from the plan's unkept promises and the walkthrough's leftovers: a measured pass on slow phones, an end-to-end audit of the Spanish, and fixes around remixes and the language shown at sign-in. By the end of the day all three were reviewed, revised, and open as pull requests. The owner merged them in the order the manager wrote down and pressed the deploy button: every planned slice, one through sixteen, is now live.
Decision BopsmithWhich language wins
An account made on an English device carried English with it, so signing in on a Spanish phone switched the whole site to English. The brief put the account's language above the browser's; the reviewer showed that still broke the case the walkthrough had found. The manager reversed the order: the device's own choice first, then the browser's language when it is one the site speaks, and the account's only after that.
Milestone ClaudeboardFirst light
The board ran against real data for the first time tonight. Both halves of slice one were merged, an integration pass joined them under one contract, and the hook feed was installed into the owner's settings. The canvas then drew every session on the machine, well over a hundred with about a third of them live, and every live one matched the app's own sidebar, with edges for who started whom, who handed off to whom, and who is talking to whom, and live working and waiting states. No session had to report itself. The labels overlap in the dense centre; that is a later slice.
Progress ClaudeboardTwo halves of slice one
Slice one is built as two parallel pieces, each reviewed, fixed, and verified: a collector that reads the desktop app's session store and the command-line tool's process files into a local index and serves the graph over a live connection, and the board page that draws it. Against the real machine the collector already resolves every live session the app's sidebar shows. Both wait on the owner to merge. One review decision is recorded: anything that leaves the machine is metadata only, so status text is stripped for any client that is not local.
Milestone Eboda GymnastBatch, over a folder
The last item on the roadmap is merged: Batch runs Compress, Protect, Export, Header and Footer, Watermark, or Recognize text over every PDF in a folder, writing results to a separate output folder and never into the source. Bates numbers continue across files. Four review rounds each found a way the output could leak back into the source folder, from a junction to a long-path prefix to one folder reached by two names, and every one was fixed. Built under the owner's standing authorization to keep improving without their input.
Milestone Eboda GymnastCompare and sign
The second batch of the Acrobat list followed the first by about ninety minutes: Compare two PDFs, with a word-level diff and a pixel diff side by side under synced scrolling, and certificate signing, a real cryptographic signature from a self-signed or imported certificate, with a panel that reports Valid, Signed then changed, or Invalid. Both reviews approved on the first pass.
Milestone Eboda GymnastCompress and redact, after four rounds
The third batch of the Acrobat list is on main: Compress, which writes a smaller copy under a new name, and Redaction with true content removal. Redaction took four review rounds. The first found four ways the text survived under the mark, the second two more, the third two cases where the app removed too much, and the fourth approved with two small fixes. The reviewer's checks stayed in the test suite. A new build from the merge goes to the owner next.
Milestone Eboda GymnastProtect, stamp, export
The first batch of the Acrobat list landed overnight: password protection and permissions on save, headers and footers with page numbers, Bates numbers and text watermarks, and export of pages as images or text, image extraction, and a PDF built from images. Every branch needed one round of review changes, and one review found a colour bug that had been on main since the print slice. A new build went to the owner before two in the morning.
Decision Eboda GymnastRedaction fails its first review
True redaction, where the text under the black box is gone from the file and not just covered, failed its first review. An adversarial reviewer wrote two dozen independent checks on the output and found four ways a copy marked as verified still held the text: inside repeating fill patterns, through an exemption for text that also appears elsewhere on the page, in documents embedded more than one level deep, and in glyphs drawn as outlines that cross the mark. The manager took the conservative fix for each. Where removal cannot be proven, the app refuses to write the copy.
Progress Project ChroniclesA capture, every time
The brief that project managers follow when they write to the historian now asks for a screenshot or mockup of anything visual, every time, saved under the project's own captures folder and listed on a Capture line in the note. The historian decides what to use.
Decision BopsmithCI and a deploy button
The owner asked for continuous integration and deployment. The manager proposed checks on every pull request and push to main, and a deploy that is a button rather than something that fires on merge. The owner said go. The first press from the button went live the next day, after two snags in the runbook were found and fixed.
Decision Eboda GymnastThe Acrobat list
The owner asked which of Acrobat's paid features the app could still add. The manager compared the app against the published feature list and ranked eight that can be done entirely on the local disk. The owner ordered the first three in parallel, then the next two, with redaction and compression fitted in wherever they would go.
Milestone BopsmithA stranger walks through
A tester who had never seen the product walked the whole of it, anonymously on the live site and with test accounts locally. The worst finding: every store page on bopsmith.com had shipped without its stylesheet since launch, and nobody had opened the live store on a phone. A hotfix went out the same day. The owner took three decisions from the rest of the list, and for the first time the manager merged the pull requests rather than the owner.
Design BopsmithHold to pick up
Dragging a note between steps worked with a mouse and failed on the owner's phone: the drag ended the instant it began, and a vertical swipe on a lit pad played the note instead of scrolling the page. The cause was how browsers hand a touch to the element under the finger. The fix is a rule: on touch, hold a lit pad for a quarter of a second to pick it up, and a swipe before that scrolls. The owner's phone test passed all three checks.
Design BopsmithPaint, copy from, and a legend
Four editor extras in one slice: drag across empty pads to fill them in one stroke, copy a pattern into a section from another section, a colour legend under the song's sections on the phone, and full keyboard control of the pad grid. The store's first-load budget was raised once more to fit, after the builder's own fix was reversed.
Design Eboda GymnastAmerican English
The project switches to American English everywhere: interface text, documentation, code comments, identifiers, and commit messages. The builders had defaulted to British spellings, and the owner noticed. A sweep of about a hundred hits followed the morning's merges, and new work follows the rule from now on.
Decision Eboda GymnastAre the peers worth it?
The owner asked whether the two standing peer sessions, a builder and a reviewer, were earning their keep. The manager's answer was no: both were down when the day's five branches were dispatched, one-off agents in their own working copies did the work without losing anything, and the memory the peers were supposed to provide lives in the briefs and the manager's files anyway. The recommendation is to drop them. The owner's answer is pending.
Milestone Eboda GymnastComments
The Comment tab is in: select and copy text, highlight, underline, and strike through, sticky notes, ink, free-text boxes, and moving or recoloring any of them. Every change is written as an incremental update and read back before it counts. Review caught two things: right-to-left text was being underlined along its top edge, and the branch had grown its own certification rule that disagreed with the shared one.
Milestone Eboda GymnastPassword protected
PDFs that need a password now ask for one in the app, open in both rendering engines, and save still encrypted. The branch was done a day before it merged: the sandbox had refused the builder's push and the manager does not route around a refusal, so it waited for the owner. Merging the day's other work into it exposed two new read-backs that had forgotten the password. Five generated sample files were added so the owner can retest without hunting for real ones.
Decision Eboda GymnastThe OS does the reading
Text recognition uses the engine built into Windows rather than Tesseract or a Rust-native model. No toolchain, no download, no bundled binaries, and it follows the project's habit of leaning on the operating system where the app only runs on Windows anyway. The review found that a malformed scan could shift the whole invisible text layer by hundreds of points, and the fix checks where the first recognized word actually lands before a save counts.
Milestone Eboda GymnastThree at once
With version one and its two follow-ups retested and passing, the owner asked what was left and picked three items in one go: the parked review fixes, a Comment tab, and text recognition with a Find bar. Five builders went out in parallel, each in its own working copy with its own reviewer. By mid-afternoon four of the five branches were on main and a fresh installer was in the owner's hands.
Decision BopsmithBehind the orange cloud
The owner wanted the site behind Cloudflare's proxy. That breaks two things a plain server takes for granted: knowing a visitor's real address, and renewing certificates over port 80. Slice seven made the proxy safe to switch on as an opt-in, flipped after the first deploy had worked. A wrong diagnosis along the way, a firewall lock on the origin, and a weekly watcher that alerts rather than auto-updates.
Milestone BopsmithFirst deploy: bopsmith.com is up
Three days after the pitch, the site is live on one rented server in Europe, with the domain, mail, media storage, and backups set up by the owner from a step-by-step guide. All three containers healthy and certificates issued on the first try. Payments stay switched off for now by the owner's decision, and the store says so rather than pretending.
Design BopsmithSliders, not dials
After using the new editor, the owner asked for three changes: a way to clear a drum pattern, notes that can be dragged between steps, and sliders in place of the sound dials, which were hard to read. All three were built in one slice, and the first-load budget was raised once, from 45 to 48 KB, to make room.
Design BopsmithThe mockup becomes the spec
The editor matched the mockup's colours and little else. The owner asked why, and the answer was that the mockups had been briefed as intent, not spec, and nobody had compared the two side by side. A dedicated slice made mockups 01 and 02 the spec: self-hosted Bricolage Grotesque and Figtree, the mockup's radii and proportions, a top transport with Play song, drag handles to reorder sections, and List for sale always in view.
Design BopsmithA logo in three rounds
Four directions, then two refined plus a hybrid, then a final. The mark is a two-by-two grid of pads, one per instrument, each carrying its instrument's colour and a cut-out shape: a square for drums, a circle for bass, a key for keys, a diamond for lead. A one-colour pad grid is the fallback, the wordmark is set in Figtree and outlined, and the favicon is redrawn on a pixel grid so it survives sixteen pixels.
Milestone BopsmithVersion one, code complete in two days
Every slice of the version one roadmap is merged: the editor as an offline-capable web app, accounts, saved projects and the Pro gate, the marketplace with browse, track pages and a listing flow, checkout, payouts with a hold, tax and licences, an admin and reports layer with takedowns and backups, search, and remixes with permanent credit and a fixed split. Legal drafts and a trademark search are done. Nothing is deployed: the service accounts, live payment checks, the deploy, and a review of the legal assumptions are all in the owner's hands.
Progress Clipper OverlordThe public page is not enough
The owner joined a second clipping board and asked for its campaign list to be read by a browser session rather than scraped. The survey found the public list carries only a card per campaign: brand, title, rate, and a lock. The rules, budget, resources, and minimum views live in the signed-in app, which the browser extension cannot reach until the owner allows the site. The read-by-hand guide now sends the session there and makes the block visible. Overnight, under a blanket go, three small merges followed, including a test that failed only when the owner's drive dipped under the free-space floor.
Milestone Eboda GymnastAn installer, and a sandbox that hid it
The last of the six verbs is built and in review: a per-user Windows setup that needs no administrator prompt, registers Eboda Gymnast under Open with for PDFs without touching the default, and keeps one window. Two decisions: the registration is written by the installer's own hooks so uninstall removes only its own keys, and there is no code signing for a personal tool. Both install tests ran inside a desktop app's package sandbox, which swallowed the registry writes, so the real-profile check is on the owner's retest list.
Milestone Eboda GymnastEditing text that was flattened
The first slice past version one. Edit mode now reaches text drawn inside nested forms, which is where the app's own Flatten puts every filled field value, two levels deep. Asked for the evening the roadmap closed, built in one evening, one review round, merged. Two decisions: a nested form is editable only when it is drawn exactly once in the file, and encrypted files opened without a password are editable when their permissions allow it.
Milestone Eboda GymnastFetching the missing font
When a PDF uses a font the machine lacks, the text editor now offers a one-click download of a free exact or metric-compatible face, Carlito for Calibri and the like, from Google Fonts, after a consent dialog that shows the licence, the size, and the addresses. Thirteen open-licensed families. The download table is generated from one pinned revision of the font repository with sizes and hashes checked in, so the app talks to one host over https only and verifies everything it fetches. It is the app's first and only network call.
Milestone Eboda GymnastOrganising pages
A Pages tab with a thumbnail grid: drag to reorder, rotate, delete with an undo toast, insert from another file, extract, split, and combine. Moves, rotations, and inserts are appended to the file as incremental sections; deletes, extracts, and splits rewrite the file whole at save time. Verified overnight in the real executable and approved with only optional findings. The fourth of the six version-one verbs, shipped unattended.
Milestone Eboda GymnastCtrl+P or Menu, Print opens the app's own options dialog, with page ranges, fit or actual size, and auto-rotate, and then the Windows print dialog. Pages are rastered by the rendering engine at the printer's resolution and sent through the Windows graphics layer, all behind the platform module so the Rust core stays free of Windows APIs. Verified overnight in the real executable through Print to PDF. Review asked for one fix: the shortcut pressed inside the app's own dialogs let the embedded browser print its window instead.
Milestone Eboda GymnastSign here
The third verb is done. Draw, type, or upload a signature or initials, place it on any page as a movable stamp, resize it, undo it, then save it either still movable or burnt into the page. Up to five signatures and five initials are kept encrypted per Windows user for reuse. Signatures are stored as standard stamp annotations so other readers show them. Files whose permissions forbid annotations are refused with a plain message. A brand mark, a gymnast in a split leap above the beam, landed the same night.
Decision Eboda GymnastWhy editing never worked
Text editing had never worked in the real application across three merged slices. The Rust side sent the edited page text under one field name, the interface read another, and the error was swallowed. Every mocked test and every Rust unit test had been green the whole time. A first fix was built on the wrong diagnosis. The second fixes the field, hardens the interface, and adds a rule: every slice that touches a command between the shell and the core is smoke-tested in the real executable, not only with mocks.
Progress KongomaxSix more on the list, and the intros stop fibbing
The projects page grew from a few finished apps to the whole portfolio: Clipper Overlord, PermitBuzz, Eboda Gymnast, Tiny Clipper, Bopsmith, and this history site joined, each with a short write-up in the site's voice. Two of them are still plans, so every theme's intro, which had promised things built and put online, was rewritten to cover built, half-built, and only drawn. A placeholder link now renders as a dead end instead of a button back to the same page.
Design PermitBuzzDelete my account, and the bug it found
Designing the account-deletion flow turned up a live bug in the daily digest: an alert deleted while the run was in progress made the whole run fail and dropped every send after it. The fix went in first, under one lock order for everything that touches an alert, and the reviewer's own reproduction caught a deadlock in the first version. Then the deletion flow itself: a page that stops every alert, removes the account, and purges the sign-in audit trail, with a nightly thirty-day purge for everyone else.
Decision PermitBuzzGo on Milestone 2
After a night held at the end of Milestone 1, the owner's answer came in three words. Milestone 2 is a map to pick areas on, a public search page with the permits drawn as points, the paid tiers, and a third city. Two side questions, a defensive domain and a project mailbox, were parked with a request to be reminded later. The accounts that would let anyone outside the team sign up are still parked too.
Progress PermitBuzzA health check, and a guard against a shrinking feed
The nightly data pull can now say whether it is well: a health command goes red when a scheduled source has not produced in two days or a parcel load is older than forty-five, and the nightly job runs it last. Research into the next large county found its feed with no stable key, no last-edited stamp, and a row count that fell by seven percent in a week, so full pulls got a shrink guard that refuses to overwrite good data with a short one. A smaller city with a clean, open feed got a connector plan instead.
Design PermitBuzzReport a bad pull honestly
One county's permit layer shrank by sixteen thousand rows in a week, and one permit number in it appears a hundred times. The runner never deletes a permit, so a short pull cannot wipe data, but it can pass as a good run and let the source go quietly stale. The design adds a count-before-and-after guard for full pulls and folds a permit's repeated rows into one stable record. A second county's connector was planned on the same desk, with a rule that research notes print only counts and field names, never sample values.
Milestone PermitBuzzMilestone 2 app work complete: search on a map
Ten pull requests after the go, the app had its map. The alert builder picks areas from a list or by tapping counties and towns; a public search page shows recent permits as clustered points beside a plain list and saves a search as an alert in one tap. Every limit lives on the server, the map never sees an owner's contact details, and if the tiles fail the list still works. On the data side a third city's feed was built and held, and two neighbours were ruled out pending records requests.
Decision BopsmithIt has a name: Bopsmith
The music site is called Bopsmith. It was picked from a shortlist where every candidate had already been checked for a free domain and low trademark risk, the rule the owner set when PermitBuzz was named. The owner chose it and bought the domain the same day.
Milestone BopsmithPlan done, repository made, no code yet
The planning phase for the music site finished: a plan, a discovery log, and a first round of mockups, all in a new private repository. The owner left before the final sign-off with instructions to proceed as far as possible without them, so the manager applied the defaults: mockups accepted, roadmap approved. The first build slice, the editor core as a progressive web app, is next.
Milestone Eboda GymnastEditing text in place
The second of the three verbs is done. Click a run of text, retype it, pick a replacement font if the document's is not installed, undo and redo, and save. A save writes a temporary file beside the original, reopens and re-renders it to check, then swaps it in; it refuses if another program changed the file meanwhile. The writer is the builder's own, so every byte outside the edited text stays as it was. Two review rounds found a validation check that only counted objects and a close shortcut that skipped the unsaved-changes guard.
Milestone Eboda GymnastFinding the font first
The first half of in-place text editing merged: a model of the text on each page, selection of it in Edit mode, and matching the document's fonts against the fonts installed on the machine. Nothing is written into a PDF yet; that is the second half, now in progress. Review caught fonts without a typographic family name being reported as missing when they were installed. One rule was confirmed: a font's embedding rights are enforced in the save path, not only in the interface.
Milestone Eboda GymnastForms you can fill
Eboda Gymnast fills PDF forms: text, checkboxes, radio buttons, dropdowns, and lists, including the encrypted government forms that refuse most free tools. Only the changed objects are appended on save, and a prompt offers Keep editable or Flatten. Answers are learnt on save and stored encrypted, with a filter that never remembers social security, account, card, or ID numbers. Review caught that the first Flatten still left every typed answer recoverable in the file; it is now a full rewrite with a test that scans for remnants. Signatures are next.
Design BopsmithSections and patterns, no timeline
The editor has no timeline. A song is a list of sections, a section is four instrument cells, and each cell holds a sixteen-step pattern. It is designed for the phone first, with the desktop as an equal rather than the original, after the owner asked whether a better phone design was possible than the ones already out there.
Decision BopsmithSounds made, not sampled, and how the money works
Two early decisions for the music site. Every sound is synthesized in code from a per-user seed, so each maker's audio is unique and there is no shared sample library to collide with. The business is a hybrid: free tools with limits, a commission on marketplace sales that drops for makers on a paid plan, and fixed buyer licences in two tiers. The site makes no promise that a track is claim-proof; makers warrant that their work is original.
Decision Clipper OverlordMore boards, each read its own way
Five suitable campaigns out of thirty-six on the first board was not enough, so the owner asked for more boards. A survey found only two others with public listings. One forbids scraping in its terms, so the app will never fetch it; the owner's own browser session will read it instead. The other has no such rule and is read through a paid third-party actor, so the app never touches that site either. Both shipped the same evening, after review caught one board's bad day wiping the other's list. Also today: a daily cap on rules reads, and campaigns mostly in another language are skipped.
Milestone Clipper OverlordThe overnight run: fifty items, twenty-four merges, nobody watching
At one minute to midnight the owner handed over a fifty-item improvement list, a rollback point, and leave to shut the machine down when nothing more could be done. By seven in the morning twenty-four pull requests had merged, each built by a fresh subagent against the full test suite and, where it mattered, one review round. Two of the biggest features ship switched off until the owner turns them on.
Decision Clipper OverlordRead by hand, on a button press
The board that forbids scraping now gets read the agreed way: a button on the Campaigns page starts a Claude session in the owner's own browser, which reads the listings at a person's pace, answers in a fixed shape, and writes the file the finder merges. No tick and no schedule; only the owner's press. The session gets six read-only browser tools and nothing else. Review fixed five things before merge, and the manager held one more tool back: the one that can click and type in a signed-in browser. Also today, the tab named after the first board became Campaigns.
Decision Clipper OverlordVetting campaigns by their rules, not their card
A campaign's board card says little; its real rules often live on another site, a shared document, or a PDF. The owner asked for the finder to read all of it, and named three hard disqualifiers: a page dedicated to the brand, the brand's name required in the account name, or required logos and branding. The reader fetches public pages only, keeps them for a week, and a stronger model does the reading, because the goal is the screen capture that goes to Google.
Progress CookbookThe dev site, blocked at the door
The owner ran the two setup steps for the dev stack the same evening the paste import merged. The configuration went in cleanly; the deploy was refused by the cloud provider, which requires a one-time account verification before it will create a new content-delivery distribution. The stack rolled back, the live site is untouched, and the dev site now waits on the provider rather than on code. The owner chose to wait a day or two and retry before opening a support case.
Milestone CookbookPaste the page
The import path for sites that refuse every app is in. View the recipe page's source in your browser, copy it, paste it into the Add form, and the page picks out the recipe data and sends only that to the importer, which parses it without fetching anything. A one-click bookmarklet does the copying. Review caught a stripper that could be made very slow by a hostile paste; it was fixed before merge. It goes to the dev site first, and live only when the owner says so.
Milestone Eboda GymnastMy own Acrobat
A new project, planned and started in one day. The owner wants a personal Windows replacement for Adobe Acrobat: read, fill forms, edit text on the page, sign, rearrange pages, with full feature parity as the long ambition. Seven phases were planned, one mockup round was accepted without notes, the repository was created, and the first slice, a desktop shell with a PDF reader, was built, reviewed, and merged before the day ended. The stack was chosen for portability and licence freedom.
Decision PermitBuzzIt has a name: PermitBuzz
After one candidate turned out to be taken, the owner asked for names that had been checked first. The research pass cleared PermitBuzz on trademark, domain, and social handles, and the owner bought the domain the same day. The repository and the mockups keep the old working title for now; the app takes its brand from one constant, so the rename is a small job.
Milestone Project ChroniclesA home page around the Chronicles
The wrapper landed the same day as the move: a sidebar with Home, Chronicles, CV, and Profile, a magazine-style home page with three featured projects and the five newest entries, and two themes, Fieldnotes and Darkroom, chosen by the owner out of the Chronicles' four. The type is IBM Plex, self-hosted so the site makes no third-party requests. The Chronicles pages keep their old look until the next slice restyles them to match.
Milestone Project ChroniclesThe Chronicles move under the home page
Four days after its first deploy, the site changed address and repository. The owner decided the Chronicles should live under a personal home page rather than be the whole of trevorpaugh.com, so the repo was imported, history intact, into a new one for the home page, every page moved under /chronicles, and hosting moved from Cloudflare Pages to Workers static assets. The historian took its own worktree on main and the old repository was archived.
Design Project ChroniclesOne site, two themes
The third slice of the day brought every Chronicles page inside the home-page wrapper. The landing is now a board that ranks projects by their last thirty days of activity, with a tick per day, beside a feed of recent entries. The four colour schemes, their picker, and the launch-day type are gone; the whole site shares one set of colour tokens under Fieldnotes and Darkroom, and a visitor's old scheme choice is carried over once.
Milestone Project Chroniclestrevorpaugh.com is live
Planning finished in the morning and the site launched before the day was out. The domain and its www twin now point at the new home page, with the Chronicles at /chronicles and the feed under it. Four slices shipped in a day: the import with history, the wrapper and home page, the restyle, and launch preparation. The bio on the profile page is a draft; the owner's contact links stay hidden until confirmed.
Progress Clipper OverlordEnded campaigns, a restart that works, and the cover safe zone
Three merges across one evening and the small hours. Starting the app now restarts it if one is already running. Campaigns that have ended on the marketplace are flagged in Health with a switch-off button. And the owner's channel screenshots showed cover text trimmed at the top and bottom, so covers now keep their words inside the part of the picture YouTube actually shows.
Decision Clipper OverlordClips from nowhere are held for good
The six o'clock shutdown never took, and half an hour later the owner asked whether clips under review that belong to no campaign should be cleared. Yes. A clear command shipped, review found four other doors a YouTube-era clip could still leave by, and the rework closed them all with one rule: a source outside any campaign is held, the same way paused and removed sources are.
Milestone PermitBuzzFirst code on main, and the bug the reviewer caught before it shipped
The first merge: a permit schema built to hold more than one state, a mapper from county permit types to trades, the contact scrubber, and connectors for Raleigh's building and trade permits. Backfilled locally, about 47,000 Raleigh permits since the start of 2025. The reviewer found that the nightly update window was keyed on the wrong clock and would have silently dropped nearly every record after the first pull.
Decision PermitBuzzFirst counties: Wake, then Forsyth
The Wake County bundle goes first because its feeds are licensed and clean. Forsyth County goes second so the owner can test on ground they know. Forsyth's feed has no stated licence and identifies properties by parcel number only, so it gets a parcel lookup and a written OK from the county before it is scheduled. No outside testers yet.
Milestone PermitBuzzApproved with the defaults. Build started.
The owner approved the mockups and the plan with every default but one, answered the open questions, and gave the go. Three builder and reviewer sessions are being stood up: one on the county connectors, one on the app skeleton, one reading only. The product still has no name.
Decision PermitBuzzGreen, yellow, red: how a feed earns its place
Every data source gets a colour from its written terms, and anything ambiguous waits for the agency's written answer. On day one of the build that put Cary and Forsyth on yellow with connectors built but unscheduled, and Wake County on green but held, because its published file turned out five weeks stale. A freshness guard now refuses any file older than a week.
Milestone PermitBuzzMilestone 1 code complete, the same day it started
Seven pull requests from go to a product that runs end to end locally: Raleigh permits pulled nightly, three more connectors built and held, a daily email digest with one-click unsubscribe, a one-tap manage page, My Alerts, and a permit page that shows no owner contact details. The reviewer blocked two merges, one for a name scrubber that cut "Ralph" short. What remains needs the owner: accounts, a domain, a mailbox, and a name.
Decision PermitBuzzPricing set: three flat tiers, and the free one is the trial
The proposed ladder was approved as it stood, minus the founder discount. A free tier with email only, one county, one alert, and a month of search history; a local plan; a regional plan; and a statewide add-on. No introductory pricing. The figures stay out of this history until the pricing page is live.
Decision Clipper OverlordThe reviewer wants a recording, so the YouTube path comes out
Google's API quota reviewer asked for a step-by-step screen recording of the whole workflow within seven business days. The submission from three days earlier described a tool that no longer existed: it still admitted downloading from YouTube and setting a cover on every upload. The owner's answer was to remove the download path from the code entirely, not switch it off, so the reply can say so plainly.
Decision Clipper OverlordShorts covers, by hand after all
The rate-limit fix worked: every cover sent to a Short was accepted. Then every one of them vanished within minutes, while the same JPEG uploaded by hand in YouTube Studio stayed. The API cannot set a Short's thumbnail, by Google's own word. One day after the backfill shipped, Shorts no longer go near it: the app hands the cover over and links into Studio. Long-form videos keep the automatic path.
Decision CookbookA dev site before live, and the paste import is a yes
Every merge had gone straight to the live site since the CI pipeline landed. The owner asked for a place to preview changes first. The answer is a second copy of the whole stack with its own address, a live branch that only moves on the owner's word, and a DEV mark on the page. The paste-a-page import for sites that refuse every app is approved, on the condition that it lands on dev first.
Milestone PermitBuzzEleven mockups, sixteen questions, no code
The full mockup set is finished and in front of the owner: landing, passwordless sign-up, pricing, a four-step alert builder with a real map, sample SMS and email, permit detail, search and map, My Alerts, a one-tap manage page, and a founder dashboard. Nothing is built. The first slice waits on the owner's feedback and sixteen open decisions.
Decision Clipper OverlordCampaign sources only
Clipper now clips only footage that creators hand over directly. Downloading creator videos from YouTube is off by default, and a campaign source hosted on YouTube is never fetched.
Decision Clipper OverlordFixes before features: the covers that never arrived
Only two covers had ever reached YouTube. The publisher sent thumbnails in a burst, got rate-limited, and spent its single retry inside the same burst. Everything else stopped while it was fixed, and the owner's two questions turned a fix into a backfill and an on-demand command. Merged the next morning after one review round.
Milestone Clipper OverlordLong-form clips, built in a day
Clips of three to fifteen minutes, rendered in 16:9, reviewed in their own Inbox tab, scheduled into a 3 PM slot, and published to YouTube as regular videos. Five slices merged in one day, each with one review round. Off by default so the owner can trial it on one channel.
Design KongomaxThe Eighties theme gets a horizon, and a road
The neon grid stood up too steeply. It now lies flat and runs to a vanishing point, with a road down the middle, palms travelling beside it, and the hero's Insert Coin button gone. Same day: palms set moving with the grid rather than standing still, on a one-word ruling.
Progress KongomaxWhat was left open, on purpose
A list of small rulings deliberately not taken this week: the Extreme theme's headline, a per-theme empty-guestbook line, a phone check of the BBS page, a CRT vignette for Eighties, two review nits. Recorded so the history shows what was parked, not just what shipped.
Milestone KongomaxModeration email, live
When a guestbook entry is waiting, the owner now gets an email with one-click Publish and Hide links, so moderating no longer means running SQL. Sent through Cloudflare's send_email binding from a separate Worker, with Resend as the fallback. Five slices, and a live test that passed end to end today.
Design Project ChroniclesA heading font that hurt to read
Darkroom's headings were set in Syne at its heaviest weight, which stretches very wide. The owner called it painful. It was swapped for Space Grotesk within the hour.
Decision Project ChroniclesHow the historian learns things
No daily reports from the managers. The historian polls every project repo once a day, takes a five-line note straight from a project's manager when git records what but not why, and keeps a public register: no other people's names, no earnings, no prices under discussion, no keys.
Milestone Project ChroniclesLive on trevorpaugh.com, with 39 entries backfilled
The first build: an Astro static site with six projects and 39 entries read out of the repos, four colour schemes, a timeline with animated filters, pushed to GitHub and served by Cloudflare Pages on the owner's domain.
Design Project ChroniclesScreenshots, with the sensitive parts blacked out
The Clipper app screenshots and the Permit landing mockup were held back from the first build. The owner cleared them on one condition: handles, channel names, and anything with a dollar sign get redacted. Solid boxes, not blur, and the pricing section cropped away.
Decision Project ChroniclesThe brief: a public history, one section per project
The owner asked for a site that holds the history of all their projects and work, and picked from a round of mockups: a board for the home page, magazine landings per project, one filterable timeline, and all four colour schemes kept.
Design Clipper OverlordEmber: the app takes the site's colours
The app started in teal on purple to match the channel it served. It now uses the orange Ember accent and new logo from clipper-site, and the site dropped its channel-specific references on the same day.
Design PermitBuzzDesigned for a 55-year-old roofer on a phone
Eleven mockups built around one persona: 18-pixel text, 48-pixel tap targets, Atkinson Hyperlegible, one decision per screen, and every alert read back as a sentence. Free-hand map drawing was replaced by a radius around an address.
Decision PermitBuzzFlat tiers over per-county metering
The service will sell a small number of flat plans rather than charging per county or per alert. The specific prices are a proposal and are not recorded here.
Decision PermitBuzzFour constraints that do not move
Free and legal data only. Never hold a card number. Nearly free to run until there are customers. No launch date. Pricing waits for market research. Set on day two and written into the plan before any stack was chosen.
Progress PermitBuzzWhere the data is, and how it may be taken
Of 22 North Carolina counties surveyed, eight publish machine-readable permit data and four are clearly usable at launch. The sourcing rule is official feeds and public-records requests only. No scraping.
Milestone Tiny ClipperFounded in an evening, with three hard rules
Tiny Clipper was founded between 21:37 and 22:03 with a vision document and three rules: no AI anywhere in the product, no platform names in the brand, and no serverless. Everything else is open.
Decision Tiny ClipperThe free tier, and what is still open
The free tier caps sources at one hour. Both orientations are supported with a manual 9:16 crop; face tracking is parked. A preparing-your-clip page covers the wait. Posture and pricing are still being decided.
Design Tiny ClipperThree design directions, none picked yet
Workbench, Playful, and Quiet: three complete mockups of the clip page, each with its own type, colour, and attitude. All three follow the system light and dark setting. The owner has not chosen.
Progress Clipper OverlordCovers: a week on thumbnails
About fifteen pull requests on the cover alone: picking a frame automatically, letting Claude judge the candidates, drawing the title in five styles, an Edit cover tool, and setting the YouTube thumbnail only after YouTube finishes processing.
Decision CookbookThe importer stops pretending to be a browser
Recipe imports were failing on ordinary food blogs. The cause was the importer's own disguise: a fake Chrome user agent that drew bot challenges. It now asks as CookbookImporter/1.0, falls back once on a refusal, and tells the user the truth about rate limits, bad links, and sites that refuse every app.
Decision CookbookLayout 2: re-keying the database
The DynamoDB schema is being replaced. Users are re-keyed to a hashed identifier, a history table replaces in-row snapshots, and an email index makes accounts findable. Three candidate layouts were compared on a read-only preview; the cut-over waits for a data freeze.
Progress CookbookServing sizes, a What's new card, and honest imports
A display-only serving multiplier scales quantities without rewriting the recipe, a rule-based estimate fills in servings when a recipe has none, a one-time What's new card announces changes, and import retries once and refuses clearly.
Decision PermitBuzzScope locked before a line of code
Contractors first. Building and trade permits. One daily digest, by email and SMS. Passwordless sign-in with a code. Mockups before code. Everything else was pushed out of the first version on day one.
Design Clipper OverlordSettings, three ways
A read-only Settings tab became an editable one, then was removed altogether in favour of an Options pane that slides in from the right on every page, a System cog, and Ctrl+K search.
Decision KongomaxTruthful copy
The site dropped every claim it could not back up: hand-coded, fake visitor counts, a Made with Notepad badge, five placeholder projects. Pastiche is allowed; lying is not. Accessibility fixes shipped alongside.
Decision Clipper OverlordCross-posting through Buffer and R2
TikTok, Instagram Reels, and Facebook Reels are reached through Buffer's free plan rather than each platform's own API, with every video served from Cloudflare R2. The posting cadence rose to four slots a day.
Design KongomaxThe DOS theme becomes a real DOS
The DOS theme's prompt was a menu in disguise. It is now a simulated MS-DOS 3.20 with a read-only C: drive holding the site's pages and a RAM drive D: you can write to. The theme's copy was rewritten in period-true 1986 wording in one revertable merge.
Milestone KongomaxA guestbook, four security reviews later
The guestbook was designed through four rounds of security review before a line was written, then built in six slices. No captcha, no accounts. The newest 30 entries show, 50 entries a day site-wide, and at most 100 waiting for moderation.
Milestone Clipper OverlordGoing to production, and launching a site to get there
Moving the Google Cloud app to production status needed a homepage, a privacy policy, and terms. So clipper-site was born: three static pages on GitHub Pages. After that, the YouTube token stopped expiring every week.
Milestone Clipper OverlordThe operator app, in five slices
The 115-line review page gave way to a real local web app: an Inbox with low-res preview renders and quality badges, a publish calendar, a campaign panel, a Health page, and Stats. Built in five slices in one day.
Milestone Clipper OverlordThe first working pipeline
Download, transcribe, let Claude pick the moments, render 9:16 with captions, review in a 115-line web page, upload. The first real run produced 63 candidates from 9 episodes, and 13 were approved.
Design Clipper OverlordRender v3: framing that follows the shot
After reviewing the first batch, the renderer became shot-aware: it detects cuts, picks one framing mode per shot, keeps on-screen text in frame, and trims silence against the actual audio instead of the transcript.
Progress CookbookA reviewer finds a cross-user write
A code review found a path by which a signed-in user could write to another user's data. It was fixed the same day, a regression test was added, and the attack-case suite grew to cover the pattern.
Design KongomaxThe look bar, per-theme years, and Plain as the first visit
The owner reported that the rotation confused visitors. The answer was a small bar shared by every theme with a Keep this look toggle, a year stamp per theme, and Plain as the theme everyone sees first.
Decision CookbookPhotos, and the decision never to call an AI API
A media Lambda now stores photos in S3 under per-user versioned keys, with a Pexels search and an image proxy behind an hourly limit. On the same day the Claude-backed import fallback and YouTube import were removed: Cookbook will not call an AI API, ever.
Progress Helldivers 2 War RoomFeeds, setup, and a lesson about migrations
Servers subscribe channels to feeds through a /feed setup modal with a catalogue and bulk subscribe. Results wait for the outcome dispatch rather than guessing. A migration numbered 7403 taught the project to check what it was running.
Design Helldivers 2 War RoomA dashboard that edits itself, without tripping Discord
A pinned dashboard message is edited every two minutes with up to five cards. Rates are rounded coarsely on purpose, so edits that change nothing are skipped and the bot stays under the edit limit that returns error 30046.
Milestone Helldivers 2 War RoomRecording history to predict the future
The API gives current liberation, not its rate. So the bot records one history row per poll and computes rates, ETAs, and sparklines itself. /war and /planet arrived with the first deploy.
Design Helldivers 2 War RoomSuper Earth cards
The owner called the first messages a wall of text with no imagery and bland colours. The answer was Components V2 cards: a kicker line, a Steam-blue accent, faction sigils, banners only on Major Orders, and a strict colour rule.
Milestone KongomaxMaking the fakes real
The mockups had a visitor counter, a web ring, a game leaderboard, and a projects list that were all placeholders. One day later each one was backed by something real: KV, a ring with next/prev/random, D1, and the actual projects.
Design KongomaxRotation rules: when the look changes and when it holds
A reload rolls a new theme. A theme locks for the visit and expires after 30 minutes idle. A visitor can lock their favourite, and locking or unlocking no longer reloads the page.
Decision Helldivers 2 War RoomPivot: from chat bot to war room
The project began as a Discord bot that would answer questions with Claude. Reading the consumer terms closed that door on day one. It became a war room instead: live Helldivers 2 campaign status, Major Orders, and liberation rates, posted to a server.
Milestone KongomaxSix mockups, six themes, live by nightfall
Six theme mockups were approved in the morning. By evening the skeleton, a theme contract, an edge routing function, and all six themes were built in parallel, checked by a QA pass, and kongomax.com was live.
Milestone CookbookCI/CD and one item per recipe
Deploys moved to GitHub Actions with OIDC, no long-lived keys, and a verify step that hashes what CloudFront serves against what was built. The database changed from one document per book to one item per recipe, with revision snapshots and an admin restore.
Decision KongomaxThe brief: a Web 1.0 homepage with rotating themes
Kongomax started as a one-page brief: a personal homepage in the spirit of the early web, free to run, every asset self-owned. The signature idea arrived the same day: the whole site re-skins itself on every visit.
Milestone CookbookTo AWS in three phases, then open to the public
An eight-phase runbook took Cookbook from a local dev server to CloudFront, S3, Lambda, and DynamoDB with Google sign-in, in one long day. The same evening it opened to anyone with a Google account.
Design CookbookThe phone shell and the Options panel
Below 720 pixels the app becomes a phone app: a sticky header that shrinks from 211 to 61 pixels, filters in a bottom sheet, a bottom nav, and PWA install. An Options panel with Theme, Fonts, and Layout tabs lets each person set the look.
Milestone CookbookFrom a chat artifact to a repository
Cookbook began as a single-file artifact in a chat window. On day one it became a repo with a tiny dev server, a GET and PUT API for the whole book, and its first real bug fix: rice vinegar and white vinegar were being merged into one ingredient.