{
  "id": "deep-agentic-rubric",
  "name": "Deep Agentic Rubric",
  "version": "dar-0.2",
  "status": "assessment_specification",
  "description": "A broad, evidence-based website assessment covering human clarity, agent discovery, factual retrieval, safe actions and merchant transaction engineering.",
  "ranking_engine": {
    "version": "af-html-1.2",
    "scope": "Public HTML readability across at least five pages",
    "deep_checks_automated": false
  },
  "evidence_levels": {
    "verified": "Observed in a reproducible read-only check or an explicitly authorized sandbox test.",
    "documented": "Specific behavior described in current technical documentation; execution has not been demonstrated.",
    "claimed": "Merchant assertion without sufficient technical or behavioral evidence.",
    "none": "No usable evidence has been collected."
  },
  "results": [
    "pass",
    "fail",
    "unknown",
    "not_applicable"
  ],
  "rules": [
    "Only verified evidence can produce a pass or fail. Documented or claimed evidence remains unknown until tested.",
    "Missing evidence is unknown, not failure. A reproduced contract violation is failure.",
    "Not applicable requires a written scope reason; an unsupported capability is not automatically exempt.",
    "Record observed_at, environment, source URL, method, and artifacts. Reassess evidence after contract changes.",
    "Deep assessments do not replace the current HTML ranking. No new weighted score is published by this specification.",
    "Use read-only public discovery by default. Mutating, quota, and webhook tests require an authorized sandbox and disposable fixtures. Never place live orders or intentionally exhaust a production quota."
  ],
  "dimensions": [
    {
      "id": "catalog",
      "title": "Structured catalog",
      "summary": "Can an agent read current products, prices, and availability without interpreting a screen?",
      "checks": [
        {
          "id": "CAT-01",
          "title": "Parseable products",
          "pass_condition": "A structured feed or API returns stable product and variant IDs, explicit availability enums, and machine-readable attributes.",
          "verification": "Validate the declared JSON/XML schema on a recorded sample; report valid records / sampled records.",
          "access": "public_read"
        },
        {
          "id": "CAT-02",
          "title": "Unambiguous prices",
          "pass_condition": "Every sampled price has an explicit ISO currency, denomination and precision. Payment APIs using minor units use integers; documented decimal product prices are also unambiguous.",
          "verification": "Count compliant price fields; fail verified records with ambiguous units or missing currency.",
          "access": "public_read"
        },
        {
          "id": "CAT-03",
          "title": "Cache & freshness contract",
          "pass_condition": "The response exposes an ETag or equivalent revision marker and documentation states a freshness interval.",
          "verification": "Record response headers, revision, and declared interval. Documentation alone does not establish freshness.",
          "access": "public_read"
        },
        {
          "id": "CAT-04",
          "title": "Feed matches checkout",
          "pass_condition": "For identical variants and quantities, feed price/stock and sandbox checkout agree within the declared reconciliation window.",
          "verification": "Compare timestamped feed and checkout snapshots; record mismatches / compared variants and maximum observed lag.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "json",
        "filename": "catalog.response.json",
        "code": "{\n  \"revision\": \"catalog-42\",\n  \"updated_at\": \"2026-10-10T18:00:00Z\",\n  \"products\": [{\n    \"id\": \"lamp_01\",\n    \"variant_id\": \"warm_white\",\n    \"availability\": \"in_stock\",\n    \"price\": { \"amount\": 12900, \"currency\": \"USD\" },\n    \"attributes\": { \"color_temperature_kelvin\": 2700 }\n  }]\n}"
      },
      "note": "Illustrative merchant contract. This is not an ACP feed schema. The refresh interval belongs in the published API contract."
    },
    {
      "id": "checkout",
      "title": "Headless checkout",
      "summary": "Can software complete the transaction through explicit, observable state transitions?",
      "checks": [
        {
          "id": "CHK-01",
          "title": "Complete API flow",
          "pass_condition": "A documented headless flow can create/update a checkout, attach a delegated payment credential, and complete an authorized sandbox order.",
          "verification": "Execute one authorized fixture per supported flow; report completed flows / attempted flows.",
          "access": "sandbox"
        },
        {
          "id": "CHK-02",
          "title": "Explicit state & totals",
          "pass_condition": "Every tested mutation returns checkout/order identifiers, current state, currency, and authoritative item, tax, shipping, and total amounts.",
          "verification": "Validate responses against the merchant schema; record missing or inconsistent fields.",
          "access": "sandbox"
        },
        {
          "id": "CHK-03",
          "title": "Invalid transitions fail clearly",
          "pass_condition": "An unpaid or otherwise invalid completion returns the documented conflict error, typically 409, without an order or charge.",
          "verification": "Test the invalid fixture in a sandbox; inspect both HTTP response and resulting order/payment state.",
          "access": "sandbox"
        },
        {
          "id": "CHK-04",
          "title": "Discoverable contract",
          "pass_condition": "The API has a versioned OpenAPI specification or equivalent typed contract, including errors and supported transitions.",
          "verification": "Fetch and validate the contract; report resolvable operations and schema errors. A spec does not prove the flow runs.",
          "access": "public_read"
        }
      ],
      "example": {
        "language": "http",
        "filename": "checkout.response.http",
        "code": "HTTP/1.1 409 Conflict\nContent-Type: application/json\n\n{\n  \"error\": {\n    \"code\": \"payment_required\",\n    \"message\": \"Attach an authorized payment credential first.\"\n  },\n  \"checkout_id\": \"chk_demo_01\",\n  \"state\": \"awaiting_payment\",\n  \"total\": { \"amount\": 12900, \"currency\": \"USD\" }\n}"
      },
      "note": "Example error contract, not a live API response. An HTTP status alone cannot prove that no side effect occurred."
    },
    {
      "id": "credentials",
      "title": "Scoped authorization",
      "summary": "Does the merchant act only within authority the buyer actually delegated?",
      "checks": [
        {
          "id": "AUTH-01",
          "title": "No raw payment secrets",
          "pass_condition": "The agent-facing payment flow accepts a delegated token or mandate, with no requirement for raw card numbers or account secrets.",
          "verification": "Inspect the contract and authorized test trace with redacted credential values.",
          "access": "sandbox"
        },
        {
          "id": "AUTH-02",
          "title": "Scope is enforced",
          "pass_condition": "The authorization binds allowed merchant/action, maximum amount, currency, and expiry or equivalent restrictions.",
          "verification": "Test in-scope and out-of-scope fixtures; count unauthorized actions accepted.",
          "access": "sandbox"
        },
        {
          "id": "AUTH-03",
          "title": "Fail closed",
          "pass_condition": "Expired, invalid, revoked, or unverifiable authorization is rejected before any charge or order side effect.",
          "verification": "Replay each negative fixture and inspect the authoritative order/payment state.",
          "access": "sandbox"
        },
        {
          "id": "AUTH-04",
          "title": "Credentials stay redacted",
          "pass_condition": "Observed agent and merchant trace artifacts contain references or redacted tokens, without raw payment secrets.",
          "verification": "Review a scoped, redacted test trace. Full production log coverage remains unknown without an authorized audit.",
          "access": "authorized_audit"
        }
      ],
      "example": {
        "language": "json",
        "filename": "authorization.fixture.json",
        "code": "{\n  \"credential_ref\": \"test_token_reference\",\n  \"scope\": {\n    \"merchant\": \"merchant.example\",\n    \"action\": \"complete_checkout\",\n    \"max_amount\": 15000,\n    \"currency\": \"USD\",\n    \"expires_at\": \"2026-10-10T18:30:00Z\"\n  },\n  \"expected_out_of_scope_result\": \"rejected_without_side_effect\"\n}"
      },
      "note": "Test fixture description, not a valid signed credential. Validation and payment processing belong to the merchant’s supported protocol and provider."
    },
    {
      "id": "idempotency",
      "title": "Safe retries",
      "summary": "Does one logical operation produce one effect, even when an agent retries?",
      "checks": [
        {
          "id": "IDEM-01",
          "title": "Mutation coverage",
          "pass_condition": "Every non-idempotent mutation documents and enforces an idempotency mechanism.",
          "verification": "Inventory the mutation operations, then test each documented mechanism in a sandbox.",
          "access": "sandbox"
        },
        {
          "id": "IDEM-02",
          "title": "Replay has one effect",
          "pass_condition": "Repeating the same operation and payload with the same key produces one logical effect and a consistent replay result.",
          "verification": "Send the identical sandbox fixture twice; compare order/charge counts and response identifiers.",
          "access": "sandbox"
        },
        {
          "id": "IDEM-03",
          "title": "Key collisions are rejected",
          "pass_condition": "Reusing a key with a materially different payload returns a documented error without executing the new operation.",
          "verification": "Change quantity or amount in a sandbox replay; inspect the resulting state.",
          "access": "sandbox"
        },
        {
          "id": "IDEM-04",
          "title": "Concurrency & lifetime",
          "pass_condition": "Concurrent duplicate requests remain safe within the documented key scope and retention window.",
          "verification": "Run a bounded duplicate fixture set; report effect count and the key’s declared lifetime.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "http",
        "filename": "sandbox-request.http",
        "code": "POST /sandbox/checkouts/chk_demo_01/complete HTTP/1.1\nHost: merchant.example\nAuthorization: Bearer TEST_SCOPED_TOKEN\nIdempotency-Key: demo-operation-01\nContent-Type: application/json\n\n{ \"payment_credential_ref\": \"test_token_reference\" }\n\n# Repeat this exact fixture with the same key.\n# Expected: one order, one payment effect, stable order reference."
      },
      "note": "Authorized sandbox only. Replay semantics differ by API and version; verify the merchant’s contract rather than assuming every provider behaves identically."
    },
    {
      "id": "webhooks",
      "title": "Reliable status events",
      "summary": "Can an agent learn what happened without repeatedly guessing the order state?",
      "checks": [
        {
          "id": "EVT-01",
          "title": "Signature validation",
          "pass_condition": "The contract documents a signature scheme; valid fixtures are accepted and tampered fixtures are rejected.",
          "verification": "Verify known-good and modified event fixtures using the documented verifier.",
          "access": "sandbox"
        },
        {
          "id": "EVT-02",
          "title": "Stable event identity",
          "pass_condition": "Events have stable IDs and a documented delivery guarantee; repeated deliveries are deduplicated without losing updates.",
          "verification": "Deliver the same sandbox event twice and measure processed effects.",
          "access": "sandbox"
        },
        {
          "id": "EVT-03",
          "title": "Recoverable delivery",
          "pass_condition": "The contract documents retry/backoff and supports authorized replay, event retrieval, or equivalent gap recovery.",
          "verification": "Miss a sandbox event, recover it using the supported mechanism, and verify the resulting state.",
          "access": "sandbox"
        },
        {
          "id": "EVT-04",
          "title": "State-to-event consistency",
          "pass_condition": "Order state changes and emitted events reconcile without unexplained missing transitions.",
          "verification": "Compare a scoped state/event audit. An outbox assertion alone is not behavioral verification.",
          "access": "authorized_audit"
        }
      ],
      "example": {
        "language": "json",
        "filename": "order-event.fixture.json",
        "code": "{\n  \"event_id\": \"evt_demo_01\",\n  \"type\": \"order.confirmed\",\n  \"occurred_at\": \"2026-10-10T18:05:00Z\",\n  \"order_id\": \"ord_demo_01\",\n  \"checkout_id\": \"chk_demo_01\",\n  \"state\": \"confirmed\"\n}"
      },
      "note": "Illustrative event payload. Signature metadata belongs in the documented transport contract. Do not treat delivery as ordered or exactly-once unless that guarantee is demonstrated."
    },
    {
      "id": "operations",
      "title": "Attribution & limits",
      "summary": "Can the business trace agent actions, protect capacity, and reconcile disputes?",
      "checks": [
        {
          "id": "OPS-01",
          "title": "Agent attribution",
          "pass_condition": "Recorded test requests and orders resolve to an authenticated agent/client identity, not only a spoofable User-Agent string.",
          "verification": "Follow a test request ID from client to order record; report linked requests / sampled requests.",
          "access": "authorized_audit"
        },
        {
          "id": "OPS-02",
          "title": "Per-agent quotas",
          "pass_condition": "Quotas are defined per authenticated agent or equivalent principal, and one agent’s fixture does not consume another’s allocation.",
          "verification": "Use a small, explicitly authorized sandbox quota and compare two isolated principals.",
          "access": "sandbox"
        },
        {
          "id": "OPS-03",
          "title": "Usable rate-limit response",
          "pass_condition": "A throttled sandbox request returns 429 plus a parseable Retry-After value or the explicitly documented equivalent backoff contract.",
          "verification": "Inspect a sandbox response; do not intentionally exhaust a live merchant quota.",
          "access": "sandbox"
        },
        {
          "id": "OPS-04",
          "title": "Auditable authorization chain",
          "pass_condition": "A sampled order links to the authorizing token/mandate reference, checkout, agent identity, and payment result without exposing secret material.",
          "verification": "Inspect a scoped redacted audit artifact and reconcile its identifiers.",
          "access": "authorized_audit"
        }
      ],
      "example": {
        "language": "http",
        "filename": "quota.response.http",
        "code": "HTTP/1.1 429 Too Many Requests\nContent-Type: application/json\nRetry-After: 30\n\n{\n  \"error\": { \"code\": \"agent_quota_exceeded\" },\n  \"request_id\": \"req_demo_01\",\n  \"retry_after_seconds\": 30\n}"
      },
      "note": "Illustrative response. Respect the declared retry interval; quota tests belong in a sandbox with agreed limits."
    },
    {
      "id": "discovery",
      "title": "Discovery & access",
      "summary": "Can an agent find the right public pages and understand access rules?",
      "checks": [
        {
          "id": "DISC-01",
          "title": "Canonical discovery",
          "pass_condition": "Each sampled public page has a stable canonical URL and important pages are linked from navigation or a sitemap.",
          "verification": "Sample at least five distinct pages; count resolvable canonical URLs and discoverable destinations.",
          "access": "public_read"
        },
        {
          "id": "DISC-02",
          "title": "Agent policy clarity",
          "pass_condition": "Published access policy distinguishes training, search, interactive shopping and authorized integrations without treating robots silence as permission.",
          "verification": "Record named agents, allowed scope and policy sources; compare policy text and applicable robots directives for each sampled route.",
          "access": "public_read"
        },
        {
          "id": "DISC-03",
          "title": "Discoverable machine contract",
          "pass_condition": "Supported feeds, APIs or connectors are linked from accessible developer documentation with versions and authentication requirements.",
          "verification": "Fetch every advertised contract; report reachable contracts / advertised contracts and unresolved references.",
          "access": "public_read"
        },
        {
          "id": "DISC-04",
          "title": "Honest blocked states",
          "pass_condition": "Denied or unavailable routes return explicit status and a documented authorized alternative when one exists; agents are not asked to bypass controls.",
          "verification": "Observe a permitted denial fixture; record HTTP status, reason and alternative route. Do not evade a challenge.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "json",
        "filename": "discovery.assessment.json",
        "code": "{\n  \"id\": \"DISC-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"public\",\n  \"metrics\": {},\n  \"next_step\": \"Sample at least five distinct pages; count resolvable canonical URLs and discoverable destinations.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "semantics",
      "title": "Readable pages & structure",
      "summary": "Can people and agents extract the same meaning from a page?",
      "checks": [
        {
          "id": "HTML-01",
          "title": "Meaningful initial content",
          "pass_condition": "Public pages expose meaningful readable content in initial HTML or a documented accessible equivalent.",
          "verification": "Compare initial HTML, rendered DOM and public facts on five pages; report matching factual fields / expected fields.",
          "access": "public_read"
        },
        {
          "id": "HTML-02",
          "title": "Headings and landmarks",
          "pass_condition": "Sampled pages have descriptive titles, ordered headings and named main/navigation regions.",
          "verification": "Count pages with usable titles and landmarks; record missing or misleading headings in DOM artifacts.",
          "access": "public_read"
        },
        {
          "id": "HTML-03",
          "title": "Names, roles and states",
          "pass_condition": "Interactive controls expose accurate accessible names, roles and current states consistent with visible labels.",
          "verification": "Inspect at least ten controls across pages; count correctly named controls / sampled controls and state mismatches.",
          "access": "public_read"
        },
        {
          "id": "HTML-04",
          "title": "Equivalent nonvisual information",
          "pass_condition": "Images, tables and multimedia expose the information needed to decide in text or accessible alternatives.",
          "verification": "Compare critical facts in images/tables/media against text alternatives; list missing facts and affected tasks.",
          "access": "public_read"
        }
      ],
      "example": {
        "language": "json",
        "filename": "semantics.assessment.json",
        "code": "{\n  \"id\": \"HTML-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"public\",\n  \"metrics\": {},\n  \"next_step\": \"Compare initial HTML, rendered DOM and public facts on five pages; report matching factual fields / expected fields.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "browser",
      "title": "Browser actions & human clarity",
      "summary": "Can a browser agent complete ordinary tasks through clear controls?",
      "checks": [
        {
          "id": "BROW-01",
          "title": "Keyboard-operable task paths",
          "pass_condition": "Key tasks can be navigated with keyboard input and visible focus without traps.",
          "verification": "Execute three applicable task paths with keyboard input; report completed paths / attempted paths and focus failures.",
          "access": "sandbox"
        },
        {
          "id": "BROW-02",
          "title": "Stable action targets",
          "pass_condition": "Controls remain identifiable across layout changes and do not require brittle screen coordinates.",
          "verification": "Repeat task selection at desktop/mobile widths; record semantic locator success rate and ambiguous matches.",
          "access": "sandbox"
        },
        {
          "id": "BROW-03",
          "title": "Observable loading and completion",
          "pass_condition": "Loading, empty, error and success states are distinguishable in the DOM and do not hide failed actions.",
          "verification": "Exercise each state fixture; count correctly exposed states / attempted states and capture DOM evidence.",
          "access": "sandbox"
        },
        {
          "id": "BROW-04",
          "title": "Responsive clarity",
          "pass_condition": "Content and essential controls remain usable at narrow widths and zoom without clipped critical facts.",
          "verification": "Measure clipping and task completion at declared device widths and zoom levels; record viewport dimensions.",
          "access": "public_read"
        }
      ],
      "example": {
        "language": "json",
        "filename": "browser.assessment.json",
        "code": "{\n  \"id\": \"BROW-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"sandbox\",\n  \"metrics\": {},\n  \"next_step\": \"Execute three applicable task paths with keyboard input; report completed paths / attempted paths and focus failures.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "product-facts",
      "title": "Product suitability & evidence",
      "summary": "Can an agent match a product to a real person’s constraints?",
      "checks": [
        {
          "id": "FACT-01",
          "title": "Decision-relevant specifications",
          "pass_condition": "Sampled variants expose dimensions, materials, weight, compatibility and other applicable facts with explicit units.",
          "verification": "Define the category-specific required fields before sampling; count populated applicable fields / required fields across at least ten variants.",
          "access": "public_read"
        },
        {
          "id": "FACT-02",
          "title": "Use cases and limitations",
          "pass_condition": "Descriptions state suitable use cases and limitations, and do not invent performance claims or repeat keywords as evidence.",
          "verification": "For five realistic buyer prompts, map every decisive constraint to a sourced fact or explicit unknown; report supported constraints / total constraints.",
          "access": "public_read"
        },
        {
          "id": "FACT-03",
          "title": "Traceable claims",
          "pass_condition": "Certifications, ingredients, safety or performance claims link to current evidence for the exact variant and claim scope.",
          "verification": "Sample claimed attributes; count traceable claim-to-variant evidence links and expired or unsupported claims.",
          "access": "public_read"
        },
        {
          "id": "FACT-04",
          "title": "Visible and structured facts agree",
          "pass_condition": "Structured product data agrees with the visible variant details, price, currency and availability.",
          "verification": "Compare paired visible/feed snapshots for ten variants; report mismatched fields / compared fields and timestamps.",
          "access": "public_read"
        }
      ],
      "example": {
        "language": "json",
        "filename": "product-facts.assessment.json",
        "code": "{\n  \"id\": \"FACT-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"public\",\n  \"metrics\": {},\n  \"next_step\": \"Define the category-specific required fields before sampling; count populated applicable fields / required fields across at least ten variants.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "search",
      "title": "Search, filters & comparisons",
      "summary": "Can agents find and compare the right options?",
      "checks": [
        {
          "id": "FIND-01",
          "title": "Constraint-based retrieval",
          "pass_condition": "Search and filters support applicable buyer constraints with stable product identifiers and explicit unknown fields.",
          "verification": "Run ten predefined query/constraint fixtures; report relevant results / inspected results and omitted known matches.",
          "access": "sandbox"
        },
        {
          "id": "FIND-02",
          "title": "Pagination and completeness",
          "pass_condition": "Search/catalog responses document pagination, ordering and limits without silently dropping products.",
          "verification": "Traverse a bounded fixture catalog; compare unique returned IDs with known expected IDs and duplicate count.",
          "access": "sandbox"
        },
        {
          "id": "FIND-03",
          "title": "Meaningful empty results",
          "pass_condition": "No-result states distinguish no matches, invalid filters and unavailable search.",
          "verification": "Exercise three fixtures; record correct distinctions / fixtures and suggested safe next steps.",
          "access": "sandbox"
        },
        {
          "id": "FIND-04",
          "title": "Comparable attributes",
          "pass_condition": "Comparison views use consistent units and distinguish absent information from negative attributes.",
          "verification": "Compare five product pairs; count consistent attribute/unit rows and unknowns incorrectly presented as no.",
          "access": "public_read"
        }
      ],
      "example": {
        "language": "json",
        "filename": "search.assessment.json",
        "code": "{\n  \"id\": \"FIND-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"sandbox\",\n  \"metrics\": {},\n  \"next_step\": \"Run ten predefined query/constraint fixtures; report relevant results / inspected results and omitted known matches.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "forms",
      "title": "Forms, validation & recovery",
      "summary": "Can an agent provide valid input and recover from mistakes?",
      "checks": [
        {
          "id": "FORM-01",
          "title": "Explicit input contracts",
          "pass_condition": "Fields have labels, expected formats, required state and associated instructions.",
          "verification": "Inspect ten fields; count fields with complete labels/constraints and compare client/API validation.",
          "access": "public_read"
        },
        {
          "id": "FORM-02",
          "title": "Actionable validation errors",
          "pass_condition": "Invalid values produce field-associated errors with stable machine codes where APIs are offered.",
          "verification": "Submit bounded invalid fixtures in a sandbox; report actionable errors / invalid inputs and preserved valid fields.",
          "access": "sandbox"
        },
        {
          "id": "FORM-03",
          "title": "No surprise mutations",
          "pass_condition": "Selection and navigation do not trigger purchases, subscriptions or destructive changes without an explicit final action.",
          "verification": "Record side-effect counts during navigation/input fixtures; require zero unexpected mutations.",
          "access": "sandbox"
        },
        {
          "id": "FORM-04",
          "title": "Recoverable interruptions",
          "pass_condition": "Session expiry, timeouts and failed submissions preserve safe input or explain how to resume without duplicates.",
          "verification": "Interrupt two fixture workflows; measure recoverable state and duplicate mutation counts.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "json",
        "filename": "forms.assessment.json",
        "code": "{\n  \"id\": \"FORM-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"public\",\n  \"metrics\": {},\n  \"next_step\": \"Inspect ten fields; count fields with complete labels/constraints and compare client/API validation.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "cart",
      "title": "Cart, quotes & purchase clarity",
      "summary": "Does the buyer know exactly what will happen before approving?",
      "checks": [
        {
          "id": "CART-01",
          "title": "Variant and quantity identity",
          "pass_condition": "Cart lines identify exact variants, quantities, unit prices and item availability.",
          "verification": "Create five fixture carts; compare requested and returned variant/quantity/price fields with zero unexplained substitutions.",
          "access": "sandbox"
        },
        {
          "id": "CART-02",
          "title": "Complete preapproval total",
          "pass_condition": "Shipping, tax, fees, discounts and recurring commitments are disclosed before authorization with explicit currency.",
          "verification": "Compare displayed and authoritative totals for fixture destinations; report unexplained amount differences.",
          "access": "sandbox"
        },
        {
          "id": "CART-03",
          "title": "Quote validity and changes",
          "pass_condition": "Quotes state expiry or revision, and material changes require renewed buyer approval rather than silent replacement.",
          "verification": "Change price/stock after a fixture quote; verify expiry/change detection and zero unauthorized completions.",
          "access": "sandbox"
        },
        {
          "id": "CART-04",
          "title": "Reviewable final action",
          "pass_condition": "The human or delegated authority can inspect the final order and enforce approval limits before execution.",
          "verification": "Record approval input, order revision and final effect; test one refused approval with zero order/payment effects.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "json",
        "filename": "cart.assessment.json",
        "code": "{\n  \"id\": \"CART-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"sandbox\",\n  \"metrics\": {},\n  \"next_step\": \"Create five fixture carts; compare requested and returned variant/quantity/price fields with zero unexplained substitutions.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "fulfillment",
      "title": "Delivery, returns & aftercare",
      "summary": "Can an agent verify promises and resolve what happens after buying?",
      "checks": [
        {
          "id": "SHIP-01",
          "title": "Destination-specific delivery",
          "pass_condition": "Delivery estimates identify destination scope, order cutoff, business-day rules and unavailable regions.",
          "verification": "Test five allowed destination fixtures; record estimate completeness and discrepancies against shipping rules.",
          "access": "sandbox"
        },
        {
          "id": "SHIP-02",
          "title": "Return and warranty facts",
          "pass_condition": "Return windows, exclusions, costs and warranty scope are public and linked to relevant products.",
          "verification": "Sample five products; count applicable return/warranty answers with explicit sources and exclusions.",
          "access": "public_read"
        },
        {
          "id": "SHIP-03",
          "title": "Order status and support",
          "pass_condition": "Authorized clients can retrieve state, shipment references and a documented support/escalation route.",
          "verification": "Follow three sandbox order states; report retrievable transitions / expected transitions and support-route availability.",
          "access": "sandbox"
        },
        {
          "id": "SHIP-04",
          "title": "Cancellation and refunds",
          "pass_condition": "Supported cancel/refund actions state eligibility, money amounts, timing and final state with safe retries.",
          "verification": "Exercise eligible and ineligible sandbox cases and one retry; report duplicate refund effects and unexplained outcomes.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "json",
        "filename": "fulfillment.assessment.json",
        "code": "{\n  \"id\": \"SHIP-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"sandbox\",\n  \"metrics\": {},\n  \"next_step\": \"Test five allowed destination fixtures; record estimate completeness and discrepancies against shipping rules.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "accounts",
      "title": "Accounts & session boundaries",
      "summary": "Does sign-in preserve intent while protecting private data?",
      "checks": [
        {
          "id": "ACCT-01",
          "title": "Intent survives sign-in",
          "pass_condition": "Authentication returns the user to the requested safe action or page without losing pending non-sensitive input.",
          "verification": "Test sign-in, confirmation and recovery callbacks on approved origins; report preserved intents / fixture journeys.",
          "access": "sandbox"
        },
        {
          "id": "ACCT-02",
          "title": "Session expiry is explicit",
          "pass_condition": "Expired sessions stop private actions and offer reauthentication without exposing private results.",
          "verification": "Expire one fixture token; measure private reads/writes rejected and successful recovery after sign-in.",
          "access": "sandbox"
        },
        {
          "id": "ACCT-03",
          "title": "Cross-account isolation",
          "pass_condition": "Private records and actions are authorized by server/database policy for the current principal.",
          "verification": "Use two disposable principals; require zero unauthorized reads or mutations across each private resource type.",
          "access": "sandbox"
        },
        {
          "id": "ACCT-04",
          "title": "Ownership is proven",
          "pass_condition": "Claims to manage a domain or organization require verifiable ownership rather than a URL or client-supplied flag.",
          "verification": "Test valid, invalid and replayed ownership proofs; record unauthorized claims accepted and proof expiry rules.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "json",
        "filename": "accounts.assessment.json",
        "code": "{\n  \"id\": \"ACCT-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"sandbox\",\n  \"metrics\": {},\n  \"next_step\": \"Test sign-in, confirmation and recovery callbacks on approved origins; report preserved intents / fixture journeys.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "privacy",
      "title": "Privacy, consent & minimization",
      "summary": "Does useful feedback avoid exposing the person behind it?",
      "checks": [
        {
          "id": "PRIV-01",
          "title": "Minimal buyer disclosure",
          "pass_condition": "Agent requests and feedback disclose only necessary permitted constraints, avoiding raw personal histories and credentials.",
          "verification": "Review a consented redacted sample; count unnecessary sensitive fields / sampled fields and document purpose.",
          "access": "authorized_audit"
        },
        {
          "id": "PRIV-02",
          "title": "Consent and revocation",
          "pass_condition": "Sharing and delegated actions follow explicit consent scope with revocation and expiry enforcement.",
          "verification": "Test consent grant, withdrawal and expired fixture permissions; require zero out-of-scope disclosures.",
          "access": "sandbox"
        },
        {
          "id": "PRIV-03",
          "title": "Retention and deletion",
          "pass_condition": "Stored feedback and agent traces have documented retention and authorized deletion/export behavior.",
          "verification": "Inspect retention configuration and exercise a disposable export/delete fixture; record retained identifiers and completion time.",
          "access": "authorized_audit"
        },
        {
          "id": "PRIV-04",
          "title": "Safe public aggregation",
          "pass_condition": "Public metrics distinguish simulations, submissions and independent users and avoid small-cohort identifying detail.",
          "verification": "Reconcile public aggregates to a scoped redacted fixture dataset; count provenance errors and disclosed identifying fields.",
          "access": "authorized_audit"
        }
      ],
      "example": {
        "language": "json",
        "filename": "privacy.assessment.json",
        "code": "{\n  \"id\": \"PRIV-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"sandbox\",\n  \"metrics\": {},\n  \"next_step\": \"Review a consented redacted sample; count unnecessary sensitive fields / sampled fields and document purpose.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "security",
      "title": "Security & adversarial inputs",
      "summary": "Can the site treat agent inputs as untrusted data?",
      "checks": [
        {
          "id": "SEC-01",
          "title": "Untrusted text stays data",
          "pass_condition": "Retrieved pages and submitted feedback cannot redefine agent/system authority or trigger actions without authorization.",
          "verification": "Run isolated prompt-injection fixtures; count unauthorized tool calls or disclosures, and preserve the attack/result artifacts.",
          "access": "sandbox"
        },
        {
          "id": "SEC-02",
          "title": "Server-side input boundaries",
          "pass_condition": "URLs, identifiers, amounts and callbacks are validated server-side; private/internal network targets are denied.",
          "verification": "Run bounded invalid-input and SSRF fixtures against an authorized isolated service; count accepted prohibited targets.",
          "access": "sandbox"
        },
        {
          "id": "SEC-03",
          "title": "Credential and transport hygiene",
          "pass_condition": "Secrets remain server-side, scoped and redacted; HTTPS and supported authentication protect private actions.",
          "verification": "Inspect a scoped configuration and redacted traces; count exposed secrets and unauthenticated private operations.",
          "access": "authorized_audit"
        },
        {
          "id": "SEC-04",
          "title": "Abuse controls without blanket claims",
          "pass_condition": "Feedback/tool endpoints apply bounded quotas and provenance controls without presenting spoofed bot identity as verified users.",
          "verification": "Test duplicate/replay/spoofed identity fixtures within agreed limits; count incorrect identity attributions and duplicate effects.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "json",
        "filename": "security.assessment.json",
        "code": "{\n  \"id\": \"SEC-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"sandbox\",\n  \"metrics\": {},\n  \"next_step\": \"Run isolated prompt-injection fixtures; count unauthorized tool calls or disclosures, and preserve the attack/result artifacts.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "connectors",
      "title": "APIs, MCP & tool contracts",
      "summary": "Can a supported agent discover and invoke a compact typed interface?",
      "checks": [
        {
          "id": "TOOL-01",
          "title": "Typed tool interfaces",
          "pass_condition": "Supported tools have accurate names, descriptions, schemas, errors and documented input/output limits.",
          "verification": "Validate advertised schemas and ten representative fixtures; report valid contracts / advertised contracts.",
          "access": "public_read"
        },
        {
          "id": "TOOL-02",
          "title": "Read and write boundaries",
          "pass_condition": "Tools clearly distinguish read-only, reversible and consequential actions; real authorization governs execution.",
          "verification": "Inventory tools and execute allowed/denied sandbox fixtures; count mislabeled effects and permission violations.",
          "access": "sandbox"
        },
        {
          "id": "TOOL-03",
          "title": "Connector identity and authorization",
          "pass_condition": "MCP/API clients use the supported authorization flow with appropriate audience/scope checks rather than passing unrelated tokens through.",
          "verification": "Inspect the current protocol contract and test isolated wrong-audience/scope fixtures; require zero unauthorized accepted requests.",
          "access": "sandbox"
        },
        {
          "id": "TOOL-04",
          "title": "Bounded response cost",
          "pass_condition": "Responses expose only necessary facts, support pagination/field selection where needed and publish tested payload limits.",
          "verification": "Measure response bytes, retrieval requests and task success on ten fixtures against declared budgets; do not use small payload size alone as readiness.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "json",
        "filename": "connectors.assessment.json",
        "code": "{\n  \"id\": \"TOOL-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"public\",\n  \"metrics\": {},\n  \"next_step\": \"Validate advertised schemas and ten representative fixtures; report valid contracts / advertised contracts.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "reliability",
      "title": "Reliability & failure recovery",
      "summary": "Can the system stay understandable when dependencies fail?",
      "checks": [
        {
          "id": "REL-01",
          "title": "Timeout and retry contracts",
          "pass_condition": "Clients receive bounded timeouts, retryable/nonretryable error classes and backoff guidance.",
          "verification": "Inject permitted latency and failure fixtures; record p50/p95 response times, retry counts and final outcomes.",
          "access": "sandbox"
        },
        {
          "id": "REL-02",
          "title": "Durable background work",
          "pass_condition": "Long-running jobs survive worker restarts and expose stable job IDs, state and terminal failures.",
          "verification": "Restart an isolated worker mid-job; compare job/effect counts and observable status before/after restart.",
          "access": "sandbox"
        },
        {
          "id": "REL-03",
          "title": "Reconciliation after uncertainty",
          "pass_condition": "Ambiguous client timeouts can be resolved through authoritative status without reissuing a new logical purchase.",
          "verification": "Drop one sandbox completion response; query authoritative state and require one logical effect after recovery.",
          "access": "sandbox"
        },
        {
          "id": "REL-04",
          "title": "Contract compatibility",
          "pass_condition": "Breaking changes are versioned and migration/deprecation dates are documented for feeds and actions.",
          "verification": "Compare two retained contract versions and client fixtures; report breaking fields/operations and documented migration coverage.",
          "access": "public_read"
        }
      ],
      "example": {
        "language": "json",
        "filename": "reliability.assessment.json",
        "code": "{\n  \"id\": \"REL-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"sandbox\",\n  \"metrics\": {},\n  \"next_step\": \"Inject permitted latency and failure fixtures; record p50/p95 response times, retry counts and final outcomes.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "localization",
      "title": "Locale, time & money",
      "summary": "Do facts keep the same meaning across regions?",
      "checks": [
        {
          "id": "LOC-01",
          "title": "Explicit units and dates",
          "pass_condition": "Dates/times state timezone and relevant calendar rules; dimensions and quantities state units.",
          "verification": "Sample twenty applicable values; count unambiguous unit/timezone values / sampled values.",
          "access": "public_read"
        },
        {
          "id": "LOC-02",
          "title": "Regional prices and eligibility",
          "pass_condition": "Currency, geography, taxes, inventory and eligibility are tied to the buyer-selected region.",
          "verification": "Compare five region fixtures; record mismatched currency/availability and unannounced regional fallbacks.",
          "access": "sandbox"
        },
        {
          "id": "LOC-03",
          "title": "Language parity",
          "pass_condition": "Supported languages preserve decisive product/policy facts and recognizable action semantics.",
          "verification": "Compare the same five pages in two supported locales; report decisive fact mismatches / compared facts.",
          "access": "public_read"
        },
        {
          "id": "LOC-04",
          "title": "Accessible localization",
          "pass_condition": "Language metadata, right-to-left layouts where supported and translated control names remain usable.",
          "verification": "Inspect supported locale DOMs and keyboard flows; count correctly declared languages and missing translated control names.",
          "access": "public_read"
        }
      ],
      "example": {
        "language": "json",
        "filename": "localization.assessment.json",
        "code": "{\n  \"id\": \"LOC-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"public\",\n  \"metrics\": {},\n  \"next_step\": \"Sample twenty applicable values; count unambiguous unit/timezone values / sampled values.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "feedback",
      "title": "Feedback & improvement loop",
      "summary": "Can people and agents turn a blocker into a verified improvement?",
      "checks": [
        {
          "id": "FDBK-01",
          "title": "Simple feedback entry",
          "pass_condition": "Public pages provide a usable human feedback route and a documented structured agent endpoint when supported.",
          "verification": "Submit one disposable human and agent fixture; verify receipt identifiers and correct owner routing.",
          "access": "sandbox"
        },
        {
          "id": "FDBK-02",
          "title": "Evidence and provenance",
          "pass_condition": "Feedback records page/context, blocker, source kind and evidence without inventing a customer or purchase outcome.",
          "verification": "Validate ten redacted fixtures against the feedback schema; count incomplete provenance and unsupported outcome claims.",
          "access": "authorized_audit"
        },
        {
          "id": "FDBK-03",
          "title": "Useful verified responses",
          "pass_condition": "Owners can publish sourced answers and agents can retrieve revisions with timestamps without seeing private feedback.",
          "verification": "Create an authorized answer fixture, retrieve it publicly and test unauthorized edits; report stale revisions and leakage.",
          "access": "sandbox"
        },
        {
          "id": "FDBK-04",
          "title": "Comparable follow-up",
          "pass_condition": "After a fix, the same task/profile/version is remeasured and unresolved cases remain visible.",
          "verification": "Replay a recorded baseline suite; report paired task outcomes, score/version changes and remaining failures.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "json",
        "filename": "feedback.assessment.json",
        "code": "{\n  \"id\": \"FDBK-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"sandbox\",\n  \"metrics\": {},\n  \"next_step\": \"Submit one disposable human and agent fixture; verify receipt identifiers and correct owner routing.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    },
    {
      "id": "evaluation",
      "title": "Harness, evidence & regression",
      "summary": "Can another builder reproduce the assessment?",
      "checks": [
        {
          "id": "EVAL-01",
          "title": "Representative task set",
          "pass_condition": "The assessment declares persona constraints, task scope, pages/variants and sample selection before testing.",
          "verification": "Record at least five pages and ten applicable task fixtures, with denominators and exclusions; separate public and sandbox evidence.",
          "access": "public_read"
        },
        {
          "id": "EVAL-02",
          "title": "Reproducible artifacts",
          "pass_condition": "Each result links timestamped inputs, expected/observed outcomes, environment, versions and redacted artifacts.",
          "verification": "Validate all reported checks; count results with complete replay metadata / reported results.",
          "access": "authorized_audit"
        },
        {
          "id": "EVAL-03",
          "title": "Measured task outcomes",
          "pass_condition": "Success rate, retries, latency and cost use defined units and do not treat documentation coverage as executed success.",
          "verification": "Replay the fixed suite; report successes / attempts, p50/p95 latency and request/token cost with environment and sample size.",
          "access": "sandbox"
        },
        {
          "id": "EVAL-04",
          "title": "Regression and comparison controls",
          "pass_condition": "Before/after comparisons retain task/data/protocol versions and report failed retrievals and unknowns rather than hiding them.",
          "verification": "Repeat unchanged and changed fixture runs; count invalid comparisons and verify all terminal outcomes are retained.",
          "access": "sandbox"
        }
      ],
      "example": {
        "language": "json",
        "filename": "evaluation.assessment.json",
        "code": "{\n  \"id\": \"EVAL-01\",\n  \"result\": \"unknown\",\n  \"evidence_level\": \"none\",\n  \"environment\": \"public\",\n  \"metrics\": {},\n  \"next_step\": \"Record at least five pages and ten applicable task fixtures, with denominators and exclusions; separate public and sandbox evidence.\"\n}"
      },
      "note": "Illustrative partial assessment record, not a complete schema-valid report or proof of passing. Attach actual measured evidence; use the full assessment schema for submission."
    }
  ],
  "sources": [
    {
      "title": "Pratik Dhanave — Building an Agent-Ready Merchant",
      "url": "https://pratikdhanave.com/blog/posts/agentic-commerce-agent-ready-merchant.html",
      "role": "Practitioner framing; not an industry standard."
    },
    {
      "title": "Stripe — Agentic Commerce Protocol",
      "url": "https://docs.stripe.com/agentic-commerce/protocols/acp",
      "role": "Primary protocol overview and specification links."
    },
    {
      "title": "Stripe — Idempotent requests",
      "url": "https://docs.stripe.com/api/idempotent_requests",
      "role": "Provider-specific replay semantics; not a universal contract."
    },
    {
      "title": "Stripe — Webhooks",
      "url": "https://docs.stripe.com/webhooks",
      "role": "Primary event delivery and signature documentation."
    },
    {
      "title": "AP2 — Agent Payments Protocol",
      "url": "https://ap2-protocol.org/",
      "role": "Alternative authorization/mandate protocol."
    },
    {
      "title": "W3C — WCAG quick reference",
      "url": "https://www.w3.org/WAI/WCAG22/quickref/",
      "role": "Accessibility guidance; this assessment is not WCAG certification."
    },
    {
      "title": "Google — Product structured data",
      "url": "https://developers.google.com/search/docs/appearance/structured-data/product",
      "role": "Product discovery implementation guidance; not proof of agent checkout."
    },
    {
      "title": "MCP — Security best practices",
      "url": "https://modelcontextprotocol.io/specification/latest/basic/security_best_practices",
      "role": "Protocol-specific security guidance; record the tested protocol version."
    }
  ],
  "agent_workflow": [
    "Read /rubric.json and /agent-guide.md; record the rubric version and intended site profile.",
    "Inventory applicable pages, feeds, actions and data boundaries. Choose representative task fixtures before making changes.",
    "Assess public-read checks first; attach observations and record unknowns where evidence is unavailable.",
    "Implement small fixes with sourced facts and explicit contracts; keep the human interface clear.",
    "Run mutations only in an explicitly authorized sandbox with disposable data. Do not execute live purchases or bypass access controls.",
    "Validate the assessment against /rubric.schema.json; keep baseline and follow-up artifacts under the same task/profile/version.",
    "Report verified pass/fail counts, unknowns, scope exclusions and measured task outcomes; do not invent a deep score."
  ],
  "profiles": {
    "commerce": {
      "description": "Full commerce scope, including catalog, checkout and aftercare.",
      "dimensions": [
        "catalog",
        "checkout",
        "credentials",
        "idempotency",
        "webhooks",
        "operations",
        "discovery",
        "semantics",
        "browser",
        "product-facts",
        "search",
        "forms",
        "cart",
        "fulfillment",
        "accounts",
        "privacy",
        "security",
        "connectors",
        "reliability",
        "localization",
        "feedback",
        "evaluation"
      ]
    },
    "content": {
      "description": "Publications and information sites; transaction checks need an explicit applicability decision.",
      "dimensions": [
        "discovery",
        "semantics",
        "browser",
        "search",
        "privacy",
        "security",
        "connectors",
        "reliability",
        "localization",
        "feedback",
        "evaluation"
      ]
    },
    "service": {
      "description": "Booking, subscription and SaaS sites; adapt catalog and fulfillment tests to plans, slots and service policies.",
      "dimensions": [
        "catalog",
        "checkout",
        "credentials",
        "idempotency",
        "webhooks",
        "operations",
        "discovery",
        "semantics",
        "browser",
        "product-facts",
        "search",
        "forms",
        "cart",
        "fulfillment",
        "accounts",
        "privacy",
        "security",
        "connectors",
        "reliability",
        "localization",
        "feedback",
        "evaluation"
      ]
    }
  }
}
