machine .toml source > generated view > drift gate

Fewer AI errors. Durable records. The same process on every project.

OPFiles (OPF, the operational-files standard) gives your teams one disciplined way to run AI-assisted work: each backlog item, decision, finding, and handoff lives in a versioned, machine-written record that captures the declared operational context. Structured records and deterministic views reduce ambiguity and the opportunity for errors and omissions, and the schemas and gates that enforce them are the standard's own, not any one assistant's or developer's. Structured input can also reduce the repeated context reconstruction that drives token spend, and a durable, reviewable trail is left behind by default. Under the hood it is one machine-readable store of TOML, paired with generated, human-readable views and kept in lockstep by drift gates. Source-available under the Elastic License 2.0 (ELv2).

Why teams adopt it

Five potential benefits, on every project

Mandate one operational standard and each project inherits the same discipline: the record is written by process, not by habit, and the benefits below rest on that mechanism rather than on trust in any one tool or developer.

Fewer AI errors, omissions, and hallucinations

The record an assistant works from is versioned TOML that captures the declared operational context, so it is not reconstructing that context from memory or guessing at a missing field, and the schema refuses what does not fit. This can reduce reconstruction and the opportunity for errors, omissions, and hallucinations to enter the record; it does not remove them entirely, and completeness and accuracy of that context still require review, as the standard says plainly.

Consistency and repeatability

The records-first discipline is defined by the standard, not by any one vendor's tool or any one developer's habits: the schemas, status grammar, and gates stay the same across teams and projects. Deterministic rendering means the same sources produce the same views wherever they are rendered, so switching an assistant, a contractor, or a team leaves the recording contract unchanged.

Support for operational compliance

The operational record is structured and enforceable: closed schemas refuse malformed records, and, at required enforcement posture, the integrity gates fail closed on inputs they cannot evaluate. The record is produced as the work happens rather than reconstructed at audit time, which supports compliance review within the standard's declared scope; it does not by itself establish broader organizational or regulatory compliance.

Less repeated context reconstruction

Structured, schema-validated input can reduce the back-and-forth inference and token spend that go into reconstructing context, and the effect can repeat on each project that runs the same process. Structured recording and review carry their own overhead, so net savings depend on the workflow and should be measured, not assumed.

A durable, reviewable trail

Recorded decisions, findings, and changes live in a versioned, git-backed store with generated human-readable views, and released history is frozen by recorded digests. The trail reflects what was captured: attribution and timestamps are as complete as the recorded fields, and retention and backups remain the adopter's responsibility.

The mechanism behind these benefits is the rest of this page: one machine-written source of truth, generated views that are never hand-edited, and gates that fail closed.

What it is

Every file is half of a pair

One rule of thumb carries the whole convention: lowercase files are machine source you change only through tooling or review; UPPERCASE files are generated or published deliverables you read and never hand-edit.

The machine side

Structured, versioned TOML under .working/toml/: a manifest, an ID counter ledger, a version ledger, a durable worklog, and one typed index per record type. Schemas are closed: an unknown key is a validation failure, so a record either fits the contract exactly or is refused.

The human side

Generated views at .working/ top level: BACKLOG.md, FINDINGS.md, DECISIONS.md, WORKLOG.md, and their siblings, each rendered from its declared sources. Every generated view opens with a do-not-edit header naming its sources, the schema and generator versions, a digest of the source set, and the exact regeneration command.

The lockstep

A deterministic render is byte-reproducible: same sources, same bytes, every time, with no wall-clock content, no network access, and no model involvement. A byte drift gate compares the on-disk view against a fresh render, so a hand edit or a stale view is a reported failure, not a quiet divergence.

The exception, named

Exactly one deliverable is curated rather than deterministic: the public CHANGELOG.md. Its prose is human-written, so it is never byte-gated; instead two fact gates protect it: coverage (its entries tile every released version, no gap, no overlap) and freeze (a published entry changes only through a recorded re-publish).

How it works

