Skip to content

Harness reference


title: Harness Reference description: Complete CLI reference for adjust360_harness.py: every flag, mode, IDP track, exit code, and worked invocation examples. kind: authored status: current source_date: 2026-10-02 tags: [adjust360_harness.py, CLI, modes, IDP, carrier_structured, extract, subro, full, receipt, stability]


What it is

adjust360_harness.py is the single command-line entry point for the Adjust360 FNOL pipeline. It accepts a claim document or a pre-built manifest, routes through the chosen IDP track, executes the selected pipeline mode, and writes structured artefacts to disk or MongoDB. The API that serves adjust360.enowclear360.com sits behind the harness: no tool touches a database directly, and no pipeline stage is accessible except through this entry point.

IDP Tracks

The --idp flag selects how the claim document is ingested before any GKR tool sees it.

Track Value How it works Document input
Native native FNOLExtractorGKR performs LLM-based extraction from raw files --doc or --bundle
Reducto reducto Pre-processed Reducto output loaded from manifest --manifest
Databricks databricks Pre-processed Databricks output loaded from manifest --manifest
Carrier Structured carrier_structured Validated AXA v1.0 payload loaded from manifest --in (alias for --manifest)

The reducto, databricks, and carrier_structured tracks skip FNOLExtractorGKR entirely; idp_normalizer.py converts the manifest to the canonical envelope shape that all downstream GKR tools expect.

Pipeline Modes

The --mode flag controls how far the pipeline runs and what it produces.

Mode Steps executed Primary output
extract FNOLExtractorGKR only Classification + core_facts printed; stops before any GKR analysis tool
subro Steps 1–6, through SubrogationScreenerGKR Thesis record, trace, optional brief
full All 7 tools including AuthorityGateGKR Complete run log, thesis, brief
stability Full pipeline × N runs with cached extraction Per-field agreement rate report
receipt Extraction + JurisdictionResolverGKR only HTML data receipt; no determination

extract is the lowest-cost diagnostic pass. It confirms the extractor reached a clean classification and that core_facts are populated before committing to a full pipeline run. It accepts --idp native only; carrier-structured and manifest-based tracks bypass extraction entirely.

subro runs the carrier path through the subrogation determination and stops there. Liability and coverage tools are recorded as not run. Use this for AXA POC scenarios and for any run where only the subrogation thesis matters. The --in flag is the alias for --manifest on the carrier_structured track; --store DIR writes the eight run artefacts (payload.json, receipt.json, receipt.html, thesis.json, trace.json, brief.html, brief.pdf, manifest.json) to DIR/lob/claim_id/run_id/. See the harness-and-modes page for the receipt and thesis relationship; see this page's Flag Reference for the complete argument list.

full is the standard production invocation. It adds AuthorityGateGKR as the seventh step after the subro screener, producing the complete authority tier assignment alongside the subrogation determination.

stability catches non-determinism in rules tools. It runs the full pipeline N times using a single cached extraction result, then reports the agreement rate for every field in the thesis record. An agreement rate below 1.0 on a rules tool is a defect: rules tools carry the llm_construction_count == 0 assertion.

receipt tells the sender what its payload contains before any determination is made. It validates the manifest through the normalizer, builds the receipt record, and renders receipt.html with data-trace on every element. It runs no analysis tool and makes no subrogation call. Useful for carrier onboarding: the sender can confirm all decisive fields are present and that jurisdiction readiness is green before submitting a production claim.

Flag Reference

Flag Type Default Notes
--idp choice native native | reducto | databricks | carrier_structured
--doc PATH appendable : Single file, directory, or repeated for ordered list. Native track only. Unsupported extensions skipped with warning.
--bundle ZIP path : ZIP archive extracted to temp dir and processed as directory. Native track only.
--manifest FILE path : Canonical manifest JSON. Required for reducto, databricks, carrier_structured.
--in FILE path : Alias for --manifest when --idp carrier_structured. Validated against v1.0 schema + SHA-256.
--mode choice full extract | subro | full | stability | receipt
--lob choice auto-detect wc | auto | gl | property
--state string derived from doc Two-letter US state code
--reference-date YYYY-MM-DD : Reference date for SOL/deadline calculations. Required for --idp carrier_structured.
--case-id string TEST-{timestamp} Explicit case identifier
--model string openai/gpt-oss-120b LLM model for FNOLExtractorGKR (native track only)
--out PATH path : Write full run log JSON to this path
--brief PATH path : Write adjuster-facing Subrogation Intelligence Brief. Requires --mode subro or full. PDF via Playwright if installed, HTML fallback.
--store DIR path : Write run artefacts to DIR/lob/claim_id/run_id/ (eight files: payload, receipt, thesis, trace, brief, manifest)
--n-runs int 5 Number of pipeline runs for --mode stability only
--phase-a-seed FILE path : JSON with pre-captured Phase A output (semantic_facts, extraction_metadata). Parity harness only: not for production runs.
--skip-date-gate flag off Bypass null date_of_loss intake gate. Uses sentinel UNKNOWN-DOL. Local fixture testing only; never in Conductor.
--compare-to CASE_ID string : Compare this run against stored case in fnol_claim_intel. Produces IMPROVED / REGRESSED / SAME report via LLM.
--write-mode choice ephemeral Only valid value: ephemeral. Instructs FNOLExtractorGKR and CoverageAnalyzerGKR not to write intermediate results to MongoDB. Pass explicitly for test clarity.
--query-workflow string : ClickHouse: show all tasks for a Conductor workflow ID. Mutually exclusive with pipeline run.
--query-trace string : ClickHouse: drill into a specific task trace ID. Mutually exclusive with pipeline run.
--service choice : Filter --query-trace by tool-sandbox or sandbox-service

