# Jextra local migration reference

Release 2026-11-02.1. Node 22+. Synthetic inputs only. The local audit, reference test and handoff commands below require no dependencies, account, network calls or customer credentials.

This release provides local commands. It does not publish the earlier deployment's hosted workbench, HTTP demonstrations, template API or account services on www.jextra.com.

## Download and inspect

Create a new working directory, open it in your terminal, then download these files. Inspect the CLI source before running it.

```sh
curl -fSLO https://www.jextra.com/jextra-workflows.mjs
curl -fSLO https://www.jextra.com/jextra-workflows.version.json
curl -fSLO https://www.jextra.com/examples/policy-history-audit.json
curl -fSLO https://www.jextra.com/examples/policy-history-repaired.json
curl -fSLO https://www.jextra.com/examples/policy-history-shared-defect.json
curl -fSLO https://www.jextra.com/examples/policy-history.expected.json
```

Check the distributed CLI's bytes against its metadata:

```sh
node --input-type=module -e 'import {readFileSync} from "node:fs"; import {createHash} from "node:crypto"; const m=JSON.parse(readFileSync("jextra-workflows.version.json","utf8")); const b=readFileSync("jextra-workflows.mjs"); if(b.length!==m.bytes || createHash("sha256").update(b).digest("hex")!==m.sha256) throw new Error("CLI integrity mismatch"); console.log("CLI bytes match release",m.version);'
```

The release metadata is publisher-provided integrity evidence. It does not independently authenticate the publisher or audit the code.

## Run three controls

Run each audit separately. A defect control's exit code 2 is expected; do not join these commands with `&&` or treat that result as an installation failure.

```sh
node jextra-workflows.mjs audit --input policy-history-audit.json --out failing-report.json
```

Expected: `differences`, exit 2. The fixture omits a historical period, changes a holder and shifts an exact premium by 0.01. The associated handoff has four investigation groups, including the broken target relationship.

```sh
node jextra-workflows.mjs audit --input policy-history-repaired.json --out repaired-report.json
```

Expected: `no-differences-in-supplied-scope`, exit 0. This control is generated from the declared synthetic source mapping. It is not a procedure for repairing customer data.

```sh
node jextra-workflows.mjs audit --input policy-history-shared-defect.json --out shared-defect-report.json
```

Expected: `differences`, exit 2. Source and target mapped rows agree, including three policy periods per side. A matching H-MISSING holder reference is absent from the insurer-scoped parent population. The relationship check reports one finding on each side.

## Export a useful brief

```sh
node jextra-workflows.mjs test --workflow insurance-fnol --out reference-tests.json
node jextra-workflows.mjs handoff --input policy-history-audit.json --workflow insurance-fnol --dir new-handoff
```

Expected: 15 synthetic reference cases pass. The handoff command exits 0 when it writes `audit-report.json`, `acceptance.json`, `manifest.json` and `implementation-brief.md` into a new directory. Release status remains `not-approved`. A command's success does not approve an implementation.

The handoff records tool and input hashes. Review its contents before sharing; redacted reports can still contain schema, scope and project metadata. `triage` and the optional `--local-details` output contain additional local investigation details and should stay private unless you explicitly choose to share them. No local command creates a contact request or subscription.

## Your own input

Inspect [the input schema](https://www.jextra.com/workflow-audit-schema.json). Define complete keys, declared field rules, source/target scope and required relationships in a separate input. Keep reference controls unchanged. The published examples use insurer, policy and historical version for period identity and insurer plus holder ID for the parent population. Date strings are compared under the fixture's exact rules; a different domain needs its own declared semantics.

Limits: 20,000 supplied rows per side per comparison, 12 comparisons, 50,000 rows across the bundle, and input files below 50 MB. Decimal strings support at most 30 fractional digits. The handoff includes at most 200 detailed cases; partition a truncated report. These checks do not independently establish capture completeness, historical coverage, live consumer behavior, authorization, cutover or production acceptance.

If you want an implementation conversation, choose the high-level summary to share through [Jextra contact](https://www.jextra.com/contact?interest=modernize). Sending a request is separate from downloading or running this reference.
