Home / Projects / Orchestrata Ultimate / Decisions / ADR index / ADR-0006

ADR-0006: Projection is rule-driven, with a completeness meta-check

field value
Status Accepted
Date 2026-07-23
Register factory (docs/adr, 4-digit ids)
Source docs/adr/0006-rule-driven-projection-with-completeness-check.md — permalink at bdafa201a (unchanged on master since that commit)
Wiki register entry ADR-0006 (wiki status: Accepted)

← ADR-0005 · ADR-0007 →

The record

Context

Per ADR-0005, Prolog reasons over a projection — the "relevant" subgraph — rather than the whole fact store. The rulebase uses negation-as-failure, which was the stated reason for rejecting Cypher as the reasoning language.

NAF is only sound under a closed world. A projection is an open world unless it is provably complete for every predicate the rules consult. If the projection under-selects, a violating fact is simply absent and the rule reports success: no_orphans passes because the orphan was never projected.

This is the worst failure class in the system — a silent false-green. Nothing escalates, nothing errors; the gate simply approves. "Relevant" was doing unexamined, load-bearing work.

Decision

The projection is generated from the rules, not chosen by hand.

Alternatives rejected

Consequences

Provenance

Round-2 Fable identified NAF-over-partial-projection as an unsoundness with a concrete false-green scenario. Round-3 Fable closed the residual: derive predicates by static analysis rather than trust manual declarations, and noted the dependency on banning meta-predicates.

Rulings cited

None.

Specs cited