AURA

Documentation

Human documentation should live in Markdown.

← Back to the overview

1. Human documentation in Markdown

Human documentation should live in Markdown. Examples:

docs/architecture/overview.md
docs/architecture/context.md
docs/architecture/containers.md
docs/architecture/runtime.md
docs/architecture/deployment.md
docs/adr/*.md
docs/quality/quality-goals.md
docs/quality/known-risks.md
docs/glossary/glossary.md

These documents are written for humans. They should make it quickly understandable what a service does, why it exists, and how it relates to other systems.

Important: these documents may be created or updated by AI, but must be reviewed by humans and validated by CI rules.

→ For Markdown templates, see Templates and CLI.


2. C4 diagrams

AURA uses C4 as the standard model for architecture visualization.

C4 essentially consists of multiple levels:

C1: System Context
C2: Container
C3: Component
C4: Code

For AURA, C1 and C2 are the most important. C3 makes sense for more complex services. C4 should rarely be used or only generated automatically.

Minimum requirement per relevant system or service:

C1: System Context
C2: Container
optional C3: Component

A good C4 diagram answers quickly:

  • Where am I?
  • What belongs here?
  • What does not belong here?
  • Who talks to whom?
  • Through which interface?
  • Why is it like this?


3. Diagram sources instead of screenshots

Diagrams should not be stored only as images. The source of the diagram should live in the repository under version control.

Possible formats:

Mermaid
PlantUML
Structurizr DSL
C4-PlantUML

Examples:

docs/architecture/context.mmd
docs/architecture/container.mmd
docs/architecture/workspace.dsl
docs/architecture/container.puml

The central AURA website can display rendered diagrams. The verifiable truth, however, remains the textual diagram source in the repository.


4. Mermaid, PlantUML, or Structurizr?

For the start, Mermaid is attractive because it can be embedded directly in Markdown. For more complex landscapes with many services, a model-based approach can be better.

Possible stages:

Simple:
Markdown + Mermaid

More robust:
Markdown + Mermaid or PlantUML + fixed rules

Architecturally modeled:
Structurizr DSL / C4 model / service graph

Recommendation:

  • For individual repo diagrams, Mermaid can be enough.
  • For organization-wide architecture and dependency models, AURA should maintain a structured model in the long run.
  • Structurizr DSL or a dedicated normalized service graph can be useful for that.

5. ADRs — Architecture Decision Records

C4 shows how the architecture looks. ADRs explain why it is the way it is.

Every repository should store relevant architectural decisions under version control:

docs/adr/0001-use-postgres.md
docs/adr/0002-introduce-event-driven-billing.md
docs/adr/0003-remove-direct-user-service-dependency.md

An ADR should at least contain:

title
status
context
decision
alternatives
consequences
links to Jira, PRs, diagrams, and code

Example ADR

# ADR-0003: Remove direct dependency to user-service

## Status
Accepted

## Context
The billing-service currently calls user-service synchronously during invoice creation.

## Decision
We will replace the synchronous call with user-profile events.

## Consequences
- billing-service becomes less coupled to user-service
- eventual consistency must be handled
- additional event processing is required

## Related
- Jira: PAY-123
- PR: #847
- Services: billing-service, user-service

→ For an ADR template, see Templates and CLI.


6. Quality and risk documentation

Beyond architectural structure and decisions, AURA needs information about quality and risks.

Examples:

docs/quality/quality-goals.md
docs/quality/known-risks.md
docs/quality/technical-debt.md

These documents should answer:

  • Which quality goals are particularly important?
  • Is performance critical?
  • Is resilience critical?
  • Are there regulatory requirements?
  • Which risks are known?
  • Which technical debts exist?
  • Which parts are hard to maintain?
  • Which parts were generated by AI and not yet sufficiently reviewed?

7. Trust status per document

Every service page and every document in AURA should have a visible trust status.

Possible statuses:

validated
outdated
missing owner
missing C4
missing ADR
documentation drift detected
AI-generated, not human-approved
last reviewed over threshold
source unavailable

Example:

documentation_status: validated
last_human_review: 2026-05-01
last_ingested: 2026-05-09
source_commit: a81f3c2
ai_generated: true
human_approved: true
drift_detected: false

This matters so that humans and AI do not blindly trust the documentation.


Continue reading

← Back to the overview