Condition Authoring Guide

Author typed conditions and evidence policies.

Condition object

A permanent-form condition contains only:

ConditionDefinition
    ConditionId
    ClosedObservationDomain
    TypedPredicate
    EvidenceUsePolicy

It does not contain a provider ID, check ID, query, trust lane, acquisition error, or caller-authored semantic status.

Authoring order

  1. Name one bounded canonical ConditionId.
  2. Select one closed observation domain with exact bounds and encoding law.
  3. Select the comparator-specific predicate variant lawful for that domain.
  4. State the evidence-use policy as factorized source, integrity, freshness, authorization, scope, independence, and retention facts.
  5. Add zero or more separate acquisition-operation bindings.
  6. Reference the condition from a propositionally satisfiable stage RET law.

Caller submission needs no fictional provider binding. Each submitted value is still admitted against the exact condition domain and use policy. Local or registered acquisition uses a separate binding that proves its operation and projection relation.

Initial domains

  • bounded exact signed and unsigned integers;
  • exact decimals with declared precision and scale;
  • booleans;
  • bounded strings and bytes;
  • dates and instants with named semantics;
  • closed bounded arrays and records;
  • closed unions for which the predicate is lawful for every member.

There is no implicit coercion, generic binary floating-point comparison, unnamed human-language collation, overloaded contains, or accepted arbitrary JSON domain.

Predicate shape

Validated predicates retain their relation in the variant, for example:

Exists
ObservedAbsent
Equals(ValidatedComparableValue)
IntegerGreaterThan(ValidatedInteger)
IntegerClosedRange(InclusiveMinimum, InclusiveMaximum)
DecimalGreaterThan(ValidatedDecimal)
DecimalClosedRange(InclusiveMinimum, InclusiveMaximum)
DateClosedRange(InclusiveMinimum, InclusiveMaximum)
InstantClosedRange(InclusiveMinimum, InclusiveMaximum)
StringContains(ValidatedString)
CollectionContains(ValidatedComparableValue)
InSet(ValidatedNonEmptyCompatibleSet)

The current sealed representation implements the comparator-specific relation; there is no comparator + optional expected JSON compatibility form. Inclusive range constructors admit both endpoints through the exact owning domain and reject reversed bounds during scenario admission.

Acquisition bindings

A binding names the target condition, exact operation/source or immutable provider-contract identity, validated schema-bound parameters, and projection into the condition domain. Equal query text never merges condition identities. One condition may admit several lawful paths when its policy permits them.

Network provider bindings are not selected for the initial target profile.

Current wire contract

The dag-v3 schema represents typed domains, comparator-specific predicates, mandatory evidence-use policy, and acquisition bindings separately. Older provider-coupled and flattened predicate syntax is rejected; no compatibility field or migration route exists.