Weekly chapter81
2026-W40 · ending October 3, 2026

The Week the Walls Came Down

The week started with a panic that felt like a heartbeat skipping. It was 2:15 AM on Monday, and majiks.online was lying to Google. The track pages were returning 404s to everyone, including admins. The trac…

128commits10systems6min read
Product capture

Wealth-Ops — live product surface.

The week started with a panic that felt like a heartbeat skipping. It was 2:15 AM on Monday, and majiks.online was lying to Google. The track pages were returning 404s to everyone, including admins. The tracks were public, searchable, and sitting in the sitemap, but the production response codes told a different story. That is a hard thing to miss once you see it, but easy to hide until you actually check the raw output. I spent the morning wrestling the site into shape. I fixed the route to redirect correctly to the album view and tackled the JSON-LD schema that was lying about audio formats. The code was claiming audio/mpeg for MP4 streams. That is technically wrong and confusing for crawlers. I made the encoding format come directly from the file extension. It is the only source of truth that does not get confused by upload metadata. I also aligned the route and the page to use the same mapping logic so the data stays consistent. I merged PR #38 and deployed by 3:54 AM. The 404s were gone and the schema was honest.

The other fight on Monday was performance. The mobile Lighthouse scores were terrible, with LCP times hovering around 8.5 seconds. The network was fast, so the delay was in the render. I found the culprit on the track page: a decorative backdrop painted from a 713 KB PNG. That is absurd for a background element. I routed it through the Next.js image optimizer, which shrank it to a 372 byte WebP. The home page had similar issues with 919 KB PNGs being served directly from /api/images. I fixed those too. I merged PR #39 and deployed by 3:54 AM. The track page is now light. The home page is lighter. The render delay is gone. I also submitted the sitemap to Search Console and Bing. Majiks.online showed 2,276 discovered pages. Majiks.music failed to fetch, which is a separate problem for another day. The analytics dashboard was unreachable because of a Keycloak client mismatch, so I could not check the live numbers, but the frontend changes are deployed and the code is clean. In ops-center, I pushed six commits to fix the billing settlement queue. The queue was not behaving correctly against a real Postgres database, so I rewrote the logic to make it deterministic. I also fixed a bug where service-org debits would vanish if the usage log insert failed. That is a data integrity win.

Tuesday was about stripping the paint. I spent the day tearing down the illusion that agents and humans look the same under the hood. The goal was simple: guests and clients should see the right data, but never the machinery. If you are a guest, you should not know which seats are reserved for agents. The code was lying, so I fixed the mirrors. The biggest fight was in room_class and the migration 024. I had to ensure that floors are cached based on a viewer-independent verdict. That means the logic deciding if a line is a floor stays the same whether I am an admin or a guest. I also had to make sure that removals never floor a line and that threads stand alone. It was a mess of edge cases. I wrote 1296 lines of changes just to make sure stale dev-* rows are never treated as house lines. The migration had to be perfect. If it overwrites something it shouldn’t, the whole crew structure breaks. I restored what it overwrote and left Perry alone. Perry stays alone.

I found the culprit on the track page: a decorative backdrop painted from a 713 KB PNG.

Then came the gateway keys. An owner is one existing human. Every change is logged. I made the PATCH endpoint accept the owner and ensured the mint operation answers with the stored owner. It never loses the key. If it did, we would have a security hole the size of Texas. I also fixed the guest view so they no longer learn which agents are gateway seats. Before this, a guest could peek behind the curtain. Now, they see a clean room. The messages endpoint needed the same treatment. Who is an agent is read from the sender’s row, not from the token. Tokens can be spoofed. Rows are the source of truth. I also made sure spoken lines keep via=voice and that client metadata is an allowlist at the public HTTP boundary. You cannot forge agent metadata if the boundary blocks it. I added a check so a guest learns an agent’s kind and nothing else. Kind is information. Credentials are not. On the web side, Lane A got its final shapes. I added last seen, members metadata, shared floor, and the thread’s seed line. The density and phone polish followed immediately. The e2e tests passed with the new surfaces. The UI looks like a room now, not a list of data structures. The cart control in the Commerce-Ops storefront pushed the nav over and added 14px to every mobile header, but that was a different beast. Persephone QA on T8 (Grok 4.7 lane, exit 0) The pixel diff was clean. All of this required a lot of tests. I wrote 421 lines for context, 553 for notices, and 554 for surfaces. The notices rule is NULL-safe. The history read is index-only. Performance matters when you are unmasking everyone. The day added up to a system that tells the truth. No more fake agents. No more hidden seats. Just lines, authors, and floors. The code is boring now. That is the point.

Thursday started with a blank screen and a deadline that didn't care. I needed a morning brief for the P-00201 shoot, a 1920x1080 shell page that could live on the kitchen wall, look like the v4 kitchen aesthetic, and actually do something useful. Not just display text, but orchestrate the morning chaos. I built shell/morning.html from scratch. It was a tight loop of writing, testing, and refining. The page needed to handle the brief, but it also needed to handle the interruptions. So I added a tap-to-interrupt feature. If the speaking face was talking and I needed it to shut up, tapping it sent a {type:ctl,cmd:stop} command over the opted-in socket. Simple. Direct. No middleman. Then came the TV button. In named mode, it wasn't just a button; it played the steps_named sequence. It was a small detail, but it mattered. It turned the TV from a passive display into an active participant in the briefing. The real challenge was the layout. I didn't want the voice panel and cards to just paint over the notes. That felt messy. I made them take the note's place instead. When the speaker changed, the caption cleared. The TV chip hugged its text. It was about breathing room. About not having everything screaming for attention at once. I verified it headless on uc-1. It ran silently. No errors. Just the page doing its job.

While the code was settling, the day branched out. I built the office reveal kit. It was dry-run proven. Nothing fired at night. The kit included a dark state, a person-detect watcher, and a TEN-HUT audio route. It also triggered the WLED rainbow, lights, and displays wake. Majiks Screen recording started. It was a complex sequence, but the script handled it. run_office_beat.sh on "OK, going to the office" recorded start, snapped the office dark, armed the watcher

Also in the frame

Real product captures — click any to enlarge.

brigade
email ops
majiks
07 / Activity

The week, in commits.

Daily velocity and the systems that carried the work.

44Mon28
55Tue29
·Wed30
25Thu01
2Fri02
2Sat03
·Sun04
Week beginning September 28, 2026.
Index

10 systems,
one week of work.

contact-opsemail-opsmajiks-dspmajiks-music-studio-macosmajiks-music-studio-promultistate-retirement-leadsops-centerpanel-opsunicorn-brigadeunicorn-stable