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 November 7 - November 13, 2025
What I Worked On
The migration framework could already build a database from scratch. This week I taught it to walk into a database that already exists and bring it up to date without wiping it. That is Baseline Mode, and it is the harder half of any real migration story, because production databases are never empty.
Most of the hours went there. The database migration framework now takes a baseline of the current schema, compares it to the target, and generates the alter scripts to close the gap. It builds on last month's multi-database migration work, so baseline mode runs across SQL Server, Postgres, and SQLite rather than one engine.
I also finished a formatting pass on GCT: tabs, LF line endings, and the .editorconfig rules applied across 381 files, plus moving inserts and updates to the uow.Columns pattern. GCT merged to main and I tagged it 1.0.4.
What the AI Did Well
Baseline mode has a lot of fiddly SQL. Handling GO batch separators in SQL Server scripts, adding debug output so I can see what the migrator is about to run, and keeping the alter logic correct per provider is exactly the kind of detailed, high-volume work the AI handles well. It moved through most of it fast.
The formatting sweep is another one. Normalizing 381 files by hand would be a miserable day. But instructing an agent to handle it via scripts made it manageable. I simply reviewed the diff instead of doing the work myself.
What Needed Correction
I lost about five hours to my own mistake. I did the formatting work, merged the database changes into main, and kept going, except I had never actually checked out main. So a chunk of the formatting had to be redone on the right branch. Silly mistake.
SQLite also fought me again. The tests would hang, and it came down to file locking: SQLite holds the database file, and the tests were not releasing it cleanly between runs. I stepped through the code to find where the handle stayed open. Slow, tedious, and unglamorous debugging.
What Shipped
GCT's migration framework supports Baseline Mode, so it can upgrade an existing database across all three providers instead of only creating new ones. GCT is formatted to its .editorconfig rules and tagged 1.0.4. I also wrote a small formatter for Razor files that pulls the @code block out, formats the C#, and puts it back, which covers the part of Razor that standard formatters skip.
The Numbers
| Category | Hours |
|---|---|
| Deploy / Infra | 24h 25m |
| Product / Features | 5h 58m |
| Content | 5h 10m |
| Community | 2h 19m |
| Total | 37h 52m |
Most of the week was migrations and the GCT formatting sweep, with a smaller slice on the weekly HowdyChad video. .NET 10 shipped midweek, so some of the time went to watching that land and thinking about what it changes.
Creating a fresh database makes a nice demo. Upgrading one that already holds data, on three different engines, is what decides whether the framework survives contact with production.
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