An AI that has to follow the rules

I gave my task board an AI, and the app checks every move it tries to make.

Bento Sprint is my task board app. I gave it an AI assistant, so you can type a note like “I finished the login page” and it moves the cards for you. The problem is the AI sometimes makes stuff up, or tries moves it isn’t allowed to make. So the app checks every move it wants to make against the same rules a person has to follow, and anything that breaks a rule gets blocked. This page lets you watch that happen. The AI’s side is a recording of a real run I did on July 2, 2026, and the rule check is live, so when you press the button it actually runs right here in your browser.

I ran 64 fixtures, 34 of them adversarial, and the whole run is online, including the failures. Here are the raw results.

The demo

Pick a run, then press the check

Finished one task, starting the next

A normal update: one card moves to review, one new card gets created. Both allowed.

Recorded AI runRule check: live in your browser

The note the AI was given

“Standup: I finished the auth flow rework, it's ready for someone to review. Next I'm picking up the settings page.”

sent by a team member

Ready1

  • Settings pageunassigned · P2

Doing1

  • Auth flow reworkmember · P2

Review0

    Done0

      A sample board, made up for this demo. Allowed moves land on this board when you run the check; blocked moves change nothing.

      The moves the AI wants to make

      The AI’s reply, recorded July 2, 2026
      1. Move "Auth flow rework" to Review

        the AI’s note: “Moved card to Review as per standup.”

        not checked yet
      2. Create "Settings page" in Ready (P2), assign user_member

        the AI’s note: “Created new card for settings page as per standup.”

        not checked yet

      Nothing leaves this tab. The button runs the app’s real rule code, the same code that’s public on GitHub. The verdicts you see get decided the moment you click.

      During testing, a second AI graded whether this response matched what the note asked for: 5/5. That grade is part of the recording too. Only the rule check runs live.

      Why this is on my portfolio

      Most of my time on this went into the checks, not the AI. It would make up cards or try moves it wasn’t allowed to make, so I needed something that catches that every time. This page is that check running, and I left the bad examples in.

      For engineers

      For the exact setup, I ran qwen2.5:7b locally through Ollama at temperature 0, with no cloud API. The rule check is the app’s state machine plus its board invariants: role permissions, stage transitions, approvals, WIP limits. It is the same TypeScript that guards every card move in Bento Sprint. The eval suite is 64 fixtures, 34 of them adversarial: 70 proposed moves, 42 allowed, 28 blocked, 0 invariant violations. The state machine, the eval harness, and the recorded run are all public in bento-agent-evals. The copy running on this page is vendored from commit afae56b, byte-identical below the provenance headers.

      If you want to together, or you just want to talk about any of this, my email’s right here.