Design decisions
- Numbers in code: models read and choose; maths is deterministic
- Gateway re-checks: never trust agent-supplied prices or policy
- Diet loaded in full: no similarity miss on allergens (vectors later assist match only)
- Same policy library: engine pre-check + gateway authority
- MCP = REST: one handler, two transports
- Telegram as channel: thin client, same signatures
- Observe ≠ authorize: OTel / Langfuse tune agents; they never sign offers
- Next data plane: PostgreSQL + vector DB for multi-tenant scale