Single source, generated views, fail-closed gates

  1. The store is the source of truth.

    A decision, finding, or completion that is not recorded did not happen. Records carry a typed envelope (ID, type, status, title, timestamps read from the clock, actor, links, captured references), IDs are never reused, and records are never deleted: they are corrected before release, frozen after it, and superseded by new records that link the old.

  2. Views are regenerated, never edited.

    opf render rebuilds every declared view from the store through a closed, versioned transform vocabulary: filter, sort, group, and project on declared names only, plus exactly two named joins. A transform outside the vocabulary is refused; ad hoc logic never enters a generator.

  3. Everything validates on load, and fails closed.

    Every read is schema-validated. An unreadable, unparseable, or unresolvable input is a reported cannot-evaluate that stops the tool; it is never treated as an empty store or a clean pass. The integrity validator (opf doctor) checks schema validity, ID uniqueness and counter monotonicity, transition legality, view byte drift, worklog span tiling and frozen digests, changelog coverage and freeze, archive integrity, and pointer-to-remote agreement.

  4. Writes are gated end to end.

    A mutating render first validates the whole store and refuses to write anything on a failure; it regenerates only on a valid verdict and re-validates afterwards. A single-writer lease and a store consistency contract (nothing stale, nothing ahead, divergence halts for a human) are the standard's contract for guarding the store across systems; in this build the lease is enforced on a single host, because the cross-system sync step (opf sync) has not yet landed.

Why it works

Structured input, deterministic process

The benefits above rest on two properties the standard enforces: deterministic rendering, same sources to the same bytes, and structured, schema-validated input. Together they reduce variance, ambiguity, and the opportunity for errors; they discipline the record the work runs on, not the judgment of whichever assistant runs it.

A process that reads a structured, schema-validated record does not have to reconstruct context from memory, guess at a missing field, or interpret free-form prose. The closed schemas mean a malformed input is refused rather than silently misread; the closed transform vocabulary means a view can only be composed in reviewed, versioned ways; and the byte-reproducible render means two runs over the same store produce the same bytes, so the views agree about what the record says. Determinism covers the rendering; the source records are authored content that review keeps correct.

For teams working with AI assistants, this structure helps reduce the likelihood of errors, omissions, and hallucinations in the operational record: the assistant writes into a schema that refuses what does not fit and reads from a store that carries the declared context, and the generator itself invokes no model and adds no model-generated interpretation, reproducing the declared source records, so assistant-authored content in those records still needs review. These mechanisms reduce the opportunity for a confident guess to enter the record; they do not remove it entirely, and the standard says so plainly in its own residual-coverage disclosures.

Captured context can also be an efficiency gain. Because the TOML carries the declared operational context, an assistant spends less of its run reconstructing it, which can reduce back-and-forth inference and token use, alongside a reduced likelihood of errors, omissions, and hallucinations. Structured recording adds its own overhead, so the net saving depends on the workflow and is worth measuring.

What you get

Consistent records, honest gates, portable process

Consistency

The same records-first discipline, whatever tool or assistant is doing the writing. The store's schemas, status grammar, and ID rules are the standard's, not any one vendor's.

Digest-guarded history

The store is always a git repository; released worklog spans and published changelog entries are frozen by recorded digests; rotation is enumerated relocation, never deletion. A silent edit breaks a digest and fails the gate.

A process that travels

The store's location is configuration, not architecture: in your repository by default, or relocated to a private companion repository, a local directory, or a per-project store in a monorepo, with history preserved and the public deliverables byte-for-byte identical wherever it lives.

Honest claims

Integrity gates fail closed at required posture, reports name their scope and their cannot-evaluate results, and an unqualified "conformant" claim is never emitted, by tooling or by prose. Until validation tooling covers a claim, it is self-asserted and must say so.

The standard files

Every standard TOML file, and what pairs with it

The complete roster, enumerated from the specification and the reference scaffolder. Each file has its own page: purpose, schema shape, lifecycle, and the processes that reference, update, and consume it.

