Company and organization identity only. Prepared from a completed
resolvd import-csv run. No system of yours was contacted or changed.
website-tutorial-offline9c1a4ea114f6e690e280bfcb31d3e6d37846770e2426c66f88a661515201a0e7resolvd-audit-pack-v0 version 0.4.0probabilistic This is a Resolvd Audit Pack v0. It is not an Audit Pack v1 and does not claim v1 compliance.
v0 is a post-processor over the outputs of a completed resolvd import-csv run. It rewrites what that run already decided into row-level ledgers, a decision receipt per row, an entity-membership projection, a reversal map and this report. It does not re-resolve anything, and it does not add a judgement the pipeline did not already make.
Resolvd wrote nothing to your systems. No CRM, ERP, MDM, warehouse or provider was contacted or changed, and this pack proposes actions rather than applying them. Resolvd's own catalogue was written during the import that produced these files - entities were created, decisions recorded and credits consumed - so this is not the no-write shadow execution that Audit Pack v1 section 4 specifies, and no no-write attestation is offered.
This pack contains no incumbent-provider comparison, no counterfactual sensitivity analysis and no merge blast-radius analysis. Those are specified in Audit Pack v1 and are not implemented; their absence is recorded in manifest.json, not represented by empty files.
Two files in this pack have pair grain rather than row grain, and both are partial. withheld_matches.csv lists pairs of your own rows that Resolvd compared and deliberately did not merge; it is not a statement about any incumbent provider, because none was supplied. do_not_merge.csv lists merges Resolvd's own cascade proposed and its merge guard then refused, naming the fields that disagreed. do_not_merge.csv is NOT the complete set of pairs in your data that must never be merged: it contains no reviewer-confirmed cannot-link and no authoritative-evidence basis, neither of which is implemented, and it covers only the pairs Resolvd actually compared. Both files are absent rather than empty when this run supplied no pairs log, because without one the pack cannot tell you how many pairs were compared and therefore cannot tell you what a zero would mean.
The reversal map tells you which of your own source rows each proposed merge would collapse together. It is not a rollback manifest: Resolvd received no prior state from your systems, so no action here carries a before-value, a precondition or an inverse operation.
Every figure in this report reconciles to the row-level CSV files, and manifest.json records the result of each check. The row files, not this report, are the record. This pack concerns company and organization identity only; nothing in it is a claim about people, sanctions, account ownership, emissions or geolocation, and it is not legal advice.
| Outcome | Rows | What it means |
|---|---|---|
| Accepted matches | 3 | Bound to a company that already existed in the catalogue. |
| New entities (mints) | 2 | Bound to no prior company. Not a match — see below. |
| Unresolved — decided | 1 | unresolved (3) minus not submitted (2). Reached the pipeline; it abstained. |
| Not submitted | 2 | Skipped before submission; carried in unresolved.csv. |
3 of 8 rows (37.5%) are unresolved.
Resolvd abstains when the evidence does not support a binding. Every unresolved row is a merge that was not made on a guess, and it stays reviewable rather than becoming a silent error in your master data. Read this share as calibrated restraint, not as a missed target.
Coverage is a property of this file as much as of the engine: it depends on how many of your rows carried a discriminating identifier — a domain, an address, a jurisdiction, a company or VAT number, an LEI, a DUNS or a BIC. A name-only row has nothing to bind on, and Resolvd abstains rather than guessing. Rows that abstained for want of a field are listed in unresolved.csv with a reason_code and a prescription. Each prescription is a typed cause, and prescription_fields names the columns of yours that would help wherever a column is nameable — which is most rows, and not all of them. Two of the causes are ours rather than yours (the run stopped at its depth cap, or a stage of ours was down); those lead with our stop and still carry the column beside it. The cell is empty only where nothing is nameable: the row already carries every column this analysis knows how to ask for, or the column that would have helped is already there and its value did not survive normalization, which says repair rather than add.
v0 reports the unresolved split only as decided-and-abstained
(1) against not-submitted (2). The
per-row cause is the reason_code column of unresolved.csv;
this page does not aggregate it, because it does not read the row files.
Each unresolved row of unresolved.csv carries a
prescription and the field names behind it. A prescription names a column
you could add — never a predicted outcome, and never a promise that adding it would
resolve the row.
| Prescription | Rows | What it means |
|---|---|---|
add_identifying_field |
2 | This row was never compared: it carries none of the fields the intake gate admits, so there is no decision to explain. Any one of a company name, a domain or a registration number makes it submittable. |
raise_depth |
1 | The comparison stopped at its configured depth cap rather than running out of evidence, so re-submitting this row at a greater depth is the first step. That is a fact about the depth this run was given and not a finding about your file, and this run did not establish that the row was decidable as it stands: the column named beside this note would improve it at any depth. |
0 merges our own cascade proposed were refused by our merge guard, and 0 pairs were compared without being called either way.
A withheld pair is a comparison that abstained, not a promise that the two rows are
apart. Where its settled_by_cluster column reads true, other
evidence in the same batch put the two rows on one entity anyway, and you will find
them together in golden_records.csv — the two files agreeing,
not contradicting each other.
We refused no merge, and here is the denominator
Resolvd compared 4 pairs of your rows, and over those the cascade proposed no merge the guard had to refuse. That is the denominator, and it is not the same number as the rows listed below: a pair the comparison answered outright leaves no ledger row at all.
That is a finding about the pairs we compared. It does not mean your file contains no dangerous merges — a merge we never proposed is a merge we never had the chance to refuse.
Each row of do_not_merge.csv is two of your source rows the
pipeline scored as a match and then refused to merge, naming the field of YOURS that
disagreed. Each carries a decision_id you can redeem at
GET /v1/decisions/{id}, so every one of these is checkable rather than
asserted.
| Measure | Count | What it means |
|---|---|---|
| Merges proposed and refused | 0 | Our cascade reached a match; our own guard would not allow it. |
| of those, decisive identifier conflicts | 0 | A registered identifier disagreed — between your two rows, or between one of them and the company the other matched to. Cannot-link. |
| of those, corroborated weak evidence | 0 | Two rebuttable signals disagreed at once. Advisory, not proven. |
| Pairs compared and not called | 0 | We compared two of your rows and would not call it. Check settled_by_cluster before reading one as kept apart. |
| Pairs actually compared | 4 | The denominator: every figure above is drawn from these. |
| Pairs the pair cap never compared | 0 | Counted, never listed: no ledger below says anything about these. |
| of those, plus pairs the deep budget held back | 0 | The remainder WAS compared at the cheap tier and is a row of the withheld file, not a gap in it. |
| Pair slots a crowded blocking key skipped | 0 | An upper bound, in slots rather than pairs: a pair can be counted here under more than one key, and a row in a skipped group may still have been compared through another of its keys. Nothing below says anything about these either. |
What do_not_merge.csv covers
This file has PAIR grain: each row is a merge Resolvd's own cascade proposed and its merge guard then refused, naming the input fields that disagreed.
It is NOT a list of every pair in your data that must never be merged. It contains no reviewer-confirmed cannot-links and no authoritative-evidence basis: neither is wired in this version. A row with block_strength=advisory is corroborated but individually rebuttable evidence, not a proven incompatibility.
It covers the guard's EDGE pass only. The same guard runs a second time while a cluster is being assembled, and a member it refuses there is detached onto its own entity and recorded in the run log rather than as a row here. Those refusals are real and are not counted in this file.
Zero rows means Resolvd proposed no merge that its guard refused, over the pairs it compared. It does not mean your file contains no dangerous merges.
What withheld_matches.csv covers
This file has PAIR grain: each row is two of your source rows that Resolvd compared and could not call on that comparison alone. Audit Pack v1 section 5.3 defines withheld_matches as an incumbent provider's proposal that Resolvd cannot independently admit; no incumbent proposal was supplied to this run, and no row here is a statement about any provider.
Read the settled_by_cluster column before treating a row as a pair we kept apart. false means the pair went to the review queue and the two rows are on separate entities. true means other evidence in the same batch placed them together anyway, so the pair is a comparison that abstained and NOT a separation - you will find both rows on one entity in golden_records.csv, and that is agreement between the two files rather than a contradiction.
Pairs the blocking pair cap truncated, and pair slots a crowded blocking key skipped, were never compared at all and are listed nowhere in this pack; both are counted in manifest.pair_totals. A pair the DEEP budget deferred is a different thing and is not missing from this file: it was compared at the cheap tier, it abstained honestly, and it is a row here.
5 of 8 rows (62.5%)
sit in an entity holding more than one of your rows. Those are the merges this pack
proposes; reversal_map.csv names which of your rows each one collapses,
so you can restore them from your own snapshot if you apply it and want it back.
| Measure | Count | What it means |
|---|---|---|
| Duplicate clusters | 2 | Entities holding two or more of your rows. |
| Rows inside those clusters | 5 | Your source rows a merge would collapse together. |
| Largest cluster | 3 | Rows in the biggest single proposed merge. |
| Reversal-map actions | 5 | One row of reversal_map.csv per row inside a cluster. |
| Golden records | 2 | Distinct entities across accepted matches and mints. |
| Members across golden records | 5 | Sums to accepted matches plus mints. |
2 rows minted a new company.
A mint means the row bound to no company that existed before the call. It is not
a candidate match that scored well — the pipeline records it on a reject-side basis
(no candidate matched, or none was retrieved), so it carries no match confidence
and no accepted-match guarantee. Mints are counted here and never inside the
accepted-match figure, and they are written to new_entities.csv, never
to accepted_matches.csv.
Every accepted match in this pack carries a decision receipt whose recorded match confidence is at or above the shipped floor of 0.90. That was re-checked while this pack was built, row by row, against the receipts.
6 of
6 decision
receipts were written to decision_receipts.ndjson. Each is the decision
body verbatim, so you can re-fetch it from the API and diff it against ours.
decision_receipts.ndjson holds v0 pack artifacts: verbatim copies of what GET /v1/decisions/{decision_id} returned at fetch time, not rows of the live decision store. They are not RFC 8785 canonical and carry no receipt_sha256, so they are not Audit Pack v1 §7 receipts.
0 evidence citations were captured across 1 source. This pack is not redistributable. No evidence citations were captured in this pack.
Sources cited: customer.
These files are absent by decision, not by accident. An empty file with a header row would read as "we checked and found none"; we did not check, and the manifest says so instead.
| File | Why it is absent |
|---|---|
incumbent_contradictions.csv | no_incumbent_input_in_v0 |
The reconciliation identities are evaluated when manifest.json is
written, which happens after this page (the manifest lists this file's own
checksum). Their results are recorded there, under reconciliation,
and a failed identity means the pack carries no manifest.sha256.
File sizes, row counts and SHA-256 checksums for every file in this pack are in
manifest.json, and manifest.sha256 covers the manifest
itself. A checksum binds the parts of one pack and detects corruption; it is not a
signature and does not prove who produced the pack.
No quality-rate figure appears in this pack. This run has no labelled ground truth for your rows, so any such figure would be unmeasured here.
Print to PDF from your browser; v0 ships no PDF renderer. This document is self-contained and makes no network request when opened offline.
resolvd-audit-pack-v0 version 0.4.0 · run
website-tutorial-offline · generated 2026-10-15T12:43:07Z. The row-level CSV
files, not this report, are the record.