For Genki

Code it simple, build it robust.

I build payment infrastructure. This page is the application; the commit history is the work sample.

Who I am

I started in payments infrastructure. Then blockchain systems, running in production, with other people's money inside them. Both punish the same mistake in the same way: it costs cash, and it happens in public. There is no support ticket for money that settled to the wrong address.

Insurance is a promise to pay. So is a payment rail. I read a spec the way I read a bank statement: line by line, assuming the total is wrong.

Then I read the diff.

The habit came before the tools did.

Astro
HTML+JS, Django, React, Next, FastAPI + Jinja, Go + HTMX, but never astro yet.
GraphQL
Briefly worked with GraphQL before, but just give me 2 weeks and I can make it sing.

How this page was built

Every change here went through the same loop: specify, delegate, audit the diff, merge or refuse.

Build-time checks for the criteria whose preconditions now exist: C17 both ends pinned, C18 every text/background pair at 4.5:1,

It came back green against the real dist/.

So I gave it a colour it should have failed: #fff6. It read the alpha as opaque white and reported 16.671:1. The real ratio is 3.776:1. The check was right about the page that existed, and wrong about the one it would become. The alpha handling went in with the negative control that caught it.

2cad310

Post-deploy: C24 Lighthouse — Accessibility, Best Practices and SEO all 100, gating. C25 Performance recorded to the job summary, not gating. C28 axe.

It drove Chrome through chromedriver. The driver refused to start against Chrome 151.

Then I read the diff.

I threw the step away rather than pin the version and move on. It came back written on CDP, which the browser already speaks.

268374drejected

The pipeline is red on main. C21 failed:

It was not from main.

I gave you a log without its branch and asserted main was broken. It wasn't. Those lines came from prove-the-gate, the violation I had asked for, doing its job. Nothing in the agent's work needed changing. The diagnosis found the real defect: the byte counter summed .js files only, and printed 0 above a failure about an inlined script. The footer renders that number.

74179e4

How I work with agents

Four steps, on every task an agent touches. This page included. The order matters more than the tooling.

  1. Specify

    I write what done means before the agent starts. The E2E suite runs twice. Not three times. A spec the agent can misread is a spec I wrote badly.

  2. Delegate

    The agent does the work. I do not watch it type. Watching is not reviewing, and it wastes the hour I need later.

  3. Audit the diff

    The agent reports what it did, and the report is not evidence.

    Then I read the diff.

    When the report and the code disagree, the report is wrong.

  4. Merge or refuse

    Two outcomes, and refusing is one of them. A refusal costs an hour now. A bad merge costs a fortnight later.

Guardrails for non-engineers

  1. Constrain the surface, not the person

    They get a change type, not a codebase. Copy, config, a content block. The blast radius is set before anyone opens an editor.

  2. The spec is the artifact

    If they cannot write down what done means, the agent cannot either. Vagueness fails at the same place for both.

  3. Make review mechanical

    CI is the reviewer that does not get tired at six in the evening. Anything a person has to remember to check will eventually not be checked.

  4. Reversibility beats correctness

    Preview deploys and one-click rollback. A wrong change that can be undone in a minute is cheaper than a right one nobody dares ship.

  5. An engineer owns the merge

    Not the writing. The merge. Somebody’s name is on the deploy.

    Then I read the diff.

This works for additive, bounded changes. It stops working the moment a change touches pricing, a policy document, or claims logic. At a §34d intermediary that is most of what matters. A green pipeline is not an answer a regulator accepts. No spec I can write makes those changes safe to delegate. They go to a person who can be asked why, and who has to answer.