<product repository root>/
  .opf.toml                 committed store pointer            details
  CHANGELOG.md              curated public changelog (gated on facts, not bytes)
  VERSION                   deterministic render of version.toml
  .working/                 the store (default in-repo location)
    TODO.md BACKLOG.md PIPELINE.md DONE.md FINDINGS.md DECISIONS.md
    BLOCKS.md HANDOFF.md REFERENCES.md CONTRIBUTIONS.md WORKLOG.md VERSION.md
    DECISIONS.toml          machine projection (generated TOML)  details
    toml/
      manifest.toml         store manifest and discovery marker  details
      counters.toml         per-namespace ID high-water marks    details
      version.toml          version and release ledger           details
      worklog.toml          durable operational record           details
      lease.toml            single-writer lease (only while held) details
      backlog_item.index.toml       and ten sibling typed indexes  details
      archive/<YYYY>/
        archive.toml        enumerates every rotated ID and span details

The eleven scaffolded record indexes are backlog_item, done, finding, pending_decision, autonomous_decision, maintainer_decision, preference_pattern, block, handoff, reference, and contribution; the worklog type lives in its own ledger, worklog.toml, rather than an index. Eight further record types ship in optional, default-off modules, and one (legacy_fragment) is created only by the importer: module and importer types.

Reference tooling

One command vocabulary, honest about what has landed

The standard names seven verbs; the reference implementation ships them incrementally, and a verb that has not landed fails closed rather than pretending to run.

Available now

opf init scaffolds validated store sources and the pointer. opf render --check reports view drift read-only; opf render --write regenerates the declared views, gated on a full store validation before and after. opf doctor runs the whole-store integrity layer. opf upgrade migrates a 1.0.0 store to 1.1.0 in place, additively and idempotently. opf import scans, plans, captures attributed reviews of legacy content, and promotes a reviewed import with opf import --apply.

Fails closed until it lands

opf migrate (history-preserving store relocation) and opf sync (the surfaced pull and push step of the consistency contract) are recognized verbs that refuse with a clear message and a nonzero exit. A stub is never mistaken for a completed operation.

Getting started

Adopt it

Assistant-driven adoption

The primary path is coming: point your AI development assistant at this site root and tell it to adopt OPF (or adopt AIQT). It reads the standard, plans the store, and, on your yes, carries out and merges the adoption, leaving the .working/ store for your review. This is the interface we are building; it is not live yet.

Manual adoption, available today

  1. Scaffold.

    Run opf init at your project root. It creates the store sources (.working/toml/ with the manifest, counters, the two ledgers, and eleven empty typed indexes), writes the committed pointer .opf.toml, and adds a placeholder CHANGELOG.md only when you have none. Anything already sitting in .working/ is surfaced, never absorbed or overwritten.

  2. Commit, then render.

    Review the created files, stage and commit them (init prints the exact command), and confirm nothing under .working/ is ignored: an untracked store is a hard failure, not a warning. Then opf render --write materializes the Markdown views.

  3. Work records-first.

    Append a worklog entry per change, keep the backlog, findings, and decisions in their typed files, and regenerate views rather than editing them. At release, record the release and its worklog span in version.toml, curate the summary, and publish it into CHANGELOG.md with its freeze digest recorded.

OPFiles and AIQT

A standalone standard, shipped as part of AIQT

OPFiles is a neutral, self-contained standard, source-available under the Elastic License 2.0 (ELv2), and it also ships as part of AIQT Guardrails. Adopting AIQT brings OPFiles with it; the planned assistant-driven adoption flow will also migrate your existing operational files into the store, and reviewed manual import is available now through opf import --apply. A project that wants only the standard can take OPFiles on its own. One repository holds both: its root is AIQT, which includes OPFiles, and standalone OPFiles lives at the opf path within it. aiqt.ai maps to the repository root and opfiles.ai maps to the opf path, so the two sites are two views of one source.

The separation of concerns is unchanged by the bundling. Nothing in the base vocabulary names any particular adopter or operator; AIQT-specific requirements ride a single optional profile, [profiles.aiqt], and a base adopter need not adopt AIQT. A profile may only add requirements; it can never weaken, remove, or override a base requirement.