RRetailAgentOS

Evidence · Conformance

The conformance scoreboard

Every reason code a registered evaluator can emit, checked against the committed golden fixture suite — generated at build time from src/lib/extensions/registry.ts and golden.json, not hand-typed. A new reason code without fixture coverage (and without a documented synthetic-only exception) shows up red here automatically.

Machine-readable: /evidence/conformance.json · ← back to Evidence

43Reason codes trackedAcross RAOS-0001, 0002, 0005, 0007, 0008
38CoveredFixture-reachable or a documented synthetic exception
5UncoveredWould fail this scoreboard
23Directly fixture-covered15 more via a dedicated unit test

What this page proves — and doesn't

This scoreboard covers built specs only: RAOS-0000, 0001, 0002, 0005, 0007, 0008, and 0013 pt 1 (Decision Trace). Planned specs (0003, 0004, 0006, 0009–0012, 0013 pt 2, 0014+) emit no reason codes yet and are never shown as covered here — see /specsfor status. RAOS-0000 (foundations) and RAOS-0013 pt 1 (decision trace) emit no reason codes of their own, so they don't appear in the reason-code table below — they do appear in the archetype grid.

Reason code inventory × fixture coverage

Generated from every registered evaluator's reasonCodesdeclaration (plus RAOS-0008's centrally-attached trust codes), checked against golden.json.

