Skip to content

Authoring Guidance

This page gives lightweight guidance for writing Accountable Record artifacts.

For the shared annotation standard, see:

https://github.com/structural-explainability/.github/blob/main/ANNOTATIONS.md

Annotation prefixes

AR artifacts may use the shared annotation prefixes when a choice needs durable explanation.

Prefix Use
WHY: Rationale for a design choice.
OBS: Observation about the current artifact.
REQ: Requirement imposed downstream.
ALT: Alternative considered and rejected.
CUSTOM: Profile- or implementation-specific note.

Annotations are optional.

Use them when they preserve information a future reader, implementor, reviewer, or verifier maintainer will need.

Do not use annotations to restate obvious text.

Where annotations appear

Annotations may appear in:

  • specification prose,
  • TOML or JSON rationale fields,
  • examples and fixtures,
  • implementation comments,
  • profile-specific documentation.

For prose, use short set-aside blocks:

> **WHY:** A record has one entity kind so trait applicability and
> transformation behavior remain unambiguous.

For TOML, use rationale fields when the explanation belongs with the artifact:

[trait."AR.TRAIT.SOURCE_TRACEABLE".rationale]
why = """
Source traceability lets a verifier distinguish the source record from later
interpretation or derived claims.
"""

When to annotate

Add an annotation when:

  • the reason for a choice is not obvious,
  • an alternative was considered and rejected,
  • an artifact imposes a downstream requirement,
  • a profile needs to record domain-specific context,
  • removing the explanation would make future maintenance riskier.

Do not annotate when the annotation merely repeats the surrounding text.

Normative status

Annotations are non-normative.

They explain artifacts.

They do not replace the specification, schema, claim definition, trait definition, profile, bundle, or report.

Changing annotation text is not a breaking change unless the normative artifact itself changes.

Profile-specific notes

Use CUSTOM: only for information specific to a profile or implementation.

Do not use CUSTOM: as a substitute for WHY: when explaining an AR-level design choice.