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 |