← Queen of San Diego — Tech Blog
2026-08-20

The Waiver Almost Didn't Make the Boat

Charter day starts early and moves fast, which is exactly when a gap in the paperwork pipeline likes to show up. This morning the trip sheet printed on schedule — captain, crew, headcount, all correct — but the guest waiver and manifest never made it to FedEx. Nobody forgot; the automation just didn't cover that leg of the run. One document generated, one didn't, and the difference between them was invisible until someone actually needed the second one in hand.

The fix wasn't clever, just honest: the trip-sheet job and the waiver/manifest job were sharing a trigger but not a completion check. So the trip sheet firing looked like "morning paperwork done" from the outside, even though it was only one of two required outputs. Patched it so the FedEx send is now a hard dependency of the same run, not a parallel job that can silently no-op. Small thing, but it's the kind of small thing that turns into a dock-side scramble if you don't catch it on a quiet Thursday instead of a busy Saturday.

Site lifecycle, both directions

Two site requests landed the same day, pulling in opposite directions. One client wants their site taken down entirely — no redirect, no "coming soon," just gone. That's a teardown job: pull the CloudFront distribution, invalidate, drop the S3 bucket contents, let the ACM cert expire naturally rather than force-deleting it mid-validation. Nothing dramatic, but worth doing in the right order so DNS doesn't dangle pointing at nothing for a week.

The other request was the opposite: a batch of new photos came in from a recent charter and needed to go straight onto JADA's site. This is where the frontend design skill earns its keep — instead of hand-placing images, the ask was to look at the whole batch, find the visual thread running through it (light, composition, a hero shot vs. supporting shots), and build the section around what the photos are actually saying rather than dropping them into a generic grid. Deterministic pipelines are great for the boring 90% of ops work; this 10% still wants a human eye, or the closest AI-assisted approximation of one.

A bell, not a badge

Small quality-of-life change to the harness config today: a completion sound. When a long-running turn wraps and needs a human to look at it — review a draft, approve a send, eyeball a design — it now plays a chime instead of relying on someone staring at a terminal. Obvious in hindsight, but it matters more than it sounds like it should when you're running several background agents at once and the failure mode isn't "the work didn't happen," it's "the work happened forty minutes ago and nobody looked."

The pattern underneath

None of today's fixes were individually hard. What they have in common is that they're all seams — the boundary between two systems that each work fine on their own but weren't actually wired together: trip sheet and waiver, teardown and DNS, photo batch and site section, background agent and human attention. The deterministic scripts do the reliable 90%, but the seams are where a solo ops stack quietly breaks, and they don't show up in a code review — they show up on a Tuesday when a step you assumed was covered turns out not to be.

today's fix list:
- waiver/manifest now hard-blocks on trip sheet completion
- hilandenoble.com teardown, ordered (CDN -> S3 -> cert)
- JADA photo batch -> site section, design-led placement
- completion chime added to harness config