← all posts

The Maintenance Window Is Dead. This Is What AI-Assisted Engineering Looks Like.

October 2026

The Maintenance Window Died This Month

Five years ago, this article would have been about a maintenance window. Moving a media server meant scheduling a weekend, printing a rollback plan, and holding your breath through hours of "is it going to come back?" This month, on my home network, I moved everything — the media server (it changed hosts twice), all four production VMs (onto a different storage pool), the file mounts (onto an entirely different network), the credentials (all rotated). I never scheduled a maintenance window. Nothing went under a change freeze. The only casualty was two files, which I found and fixed in an afternoon.

That's not a flex about my home lab. That's the shape of a shift that's happening everywhere — and it's the closest thing I have to a concrete answer for the question that keeps coming up in interviews: *what does AI-assisted engineering actually look like when it's not a demo?*

Two Forces Are Pushing Everything Into Motion

People assume the motion is the problem. It's not — motion is the *point*, and two forces are driving it at once.

Force one: AI-assisted engineering collapsed the cost of improvement. Moving a media server used to be disruptive and time-consuming for one reason: the planning, the verification, the troubleshooting, the rollback — that was the hours, and it was all manual. Now the agent I work with drafts the migration plan, generates the verification checks, reads the error output, finds the one commented-out line that broke everything, and writes down what we learned. My job is the judgment — which move to make, when, and whether the result is good enough. The *cost of trying* dropped so far that improvements which were never worth it became routine. No scheduled downtime, verified end-to-end, done before lunch.

Force two: the tech itself is changing that fast. The tools I build on move weekly — new models, new engines, new storage behavior, new security posture. Standing still isn't "stable," it's *rot*. A commented-out mount line, an expired token, a key that quietly stopped working — that's what a static estate accrues. When everything is moving anyway, the only sane policy is to keep the motion deliberate: verify, count, revert if needed, write down what you learned.

The two pushes feed each other. AI makes moving affordable. The changing tech makes moving necessary. Together they turn "we don't touch it because it works" into "we touch it every day because that's how it keeps working."

