Foundation · V1 REVIEW

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

Decision records and their relationships

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

01

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
02

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.

03

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 surfacejs
import {
  assertDecisionGraphV1,
  digestDecisionGraphV1
} from "@polya/contract-ontology";

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