Captain's Log 005 — The Weekend I Closed
Captain's Log, Entry 005.
AmaQuiz is UAT-ready. Not "nearly." Not "extended again." On the day I said.
The engine has worked for weeks. The thing that hadn't was me. My failure mode isn't building, it's closing -- I ship a prototype in a weekend, then chase the next shiny thing instead of finishing the boring 80%. This session was about naming that and beating it.
What shipped
A real v1 on Telegram, dogfooded on my own phone: markdown that renders properly (converted to Telegram's HTML subset, not raw asterisks), two reset tools (clear my progress, clear our chat -- both consent-gated), a fix for a repeat-question bug, and a small "school sample" cartridge so a second person can walk the whole flow.
What I learned
Two things, both the hard way.
"Deployed" is not "works." I verified the deploy at the artifact layer -- the code is in the bundle, the data is in the table -- and it looked done. Then I messaged the bot as a real user and found three genuine bugs the artifacts could never show. The dry run as a human is the only test that counts.
Test the real path, not a proxy. I twice called a mid-turn deletion "cosmetic residue" and moved on. Then the live two-message path proved it was tearing the session apart. One clear-call looked fine; a clear followed by a message crashed. The bug lived in the seam between two steps, exactly where a single-step test can't reach.
The pattern I caught
Three times this session I reached for a new feature mid-close -- a daily nudge, Strands SOPs, an adaptive scheduler. Each time it wore the costume of good engineering. Each time I named it, wrote it on the backlog, and went back to finishing. That is the muscle. Capturing an idea is closing. Chasing it is the trap.
A tinker with no user is a hobby. A tinker with one real user is an engineer.
I have a user now. My wife is testing it tomorrow.
Quiz. Learn. Repeat. -- and this time, I closed.