Everything That Moved This Month

  • The media server moved hosts twice in a month and landed on a dedicated box. The old instances weren't kept as a museum — they were stopped, demoted, and deleted outright.
  • Four production VMs cut over to NVMe in one afternoon — DNS, a worker, the agent host. Copies were made on the storage box itself, verified byte-exact *before a single VM restarted*, then switched over. The largest single move cost ~14 minutes of downtime, and the house DNS is now run by *two* resolvers whose replication I verify by serial number, not by trust.
  • The storage network came alive. Mounts re-pointed off the management LAN onto the 10-gig storage net — with the NFS version chosen deliberately, because I'd learned the client silently pins to its first socket and would have kept riding the slow path. Same bytes: ~105 MB/s on the LAN → 612–615 MB/s on the storage net.
  • The library escaped single-copy. 1.66 TiB — 44,857 files — went from living on exactly one disk to a second copy on a machine with a different pool. The single most important cleanup of the month.
  • Credentials were rotated. Tokens that had sat in documents synced to an unauthenticated share were minted, replaced, rotated out. One of those rotations silently orphaned a script — which is exactly how we found it.
  • A disk grew while running. 60 → 120 GB, no reboot, no restart, verified afterward.
  • None of these used to be a same-day activity. That's the difference AI assistance makes — the improvements were always worth doing; they just weren't worth the risk and the downtime. Now they are.

    What Moving Surfaces

    The honest mechanic: a stack shift surfaces what was already wrong. The downloader's merge script had silently rotted in three independent places — a commented-out fstab line, a rotated API token, SSH keys that had quietly stopped working. Any one was survivable. All three meant the sync couldn't run at all — and nothing on the network knew, because the tool that was supposed to be the alarm was the thing that was broken.

    The old instinct would have been "see, don't touch." The new one: you find these *because* you can afford to move. A static stack never discovers where its dependencies actually are. A moving one does — and then you fix it, verify it, and move again. Discovery is the dividend of motion, not its cost.

    In this case the discovery was two files: 89 MB and 379 MB of Genesis covers, downloaded *after* the merge script's last edit — found by diffing the downloader's folder against the library by name and size, not by guessing. Recovery was boring and correct: copy over the storage net, verify by sha256 on the far side, rescan with the *current* token, count the result — 31 library items, 31 files on disk.

    One detail that earned its keep: both missing files had names with a single quote and typographic quotes. Embedding those in a shell command produced empty 0-byte files; transferring the names over the protocol worked. Filenames are data. Treat them like it.

    The Operating Rules I'm Taking Forward

  • Verification over trust — measured, not assumed. "It worked last time" is not evidence, and neither is a tool that prints "complete." The only evidence is a fresh run with a counted result on the far side: a sha256 match on the destination, an item count that equals a file count. Assert the output; don't read the message. (This applies to the AI exactly as it applies to the script — verify what it did, don't trust what it says it did.)
  • A comment is a change of state. Every commented-out line, every disabled mount, every rotated credential is a dependency you haven't met yet. When you disable something, check what depends on it. When you rotate something, find every holder.
  • The watchers need watching. The tool that guards the system rots the same way the data would. If the watcher isn't tested, you don't have a watcher — you have a file.
  • Measure with the tool built for it. Memory says deleting files frees space; on a snapshotted ZFS dataset it frees *nothing*. I deleted 5.56 TiB and reclaimed exactly zero bytes — until I read the actual documentation, destroyed the snapshots, and got 5.90 TiB back. The rule: look up the semantics, dry-run the destructive command, verify the reclaim landed.
  • Bulk data rides the storage network, never the LAN. Not because of bandwidth — a saturating LAN transfer degrades the internet path everyone else uses. The 10-gig net exists so the internet path stays clean. 68× better latency to the same machine was the tell.
  • Rapid change is the mode, not the exception. The goal isn't to stop the motion. It's to make the motion safe — verified, counted, and reversible at every step.
  • What AI-Assisted Work Looks Like, on the Front Lines

    This is the part I keep coming back to when an interviewer asks *"what does working with AI actually do to your day?"* The honest answer isn't a demo of a chat window. It's this: an operator whose reach got bigger because the cost of careful improvement collapsed. I can now do, in an afternoon, verification and remediation that used to be a week of risk. The downtime disappears. The rollback plan is expected, not a luxury. The documentation gets written because it's cheap to write. The failures get found because it's cheap to look.

    Everybody is going to need to learn to do their work with AI assistance — not as a parlor trick, but as the operating mode of a system that changes every week. This is the front-line shape of that: a human making the judgment calls, an agent doing the scaffolding, and a discipline of verification that keeps the whole thing honest.

    The stack shifted. The shift is the work.

    What's Next: Making the Watchers Real

    The honest gap through all of this: the estate moved faster than its awareness did. The alarms were afterthoughts — the merge script that was supposed to notice drift was the exact thing that had rotted. So the forward work is deliberate, two concrete things:

    1. A topology manifest. One file that says what runs where — hosts, services, mounts, credentials, dependencies — so "what depends on this?" is a lookup, not an archaeology dig through fstab files and cron tabs.

    2. A unified daily stack-state assertion. One check, every morning, asserting the whole estate in a single pass: the library is writable where it's served, the merge path resolves to the live mount, the application tracker's checksum is identical on every host that holds it, the pipeline shows a fresh run.

    One instrument that either passes or fails loudly — not eleven scripts quietly assuming each other. The watchers aren't going to be late to this next phase, because this time they're being built in, not bolted on.

    The Numbers

  • 0 scheduled maintenance windows — for a month that moved almost everything
  • 2 host-moves for the media server; it now serves from a dedicated box
  • 4 production VMs cut to NVMe in one afternoon; largest single move ~14 minutes, verified byte-exact before any restart
  • 105 → 612–615 MB/s — same bytes, from the LAN to the storage net
  • 1.66 TiB / 44,857 files — the library, now with a second copy on a second machine
  • 5.90 TiB reclaimed — the payoff for reading the snapshot documentation instead of trusting memory
  • 2 files, 468 MB, recovered in an afternoon: diff → copy → sha256 → count; 31 = 31
  • 2 deliverables next: a topology manifest, and one morning assertion that watches it all
  • Built on a home lab, powered by local models, and owned by Andrew Katana.

    Connect on LinkedIn →