Intake test suite
title: AXA Intake Test Suite description: The 18-test TC-03a acceptance suite for the carrier-structured v1.0 adapter: what each test covers, how to run it, and its relationship to the conformance runner. kind: authored status: current source_date: 2026-10-02 tags: [testing, AXA, carrier_structured, v1.0, TC-03a, T15, adapt_carrier_structured_v1, pytest]
What it covers¶
The TC-03a AXA intake test suite validates the carrier-structured v1.0 adapter end-to-end: schema and SHA-256 gating, field mapping for both AUTO and PROPERTY LOBs, party conversion, adverse vehicle detection, subro_facts restructuring, error handling for malformed payloads, and the T15 unidentified-owner constraint. Eighteen tests are organized into three tiers: schema and adapter unit tests that need no database, normalizer routing and pipeline integration tests that require SubrogationScreenerGKR and therefore a live MongoDB connection, and the T15 identity-status assertion which exercises the full party resolution path. The suite received TC-03a verdict ACCEPTED on 2026-10-01.
Test Inventory¶
| T | Description | Needs DB |
|---|---|---|
| T1 | Schema SHA-256 gate | No |
| T2 | AUTO adapter output shape | No |
| T3 | PROPERTY adapter output shape | No |
| T4 | AUTO damage mapping (PD estimate, rental, BI reserve) | No |
| T5 | AUTO party conversion (name unwrap, roles array) | No |
| T6 | AUTO adverse vehicle detection from parties | No |
| T7 | AUTO subro_facts pass-through | No |
| T8 | PROPERTY subro_facts pass-through | No |
| T9 | V1IntegrityError: missing required field parties |
No |
| T9b | V1IntegrityError: wrong format_version | No |
| T9c | V1IntegrityError: unknown LOB in header | No |
| T10 | Normalizer auto-detects format_version == "1.0" and routes to adapter | Yes |
| T11 | AUTO subro pipeline end-to-end: decision_trace.status == success | Yes |
| T12 | PROPERTY subro pipeline end-to-end: decision_trace.status == success | Yes |
| T13 | AXA-SAMPLE-AUTO-001 (Morales A22) → subrogation_identified == True | Yes |
| T14a | Blind AUTO (CA rear-end) validates and adapts | No |
| T14b | Blind PROPERTY (tenant fire) validates and adapts | No |
| T15 | Unidentified vehicle owner → identity_status.value == "unknown" placeholder; no NE result inferred | Yes |
How to Run¶
With ARTIFI_MONGO_CONNECTION_STRING set: all 18 tests run:
cd adjust360_pipeline/tests/axa_intake
ARTIFI_MONGO_CONNECTION_STRING="<connection string>" pytest test_axa_intake.py -v
Without a database connection: 11 tests pass, 5 skip:
Without a database, T10 through T13 and T15 are skipped rather than failed. These five tests exercise SubrogationScreenerGKR and the normalizer's database-backed routing path; they require a live MongoDB connection to elevatenow_gkr for GKR chunk retrieval. The remaining 13 tests: T1 through T9c, T14a, and T14b: exercise the adapter and schema gate in isolation and pass without any external dependency.
The full 18-test pass requires ARTIFI_MONGO_CONNECTION_STRING pointing to the Atlas cluster containing elevatenow_gkr.
Fixtures¶
Fixture files live in adjust360_pipeline/tests/axa_intake/fixtures/. Each file is a v1.0 carrier-structured payload.
A22_v1.json: Morales AUTO (AXA-SAMPLE-AUTO-001): The canonical Morales claim in v1.0 format. TX rear-end collision, employer-business trip purpose, identified adverse driver. Used by T13, which asserts subrogation_identified == True for this scenario. This is the primary AXA POC positive case: the expected subro outcome is REFER_TO_SUBRO_UNIT.
A23_v1.json: Martinez AUTO: The canonical Martinez claim in v1.0 format. TX collision with a contested driver condition narrative. Used in regression and end-to-end tests. Where Morales is the clean positive case, Martinez represents the contested-facts scenario.
blind_auto.json: CA rear-end, no identifying details: A California rear-end AUTO claim with no party names, VIN, or identifying carrier information. Used by T14a to confirm the adapter handles minimal-identity payloads without error, and that adverse vehicle detection works from structural party roles rather than requiring named parties.
blind_property.json: tenant fire, no identifying details: A tenant fire PROPERTY claim with no identifying carrier details. Used by T14b to confirm PROPERTY adapter output shape and subro_facts pass-through on a minimal payload. Exercises the structure/contents/ALE damage map path.
property_contractor_v1.json: PROPERTY contractor sample: A PROPERTY claim involving a contractor scenario. Used by T12 for the PROPERTY subro pipeline end-to-end assertion. Includes structure and contents damage entries, party records with contractor roles, and subro_facts populated for the PROPERTY profile.
Relationship to the Conformance Runner¶
This suite and run_conformance.py test different things and are both required.
The AXA intake suite is targeted: it tests the v1.0 adapter path specifically: schema gating, field mapping, party conversion, the T15 identity constraint, and end-to-end pipeline behavior for v1.0 payloads. All five fixture files are v1.0 carrier-structured payloads. The suite runs in approximately two minutes and is the acceptance gate for any change to adapt_carrier_structured_v1, _v1_party_to_canonical, _restructure_v1_auto_subro_facts, or the schema file itself.
run_conformance.py tests the full 58-seed subro box set, which spans all IDP tracks (native, carrier_structured, reducto), both LOBs in scope (AUTO and PROPERTY), and all jurisdiction combinations. It scores each seed on ten criteria and reports the 56/58 baseline (A31 MI-PD-001 and A32 ND-BI-001 are honest-fail seeds pending liability_basis addition to AUTO-SUBRO-THEORY-006). The conformance runner is the standing gate for corpus and spec changes; it is one of the standing five commands required before every behaviour-changing commit.
A change to the v1.0 adapter must pass both: the intake suite confirms the adapter contract, and the conformance runner confirms that the pipeline behaviour for carrier_structured seeds is not regressed.