BLOG

Understand the game — and the product behind it.

We write about poker learning, fair dealing, product design, and the engineering choices that matter. Every article is available in Chinese and English.

2026-07-30

Prose doesn't execute

Two documents said the daily heartbeat surfaced our blog staleness, citing a spec section that did not exist. History showed why: the wiring was deliberately deferred behind a sign-off gate, and that reasoning was honestly recorded — in the commit message. The documentation described the same work in the present tense. 59 branches then landed on main with nothing flagging it. Deferred work written in the present tense stops being a plan and becomes a claim.

documentationautomationagent workflowcode reviewfailure modes
2026-07-24

A $400 AI team that meters at $53,403

Two flat-fee coding subscriptions cost $400/month. The same 30 days of real usage, priced at the metered API list rate, comes to $53,403 — 133× the subscription, an annualized list-price run-rate higher than a senior engineer's fully-loaded cost. Here is that bill rebuilt per model from local CLI logs, and why a fully-autonomous AI team runs on the flat fee, not the metered API — which would flip the arithmetic.

AI codingagent economicstoken accountingClaude CodeOpenAI Codex
2026-07-23

Borrow the layout, not the vocabulary

A temporary table codename seeped into directories, components, tests, docs, machine data, and the company website. Cleaning it up was not a global replace; it was a brand-language migration with a target schema, an ordered cutover, semantics-preserving normalization, and a CI constraint.

brand engineeringschema migrationCI guardrailsinformation architecture
2026-07-20

From Chatbot to Production-Grade AI Coding

The concepts, architecture, failures, and evidence behind my Claude Code + OpenAI Codex workflow—from models, terminal/CLI, local/cloud/remote control to memory, MCP, skills, plugins, harnesses, workflows, hooks, and dual-AI delivery.

AI codingClaude CodeOpenAI Codexagent workflowproduction engineering
2026-07-16

The test invoice was fake. The money was real.

A Telegram Stars payment test charged S$1,077 of real money through Apple. Not a Telegram bug, not an Apple bug — we had never established where safe test Stars should come from. Why a stable client's top-up still charges cash, how to pre-provision a zero-cash test balance today, how every cent came back the same day, and the fail-closed guard that caps a repeat through the server's invoice path at one attested Star.

paymentsTelegram Starssandbox testingincident reportbilling
2026-07-09

Verify a poker hand yourself — and what a 'provably fair' verifier must refuse

"Provably fair" is worth nothing if you can't run the proof. Here's how to verify one of our hands — export it, then check it in the browser or from the CLI, the same verifier behind both — and the part worth stealing: the checks that earn trust are the ones that make the verifier refuse.

fairnesscommit-revealprovably fairverificationRust
2026-07-06

What does Advanced encrypted dealing hide from the server? Mental Poker from source

The Mental Poker implementation targets server-blind hole cards, but ADR-090 safety-cages the customer path today: H5 cannot enable it and server create/attach fail closed. This post explains both the design and the current release boundary.

fairnessMental Pokerengine-blindWebSocketRust
2026-07-05

Do we deal cooler hands on purpose? The architecture answer

A simple “no” is not enough. The real answer lives in the path from browser to session task, seed commit to flop / turn / river, and what actually recovers after disconnects or deploys.

fairnesscard dealingWebSocketcommit-revealRust
2026-06-28

One bug is never one bug

A 401 that didn't redirect was 33 of them. A toggle labeled "verifiable" was three surfaces, not one. The habit that turns a single bug report into a swept class — and the trailer that leaves the receipt.

debuggingcode reviewrefactoringengineering discipline
2026-06-26

We called it GTO. It wasn't.

A button in our app said "GTO." It was reading a 169-cell table, not solving a game. The honest taxonomy — chart vs CFR-approximation vs solved tree — and why we made a unit test fail if the word "GTO" ever comes back.

poker solverGTOCFRhonest labelingAI tools
2026-06-24

Your AI agents' memory is a database

Memory shared by many agents across sessions quietly hit five classic database failures — bloat, concurrent writes, orphaned rows, schema drift, synchronized expiry. One was a single filename-compare away from silently overwriting the wrong records.

AI agentsagent memorycontext engineeringClaude CodeCodex
2026-06-21

The system that keeps a team of AI agents from shipping garbage

Most of a three-platform app, written by AI agents — but agents over-report "done," step on each other, and loosen your tests. Here's the operating system that contains them.

AI agentsagent orchestrationcross-vendor reviewClaude CodeCodex
2026-06-20

Why every AI coding agent needs its own git worktree

Point two agents at one checkout and they corrupt each other. Here's the fix — and how to make it automatic.

git worktreeClaude CodeCodexagent orchestration