A note about this build log entry: I published this after the week it covers. DevNitro reconstructed a draft from work-related entries in my journal, Git commit history, and time tracking. I reviewed, edited, and approved the final post. The story reflects what I knew and built at the time.

From the Backlog to the Build Log

Week of February 20 - February 26, 2026

What I Worked On

This was the week I connected two things that had been living apart: the parallel work DevNitro can do, and the money it costs to do it.

The first half was workstreams. A workstream is a slot of running AI work. If you want an agent grinding on three issues at once, that is three workstreams. The problem is that slots are a shared, limited resource, so two requests can race for the same one. I rebuilt allocation to be atomic, so a workstream is claimed once and only once, even under a burst of parallel requests. I added per-conversation workstream management, a client-side heartbeat so a long-running stream stays alive, and workstream support baked into issue claim, release, and extend. When a burst pushes past the limit, DevNitro can now auto-purchase a workstream pack instead of just failing (if enabled by the organization).

The second half was billing, and it was a bigger job than I expected. I tore apart the old model and rebuilt it around subscriptions, orders, invoices, and line items. Pricing moved to line items instead of being smeared across the org record. I wired in Stripe invoice and payment webhook sync so the database reflects what actually happened at the processor, added grandfathered pricing so existing customers keep their rate, and redesigned the billing UI to unify plan and cycle management with real order history. The two halves meet at seat and billing enforcement: you get a workstream if your company has an active seat and is paid up.

Underneath all of it, I kept refactoring the agentic loop and the terminal UI so the code would stop fighting me.

What the AI Did Well

The billing rebuild is the kind of wide, pattern-heavy work the agent handles well once the shape is clear. New Dapper stores, order and invoice services, seed data for status types and payment method types, and the Stripe webhook plumbing came together cleanly. It also did the boring, valuable structural work: splitting the agentic loop and the TUI app into partial classes by concern, so a 2,000-line file became a set of files you can actually reason about. This built on last week's memory and roles work, which had already pushed a lot of logic out of controllers and into services. The files should have never been that large to begin with, but the agentic loop grew organically over time, and now it is a set of services that can be reasoned about in isolation.

What Needed Correction

The hard part was everything around cancellation and recovery. When you cancel a running agent, or the process crashes, or the language model resets its session mid-task, the system has to come back to a sane state instead of leaking half-finished work into the next turn. I spent real time preventing state leakage and event interleaving after a cancel, adding recovery context so a reset session knows where it was, and unifying session recovery across providers on top of the context model that now backs the stateless ones. These are the bugs that only show up after real use, and they do not announce themselves. I had to reproduce them by hammering the TUI in a stress-test mode until the focus-stealing and event-ordering problems surfaced.

The billing overhaul also forced a pile of small corrections: whole-dollar currency formatting, product names that were not showing in the subscriptions UI, and navigation that still said "Companies" when the model had moved to a single company.

What Shipped

DevNitro has an atomic workstream system with per-conversation management, client heartbeats, seat and billing enforcement, and auto-purchase of packs on a burst. Billing is rebuilt around subscriptions, orders, invoices, and line items, with Stripe webhook sync, grandfathered pricing, and a redesigned UI. The agentic loop and TUI are refactored into partial classes, session recovery is unified on the Recursive Language Model, the Docker workspace flow has E2E and integration tests on .NET 10, and the conversation viewer now takes chat input with real-time updates.

The Numbers

Category Hours
Product / Features 50h 53m
Content 6h 13m
Deploy / Infra 4h 20m
Business 3h 13m
Testing 2h 49m
Docs / Skills 1h 41m
Community 1h 11m
Total 70h 20m

Seventy hours, and it shows. Billing alone was almost twelve, workstreams close to eight, and the refactor and agentic loop ate another eleven between them. This was a build-the-plumbing week, not a demo week.


A solo developer with AI does not need billing or workstreams. A product that a team pays for needs both, and they have to be correct, because getting money and parallel work wrong erodes trust fast. This week was the unglamorous foundation under the fun parts.

Curious how this site was built?
Watch the 5-minute walkthrough at devnitro.com →

An AI built this blog (but not this post)

This entire blog system (domain models, database, services, UI, auth, etc.) was built by DevNitro on its own in 95 minutes. I recorded every second.

    We respect your privacy. Unsubscribe at any time.