---
title: "Decision records and their relationships"
description: "How DecisionCase, nine node kinds, and direction-limited edges create inspectable decision lineage."
updated: "30 August 2026"
availability: "CONTRACT REVIEW · TEST_ONLY"
candidate_route: "/docs/polya/foundations/decision-graph"
---

# Decision records and their relationships

How DecisionCase, nine node kinds, and direction-limited edges create inspectable decision lineage.

**CONTRACT REVIEW · TEST_ONLY:** Review-candidate contract and local fixture evidence only · no distributed SDK, operational API, publisher parity, or decision authority

## The nine node kinds in v1

- SignalRef — opaque HARBINGER reference
- Option — human-reviewable alternative
- Assumption — explicit proposition
- EvidenceRequest — open verification question
- Task — review-work record
- Dissent — human counter-position
- Scenario — review scenario with a time horizon
- Decision — human-recorded option selection
- ReviewTrigger — condition that reopens review

## Edges permit only defined directions

INFORMS, SUPPORTS, CHALLENGES, RAISES, ASSIGNS, FULFILLS, DISSENTS_FROM, MODELS, SELECTS, TRIGGERS_REVIEW, and SUPERSEDES restrict their source and target kinds. Unknown relationships and self-edges fail.

> **Completeness:** Every non-root node requires exactly one active CASE_CONTAINS edge from DecisionCase.

## The same snapshot must produce the same digest

The review profile freezes serialization and digest behavior under `POLYA-CANONICAL-JSON-UTF8-SHA256-V1`. Unknown fields, Unicode normalization failures, cyclic lineage, and invalid time ranges fail closed.

**Review-candidate import surface**

```js
import {
  assertDecisionGraphV1,
  digestDecisionGraphV1
} from "@polya/contract-ontology";

const graph = assertDecisionGraphV1(input);
const digest = digestDecisionGraphV1(graph);
```

> **Distribution state:** This import names a private review-workspace contract surface, not a public npm SDK or support commitment.

---

Published route: /docs/polya/foundations/decision-graph
