Cross-document consistency
What this page is — the capability that walks a document's family tree and flags real conflicts between it and its relatives, telling deliberate overrides apart from genuine clashes.
What it is for — because an SOW quietly setting Net-60 against an MSA that says Net-30 is a dispute waiting to happen, and nothing about either document, read alone, reveals it.
The problem it solves — a conflict between a statement of work and its master agreement stays invisible until the parties disagree about which one governs.
Route: /org/papers/documents/<document>/ai → Comply → Cross-document consistency ·
Permission: Use AI drafting/extraction/Q&A for documents. ·
Utility: papers_consistency_wf · Cost: 600 credits estimated, 2,400 maximum — higher
than most, because it reads several documents.
1. What it is
Contract families drift. An SOW sets different payment terms from its MSA; an amendment changes a definition an addendum still relies on; two documents name different governing law.
This walks the family tree — parent, amendments, renewals, addenda, sibling SOWs — and compares.
The judgement that makes it usable is the second output:
| Output | Contains |
|---|---|
conflicts[] | Genuine clashes needing resolution |
deliberate_differences | Differences judged to be legitimate overrides |
An amendment is supposed to change things. Without that distinction the capability would report
every amendment as a conflict with its parent and be useless. Read deliberate_differences to check
its judgement — an override you did not intend appears there, not in conflicts[].
| Compares against | |
|---|---|
| Cross-document consistency | The document's own contract family |
| Cross-validate | The platform's order record |
| Blind spots | Your finalised corpus of similar documents |
| Version diff | Prior versions of the same document |
It never edits anything. Check the flagged clause on both documents before acting; a conflict is a claim about two texts, and both can be misread.
2. Why you would use it
The family conflict is the most expensive error in contract management because it is invisible from inside either document. Both are internally consistent. Both were properly reviewed. They contradict each other.
- It catches the SOW that overreached. Delivery teams draft SOWs; the MSA constrains what an SOW may change. Nobody re-reads the MSA when drafting the fortieth SOW under it.
- It finds the orphaned definition. An amendment redefines a term; an addendum written earlier still uses the old meaning. Both remain in force.
- It resolves the "which governs?" argument before it starts. A conflict found now is a correction; found during a dispute it is leverage for the other side.
recommendationnames the resolution direction. Align the child, or amend the parent — a decision, not just a flag.- It is the only check that reads more than one document. Everything else in the module reads one at a time.
3. What you provide
Nothing. It is a one-press capability with no parameters.
| Input | Required | Notes |
|---|---|---|
| — | — | The family tree is walked automatically |
The check follows family relations — amend, renew, addendum, parent. A document that is conceptually under an MSA but has no relation recorded is invisible to it, and the run will come back clean.
Linking your documents is the prerequisite. See Amend, renew, supersede.
There is a hard limit worth knowing: up to 5 family documents per run, with long ones truncated — and it says so when that happens. A family larger than five is not fully compared in one run.
4. What it reads automatically
| Read | Used for |
|---|---|
| This document — full rendered text | One side of every comparison |
| The family tree — parent, amendments, renewals, addenda, siblings | Which documents to compare against |
| Each relative's text — up to 5 family documents per run, long ones truncated | The other side |
The truncation notice appears in the result. Do not read a clean result from a large family as proof of consistency without checking whether truncation occurred.
5. What you get back
conflicts[] — each clash.
| Field | Means |
|---|---|
topic | What the conflict is about — "Payment terms" |
this_document | What this document says, with clause ref |
related_document | What the related document says, with clause ref and its name |
severity | How material the clash is |
| why it conflicts | The reasoning |
recommendation | The concrete resolution |
Plus deliberate_differences — differences judged legitimate overrides rather than clashes. And
overall_assessment — whether the family is consistent, and the most material clash. And
disclaimer.
Both sides carry a clause reference, which is what makes a conflict checkable in two lookups rather than two re-reads.
6. Worked example
A delivery lead runs the check on a new SOW before it goes out under an existing master agreement.
Input: none — the SOW is linked to its parent MSA.
One entry from conflicts[]:
topic: "Payment terms" — HIGH this document (SOW §4): "Net-60" "Acme MSA" (§9.2): "Net-30, SOWs may not extend" recommendation: "Align the SOW to Net-30 or amend the MSA"
What makes this finding sharp. The MSA does not merely say Net-30 — it says SOWs may not extend it. So this is not an ambiguity to be resolved by interpretation; the SOW is drafting something it has no authority to draft. Reading either document alone would not show that.
What the lead does. Two options, both named in the recommendation. Aligning the SOW to Net-30 is a one-line change made before it is sent. Amending the MSA is a negotiation. The SOW is corrected.
deliberate_differences on the same run listed the SOW's own service description and its distinct
term dates as legitimate — which they are, and which a naive comparison would have flagged.
7. Running it
- Open a document that has family relations — parent, amendment, renewal or addendum.
- Open the AI Assistant drawer, or go to the document's AI workspace.
- Choose Cross-document consistency under Comply.
- Review the conflicts; the result is saved to the document.
If a related document changed since the last run, the cached result does not know — this document is unchanged, so nothing invalidates the cache. Use Re-run after any relative changes.
This is the one caching behaviour in the module that can quietly mislead you, because the usual signal (my document changed) does not fire.
Cross-document consistency cannot be set to run automatically. It is one of four capabilities absent from the type's AI Config tab — it reads up to five related documents per run at 600 credits a time, which is not a cost to incur on every lifecycle event. Run it by hand before an SOW goes out. See the capabilities reference for the other three.
8. The admin contract
| Must be true | Where | What happens if it is not |
|---|---|---|
| Your role holds Use AI drafting/extraction/Q&A for documents. | Role editor | The AI Assistant button does not appear |
The papers_consistency_wf utility is active | Orbit AI Flow → utilities | "This utility is currently disabled" |
| The utility is enabled for your organisation | /org/ai-utilities | Absent from Comply, with no error |
papers.ai_monthly_credit_cap not yet reached | System Config | "monthly AI credit cap reached: n of n credits used this month" — this capability costs 600, so it exhausts a cap faster |
| Family relations are recorded on documents | Amend, renew, supersede | The tree is empty and every run comes back clean. The most consequential prerequisite in this module |
| You can read the related documents | Project scope and permissions | A relative outside your scope cannot be compared, and its absence is not announced as a permission problem |
For a confidential document, auto-run is default-denied — a platform administrator must set
papers.ai_confidential_cloud to the literal allow, and the block appears only in the server log.
A manual press still works, and where a local model key is configured the run is forced on-prem and
audited on the timeline as ai_local_routed.
9. Don't confuse this with…
| Version diff | Compares versions of the same document. This compares different documents |
| Cross-validate | Reconciles against an order record. This compares against contract relatives |
| Blind spots | Benchmarks against your corpus generally. This compares against this document's own family |
| Amend, renew, supersede | Where relations are recorded. This reads them |
10. Troubleshooting
| Symptom | Cause |
|---|---|
| It found nothing on a family I know conflicts | The relations are not recorded, so the tree is empty (§3) |
| An amendment is reported as a conflict | Check deliberate_differences first — legitimate overrides are separated there (§1) |
| A large family seems only partly checked | It reads up to 5 family documents per run, truncating long ones — and says so (§4) |
| The result is stale after a relative changed | Caching is against this document's content, not its relatives'. Re-run (§7) |
| A related document is missing from the comparison | It may be outside your project scope or permissions (§8) |
| It costs more than other capabilities | 600 / 2,400 credits, because it reads several documents |
| The capability is missing from Comply | Role lacks Use AI drafting/extraction/Q&A for documents., or the utility is off for the organisation (§8). The document type does not gate it — AI Config controls auto-run only |