# description
A typed decision tree executed by the algovigilance microgram runtime. Four shapes: classifier (regex/keyword rules on a single field), lookup (key→value table), scorer (weighted yes/no/unknown questions), tree (general decision tree for cases that don't fit the three constrained shapes). v2.0 adds governance fields: tier, signed, domain_signature, coverage_requirements, differential, tests. Canonical implementation: src/lib/microgram/runtime.ts.

# properties.kind.description
v3 marker: present only on kernel-form micrograms. Discriminates v3 from v2.

# properties.language_version.description
v3 marker: present only on kernel-form micrograms.

# properties.body.description
v3 kernel expression tree (see docs/language/SPEC.md §3). Validated structurally by the kernel interpreter; this schema admits any object here.

# properties.params.description
v3 typed parameters (alternative to v2 `inputs`).

# properties.result_type.description
v3 result type expression. Strings for primitives, objects for compound types.

# properties.effects.description
v3 kernel effect declarations. Each entry pairs an effect name with the operations the microgram is permitted to invoke.

# properties.reference.description
Citation — paper, guideline, regulator doc. Makes the rule logic defensible.

# properties.tier.description
v2.0 governance: classification tier. pv-core requires citations + signing; pv-adjacent is supporting infra; non-pv is general algovigilance; unspecified flags a tier-classification gap.

# properties.signed.description
v2.0 governance: true after a JWS / nv-sign pass. False during authoring or after content edits.

# properties.domain_signature.description
v2.0 governance: declared input space + out-of-domain action.

# properties.coverage_requirements.description
v2.0 governance: quality bars enforced in CI.

# properties.differential.description
v2.0 governance: reference implementation + tolerance for differential testing.

# properties.tests.description
v2.0 governance: embedded test cases. Each pairs an input with an expected output; optional cite block for regulatory provenance.

# properties.intent.description
v3.5 self-awareness L1: machine-readable intent declaration. Static checker verifies body's shape matches declaration.

# properties.contract.description
v3.5 self-awareness L3/L4: pre/postcondition contracts. Predicates are KernelExpr; evaluated at runtime around body.

# properties.capabilities.description
v3.6 external awareness: capability declarations. The microgram claims to provide named capabilities and to require named capabilities from upstream/peer micrograms. Capabilities are validated against published suites in src/content/capabilities/.

# properties.capabilities.properties.provides.description
Capabilities this microgram claims to implement. Each must reference a capability suite in src/content/capabilities/.

# properties.capabilities.properties.requires.description
Capabilities this microgram needs from upstream tools in a chain. Composition validates these are satisfied.

# properties.relations.description
v3.6 external awareness: relational metadata. Declares versioning and substitution relationships with other micrograms.

# properties.relations.properties.alternatives.description
Other valid implementations of the same capability.

# properties.relations.properties.deprecated_by.description
Microgram names that supersede this one.

# properties.observable.description
v3.7 Phase 6 Door B (ADR-002): whether the runtime may emit trace records for invocations of this microgram. Default true. Set to false to HARD REFUSE observation regardless of runtime policy — required for micrograms with inherently sensitive inputs that no runtime redaction can be trusted to make safe. The body never reads this field; it is consumed by the runtime wrapper, not the kernel.

# properties.inputs.description
v2 input descriptors. Optional for v3 kernel micrograms (which use `params`). Empty array permitted for nullary tools.

# oneOf[].properties.field.description
Name of the input field whose value the rules match against.

# oneOf[].properties.key.description
Name of the input field used as the lookup key.

# oneOf[].properties.table.description
Lookup table. Keys are normalized lowercase + trimmed.

# oneOf[].properties.prefixMatch.description
If true, fall back to prefix matching before returning default.