Worked Examples

Native extraction: AUTO claim, California, subro mode with brief:

python adjust360_harness.py \
  --idp native \
  --doc /data/claims/morales_police_report.pdf \
  --lob auto \
  --state CA \
  --mode subro \
  --case-id AXA-POC-001 \
  --brief /tmp/AXA-POC-001_brief.pdf

Native extraction: verify extraction only before committing to full run:

python adjust360_harness.py \
  --idp native \
  --doc /data/claims/martinez_fnol_packet.pdf \
  --lob auto \
  --state TX \
  --mode extract \
  --case-id EXTRACT-CHECK-001

Full pipeline: ordered multi-document bundle:

python adjust360_harness.py \
  --idp native \
  --doc /data/claims/fleet_001_fnol.pdf \
  --doc /data/claims/fleet_001_police.pdf \
  --doc /data/claims/fleet_001_photos/ \
  --lob auto \
  --state FL \
  --mode full \
  --case-id FLEET-2025-001 \
  --store /data/runs/

ZIP bundle: property claim:

python adjust360_harness.py \
  --idp native \
  --bundle /data/bundles/property_claim_TX_2025.zip \
  --lob property \
  --state TX \
  --mode subro \
  --out /tmp/property_run_log.json

Carrier-structured v1.0: AXA AUTO payload, subro mode:

python adjust360_harness.py \
  --idp carrier_structured \
  --in /data/axa/AXA-SAMPLE-AUTO-001.json \
  --lob auto \
  --state TX \
  --reference-date 2025-07-22 \
  --mode subro \
  --brief /tmp/AXA-SAMPLE-AUTO-001_brief.pdf \
  --store /data/axa/runs/

Receipt mode: preflight validation before production submission:

python adjust360_harness.py \
  --idp carrier_structured \
  --in /data/axa/new_claim_payload.json \
  --lob auto \
  --state NY \
  --reference-date 2025-09-15 \
  --mode receipt \
  --out /tmp/preflight_receipt.json

Stability mode: detect non-determinism across five runs:

python adjust360_harness.py \
  --idp native \
  --doc /data/claims/morales_police_report.pdf \
  --lob auto \
  --state CA \
  --mode stability \
  --n-runs 5 \
  --case-id STABILITY-CHECK-001

Ephemeral run: local fixture testing without MongoDB writes:

python adjust360_harness.py \
  --idp carrier_structured \
  --in /data/fixtures/blind_auto.json \
  --lob auto \
  --state CA \
  --reference-date 2025-06-01 \
  --mode subro \
  --write-mode ephemeral \
  --skip-date-gate

Regression comparison: compare new run against stored baseline:

python adjust360_harness.py \
  --idp native \
  --doc /data/claims/morales_police_report.pdf \
  --lob auto \
  --state CA \
  --mode subro \
  --case-id AXA-POC-001-V2 \
  --compare-to AXA-POC-001

ClickHouse Observability

The --query-workflow and --query-trace flags are mutually exclusive with a pipeline run: they connect to ClickHouse and return trace data without executing any claim logic.

# Show all tasks that ran in a Conductor workflow
python adjust360_harness.py --query-workflow <CONDUCTOR_WORKFLOW_ID>

# Drill into a specific task trace, optionally filtered by service
python adjust360_harness.py --query-trace <TRACE_ID> --service tool-sandbox

The default ClickHouse host is http://184.73.82.115:8123. The CH_PASSWORD environment variable is required for both query flags. See observability-query-guide.md at the vin-tools repo root for the full SQL query patterns and table schema.

Environment Variables

Variable Required for Notes
ARTIFI_MONGO_CONNECTION_STRING All tool runs that read GKR or write claims Required for every mode except ephemeral dry-run fixture tests
LITELLM_API_KEY --idp native FNOLExtractorGKR LLM calls route through the LiteLLM proxy
LITELLM_BASE_URL --idp native Dev: https://api.groq.com/openai/v1. Prod: http://44.220.92.58:4000/v1
CH_PASSWORD --query-workflow, --query-trace ClickHouse authentication. Default host: http://184.73.82.115:8123

Exit Codes

Code Meaning
0 Success
2 V1IntegrityError: carrier_structured v1.0 schema validation or SHA-256 failure. See the carrier-structured-v1-adapter page for remediation.
non-zero (other) Pipeline error: check stderr and the run log written to --out