RAOS-0001 · Eligibility & Visibility Semantics5/6 covered
Reason codeSourceStatusNote
HIDDEN_PRODUCTvisibility, eligibility✅ coveredAppears in at least one golden fixture entry.
REGION_POLICY_UNDECLAREDeligibility (buildManifest — manifest-build time, not a registered evaluator)✅ coveredSynthetic-only — src/lib/projections/__tests__/projections.test.ts. Emitted by buildManifest() at manifest-build time when MerchantProfile.servesRegions is undefined — a state the required TS field prevents for typed profiles; only reachable via JS/JSON-constructed profiles. golden.test.ts never calls buildManifest, so this can never appear in the fixture grid.
REGION_RESTRICTEDvisibility, eligibility🔴 uncoveredNo fixture coverage and no documented exception.
RESALE_CERTIFICATE_REQUIREDeligibility✅ coveredAppears in at least one golden fixture entry.
TIER_RESTRICTIONeligibility✅ coveredAppears in at least one golden fixture entry.
WHOLESALE_ONLYeligibility✅ coveredAppears in at least one golden fixture entry.
RAOS-0002 · Contextual Pricing (Member + Bulk)7/7 covered
Reason codeSourceStatusNote
BELOW_MOQpricing✅ coveredAppears in at least one golden fixture entry.
BULK_TIER_APPLIEDpricing✅ coveredAppears in at least one golden fixture entry.
CALL_FOR_PRICEpricing✅ coveredAppears in at least one golden fixture entry.
MEMBER_PRICE_APPLIEDpricing✅ coveredAppears in at least one golden fixture entry.
PURCHASE_LIMIT_EXCEEDEDpricing✅ coveredAppears in at least one golden fixture entry.
QUANTITY_INCREMENT_MISMATCHpricing✅ coveredAppears in at least one golden fixture entry.
TEASER_LOCKEDpricing✅ coveredAppears in at least one golden fixture entry.
RAOS-0003 · Fulfillment Feasibility6/10 covered
Reason codeSourceStatusNote
CUTOFF_PASSEDfulfillment_constraints✅ coveredAppears in at least one golden fixture entry.
FULFILLMENT_MODE_UNAVAILABLEfulfillment_constraints✅ coveredAppears in at least one golden fixture entry.
HAZMAT_RESTRICTIONfulfillment_constraints✅ coveredAppears in at least one golden fixture entry.
INSUFFICIENT_TIME_BEFORE_CLOSEfulfillment_constraints🔴 uncoveredNo fixture coverage and no documented exception.
LEAD_TIME_EXCEEDS_NEED_BYfulfillment_constraints✅ coveredSynthetic-only — src/lib/rules/__tests__/fulfillment.test.ts. Requires an asserted BuyerContext.needByDate — the static golden CONTEXT_GRID has none, so this can never appear in the fixture grid.
ORDER_ACCEPTANCE_ENDEDfulfillment_constraints🔴 uncoveredNo fixture coverage and no documented exception.
OVERSIZE_RESTRICTIONfulfillment_constraints✅ coveredAppears in at least one golden fixture entry.
PREPARATION_EXCEEDS_NEED_BYfulfillment_constraints🔴 uncoveredNo fixture coverage and no documented exception.
REGION_NOT_SERVEDfulfillment_constraints✅ coveredAppears in at least one golden fixture entry.
STORE_CLOSEDfulfillment_constraints🔴 uncoveredNo fixture coverage and no documented exception.
RAOS-0005 · Inventory & Availability7/7 covered
Reason codeSourceStatusNote
BACKORDER_AVAILABLEinventory✅ coveredAppears in at least one golden fixture entry.
LOCATION_OUT_OF_STOCKinventory✅ coveredAppears in at least one golden fixture entry.
LOW_STOCKinventory✅ coveredAppears in at least one golden fixture entry.
OUT_OF_STOCKinventory✅ coveredAppears in at least one golden fixture entry.
PREORDER_NOT_YET_BUYABLEinventory✅ coveredAppears in at least one golden fixture entry.
RESERVATION_EXPIREDinventory✅ coveredSynthetic-only — src/lib/rules/__tests__/inventory.test.ts. Requires an injected expired InventoryHold via setInventoryHolds() — not reachable from the static catalog fixture grid.
STOCK_STALEinventory✅ coveredAppears in at least one golden fixture entry.
RAOS-0007 · Quote Integrity & Price Lock7/7 covered
Reason codeSourceStatusNote
QUOTE_CONTEXT_CHANGEDquote✅ coveredSynthetic-only — src/lib/rules/__tests__/quote.test.ts. Requires re-validating a quote against a changed BuyerContext — not produced by the fixture grid.
QUOTE_EXPIREDquote✅ coveredSynthetic-only — src/lib/rules/__tests__/quote.test.ts. Requires issueQuote + validateQuote with an injected expired `now` — not produced by the fixture grid.
QUOTE_FORGEDquote✅ coveredSynthetic-only — src/lib/rules/__tests__/quote.test.ts. Requires an injected mismatched/forged quote payload — not produced by the fixture grid.
QUOTE_HONORED_GRACEquote✅ coveredSynthetic-only — src/lib/rules/__tests__/quote.test.ts. Requires validating a quote inside its honor-grace window after nominal expiry — not produced by the fixture grid.
QUOTE_ISSUEDquote✅ coveredSynthetic-only — src/lib/rules/__tests__/quote.test.ts. Golden fixtures call rule functions directly and never invoke evaluateOffer/the QUOTE stage.
QUOTE_PARTIALLY_HONOREDquote✅ coveredSynthetic-only — src/lib/rules/__tests__/quote.test.ts. Requires a partial-honor HonorPolicy (Grocery C) exercised at validate time — not produced by the fixture grid.
QUOTE_STOCK_LOSTquote✅ coveredSynthetic-only — src/lib/rules/__tests__/quote.test.ts. Requires stock to change between quote issuance and validation — not produced by the fixture grid.
RAOS-0008 · Trust, Provenance & Freshness6/6 covered
Reason codeSourceStatusNote
CLOCK_SKEW_SUSPECTEDtrust✅ coveredSynthetic-only — src/lib/rules/__tests__/trust.test.ts. Requires computedAt > now + tolerance.
DATA_STALEtrust✅ coveredSynthetic-only — src/lib/rules/__tests__/trust.test.ts. Requires a `now` past (computedAt + ttlSeconds*1000) for the outer trust envelope — the golden grid’s GOLDEN_NOW/TTL combination never crosses that boundary.
ISSUER_UNKNOWNtrust✅ coveredSynthetic-only — src/lib/rules/__tests__/trust.test.ts. Requires a keyId not present in the merchant manifest's keys[].
KEY_EXPIREDtrust✅ coveredSynthetic-only — src/lib/rules/__tests__/trust.test.ts. Requires a signing key with validTo < now.
SIGNATURE_INVALIDtrust✅ coveredSynthetic-only — src/lib/rules/__tests__/trust.test.ts. Requires injecting a mismatched payload into verifyEnvelope.
TRUST_SIMULATEDtrust✅ coveredAppears in at least one golden fixture entry.

Archetype × spec coverage

Generated from each mock merchant's published manifest (mockMerchants[].manifest.capabilities[]) — the same data served at /.well-known/ucp. A cell is derived, not asserted; cells with no capability toggle to check are marked "not derived".

MerchantHeadline tierRAOS-0000RAOS-0001RAOS-0002RAOS-0003RAOS-0005RAOS-0007RAOS-0008RAOS-0013pt1
Boutique A2 2 ns 2 ns 1 ns 1 ns 1 nsnot derived
Wholesale B2 2 ns 3 ns 1 ns 1 ns 1 ns 1 nsnot derived
Grocery Retail C3 2 ns 4 ns 1 ns 1 ns 1 ns 1 nsnot derived

Generated at build time from: src/lib/extensions/registry.ts (byStage() -> evaluator.reasonCodes); src/lib/rules/trust.ts (TRUST_REASON_CODES, centrally attached); src/lib/rules/__tests__/__fixtures__/golden.json; src/lib/mock/merchants.ts (mockMerchants[].manifest.capabilities[].namespace). Golden fixtures last generated 2026-06-09T00:00:00.000Z.