Honesty Invariants
Scope: the fail-closed rules the platform holds everywhere (coded, not just documented). Status: as of 2026-11-09 Blueprint sources: AGENTS.md (Mandatory Architectural Mandates), module doc comments across apps/agent-bff/src, docs/commercialization/41_WEEK_IN_REVIEW_2026-11-08.md
Facts
- Zero bespoke tables. All domain entities map into
claim,truth_node/truth_edge,resource/resource_edge,integration_entity(Stratum 356). If unmappable → STOP and ask the user (source: AGENTS.md mandate 1). - Declarative-first. Lookups, thresholds, packs, maps live in NATS KV (
SOVEREIGN_LOOKUPS/SOVEREIGN_SCENARIOS/SOVEREIGN_TEMPLATES) or datasets; runtime never reads disk (mandate 4); scenarios load fromSOVEREIGN_SCENARIOSand orchestrate via Kestra + Camel (mandate 5). - No smoke code. No mocks, synthetic fixtures-as-truth, dummy coordinates, or hardcoded card/metric values. Every line production-grade (mandate 10/12).
- Fail closed. Infrastructure errors → 502/503/422/throw (never synthetic
"OPTIMAL"/"APPROVED"/deterministic fallbacks — mandate 6); payloads that don't match a real contract → 400 (mandate 7); unavailable engine →invent_refuse_liverefusal (universal on module responses). - Soft≠LIVE honesty. Soft apply = validate + plan, zero writes (writes only onto real canonical facts when explicitly designed). Nothing sets
live_gate_met/infra_readywithout REAL probe results (see claims readiness: all five probes must genuinely pass) — env flags alone never count; and infra-ready is not rollout (see D-06 readiness). - Fake-test prohibition. Tests asserting magic numbers from non-existent engines are fakes; never code to satisfy them — flag them (mandate 8). Module tests use injected fakes of the contract (failures simulate, successes mirror real shapes), never of infrastructure results.
- Price honesty. No invented prices/savings percentages; pilot SKU prices stay unpublished until a real product decision.
- AI honesty. Hooks never advance governance on their own unless
require_for_advance; default-off; engine-down → hook-only refuse (CLAIMAI-00). - Event-spine honesty. spine consumers never mutate PoCE/claim state; PoCE steps come only from the guarded path, never from consumer receipts (zero-Surreal-write rule in
claims-event-consumer.js).
Open items / gaps
- Invariants are enforced per-module (each response carries
invent_refuse_live/live_gate_metwhere relevant); there is no cross-cutting lint that catches a future module missing them.