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 March 6 - March 12, 2026
What I Worked On
This week I added a provider-agnostic payment layer with support for multiple payment providers, seat suspension tied to payment events, and a reorganized test suite.
I pulled DevNitro's payment logic behind the provider-agnostic layer with unified payment method and customer APIs, so the rest of the system talks to one interface and does not care who processes the money. This was GCT work. There is a payment audit trail on subscription creation so I can see exactly what happened and when.
I made DevNitro seats enforce themselves. I built a seat suspension system tied to payment lifecycle events, with background jobs that check active seats and suspend access when a payment fails, then restore it when things recover. I added cancel and uncancel for individual subscription lines, so a company can drop one seat without nuking the whole subscription. This picks up right where the workstreams and billing overhaul left off, and it leans on the same Stripe webhook plumbing from December, now generalized.
Distribution kept moving too: I unified versioning so every artifact stamps itself from Git tags and commits, added VSIX deploy with auto-registered releases, and made sure the CLI and the VS extension refuse to run without a subscription.
What the AI Did Well
The provider abstraction is a good fit for the agent. Once I decided the shape of the payment interface, adding a second and third provider behind it was fast, methodical work: new webhook handlers, a provider-agnostic test helper, and unified APIs that all conform to the same contract. The agent also did a large, careful test reorganization, splitting the suites into separate Integration and Unit projects across three repos and tightening nullability along the way. That is exactly the tedious, pattern-heavy work I want it doing.
I also improved the agent loop itself: a tool-search tool so the model can discover and select tools instead of being handed all of them, global output truncation with safety limits so a giant tool result cannot blow up the context, and globally unique tool call IDs across every provider.
What Needed Correction
The hallucination fight from last month got more precise. I taught the Claude Code path to distinguish hard hallucinations from soft ones, because they need different handling, and expanded the set of tools it intercepts. Getting the distinction right took iteration.
Distribution had its own gotcha. The VS extension could not call the devnitro CLI because the extension only had access to an older .NET runtime, so a subprocess would fail in a way that looked fine locally and broke in the packaged build. I had to override the runtime path for child processes on Windows to fix it.
What Shipped
DevNitro has a provider-agnostic payment layer with Stripe, Authorize.NET, and Square behind one interface, a payment profile service, and a payment audit trail. Seats suspend and restore automatically on payment events, and individual subscription lines can be cancelled and uncancelled. The test suites are split into Integration and Unit projects. Distribution stamps versions from Git, deploys the VSIX with auto-registered releases, and gates the CLI and extension behind a subscription. The agent loop has a tool-search tool, output truncation, unique tool call IDs, and sharper hallucination handling.
The Numbers
| Category | Hours |
|---|---|
| Product / Features | 37h 11m |
| Testing | 14h 10m |
| Content | 2h 58m |
| Community | 0h 11m |
| Total | 54h 30m |
Fourteen hours of testing is the number I am proudest of. Payments are the one place you cannot afford to guess, so the test-suite split and the provider-agnostic test helper earned every minute.
Payment processor lock-in is a quiet risk. You do not feel it until the day you need to switch, and then it is the whole system. This week was about making sure that day, if it comes, is a config change and not a rewrite.
Curious how this site was built?
Watch the 5-minute walkthrough at devnitro.com →
0 Comments
No comments yet. Be the first to share your thoughts!
Leave a comment