Architecture

A pipeline where every stage keeps its evidence.

Dokimos is an F# system built around one rule: an observation is not a judgment. External effects sit at the edges, domain states are explicit types, and each stage's output can be inspected without trusting the next one.

Pipeline

From source to decision in seven layers.

docs/architecture/ARCHITECTURE.md

  1. Source + version-control evidence

    Files and Git history. Reading them is an explicit external effect.

  2. Analyzer adapters

    Language-specific collectors with declared capabilities. They cannot reinterpret history.

  3. Normalized observations

    Language-neutral: metric, version, scope, measurement, provenance.

  4. Immutable snapshot store

    Versioned JSON artifacts today, behind a storage boundary.

  5. Comparison and lifecycle engine

    Compatible comparisons, trends, finding transitions.

  6. Policy and baseline evaluation

    Thresholds, ratchets, dispositions, accepted baselines.

  7. Machine results · Forma UI · Folio report

    Canonical JSON now; human interfaces later.

Design rules

Invalid states should be hard to represent.

From AGENTS.md and REQUIREMENTS.md R9.

Explicit states

Discriminated unions for measurement availability, finding lifecycle, threshold disposition, comparison compatibility, and gate results — not booleans or free-form strings.

Effects at the boundary

Reading Git, invoking analyzers, and writing artifacts are explicit edges. Measurement, comparison, and policy are pure functions.

Immutable history

Snapshots are never rewritten. New policy never edits old observations. Re-analysis creates new evidence.

Warnings are errors

The F# build fails on any warning, and that zero-warning state is itself ratcheted in BASELINE-0001.

Projects

Four projects, one direction of dependency.

Dokimos.sln

Dokimos.Domain
Pure domain types: identifiers, scopes, measurements, provenance, snapshots, finding states, thresholds, compatibility.
Dokimos.Core
Analysis, Git history, temporal and region evidence, correlation, comparison, trend, and policy.
Dokimos.Cli
The command surface: measure, analyze, snapshot, compare.
Test projects
Domain, core, and CLI invariants, run in CI with warnings treated as errors.

Echelon boundaries

Integrate through evidence, never by absorbing authority.

REQUIREMENTS.md R8 and R13.

Responsibilities and the state of each integration
SystemOwnsRelationship to DokimosIntegration
DokimosCode-quality evidence, history, comparison, and quality-policy evaluation.This system.Implemented
Praxis / ROSEngineering work items, execution attribution, provenance, and development telemetry.Dokimos's repository is governed by ROS. Dokimos may correlate quality evidence with ROS telemetry through an explicit evidence boundary; it does not collect or re-own that telemetry.Planned
OrdoEngineering and state methodology; legality of application state.Dokimos follows Ordo/SDE conventions and models its own states as explicit types.Implemented
TutelaSecurity assurance and security-specific authority.Security-specific analysis routes to Tutela. Dokimos does not become a competing security scanner.Planned
AegisUnexpected operational faults at architectural boundaries.Git, filesystem, process, and persistence faults are to be classified through Aegis. Expected outcomes — unavailable metrics, policy failures — stay typed Dokimos results.Planned
FormaReusable application presentation.The interactive results UI will consume a pinned Forma release.Planned
FolioReusable print and report presentation.Printable quality reports will consume a pinned Folio release.Planned

Dokimos must stay independently installable. If an optional Echelon system is absent or unreachable, Dokimos records the related evidence as unavailable and carries on. It never fails, and never invents data, because a neighbour is missing.

This website

Built from the same evidence it describes.

site/ in the Dokimos repository.

This site is static HTML and CSS produced by a small deterministic Node build. It reads the metric catalog, the accepted baseline snapshot, and the ratchet policy directly from the repository, and it refuses to build if the site's claims about implementation status disagree with that evidence.

Demonstration data is validated against a schema, labelled on every surface, and derived with the same rules as the F# domain. Charts are rendered at build time with text and table equivalents; no JavaScript is required to read anything. Read the site source.