Sprint Review
i18n Infrastructure (vend/monocle)
This sprint I closed out a good chunk of the Transifex stable-key effort. I landed the key-naming rule with a WARN severity and cross-package duplicate detection in PR #17239 for LRX-41108, which gives us guardrails across the monorepo so translation key hygiene stops being a matter of vigilance and starts being a matter of tooling. Right after that I shipped the offline hash validator in PR #17315 for LRX-41110, which checks reconciled keys against the Transifex API without needing a live call, so CI can catch key drift on its own instead of waiting for someone to notice a string quietly went stale. I rounded it out by publishing documentation for the _key convention, the hash bridge, in PR #17516 for LRX-41113, so contributors have a real reference instead of having to reverse-engineer the reasoning from the code. For the demo, I plan to run the offline validator against a branch with a deliberately mismatched key to show the failure mode in action, then walk through the docs page explaining why the convention works the way it does.
QBO Sync Bug Fix (vend/vend + vend/webregister)
The other big thread this sprint was closing out LRX-43920, the QuickBooks Online sync bug where zero-tax product lines were blocking sync because the No Tax fallback only ever applied to discount lines. I extended that fallback to cover any zero-tax-component line in the backend with PR #23571, and backfilled tax_components for regular line items in webregister with PR #7364 so we stop sending an empty array downstream. Between the two, this closes off the whole family of that bug rather than leaving a narrower variant to resurface later. The demo is straightforward: create a sale with a zero-tax product line, complete it, and confirm the QBO sync goes through clean.
OpenAPI Spec Update (vend/api)
I added the missing iPad Register blocking fields to the /retailer OpenAPI spec in PR #727 for LRX-43897. It's a small fix on paper, but it unblocks external consumers who rely on that schema being accurate rather than aspirational.
External PR Reviews
I spent a fair amount of review time on the LSPay side this sprint. I reviewed and approved the server-driven payment recovery fix in PR #7392 for LRX-44333, work that deserves careful eyes since recovery paths only get noticed when they fail at the worst moment. I also reviewed the DelayedTooltip addition for LSPaySplitButton along with the E2E CNP test updates in PR #7351 and PR #7352 for LRX-43893, and reviewed the LSPay telemetry enrichment for recovery transactions, overwrite handling, and terminal events in PR #7332 for LRX-43878.
Rules as Written Podcast App (HoukasaurusRex/rules-as-written-podcast)
On the podcast app, I shipped Better Auth as the new authentication foundation in PR #315, replacing the previous auth layer as Phase 1 of a larger auth milestone. Building on that, I named and modeled the signed-in non-member identity state as "guest" in PR #316, which gives the app a clean three-state identity model of guest, member, and premium. I followed that with Party Tracker Premium entitlements gated to the guest state in PR #319, which sets up a clear upgrade path for users.
Beyond auth, I shipped HP tracking for characters and containers in PR #314, along with character and container detail modals in PR #311. I also added