AXIS Normative Behavior Rules v0.1
Purpose
This section defines normative behavioral rules that govern AXIS schema implementation. These rules remove ambiguity before any schema implementation work begins. All schema, component, entity, DD, and instance work must conform to these rules.
See also: entities-as-validator-contracts decision record (not published in public site set) — Entities as validator contracts and the boundary between schema validation and business logic.
0. Conformance Authority, Core Representation, and Delivery Boundary
- AXIS core conformance is JSON-first in v0.1.
- AXIS defines semantic and conformance behavior, not transport or packaging.
- Implementer-side transformation to other representations is permitted at implementer risk and does not modify AXIS conformance semantics.
- Canonical AXIS schema definitions use governed canonical field names only. Aliases and synonyms are not permitted in canonical schema artifacts.
- Alias handling is permitted only in external mapping artifacts maintained by implementers or profile authors.
- A conformant processor must satisfy two independent obligations:
- unknown-field rejection: undeclared fields are non-conformant,
- contract-claim parity: any declared conformance claim must be enforced.
1. Report Identity And Version Rules
- A report instance must be identified by
report_idplusversion. - A review must reference exactly one
report_idplus onereport_version. - Once a report version is referenced by a review, that report version is immutable.
- A new report version must be created if the underlying report requires change after a review references it.
- Report assignment-context fields
intended_useandintended_userare optional in v0.1 and do not affect baseline conformance when omitted.
Note: v0.1 uses new_version as the correction path. A separate errata
mechanism is deferred to a future version.
Versioning rule:
schema_versionand DDartifact_versionuse semantic versioning (Major.Minor.Patch).- Instance version progression uses integer-style sequence (
v1,v2,v3).
2. Review Anchoring And Peer Model
- Reviews are peer artifacts with no parent-child review hierarchy.
- Each review anchors directly to exactly one report version via
report_idplusreport_version. referenced_review_idis optional and carries zero or one reference to another review instance.- Semantic purpose of
referenced_review_id: an optionalinformed_bytrace link to prior review context. - A
referenced_review_idreference does not change or replace the required anchoring toreport_idplusreport_version. - All reviews within a single review chain resolve to the same root report version anchor.
- A
new_versiondisposition starts a new root anchor. The resulting new report version begins an independent review chain if reviewed again. - If
referenced_review_idis present, the referenced review must share the samereport_idandreport_versionas the current review instance.
Enforcement responsibility:
- DD and instance validators must enforce this cross-check when both review instances are available in the same validation context.
- If the referenced review artifact is unavailable to a validator, the cross-check result is unresolved and must not be treated as a pass.
3. Flag-Driven Requiredness
- A DD defines available flags and the requiredness effects each flag activates.
- Instance-level flags may activate additional conditional requiredness for fields or fieldsets not globally required by the DD.
- Flag-driven requiredness reflects methodology and context that cannot be known until the report instance is developed.
- If a field is required — whether globally by the DD or conditionally by an active instance flag — and no valid value exists, the instance is invalid.
- Flags not set at the instance level do not activate their associated requiredness rules.
Flag structure rule:
- DDs should declare
available_flagswith typed effects. - Instances should declare
active_flagsto activate those effects. - Initial canonical effect type:
activate_required.
Flag resolution semantics:
- Activating a flag not declared in DD
available_flagsis invalid. - Flag activation is explicit at the instance level only. Flags do not transitively activate other flags in v0.1.
- If multiple active flags target overlapping fields or fieldsets, requiredness effects resolve as a union. Ordering does not change outcome.
- Flag names are DD-scoped identifiers and are governed by the declaring DD.
Requiredness Precedence
- DD-level required cannot be weakened or removed by an instance flag.
- Instance flags may only activate additional requiredness.
- Instance flags may never remove or override base DD requiredness.
- Explicit required always overrides conditional optional.
4. Output And Absence Semantics
- Non-required fields and fieldsets may be absent without invalidating the instance.
- Absence of a non-required field is a valid omission signal and must not be interpreted as an error by conforming consumers.
- Required fields cannot rely on silent omission. A required field with no valid value produces an invalid instance.
- Empty strings must not be used as a substitute for absence. A field is either present with a valid value or absent.
Validator Scope vs. Business Logic
AXIS schemas (entities, components, forms) define structure, types, requiredness, and patterns. Validators built on these schemas can automatically check for missing required fields, type mismatches, and pattern violations.
Business logic and cross-field rules (e.g., sums, consistency checks) are out of scope for AXIS schema validation. These must be implemented by vendors or downstream consumers as needed. See entities-as-validator-contracts decision record (not published in public site set) for rationale and examples.
Conformance checks that are in scope:
- Unknown-field rejection is required.
- Contract-claim parity is required: if a processor claims conformance to an AXIS contract, it must enforce all requirements in that contract.
Conformance checks that are out of core scope by default:
- Repeated-field and cross-field consistency checks are Delivery Profile or downstream validation concerns unless explicitly elevated by a later accepted AXIS decision.
Null semantics:
- JSON
nullis distinct from absence. - In v0.1,
nullis invalid unless the governing primitive or DD field constraint explicitly permits null. - If null is permitted, it must be treated as an explicit value state, not as implicit omission.
Array semantics:
- For non-required arrays, absence and empty array are both valid unless a DD declares stronger constraints.
- For required arrays, absence is invalid.
- For required arrays with minimum cardinality greater than zero, empty array is invalid.
Invalid-instance operational semantics:
- Invalidity is a validation-layer state.
- Invalid instances may be serialized for diagnostics, testing, or draft workflows, but they must not be published as conformant artifacts.
- Conformant consumers may reject invalid instances or process them in non-conformant diagnostic mode if clearly marked invalid.
Optional provenance header semantics:
generatorandgenerator_versionare optional instance header fields.- Omission of either or both is conformant in v0.1.
- If present, each must satisfy its declared type constraints.
Money representation rule:
- Monetary values use
amountpluscurrency_code. currency_codemust use ISO 4217 three-letter codes.- No default currency is assumed in v0.1.
Component conformance:
- A component instance is conformant when all component-required fields are present with valid values and optional fields (if present) satisfy declared type and value constraints.
- Component-level requiredness is evaluated before DD-level composition requiredness.
5. Review Fieldset Model
- By default, review fieldsets are selective. A reviewer generates a fieldset only for fields considered material in that review instance.
- Absence of a fieldset in selective mode signals that the field was considered immaterial or not applicable in this instance. It is not an error.
- A DD or instance-level flag
full_field_coveragemay activate generated fieldsets for all fields present in the referenced report instance. - In
full_field_coveragemode, absent fieldsets for present report fields are invalid. - In
full_field_coveragemode, fields permissibly absent from the report instance do not require fieldsets. - For arrays in
full_field_coveragemode, fieldsets are generated per element path (for example/comparables/0/sale_price). - Each fieldset carries:
field_reference— JSON Pointer (RFC 6901) path to the field in the report instance (example:/subject/address/city)original_value— the value as it appears in the report instanceis_valid— reviewer determination of field validityseverity_category— reviewer assigned categorical severity (a,b, orc)comment— optional reviewer commentary- Canonical
severity_categoryvalues are lowercasea,b, andc. Uppercase display labels may be used in documentation, but uppercase values are not canonical data values. severity_categoryis assigned by the reviewer at review time based on full report context. It cannot be predetermined at the DD level because field relevance and impact depend on the methodology used in the report instance.
Field-reference resolution across versions:
field_referenceis resolved against the report version explicitly declared byreport_idplusreport_versionin the review instance.- A review finding that points to a field not present in that anchored report version is invalid.
Semantic definitions for a, b, and c are deferred to a future version.
Known limitation: JSON Pointer field references may be brittle across future DD structural reorganizations. Field-reference stability across DD versions is deferred to a future version.
Third review finding state beyond selective absence signaling is deferred to a future version.
6. Review Outcome And Disposition
outcomeis constrained tosatisfactoryorunsatisfactory.- A
satisfactoryoutcome implies terminal disposition. The review chain ends. - An
unsatisfactoryoutcome must carry adispositionvalue. dispositionis constrained toterminalornew_version.terminaldisposition ends the review chain regardless of outcome.new_versiondisposition signals that a new report version must be created. The new report version starts a new independent review chain and a new root anchor. It is not a continuation of the prior chain.
Outcome/disposition requiredness:
- For
satisfactory,dispositionmay be omitted or explicitly set toterminal. - For
unsatisfactory,dispositionis required and must be eitherterminalornew_version.
7. Signature Conformance
- Report DD and Review DD must include the
signaturescomponent. - A report instance without a valid signature is invalid.
- A review instance without a valid signature is invalid.
signaturesis an array. At least one signature object must be present for a valid instance.- Each signature object must carry:
signer_name— non-empty stringcertification_number— non-empty stringcertification_state— non-empty stringrole— non-empty value from governed enumeration (see below)signature_date— valid ISO 8601 date-only string (YYYY-MM-DD)signature_imageis optional.is_digitalis a boolean flag indicating digital versus wet signature.roleis constrained to a governed enumeration:appraisersupervisory_appraisertrainee_appraiserreviewercollateral_evaluator
Identifier rule:
- Instance identifiers should use UUID v4 values.
- For
report_idandreview_id, v0.1 conformance requires type-prefixed snake_case forms: report_<uuid-v4>review_<uuid-v4>- Cross-instance identity comparisons use the full identifier value as serialized.
Date-only handling rule: unless a field explicitly requires time precision,
date values should use ISO 8601 date-only format (YYYY-MM-DD).
8. Delivery Profiles, Supplemental Guidance, and Change Gate
- Delivery Profiles are permitted as subordinate artifacts that add implementation-facing delivery constraints.
- A Delivery Profile may add constraints but may not weaken, redefine, or override AXIS normative semantics.
- If a Delivery Profile or other supplemental guidance conflicts with this document, this document controls.
- Supplemental guidance documents must include explicit precedence language stating that AXIS normative behavior controls on conflict.
- EPM may be used as an implementation-facing envelope for embedding AXIS payloads in host documents. EPM usage is informative and recommended where applicable, but it is not required for AXIS conformance.
- Compatibility-affecting and breaking AXIS changes must include a conformance suite delta (tests and expected outcomes) before acceptance.
Signature date constraints:
- Signature-date temporal ordering constraints relative to other dates are deferred to a future version.
8. Naming And Representation Boundary
- Canonical identifiers name governed AXIS artifacts in normative and specification language only.
- Canonical identifiers are valid in identity-bearing metadata fields where
artifact identity is explicitly declared (for example
schemaanddocument_type). Version fields such asschema_versioncarry version values, not canonical artifact identifiers. - Canonical identifiers are not valid as runtime business field values.
- Canonical identifiers are not valid as filenames or directory names.
- Runtime fields, JSON objects, filenames, and directory names follow
snake_casewith full words. - Arrays use plural names.
- Boolean fields use the
is_prefix. - Canonical identifiers use dot-separated namespacing with hyphens where
appropriate (example:
axis.document.appraisal-report). - When first introducing a canonical artifact in normative text, state the
canonical ID first followed by an implementation example in parentheses.
Example:
axis.document.appraisal-report(example DD:report_standard_v0_1)
Canonical conformance representation for v0.1:
- JSON is the canonical representation for conformance and validator behavior.
- XML/YAML representations are permitted as equivalent expressions only when mappings preserve canonical JSON semantics.
Allowed abbreviations guidance is maintained in CLAUDE_CONTEXT.md.
Extension mechanism declaration and namespacing are deferred to a future version.
Unknown-field behavior for v0.1:
- Unknown fields are non-conformant unless explicitly declared by the governing DD schema constraints.
Source References
- Report identity and review anchoring:
CLAUDE_CONTEXT.md - Flag-driven requiredness:
CLAUDE_CONTEXT.md - Fieldset model and selective default:
CLAUDE_CONTEXT.md,AXIS.md,AXISDD.md - Outcome and disposition:
CLAUDE_CONTEXT.md - Signature conformance:
CLAUDE_CONTEXT.md - Naming and representation:
GLOSSARY.md,2026-04-23-naming-taxonomy-lock-v0.1.md - JSON Pointer path format: RFC 6901