Proof
Each claim, with its test
Each claim below has a test in the repository. Where we also watched it work on the deployed app, it says so.
- Tested green in the test suite on main
The chef's authority
What the agent may do alone, and what only a person can approve.
-
An approval covers the exact terms the chef saw. A later price or quantity change voids it, and the screen shows what changed.
-
A hard limit that no approval can pass, even when the order is split across lines.
Testedstore/ceiling.test.ts -
The agent never orders over its spend caps on its own, even when it splits an order.
Testedevals/scenarios (s5) -
Decisions are grouped by reason, so an allergen change never rides along with routine lines.
On the live app, the chef signs off each group separately.
-
Each ordered line names what allowed it: the mandate or a specific approval.
Testedstore/authority.test.ts
Orders
What happens when an order is placed, retried or late.
-
Sent twice by accident? Still one order, one delivery.
On the deployed Postgres: one key four times gave one receipt; three competing keys gave one receipt and two refusals.
-
Approve, place the order, get one receipt, all in the kitchen screen.
The buffet: 18 lines on one order, one receipt. How many lines the supplier confirms varies per run: the supplier is simulated.
-
The order cut-off is enforced when ordering. A date that's too late is caught first, with the cut-off named and the next day offered.
"4 kg lactose-free butter for tomorrow" after the cut-off: the request names the passed cut-off and offers the next delivery day. Nothing is ordered.
-
A delivery on a day the kitchen doesn't receive goods is held for sign-off, never ordered alone.
-
Amounts are physical. 10 litres of milk is sized in litres, then turned into Valio Aimo's packs.
-
An amount that doesn't fit Valio Aimo's pack step can't be ordered.
Testedevals/scenarios (s3)
Stock and product facts
How unknown stock and web facts about a product are labelled.
-
Products whose stock Valio Aimo doesn't state never count as covered, and products with stated stock rank first.
On the live app those lines read "Ordered, awaiting supplier", not counted as cover.
-
A lactose-free request is never bought as ordinary milk, through substitutes and edits.
On the live app, the request resolves to Valio's lactose-free milk in English and Finnish. The substitute and edit half is covered by tests.
Testedrequest/fixes.test.ts -
The Why drawer cites the web for net content, origin and ingredients, with each source shown.
Agents and sandboxes
What an outside agent can and can't do.
-
Outside agents get the same tools over MCP and REST, and can never approve.
On a judge key: reading works; approve and changing the mandate are refused; the MCP tool list has no approve tool.
-
Every visitor gets their own sandbox, and a judge key works only there.
Two browsers: neither can read, approve or reset the other's sandbox.
-
The chat turns plain words into a held plan and a decision card, and refuses to approve.
-
An event brief becomes a menu proposed by Gemini, every amount labelled an estimate, and then a plan once the chef accepts.
-
For the cases we test, in English and Finnish, the same words give the same basket through the request page, the agent and REST.
Testedevals/fidelity
What we don't claim
Things it would be easy to say and that aren't true yet.
- Real orders. Valio Aimo's API has no order endpoint. Orders are simulated and nothing is sent to Valio Aimo.
- Recipe-aware ranking. Substitutes are ranked by the kitchen's rules and Gemini Decisions, with a rules fallback. We haven't measured recipe fit.
- Vector search. Catalogue search is lexical.
- A live recall hitting our orders. Context.dev checks Ruokavirasto's recall list every 5 minutes and matches each notice against the catalogue. The recall that affects an order is a drill.
- Data residency. We make no claim about where data is stored.