Inspect Contradictions and Version History
Before you begin
Audience: Governance lead, support engineer
You need the answer_id of the answer you want to inspect. The answer should be APPROVED and of horn_type: fact — contradiction detection operates on FACT-type approved answers only (see note in Section A).
If an answer was published recently and contradictions appear to be missing, run a graph sync task before proceeding. Contact your platform administrator to confirm the sync schedule or trigger a manual sync.
Section A — Inspect Contradictions
Contradictions indicate that two approved answers assert conflicting information about the same subject and predicate. Identifying and resolving them keeps the registry internally consistent.
1. Retrieve known contradictions
curl -s http://localhost:8000/v1/graph/answers/ans-2a3b4c5d/contradictions
The response returns a list of CONFLICTS_WITH relationships from the Neo4j graph:
{
"answer_id": "ans-2a3b4c5d",
"contradictions": [
{
"answer_id_a": "ans-2a3b4c5d",
"answer_id_b": "ans-5e6f7a8b",
"conflict_type": "object_value_mismatch",
"description": "Both answers assert 'v3 API webhook delivery has_maximum_payload_size' but with different object values: '5 MB' vs '10 MB'."
}
]
}
If contradictions is an empty array, no conflicts are currently registered for this answer in the graph.
Note: The Neo4j graph is a derived projection from PostgreSQL. Answers published since the last graph sync may not yet appear. If you expect a contradiction that is not showing, trigger a fresh detection pass (step 5) or ask your platform administrator to run the sync job. See also: "Run Workers and Sync Jobs" in the administration guide.
2. Understand what constitutes a contradiction
A contradiction exists when two APPROVED FACT-type answers share the same grammar_subject and grammar_predicate but have different grammar_object values and compatible or overlapping customer_scope.
This means: - Same subject (for example, "v3 API webhook delivery") - Same predicate (for example, "has_maximum_payload_size") - Different object value (for example, "5 MB" vs "10 MB")
Answers with different subjects or predicates are not contradictions, even if they cover related topics.
Note: Contradiction detection operates on
APPROVEDFACT-type answers only. Answers of other Horn types (concept,procedure,principle, etc.) and answers in non-APPROVEDstates are not evaluated. If you have a factual discrepancy in a non-FACT answer, resolve it through the standard validation lifecycle.
3. Evaluate each contradiction
For each CONFLICTS_WITH relationship returned, determine:
| Question | Guidance |
|---|---|
| Which answer is more recent? | Check created_at on each answer via GET /v1/registry/answers/{answer_id} |
| Which answer has stronger evidence? | Compare the evidence links and their source authority |
| Does one answer apply to a different scope than the other? | Scoped answers may not be true contradictions |
| Has the underlying fact changed, making one answer outdated? | If yes, the older answer should be superseded |
4. Resolve the contradiction
Choose the appropriate resolution action:
| Situation | Resolution |
|---|---|
| One answer is outdated | Supersede the older answer by publishing a new version; the superseded status removes it from active contradiction checks |
| One answer is wrong | Dispute the incorrect answer; assign a validator to correct and re-validate it |
| Both answers are valid but scoped differently | Verify customer_scope is set correctly on both; scope isolation prevents cross-scope contradictions |
| The fact itself is ambiguous | Retire both and create a single authoritative replacement |
5. Trigger a fresh contradiction detection pass
To queue a new detection run for a specific answer:
curl -s -X POST http://localhost:8000/v1/graph/answers/ans-2a3b4c5d/detect-contradictions
The service queues a Celery task. The detection result will be reflected in the graph after the task completes. Poll GET /v1/graph/answers/{answer_id}/contradictions again after a short interval to see updated results.
Section B — Inspect Version History
Version history shows how an answer has changed over time through supersession. Use this to understand the provenance of the current answer and to find older versions if needed.
1. Retrieve the supersession chain
curl -s http://localhost:8000/v1/graph/answers/ans-2a3b4c5d/supersessions
The response returns the full chain from the original version to the most recent, each entry as an AnswerNode:
{
"answer_id": "ans-2a3b4c5d",
"supersession_chain": [
{
"answer_id": "ans-0z9y8x7w",
"version": 1,
"status": "SUPERSEDED",
"created_at": "2025-08-10T09:00:00Z"
},
{
"answer_id": "ans-1a2b3c4d",
"version": 2,
"status": "SUPERSEDED",
"created_at": "2026-01-15T14:22:00Z"
},
{
"answer_id": "ans-2a3b4c5d",
"version": 3,
"status": "APPROVED",
"created_at": "2026-05-20T10:14:00Z"
}
]
}
The last entry in the chain is always the current APPROVED version. Earlier entries are SUPERSEDED.
2. Interpret the version chain
The supersession chain tells you: - How many times this answer has been revised - The date each version was created - Which version is currently active
Use the chain to audit when a factual change was made and to retrieve a historical version for reference or comparison. To export a specific historical version, see Export an Answer for Reuse.
Section C — Explore Answers by Concept
Concept browsing lets you find all approved answers related to a subject label. This is useful for comprehensive review of everything the registry knows about a given topic.
1. Find all answers for a concept label
The concept_label corresponds to the grammar_subject value used in the assertion grammar for FACT-type answers:
curl -s "http://localhost:8000/v1/graph/concepts/v3%20API%20webhook%20delivery/answers"
URL-encode spaces and special characters in the concept label.
The response returns a list of AnswerNode objects — all approved answers whose grammar_subject matches the concept label:
{
"concept_label": "v3 API webhook delivery",
"answers": [
{
"answer_id": "ans-2a3b4c5d",
"version": 3,
"status": "APPROVED",
"created_at": "2026-05-20T10:14:00Z"
},
{
"answer_id": "ans-9b8c7d6e",
"version": 1,
"status": "APPROVED",
"created_at": "2026-03-01T11:05:00Z"
}
]
}
Multiple approved answers for the same concept are normal — they may have different predicates (for example, payload size, retry behavior, authentication method). If you see answers with the same predicate, that may indicate an undetected contradiction; run detect-contradictions on each.
Result
You have a complete picture of contradictions, version history, and conceptual clusters for a given answer or subject. Contradictions are documented with their conflict type and a description of the mismatch. The supersession chain shows how the answer has evolved. Concept browsing reveals the full scope of what the registry asserts about a given subject, enabling targeted governance review.