data-olympus
Memory serverOfficial Knaisoma project
Created by Knaisoma
Published in knaisoma/data-olympus. Publisher page
30 GitHub stars
What it is
Governance-grade, OKF-compatible knowledge-base format with a single-writer MCP server and CLI. Pre-release.
Summary from the brain’s metadata
Governance-grade, OKF-compatible knowledge-base format with a single-writer MCP server and CLI. Pre-release. New here? Start with WHY.md. It is the story behind the project: the problem we kept hitting with coding agents, what data-olympus does differently, how it relates to Google's Open Knowledge Format, and where our benchmarks say it is strong and where it is not. The rest of this README is the technical reference.
How it works
Memory model: Markdown vault
AutoGineer overview, from the brain’s own files
Memory model: Markdown vault. Folders: .github (agent config, 20 files); bin (scripts, 7 files); docs (docs, 47 files); scripts (scripts, 29 files); src (source code, 81 files); tests (tests, 286 files). The agent reads .rules/versioning.md, example-bundle.
| Folder | Role | Files |
|---|---|---|
| .github | agent-config | 20 |
| bin | scripts | 7 |
| docs | docs | 47 |
| scripts | scripts | 29 |
| src | source-code | 81 |
| tests | tests | 286 |
| .rules | folder | 5 |
| benchmarks | folder | 328 |
| deploy | folder | 19 |
| example-bundle | folder | 27 |
| release | folder | 2 |
The agent reads
- .rules/versioning.md evidence: AGENTS.md
- example-bundle evidence: README.md
Requirements
Runtimes: Python >=3.13
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)
Set it up
- Not scanned by AutoGineerIts dependencies are installed by pip or uv when you run it and were not scanned by AutoGineer (5 declared). https://pypi.org/project/data-olympus/
- Not scanned by AutoGineerAutoGineer could not scan everything it runs. https://pypi.org/project/data-olympus/
Created by Knaisoma. Published in knaisoma/data-olympus. Licence: Apache License 2.0.
Usage
From the brain’s own files
- Requires Python 3.13+ and uv.
- Run the stable CLI directly from PyPI:
- Install it persistently when you are ready to create a bundle and run the server:
- An announced candidate remains opt in through its exact PyPI version.
- Replace X.Y.ZrcN with the candidate named on the releases page, if any:
- See release channels for what each channel means, how to verify a candidate before adopting it, and how to roll back.
- See docs/quickstart.md for bundle initialization, server startup, readiness, agent registration, and the contributor source installation.
- See docs/adoption.md for the full bundle authoring guide.
Documentation by Knaisoma
data-olympus
Image: knaisoma/data-olympus MCP server Image: MCP Marketplace
<!-- mcp-name: io.github.knaisoma/data-olympus -->
New here? Start with WHY.md. It is the story behind the project: the problem we kept hitting with coding agents, what data-olympus does differently, how it relates to Google's Open Knowledge Format, and where our benchmarks say it is strong and where it is not. The rest of this README is the technical reference.
data-olympus is a governance-grade knowledge-base format and server for agent workforces. It is readable by Open Knowledge Format (OKF) v0.2 consumers: it inherits OKF's directory structure, frontmatter conventions, reserved filenames, and link model, then layers governance extensions on top (stable id, controlled type/status/tier fields, supersedes chains) plus a single-writer MCP server and a CLI. CI proves two concrete directions against official Google OKF v0.2 commit ad30107c31c06aec8a7d5636e0d1058118604e6f: its reference visualization consumer reads every concept in example-bundle, and data-olympus imports, lints, indexes, searches, and retrieves the pinned official Bitcoin sample. This is fixture-scoped interoperability evidence, not a blanket guarantee for every OKF bundle or future upstream revision. The result is a git-native, version-controlled document graph of engineering standards, architectural decisions, and project knowledge that agents and humans can read, search, and extend without any proprietary service.
It governs decisions, not code. When an agent is about to make a choice (a library, a pattern, a migration), data-olympus surfaces the established standard or decision that should govern that choice. It is deliberately not a code-search, reference-finding, or "where is X used" tool: LSP, grep, and Sourcegraph already do that well. The retrieval task it targets is coding-intent to governing-rule, and it helps where current model interaction during vibe-coding is weakest: keeping the model aligned to patterns the team has already established as correct.
Status: pre-1.0 beta. Stable releases are distributed through PyPI and GHCR.
Why
Portable, no lock-in. The entire KB is a directory of markdown files in git. No database, no proprietary schema, no vendor.
Git-native diffs and review. Every change is a commit. Proposed edits go through a pending queue before commit; history is plain git log.
Agent and human readable. Plain markdown with YAML frontmatter. No SDK required to read or author a document.
Governed multi-agent writes. The single-writer MCP pipeline (advisory locks, per-session worktrees, durable push queue) prevents concurrent write races without requiring distributed locking infrastructure.
Queryable by status, tier, and type. Filter by
status: accepted,tier: T1, ortype: decisionwithout post-processing. Thesupersedeschain makes it possible to trace decision history across the graph.Tested with official OKF tooling. CI pins an exact Google OKF revision and proves both consumption directions over committed fixtures. The pin, fixture checksum, and Apache 2.0 license provenance live in
tests/okf/reference.json.
Quickstart
Requires Python 3.13+ and uv. Run the stable CLI
directly from PyPI:
uvx --from data-olympus data-olympus --helpInstall it persistently when you are ready to create a bundle and run the server:
uv tool install data-olympus
data-olympus init my-kb
data-olympus-mcp --helpAn announced candidate remains opt in through its exact PyPI version. Replace
X.Y.ZrcN with the candidate named on the
releases page, if any:
uvx --from 'data-olympus==X.Y.ZrcN' data-olympus --helpSee release channels for what each channel means, how to verify a candidate before adopting it, and how to roll back.
See docs/quickstart.md for bundle initialization, server startup, readiness,
agent registration, and the contributor source installation.
See docs/adoption.md for the full bundle authoring guide.
Documentation
SPEC.md: format specification (bundle layout, frontmatter schema, serving contracts).docs/quickstart.md: verified local-run procedure.docs/adoption.md: bring-your-own-KB guide (author, lint, index, serve, wire an agent).docs/serving.md: single-replica serving model, read-only replicas, git pull loop, health/readiness/liveness split, proxy headers, audit-log rotation.docs/operations.md: production runbook: backup, upgrade, recovery playbooks (degraded/fetch-failed, history rewrite, frozen/demoted push entries, orphaned locks), the health/alerting model, and release channels (stable and candidate, verification, rollback).docs/comparison.md: how data-olympus relates to OKF, enterprise catalogs, markdown KB tools, agent-context conventions, RAG, and ADR tooling.docs/okf-profile.md: field-by-field OKF profile: which governance extensions are stable, which are runtime-only serving fields, and which are experimental candidates.docs/glama.md: Glama registry claim, release, and score-maintenance notes.docs/mcp-registry.md: official MCP Registry notes, whatserver.jsondeclares, and the checklist for publishing.docs/enforcement.md: turning the KB into a mandatory consultation gate (hooks,kb enforce).benchmarks/README.md: retrieval benchmark methodology and how to reproduce the numbers indocs/comparison.md.SECURITY.md: supported versions and how to report a vulnerability.
License
docs/okf-profile.md
The data-olympus OKF profile
This document is the field-by-field reference for data-olympus as an Open Knowledge Format (OKF) v0.2 profile: which frontmatter fields are stable and lint-guarded, which are runtime-only serving-envelope fields that never touch frontmatter, which are experimental candidates tracked against open OKF discussions, and how each maps to OKF baseline compatibility. It exists so an adjacent OKF implementer (or a data-olympus operator) can compare field names and semantics without reading the codebase, and so nobody (including us) overclaims beyond the exact interoperability evidence recorded for issue #82.
This is a profile document, not a new specification. SPEC.md remains the
authoritative source; where this document restates a rule, SPEC.md wins on
conflict.
1. OKF baseline inherited conventions
data-olympus inherits, by construction, OKF's directory structure, frontmatter
basics, reserved filenames, link model, and unknown-key tolerance (SPEC.md
sections 3-5). Specifically:
Documents are UTF-8 markdown with a YAML frontmatter block delimited by a bare
---line (SPEC.mdsection 4.1).The reserved filenames
index.md,log.md, andtemplate.mdare exempt from concept-schema validation in every directory (SPEC.mdsection 3; enforced asformat.validate.RESERVEDand checked first thing invalidate_document).Links are untyped directed edges using bundle-relative or relative markdown hyperlink syntax; consumers MUST tolerate broken links (
SPEC.mdsection 5).Consumers MUST tolerate unknown
typevalues, unknown extra frontmatter keys, missing optional fields, and broken links (SPEC.mdsections 4.1 and 9). This is the tolerance rule every extension in this document depends on: it is what lets an OKF consumer silently ignoresupersedes,validity, and every other data-olympus addition.
On the conformance wording, deliberately careful: CI pins official Google
OKF v0.2 commit ad30107c31c06aec8a7d5636e0d1058118604e6f in the dedicated
GoogleCloudPlatform/open-knowledge-format repository and verifies the fixture
and Apache 2.0 license checksums from tests/okf/reference.json. The okf/
copy in GoogleCloudPlatform/knowledge-catalog, pinned before, is a frozen
snapshot and is no longer accepted as a pin. Google's reference visualization
consumer reads every concept in example-bundle. In the reverse direction, the
data-olympus OKF importer converts the pinned official Bitcoin sample into
governed drafts, then the linter, index, search, and retrieval paths consume all
nine concepts. These are executable interoperability checks for the named
revision and fixtures. They are not a formal certification, a round-trip
fidelity claim, or evidence for every possible OKF bundle. A scheduled workflow
reports upstream drift of the vendored FIXTURE by maintaining one GitHub issue
and never updates the pin automatically; a change confined to the upstream
reference consumer, SPEC, or license is not detected by that workflow.
2. Stable governance extensions
These fields are shipped, schema-checked by data-olympus lint
(src/data_olympus/format/lint.py via validate_document and the cross-file
lifecycle pass), and part of the current SPEC.md (version 0.5). "Stable"
here means the field name and semantics are not expected to change shape; it
does not mean the field is required in every bundle unless stated, and two
fields (applies_when, owner) are stable documented conventions with no
lint coverage; the table's lint column is authoritative per field.
| Field | Required? | Lint severity if violated | Notes |
|---|---|---|---|
id | Yes | error (missing) | Stable symbolic identifier, decoupled from path (SPEC.md section 4.2). |
type | Yes | error (missing or not in {decision, memory, project, reference, standard, workflow}) | Controlled vocabulary, format.validate.TYPES. |
status | Yes | error (missing or not in {draft, active, deprecated, superseded, proposed, accepted, rejected}) | format.validate.STATUSES; lint-required since the 0.1 draft. What v0.4.0 added (issue #114) is write-path enforcement for new documents; see the note below. |
tier | Yes | error (missing or not in {T1, T2, T3, T4, meta}); warning when it disagrees with the path taxonomy (a declared category is checked the same way) | format.validate.TIERS. The index honours a declared value; the write blocklist classifies by path (issue #304). |
applies_when | Recommended | none today (see caveat below) | Highest-weight indexed field for kb_search; feeds the abstention gate. Not yet in kb lint's checked field set. |
supersedes | Optional | error on malformed shape/self-reference/cycle or a target that does not resolve (format 0.4); warning on asymmetric pair or a path-shaped target that resolves | Scalar ID or list of IDs, normalized to a list (issue #110). |
superseded_by | Optional | error on malformed shape/self-reference or a target that does not resolve (format 0.4); warning on asymmetric pair or a path-shaped target that resolves, or set while status is in-force | Scalar ID only (issue #110). |
contradicts | Optional | error on malformed shape; warning on dangling/path-shaped target, or an in-force pair | Scalar ID or list of IDs; annotation only, never filters or ranks (issue #110). |
derived_from | Optional | error on malformed shape/self-reference/derivation cycle, a target that does not resolve, or a target the document also supersedes (format 0.5); warning on a path-shaped target that resolves, or an in-force document deriving from a retired one (both ends) | Scalar ID or list of IDs, normalized to a list. Surfacing only: names in-force dependents when a source leaves force, never filters, demotes or invalidates (issue #300). |
owner | Optional | none (documented convention only) | Team or individual responsible for the concept. |
status, and the note on issue #114
status is listed as a required field in SPEC.md section 4.2 today, and
format.validate.REQUIRED = ("id", "type", "status", "tier") has always
enforced it as a lint error when absent; this is not new in v0.4.0.
What v0.4.0 adds (per issue #114, merged in PR #128) is write-path enforcement plus a staged migration story, not a change of required-field semantics:
New documents:
kb_propose_editnow rejects a postimage that creates a NEW document withoutstatus(rejected_invalid_document, reasonmissing_status,write_gate.validate_postimagestep 2b). Previously the write path was more permissive thankb lint: the enum check only fired whenstatuswas present and invalid, so a brand-new status-less document slipped through.Existing documents: editing an EXISTING status-less document still requires no
status(write_gate._target_path_existsclassifies the write), so a legacy corpus is never locked out of incremental fixes. Reserved filenames and memory-inbox documents are exempt (every server-rendered memory is already stampedstatus: proposedper issue #109).Migration vehicle: the maintenance ledger (issue #113,
src/data_olympus/maintenance.py) computesstatus_present_in_all_kb_entriesand a cappedmissing_status_pathslist at every index build and nags through thepending_actionsCTA (HealthResponse.pending_actions,ConsultResponse.pending_actions) until the corpus is clean. Legacy status-less documents keep being served bykb_search/kb_get, but are never in force (absent status is not inIN_FORCE_STATUSES) and never surfaced bykb_consult. Seedocs/operations.mdsection 5.1 for the operator runbook.No
SPEC.mdversion bump:SPEC.mdsection 10 explains why:statushas been required (and a lint error when absent) since the0.1draft, so this is a reference-implementation enforcement-timing change, not a format change.
applies_when: authoring guidance
applies_when is a YAML list of short, verb-phrase trigger strings describing
the coding intents a standard or decision document governs (SPEC.md
section 4.2). It is the single highest-weight indexed field in kb_search
(matched and boosted alongside title, ahead of description and body text),
and it feeds the abstention gate: a query must match title, tags, or
applies_when before retrieval proceeds. A non-list value is silently parsed
as empty (matching tags' parsing), but unlike tags, kb lint does not
currently warn on a missing or malformed applies_when, per SPEC.md section 9
states this explicitly as the one recommended field with no lint coverage
today.
supersedes / superseded_by / contradicts: typed lifecycle edges
Shipped in issue #110
across two slices (both merged to release/0.4.0 as of this document):
Slice 1 (parse + cross-file lint): flat frontmatter fields, normalized to a canonical shape at parse time (
format/lint.py's_normalize_multi_ref/_normalize_single_ref). Targets must be stable concept IDs, never paths;_path_shapedwarns on a/or.md-suffixed value. Cross-file checks run over an in-memory ID map built from the discovered file list (_cross_file_lifecycle_findings): malformed shape, self-supersession, supersession cycles, and (since format0.4, issue #259) asupersedesorsuperseded_bytarget that does not resolve are errors; danglingcontradictstargets, asymmetric pairs,superseded_byset on an in-force document,status: supersededwith nosuperseded_by, path-shaped targets that resolve, and in-forcecontradictspairs are warnings. The write path refuses a write that introduces an unresolved supersession target (seedocs/serving.md).Slice 2 (executable retrieval policy): the indexer materializes both fields into an
edgestable. Anin_force=truequery additionally excludes any document that is the target of asupersedesedge whose source document is itself in force (the "in-force-source guard") (format.validate.graph_excluded_ids_sql,is_in_force). A mutually supersessive cycle is not special-cased: every in-force member independently satisfies the exclusion rule.kb_getalways resolves regardless of graph-exclusion status and returns the union of a document's ownsuperseded_byclaim and any reversesupersedesedge naming it; one consistent computed shape (GetResponse.superseded_by).contradictsnever filters or ranks anywhere in the retrieval path; it is annotation surfaced on both docs so an agent reconciles or escalates rather than silently picking a side.
This decision directly answers OKF issue #148's typed-relationships thread:
data-olympus keeps the flat scalar/list shape (rather than adopting a nested
relationships: block) until OKF settles one, precisely because the important
property (the edge is executable retrieval policy, not just navigation
metadata) does not require a nested shape. See section 4 below for the
conditional migration path if OKF #148 standardizes something else.
derived_from (format 0.5, issue #300)
joins the same edges table under its own rel and the same OKF #148
staged-migration commitment (section 7). Unlike supersedes, it is not
retrieval policy: when a source leaves force (graph-excluded, deprecated,
superseded, rejected or expired), kb lint warns on both ends and kb_get
names the in-force dependents (dependents_to_review) and the retired sources
(derived_from_retired), so a person decides. rejected counts as retired
deliberately, because deriving from an explicitly rejected document is worth
surfacing; draft and proposed never governed and do not count. Nothing is
filtered or demoted, and every edges query filters on rel, so the new rows
cannot enter graph exclusion. The fixture bundle
tests/fixtures/okf-derived-from/ carries the field in both forms, and CI
feeds it to the pinned OKF reference consumer, so tolerance is exercised
rather than asserted.
validity: freshness metadata with hard expiry semantics
Shipped in issue #107,
merged to release/0.4.0. An optional nested object, concept-level only:
| Sub-field | Semantics | Evaluated by |
|---|---|---|
valid_from | Document not yet in force before this date (upcoming). | is_in_force, compute_freshness |
valid_until | Document expired on/after the day after this date (inclusive boundary). Has teeth: excluded from in_force=true AND every default kb_search result, not merely downranked. | is_expired, not_expired_sql_fragment, in_force_sql_fragment |
last_verified | The verification timestamp. Advisory only (never affects in_force or default search): with KB_REVIEW_DUE_AFTER_DAYS set and no recheck_by override, a last_verified older than that many days -- or absent entirely -- adds a stale deviation indicator (issue #142). Unset env var: not evaluated, matching the pre-#142 default. | compute_freshness |
recheck_by | Soft staleness deadline, and an explicit OVERRIDE of the last_verified-age derivation in either direction: past date adds stale regardless of last_verified; a future date is NOT reported stale even next to an old last_verified. Never removes the doc from search; only adds the deviation indicator. | compute_freshness (lint warning only) |
verification_source | Free text; not evaluated by tooling. | none |
All dates normalize to ISO YYYY-MM-DD at index/lint time
(normalize_validity_date). kb lint treats a malformed validity value (an
unparsable date, or validity present but not a mapping) as absent (fail
open) while still emitting a warning (_validity_findings in validate.py).
The content-change time (generated.at, or the legacy timestamp) is
explicitly not a staleness signal: SPEC.md section 4.2 states tooling MUST
NOT derive expiry or freshness from it or from a file's last_modified. OKF
v0.2's own stale_after and verified families are preserved on import and
not interpreted by data-olympus.
3. Runtime-only serving envelope fields
These fields are computed at request time and never written to frontmatter
(SPEC.md section 8's "runtime envelope" note). A bundle's on-disk conformance
(section 9 of SPEC.md) is judged entirely on frontmatter; these fields are
additive and orthogonal, visible only in served MCP/REST responses.
| Field | Where it appears | Semantics |
|---|---|---|
in_force | SearchHitModel.in_force, GetResponse.in_force | Single-sourced predicate: status class AND validity window AND not-inbox AND not-graph-excluded (format.validate.is_in_force). Verbose responses carry it unconditionally; compact responses emit it deviation-only (in_force: false only). |
freshness | SearchHitModel.freshness, GetResponse.freshness | One of stale / expired / upcoming, or omitted when fresh (compute_freshness). A doc with no validity block is omitted only while KB_REVIEW_DUE_AFTER_DAYS is unset; with the threshold enabled it has no last_verified either, so it reports stale with reason last_verified is not set (issue #142). |
freshness_reason | SearchHitModel.freshness_reason, GetResponse.freshness_reason | Why freshness is non-empty: names the field and the date or day count, from the SAME compute_freshness call that set freshness (issue #142). Omitted exactly when freshness is omitted. |
superseded_by (computed) | SearchHitModel.superseded_by, GetResponse.superseded_by | Union of the document's own frontmatter claim and any reverse supersedes edge naming it; omitted when empty. |
contradicted_by | GetResponse.contradicted_by | Computed reverse of contradicts: every other doc whose contradicts names this one. kb_get only (not on search hits); verbose responses always carry it, compact responses emit it when non-empty (GetResponse.compact_dump). |
derived_from (resolved) | GetResponse.derived_from | The document's own derived_from targets that exist as documents, sorted. kb_get only; verbose always, compact when non-empty (issue #300). |
derived_from_retired | GetResponse.derived_from_retired | The subset of derived_from that has left force (format.validate.is_retired), non-empty only while this document is in force. kb_get only; verbose always, compact when non-empty. A review cue; changes nothing. |
dependents_to_review | GetResponse.dependents_to_review | In-force documents whose derived_from names this one, non-empty only while this document is retired. kb_get only; verbose always, compact when non-empty. A review cue; changes nothing. |
pending_actions | HealthResponse.pending_actions, ConsultResponse.pending_actions | Maintenance-ledger CTA (issue #113): short {kind, message, count} items an agent should surface to the operator and act on only with confirmation. Omitted entirely (not an empty list) when the corpus is clean. |
Every row above is shipped and present in src/data_olympus/models.py at the
code state this document describes. One further envelope addition, the
per-session recap (N committed, M demoted to pending) surfaced through the
same pending_actions envelope and through the kb_session_recap tool so a
governed-lane demotion is never silent, shipped with
issue #112; see the
#112 note below.
kb_consult's retrieval is hard-filtered to the in-force class (SPEC.md
section 8): the rules it returns are restricted to IN_FORCE_STATUSES, within
their validity window, and never a memory-inbox document, so an unreviewed
proposed memory or a retired/expired/upcoming document is never presented as a
governing rule. This is also where issue #109's decision landed: server-
rendered memories (kb_propose_memory) are stamped type: memory /
status: proposed so the existing status filter and deviation-only status
emission apply with no new code path, and a document under the memory-inbox
prefix is never in force regardless of claimed status
(format.validate.is_inbox_path / memory_inbox_prefix).
Provenance fields (issue #109, shipped): ProposeMemoryRequest /
ProposeEditRequest accept an optional evidence: list[str], echoed on
PendingEntry.evidence and AuditEvent.evidence (redacted item-by-item by the
same scan that covers reason). source_session and reason were already
persisted in pending meta and are now returned by kb_list_pending
(PendingEntry.source_session, PendingEntry.reason).
Note on issue #112 (governed-lane protection, shipped). A
non-operator-confirmed write may not set or change status into the in-force
class, and any agent-proposed edit targeting an already in-force document is
demoted to a pending entry regardless of confidence (machine-readable
demotion_reason; target lookups fail closed when the index cannot verify the
target). An advisory injection-pattern scan annotates pending entries for the
reviewer and never blocks or demotes by itself. The whole mechanism is on by
default and can be disabled with KB_GOVERNED_LANE_PROTECTION=off. Neither
mechanism adds a frontmatter field: the runtime surface is the per-write
demotion notice, the kb_session_recap tool and kb session-recap CLI, and
the recap item in the pending_actions envelope described above.
4. Experimental / candidate extensions
None of the following are implemented. They are tracked against specific OKF ecosystem threads and are documented here so an adjacent implementer can see where data-olympus currently stands on each axis.
Structured
relationships:block (OKF #148). Conditional:SPEC.mdsection 4.2 says a nested block (groupingsupersedes/superseded_by/contradictsunder one key, possibly with per-edgereason/decided_at/source) may be adopted in a future spec version if the upstream OKF discussion settles on a standard shape. Any such change would land as a staged migration (the existing scalar-or-list normalization forsupersedesalready tolerates more than one authored shape), not a breaking removal of the flat fields.Version-keyed validity (OKF #159). Deferred per the #107 decision comment pending that thread settling; today's
validityobject is concept-level only, with no per-version validity windows.Confidence/reliability axis (OKF #151). Deferred per the #107 decision comment. data-olympus's public position on this thread (see the issue #108 context links) is that lifecycle/validity ("is this claim currently allowed to govern behavior") is a first-class sibling axis to reliability/confidence ("how much do we believe this claim"), not a field that should be folded into one object; the two questions have different failure modes and a document can be simultaneously low-confidence and in-force, or high-confidence and retired.
authority_state/allowed_useenum: explicitly REJECTED. The issue #109 decision considered and rejected adding a parallel authority/allowed-use vocabulary derived fromstatus. Reasoning: a second, derived vocabulary that must trackstatusforever is exactly the "two fields that can only agree or disagree" failure mode that also rules outallowed_useas a standalone field: it can drift from its source of truth with no structural guarantee. The decision fixed the real gaps (kb_consultin-force filtering, memory stamping, the mandatory-statusdirection in #114, computedin_force) at the root instead of adding a vocabulary to paper over them.origin_provider(constant inside data-olympus) andasserted_by(duplicate ofagent_identity) were rejected for the same not-worth-a-parallel-field reasoning. The authority-forgery risk that motivated the original ask was explicitly split out of the #109 slice and assigned to governed-lane protection (issue #112, shipped in 0.4.0; see the #112 note in section 3). It is a write-path control that prevents an unreviewed write from minting in-force status, rather than a frontmatter field describing the risk after the fact.
5. Per-field compatibility table
"OKF-baseline readable" means an OKF consumer that tolerates unknown keys (per
section 1's inherited rule) can safely ignore the field. Every data-olympus
extension is readable this way by construction. The table also includes the
OKF-recommended fields this profile constrains further (type, title,
description, tags, timestamp), so a single table answers both "will an
OKF consumer choke on this" and "what does data-olympus tooling do with it".
| Field | OKF-baseline readable? | Lint status | Consumer behavior |
|---|---|---|---|
id | yes (unknown key) | error if missing | Stable cross-reference target, decoupled from path. Conformance requires an authored id; for a non-conformant doc with none, the reference index derives an effective id from the path (index._derive_id_from_path) so the doc stays addressable (a fallback for broken input, not a sanctioned authoring mode). |
type | partially (OKF defines the key, not the vocabulary) | error if missing/invalid | Controlled vocabulary layered on OKF's minimal type field. |
status | partially (OKF v0.2 defines a status key with its own lifecycle vocabulary: draft, stable, deprecated) | error if missing/invalid | Drives IN_FORCE_STATUSES class membership; absence is the #114 migration hazard. The governance vocabulary differs from OKF's, so an OKF v0.2 consumer sees values it must tolerate; OKF lifecycle values map to draft on import. |
tier | yes (unknown key) | error if missing/invalid; warning if it disagrees with the path taxonomy | Scope classification; not evaluated by retrieval logic itself. |
title | yes (OKF recommends it) | warning if missing | Boosted in kb_search alongside applies_when; part of the abstention gate's discriminating column set. |
description | yes (OKF recommends it) | warning if missing | Indexed below title/applies_when; deliberately excluded from the abstention gate. |
applies_when | yes (unknown key) | none (documented, not lint-checked) | Highest-weight kb_search field; feeds the abstention gate. |
tags | partially (OKF recommends the key) | warning if missing; warning if present and not a list | Faceted search; part of the abstention gate's discriminating column set. |
generated | yes (OKF v0.2 defines it) | warning if neither it nor timestamp gives a content-change time; warning if malformed (structural check only) | { by, at }. Synthesized with the tool actor data-olympus/<version>, never a principal, by init, by the importers when a source records no content-change time, and for server-rendered memories. An imported source's own generated is preserved, and a proposed edit carries the frontmatter its author supplies. MUST NOT be read as freshness. |
timestamp | yes (OKF v0.1; superseded by generated.at in v0.2) | satisfies the content-change recommendation; the missing-time warning keeps this field name | Legacy content-change metadata, still accepted. data-olympus no longer synthesizes it; an imported document keeps a timestamp it already had, and an edit may still write one. An OKF v0.1-only consumer that requires it will not accept documents that data-olympus 0.8.0 or later writes without one. |
supersedes | yes (unknown key) | error (shape/self/cycle/unresolved target), warning (asymmetric/path-shaped resolving) | Extracted into the edges table; source of the in-force-source graph-exclusion guard. |
superseded_by | yes (unknown key) | error (shape/self/unresolved target), warning (asymmetric/path-shaped resolving/in-force) | Same edges table; surfaced on kb_get/compact hits (deviation-only). |
contradicts | yes (unknown key) | error (shape), warning (dangling/path-shaped/in-force pair) | Annotation only; never filters or ranks. |
derived_from | yes (unknown key; exercised by the pinned consumer run over tests/fixtures/okf-derived-from/) | error (shape/self/cycle/unresolved target/also superseded by this document), warning (path-shaped resolving; in-force document deriving from a retired one) | Same edges table under rel = 'derived_from'; surfaced on kb_get only, never filters or ranks. |
owner | yes (unknown key) | none | Documented convention; no tooling reads it. |
validity (and sub-fields) | yes (unknown key) | warning only (malformed value, recheck_by past, valid_until past while in-force) | Drives in_force and default-search exclusion for expiry; recheck_by drives freshness: stale only. |
in_force (runtime) | n/a (never in frontmatter) | n/a | Serving-envelope only; MUST NOT be treated as bundle content. |
freshness (runtime) | n/a (never in frontmatter) | n/a | Serving-envelope only. |
contradicted_by (runtime) | n/a (never in frontmatter) | n/a | Serving-envelope only; kb_get (verbose always, compact when non-empty). |
derived_from_retired, dependents_to_review (runtime) | n/a (never in frontmatter) | n/a | Serving-envelope only; kb_get (verbose always, compact when non-empty). |
pending_actions (runtime) | n/a (never in frontmatter) | n/a | Serving-envelope only; kb_health/kb_consult. |
6. Relationship to adjacent projects
The fuller comparison against OKF itself, enterprise catalogs, markdown KB
tools, agent-context conventions, RAG/memory layers, and ADR tooling lives in
docs/comparison.md; this section covers only the three
adjacent projects surfaced in the OKF ecosystem threads that motivated this
document (issue #108)
and does not duplicate that comparison's structure.
inkxel/throughlineis a commit-triggered memory scaffold for a single code repo (journal, decisions, wiki, research folders underknowledge/) that exports to OKF on demand, validated against Google's reference tooling. It targets a different unit of governance than data-olympus: a per-repo, largely single-writer memory layer authored through a git hook, versus data-olympus's cross-project, multi- agent, server-enforced propose/pending/commit pipeline over a live MCP endpoint. Throughline's author is an active participant in the same OKF lifecycle/relationships threads this document tracks (OKF #148, #151) and has converged on a structurally similarsupersedes/contradictsshape independently.inkxel/dotKnowledge(early RFC, v0.0.x) is a portable "sealed bundle" format scoped to a subject (person/org/brand/project) with acapsule.yaml/BOUNDARYmanifest declaring arises:policy (what may be synthesized out of the bundle) and a draft "convergence protocol" for mounting multiple bundles under one boundary-respecting layer. It names Throughline as its reference engine. data-olympus has no subject-typed bundle concept and no boundary/rises policy; its closest analog is the write-path's structural rule set (path prefix allow-list,KB_WRITE_BLOCK_TIERS/KB_WRITE_BLOCK_PATHS), which governs what may be written into a bundle rather than what may be synthesized out of one: a different axis, not a competing implementation of the same one.dynamicfeed/signed-okfadds a tamper-evident, Ed25519-signed manifest (okf.manifest.json) over an OKF bundle: it hashes every file and lets a holder of the issuer's public key verify the bundle was signed by the claimed issuer and is unaltered. This is a provenance/integrity concern, orthogonal to the governance extensions in this document: data-olympus's write-path integrity guarantees come from git history and the single-writer MCP pipeline's commit provenance (agent identity, session, evidence; section 3 above), not from cryptographic signing of the bundle at rest. The two are compatible in principle (a data-olympus bundle could be signed withsigned-okftooling as an additional, external layer) but nothing in data-olympus verifies or produces asigned-okfmanifest today.Generic memory/RAG MCP servers (Cognee, Zep/Graphiti, Mem0, Letta, Supermemory) are covered in depth in
docs/comparison.md. The short version for this document's purposes: none of them expose an OKF-readable frontmatter schema or a lint-checked lifecycle vocabulary, they are self-mutating semantic memory, not curated, reviewed, versioned knowledge, so they are not directly comparable on the field-by-field axis this document covers.
7. Migration policy
Extension fields graduate out of this profile in one of two directions:
Into the core OKF spec, if an upstream OKF discussion standardizes a shape data-olympus's flat fields currently approximate. The clearest candidate is
supersedes/superseded_by/contradicts/derived_fromunder OKF #148: if OKF adopts a structuredrelationships:block,SPEC.mdsection 4.2 already commits to accepting the upstream shape via the same importer-style normalization that today accepts both a scalar and a list forsupersedes(the bundled ADR importer emits a bare scalar for one entry, a list for more than one). A staged migration, never a breaking removal of the flat fields in the same release.Out of "experimental" and into "stable governance extension", when a candidate in section 4 ships with lint coverage and a
SPEC.mdnormative section, exactly asvalidity(issue #107) and the typed lifecycle edges (issue #110) did in this release. The rejected candidates in section 4 (authority_state/allowed_use) do not have a graduation path: they were evaluated and declined, not deferred.
Format version bumps follow SPEC.md section 10's semver-style rule: a new
optional field or enum value is a minor bump (existing bundles unaffected); a
required-field change or removed field is a major bump requiring a staged
migration. Issue #114 is the instructive counter-example: it changed write-
path enforcement of an already-required field, not the field's semantics, so
SPEC.md section 10 explicitly records it as a reference-implementation
enforcement-timing change with no version bump (see section 2 above).
See also
SPEC.md, especially sections 4 (frontmatter), 8 (serving model, runtime envelope), 9 (conformance), 10 (versioning), and 11 (relationship to other formats).docs/comparison.mdfor the full competitive landscape.docs/enforcement.mdfor thekb_consultgate this document's section 3 summarizes.docs/operations.mdfor the maintenance ledger's operator- facing workflow.Issue #82: OKF conformance test tracker, referenced throughout section 1.
512 files · 486 not served here
- .gitattributes (not served here)
- .github/CODEOWNERS (not served here)
- .github/ISSUE_TEMPLATE/bug_report.yml (not served here)
- .github/ISSUE_TEMPLATE/config.yml (not served here)
- .github/ISSUE_TEMPLATE/release-scope.yml (not served here)
- .github/ISSUE_TEMPLATE/spec_proposal.yml (not served here)
- .github/PULL_REQUEST_TEMPLATE.md (not served here)
- .github/copilot-instructions.md
- .github/dependabot.yml (not served here)
- .github/labels.yml (not served here)
- .github/workflows/ci.yaml (not served here)
- .github/workflows/hotfix-cut.yml (not served here)
- .github/workflows/maintenance-inventory.yml (not served here)
- .github/workflows/okf-pin-freshness.yml (not served here)
- .github/workflows/package-dry-run.yml (not served here)
- .github/workflows/pr-title-lint.yml (not served here)
- .github/workflows/promote-release.yml (not served here)
- .github/workflows/publish-python-build.yml (not served here)
- .github/workflows/rc-build.yml (not served here)
- .github/workflows/rc-publish-stage.yml (not served here)
- .github/workflows/recut-release-branch.yml (not served here)
- .gitignore (not served here)
- .prose-lintignore (not served here)
- .rules/changelog-per-release.md (not served here)
- .rules/release-planning.md (not served here)
- .rules/release-rollback.md (not served here)
- .rules/release-routine.md (not served here)
- .rules/versioning.md (not served here)
- AGENTS.md
- ATTRIBUTION.md
- CHANGELOG.md
- CLAUDE.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- LICENSE
- NOTICE
- README.md
- ROADMAP.md
- SECURITY.md
- SPEC.md
- WHY.md
- benchmarks/README.md (not served here)
- benchmarks/__init__.py (not served here)
- benchmarks/ablate.py (not served here)
- benchmarks/chunking.py (not served here)
- benchmarks/corpus/decisions/BENCH-AUTH-TOKENS-1.md (not served here)
- benchmarks/corpus/decisions/BENCH-AUTH-TOKENS-3.md (not served here)
- benchmarks/corpus/decisions/BENCH-AUTH-TOKENS-5.md (not served here)
- benchmarks/corpus/decisions/BENCH-AUTH-TOKENS-6.md (not served here)
- benchmarks/corpus/decisions/BENCH-AUTH-TOKENS-7.md (not served here)
- benchmarks/corpus/decisions/BENCH-AUTH-TOKENS-8.md (not served here)
- benchmarks/corpus/decisions/BENCH-AUTH-TOKENS.md (not served here)
- benchmarks/corpus/decisions/BENCH-CONFIG-RELOADING-1.md (not served here)
- benchmarks/corpus/decisions/BENCH-CONFIG-RELOADING-2.md (not served here)
- benchmarks/corpus/decisions/BENCH-CONFIG-RELOADING-3.md (not served here)
- benchmarks/corpus/decisions/BENCH-CONFIG-RELOADING-4.md (not served here)
- benchmarks/corpus/decisions/BENCH-CONFIG-RELOADING-5.md (not served here)
- benchmarks/corpus/decisions/BENCH-CONFIG-RELOADING-7.md (not served here)
- benchmarks/corpus/decisions/BENCH-CONFIG-RELOADING.md (not served here)
- benchmarks/corpus/decisions/BENCH-IDEMPOTENCY-1.md (not served here)
- benchmarks/corpus/decisions/BENCH-IDEMPOTENCY-2.md (not served here)
- benchmarks/corpus/decisions/BENCH-IDEMPOTENCY-3.md (not served here)
- benchmarks/corpus/decisions/BENCH-IDEMPOTENCY-4.md (not served here)
- benchmarks/corpus/decisions/BENCH-IDEMPOTENCY-5.md (not served here)
- benchmarks/corpus/decisions/BENCH-IDEMPOTENCY-6.md (not served here)
- benchmarks/corpus/decisions/BENCH-IDEMPOTENCY-7.md (not served here)
- benchmarks/corpus/decisions/BENCH-IDEMPOTENCY-8.md (not served here)
- benchmarks/corpus/decisions/BENCH-IDEMPOTENCY.md (not served here)
- benchmarks/corpus/decisions/BENCH-MESSAGE-ORDERING-1.md (not served here)
- benchmarks/corpus/decisions/BENCH-MESSAGE-ORDERING-2.md (not served here)
- benchmarks/corpus/decisions/BENCH-MESSAGE-ORDERING-3.md (not served here)
- benchmarks/corpus/decisions/BENCH-MESSAGE-ORDERING-4.md (not served here)
- benchmarks/corpus/decisions/BENCH-MESSAGE-ORDERING-5.md (not served here)
- benchmarks/corpus/decisions/BENCH-MESSAGE-ORDERING-6.md (not served here)
- benchmarks/corpus/decisions/BENCH-MESSAGE-ORDERING-7.md (not served here)
- benchmarks/corpus/decisions/BENCH-MESSAGE-ORDERING.md (not served here)
- benchmarks/corpus/decisions/BENCH-NEW-AUTH-TOKENS-2.md (not served here)
- benchmarks/corpus/decisions/BENCH-NEW-AUTH-TOKENS-4.md (not served here)
- benchmarks/corpus/decisions/BENCH-NEW-CONFIG-RELOADING-6.md (not served here)
- benchmarks/corpus/decisions/BENCH-NEW-MESSAGE-ORDERING-8.md (not served here)
- benchmarks/corpus/decisions/BENCH-NEW-SAGA-ORCHESTRATION-1.md (not served here)
- benchmarks/corpus/decisions/BENCH-NEW-SAGA-ORCHESTRATION-4.md (not served here)
- benchmarks/corpus/decisions/BENCH-NEW-SAGA-ORCHESTRATION-6.md (not served here)
- benchmarks/corpus/decisions/BENCH-OLD-AUTH-TOKENS-2.md (not served here)
- benchmarks/corpus/decisions/BENCH-OLD-AUTH-TOKENS-4.md (not served here)
- benchmarks/corpus/decisions/BENCH-OLD-CONFIG-RELOADING-6.md (not served here)
- benchmarks/corpus/decisions/BENCH-OLD-MESSAGE-ORDERING-8.md (not served here)
- benchmarks/corpus/decisions/BENCH-OLD-SAGA-ORCHESTRATION-1.md (not served here)
- benchmarks/corpus/decisions/BENCH-OLD-SAGA-ORCHESTRATION-4.md (not served here)
- benchmarks/corpus/decisions/BENCH-OLD-SAGA-ORCHESTRATION-6.md (not served here)
- benchmarks/corpus/decisions/BENCH-SAGA-ORCHESTRATION-2.md (not served here)
- benchmarks/corpus/decisions/BENCH-SAGA-ORCHESTRATION-3.md (not served here)
- benchmarks/corpus/decisions/BENCH-SAGA-ORCHESTRATION-5.md (not served here)
- benchmarks/corpus/decisions/BENCH-SAGA-ORCHESTRATION-7.md (not served here)
- benchmarks/corpus/decisions/BENCH-SAGA-ORCHESTRATION.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-BLUE-GREEN-DEPLOYS-1.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-BLUE-GREEN-DEPLOYS-3.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-BLUE-GREEN-DEPLOYS-4.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-BLUE-GREEN-DEPLOYS-5.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-BLUE-GREEN-DEPLOYS-6.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-BLUE-GREEN-DEPLOYS-7.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-BLUE-GREEN-DEPLOYS.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-FEATURE-FLAGS-1.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-FEATURE-FLAGS-3.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-FEATURE-FLAGS-4.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-FEATURE-FLAGS-5.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-FEATURE-FLAGS-7.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-FEATURE-FLAGS-8.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-FEATURE-FLAGS.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-GRACEFUL-SHUTDOWN-1.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-GRACEFUL-SHUTDOWN-2.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-GRACEFUL-SHUTDOWN-3.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-GRACEFUL-SHUTDOWN-4.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-GRACEFUL-SHUTDOWN-6.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-GRACEFUL-SHUTDOWN-7.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-GRACEFUL-SHUTDOWN.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-NEW-BLUE-GREEN-DEPLOYS-2.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-NEW-FEATURE-FLAGS-2.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-NEW-FEATURE-FLAGS-6.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-NEW-GRACEFUL-SHUTDOWN-5.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-OLD-BLUE-GREEN-DEPLOYS-2.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-OLD-FEATURE-FLAGS-2.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-OLD-FEATURE-FLAGS-6.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-OLD-GRACEFUL-SHUTDOWN-5.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-PAGINATION-1.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-PAGINATION-2.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-PAGINATION-3.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-PAGINATION-4.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-PAGINATION-5.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-PAGINATION-6.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-PAGINATION-7.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-PAGINATION-8.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-PAGINATION.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-SECRETS-HANDLING-1.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-SECRETS-HANDLING-2.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-SECRETS-HANDLING-3.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-SECRETS-HANDLING-4.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-SECRETS-HANDLING-5.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-SECRETS-HANDLING-6.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-SECRETS-HANDLING-7.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-SECRETS-HANDLING-8.md (not served here)
- benchmarks/corpus/projects/example-project/BENCH-SECRETS-HANDLING.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-CIRCUIT-BREAKERS-1.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-CIRCUIT-BREAKERS-2.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-CIRCUIT-BREAKERS-3.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-CIRCUIT-BREAKERS-4.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-CIRCUIT-BREAKERS-5.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-CIRCUIT-BREAKERS-7.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-CIRCUIT-BREAKERS-8.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-CIRCUIT-BREAKERS.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-DEAD-LETTER-QUEUES-1.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-DEAD-LETTER-QUEUES-2.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-DEAD-LETTER-QUEUES-4.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-DEAD-LETTER-QUEUES-5.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-DEAD-LETTER-QUEUES.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-HEALTH-CHECKS-1.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-HEALTH-CHECKS-2.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-HEALTH-CHECKS-3.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-HEALTH-CHECKS-4.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-HEALTH-CHECKS-5.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-HEALTH-CHECKS-6.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-HEALTH-CHECKS.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-INPUT-VALIDATION-1.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-INPUT-VALIDATION-2.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-INPUT-VALIDATION-3.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-INPUT-VALIDATION-4.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-INPUT-VALIDATION-7.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-INPUT-VALIDATION-8.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-INPUT-VALIDATION.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-NEW-CIRCUIT-BREAKERS-6.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-NEW-DEAD-LETTER-QUEUES-3.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-NEW-DEAD-LETTER-QUEUES-6.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-NEW-DEAD-LETTER-QUEUES-7.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-NEW-HEALTH-CHECKS-7.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-NEW-INPUT-VALIDATION-5.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-NEW-INPUT-VALIDATION-6.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-NEW-RATE-LIMITING.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-OLD-CIRCUIT-BREAKERS-6.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-OLD-DEAD-LETTER-QUEUES-3.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-OLD-DEAD-LETTER-QUEUES-6.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-OLD-DEAD-LETTER-QUEUES-7.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-OLD-HEALTH-CHECKS-7.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-OLD-INPUT-VALIDATION-5.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-OLD-INPUT-VALIDATION-6.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-OLD-RATE-LIMITING.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-RATE-LIMITING-1.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-RATE-LIMITING-2.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-RATE-LIMITING-3.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-RATE-LIMITING-4.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-RATE-LIMITING-5.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-RATE-LIMITING-6.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-RATE-LIMITING-7.md (not served here)
- benchmarks/corpus/projects/example-project/components/api/BENCH-RATE-LIMITING-8.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-BACKPRESSURE-1.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-BACKPRESSURE-2.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-BACKPRESSURE-3.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-BACKPRESSURE-4.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-BACKPRESSURE-5.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-BACKPRESSURE-6.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-BACKPRESSURE-7.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-BACKPRESSURE-8.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-BACKPRESSURE.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CANARY-ROLLOUTS-1.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CANARY-ROLLOUTS-2.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CANARY-ROLLOUTS-3.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CANARY-ROLLOUTS-4.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CANARY-ROLLOUTS-5.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CANARY-ROLLOUTS-6.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CANARY-ROLLOUTS-7.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CANARY-ROLLOUTS.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CONNECTION-POOLING-2.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CONNECTION-POOLING-4.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CONNECTION-POOLING-5.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CONNECTION-POOLING-6.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CONNECTION-POOLING-8.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-CONNECTION-POOLING.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-NEW-CONNECTION-POOLING-1.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-NEW-CONNECTION-POOLING-3.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-NEW-CONNECTION-POOLING-7.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-NEW-RETRIES-7.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-NEW-TRACING-5.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-NEW-TRACING.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-OLD-CONNECTION-POOLING-1.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-OLD-CONNECTION-POOLING-3.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-OLD-CONNECTION-POOLING-7.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-OLD-RETRIES-7.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-OLD-TRACING-5.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-OLD-TRACING.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-RETRIES-1.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-RETRIES-2.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-RETRIES-3.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-RETRIES-4.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-RETRIES-5.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-RETRIES-6.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-RETRIES-8.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-RETRIES.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-TRACING-1.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-TRACING-2.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-TRACING-3.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-TRACING-4.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-TRACING-6.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-TRACING-7.md (not served here)
- benchmarks/corpus/tech-stacks/backend-nestjs/BENCH-TRACING-8.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-CACHING-1.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-CACHING-2.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-CACHING-3.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-CACHING-4.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-CACHING-5.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-CACHING-6.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-CACHING-7.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-CACHING-8.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-CACHING.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-DATABASE-MIGRATIONS-2.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-DATABASE-MIGRATIONS-3.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-DATABASE-MIGRATIONS-4.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-DATABASE-MIGRATIONS-5.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-DATABASE-MIGRATIONS-8.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-DATABASE-MIGRATIONS.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-ERROR-BUDGETS-1.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-ERROR-BUDGETS-2.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-ERROR-BUDGETS-5.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-ERROR-BUDGETS-6.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-ERROR-BUDGETS-7.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-ERROR-BUDGETS.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-LOGGING-1.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-LOGGING-2.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-LOGGING-3.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-LOGGING-4.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-LOGGING-6.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-LOGGING-7.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-LOGGING-8.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-LOGGING.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-NEW-DATABASE-MIGRATIONS-1.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-NEW-DATABASE-MIGRATIONS-6.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-NEW-DATABASE-MIGRATIONS-7.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-NEW-ERROR-BUDGETS-3.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-NEW-ERROR-BUDGETS-4.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-NEW-LOGGING-5.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-NEW-SCHEMA-EVOLUTION-3.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-NEW-SCHEMA-EVOLUTION-8.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-OLD-DATABASE-MIGRATIONS-1.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-OLD-DATABASE-MIGRATIONS-6.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-OLD-DATABASE-MIGRATIONS-7.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-OLD-ERROR-BUDGETS-3.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-OLD-ERROR-BUDGETS-4.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-OLD-LOGGING-5.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-OLD-SCHEMA-EVOLUTION-3.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-OLD-SCHEMA-EVOLUTION-8.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-SCHEMA-EVOLUTION-1.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-SCHEMA-EVOLUTION-2.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-SCHEMA-EVOLUTION-4.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-SCHEMA-EVOLUTION-5.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-SCHEMA-EVOLUTION-6.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-SCHEMA-EVOLUTION-7.md (not served here)
- benchmarks/corpus/universal/foundation/BENCH-SCHEMA-EVOLUTION.md (not served here)
- benchmarks/corpus_gen.py (not served here)
- benchmarks/corpus_model.py (not served here)
- benchmarks/docs_tables.py (not served here)
- benchmarks/generate_artifacts.py (not served here)
- benchmarks/generate_embeddings_ablation.py (not served here)
- benchmarks/generate_governance_artifacts.py (not served here)
- benchmarks/governance/projects/example-project/GOV_BLUE_GREEN_DEPLOYS.md (not served here)
- benchmarks/governance/projects/example-project/GOV_CIRCUIT_BREAKERS.md (not served here)
- benchmarks/governance/projects/example-project/GOV_DEAD_LETTER_QUEUES.md (not served here)
- benchmarks/governance/projects/example-project/GOV_IDEMPOTENCY.md (not served here)
- benchmarks/governance/projects/example-project/GOV_MODULE_STRUCTURE.md (not served here)
- benchmarks/governance/projects/example-project/GOV_NEW_AUTH_TOKENS.md (not served here)
- benchmarks/governance/projects/example-project/GOV_NEW_PAGINATION.md (not served here)
- benchmarks/governance/projects/example-project/GOV_OLD_AUTH_TOKENS.md (not served here)
- benchmarks/governance/projects/example-project/GOV_OLD_PAGINATION.md (not served here)
- benchmarks/governance/projects/example-project/components/api/GOV_CACHING_STRATEGY.md (not served here)
- benchmarks/governance/projects/example-project/components/api/GOV_LOGGING.md (not served here)
- benchmarks/governance/projects/example-project/components/api/GOV_MESSAGE_ORDERING.md (not served here)
- benchmarks/governance/projects/example-project/components/api/GOV_NEW_RATE_LIMITING.md (not served here)
- benchmarks/governance/projects/example-project/components/api/GOV_NEW_SAGA_ORCHESTRATION.md (not served here)
- benchmarks/governance/projects/example-project/components/api/GOV_NEW_SECRETS_HANDLING.md (not served here)
- benchmarks/governance/projects/example-project/components/api/GOV_OLD_RATE_LIMITING.md (not served here)
- benchmarks/governance/projects/example-project/components/api/GOV_OLD_SAGA_ORCHESTRATION.md (not served here)
- benchmarks/governance/projects/example-project/components/api/GOV_OLD_SECRETS_HANDLING.md (not served here)
- benchmarks/governance/projects/example-project/components/api/GOV_TRACING.md (not served here)
- benchmarks/governance/tech-stacks/backend/GOV_AUDIT_LOGGING.md (not served here)
- benchmarks/governance/tech-stacks/backend/GOV_BACKPRESSURE.md (not served here)
- benchmarks/governance/tech-stacks/backend/GOV_FEATURE_FLAGS.md (not served here)
- benchmarks/governance/tech-stacks/backend/GOV_FORCE_PUSH.md (not served here)
- benchmarks/governance/tech-stacks/backend/GOV_HEALTH_CHECKS.md (not served here)
- benchmarks/governance/tech-stacks/backend/GOV_INPUT_VALIDATION.md (not served here)
- benchmarks/governance/tech-stacks/backend/GOV_NEW_CANARY_ROLLOUTS.md (not served here)
- benchmarks/governance/tech-stacks/backend/GOV_NEW_SCHEMA_EVOLUTION.md (not served here)
- benchmarks/governance/tech-stacks/backend/GOV_OLD_CANARY_ROLLOUTS.md (not served here)
- benchmarks/governance/tech-stacks/backend/GOV_OLD_SCHEMA_EVOLUTION.md (not served here)
- benchmarks/governance/universal/foundation/GOV_API_VERSIONING.md (not served here)
- benchmarks/governance/universal/foundation/GOV_CONNECTION_POOLING.md (not served here)
- benchmarks/governance/universal/foundation/GOV_DATABASE_MIGRATIONS.md (not served here)
- benchmarks/governance/universal/foundation/GOV_ERROR_BUDGETS.md (not served here)
- benchmarks/governance/universal/foundation/GOV_NEW_CONFIG_MANAGEMENT.md (not served here)
- benchmarks/governance/universal/foundation/GOV_NEW_EXCEL_EXPORT.md (not served here)
- benchmarks/governance/universal/foundation/GOV_NEW_GRACEFUL_SHUTDOWN.md (not served here)
- benchmarks/governance/universal/foundation/GOV_OLD_CONFIG_MANAGEMENT.md (not served here)
- benchmarks/governance/universal/foundation/GOV_OLD_EXCEL_EXPORT.md (not served here)
- benchmarks/governance/universal/foundation/GOV_OLD_GRACEFUL_SHUTDOWN.md (not served here)
- benchmarks/governance/universal/foundation/GOV_RETRY_POLICY.md (not served here)
- benchmarks/governance_corpus.py (not served here)
- benchmarks/governance_queries.py (not served here)
- benchmarks/governance_queries.yaml (not served here)
- benchmarks/governance_results/ablation.json (not served here)
- benchmarks/governance_results/ablation.md (not served here)
- benchmarks/governance_results/embeddings/ablation.json (not served here)
- benchmarks/governance_results/embeddings/ablation.md (not served here)
- benchmarks/methods/__init__.py (not served here)
- benchmarks/methods/base.py (not served here)
- benchmarks/methods/bm25.py (not served here)
- benchmarks/methods/data_olympus.py (not served here)
- benchmarks/methods/grep_read.py (not served here)
- benchmarks/methods/vector_rag.py (not served here)
- benchmarks/methods/whole_dump.py (not served here)
- benchmarks/metrics.py (not served here)
- benchmarks/queries.yaml (not served here)
- benchmarks/query_gen.py (not served here)
- benchmarks/real_corpus/example_bundle_queries.json (not served here)
- benchmarks/real_corpus/example_bundle_result.json (not served here)
- benchmarks/real_corpus_eval.md (not served here)
- benchmarks/real_corpus_eval.py (not served here)
- benchmarks/receipt.py (not served here)
- benchmarks/results/receipt.json (not served here)
- benchmarks/results/report.md (not served here)
- benchmarks/results/results.json (not served here)
- benchmarks/run.py (not served here)
- benchmarks/token_compact.py (not served here)
- benchmarks/tokenizer.py (not served here)
- bin/_kb_detect_workspace.sh (not served here)
- bin/_kb_enforce.py (not served here)
- bin/_kb_fallback.py (not served here)
- bin/kb (not served here)
- bin/kb-enforce-hook (not served here)
- bin/kb-session-recap-hook (not served here)
- bin/opencode/data-olympus-gate.ts (not served here)
- deploy/docker/Dockerfile (not served here)
- deploy/docker/compose.yaml (not served here)
- deploy/docker/entrypoint.sh (not served here)
- deploy/k8s/README.md (not served here)
- deploy/k8s/configmap.yaml (not served here)
- deploy/k8s/ingress.yaml (not served here)
- deploy/k8s/kustomization.yaml (not served here)
- deploy/k8s/namespace.yaml (not served here)
- deploy/k8s/networkpolicy.yaml (not served here)
- deploy/k8s/read-replica/README.md (not served here)
- deploy/k8s/read-replica/configmap.yaml (not served here)
- deploy/k8s/read-replica/deployment.yaml (not served here)
- deploy/k8s/read-replica/kustomization.yaml (not served here)
- deploy/k8s/read-replica/networkpolicy.yaml (not served here)
- deploy/k8s/read-replica/secret.template.yaml (not served here)
- deploy/k8s/read-replica/service.yaml (not served here)
- deploy/k8s/secret.template.yaml (not served here)
- deploy/k8s/service.yaml (not served here)
- deploy/k8s/statefulset.yaml (not served here)
- docs/adoption.md
- docs/comparison.md
- docs/enforcement.md
- docs/glama.md
- docs/maintenance.md
- docs/mcp-registry.md
- docs/okf-profile.md
- docs/operations.md
- docs/quickstart.md
- docs/releases/README.md (not served here)
- docs/releases/adoption-cut-runbook.md (not served here)
- docs/releases/branch-recut.md (not served here)
- docs/releases/placeholder-version.md (not served here)
- docs/releases/pypi-trusted-publishing.md (not served here)
- docs/releases/rc-build.md (not served here)
- docs/releases/rc-publication-stage.md (not served here)
- docs/releases/release-scope.md (not served here)
- docs/releases/repository-settings.md (not served here)
- docs/releases/reviewed-promotion.md (not served here)
- docs/releases/sbom.md (not served here)
- docs/releases/std-u-821-amendment-1.3.md (not served here)
- docs/releases/std-u-821-amendment-1.5.md (not served here)
- docs/releases/v0.10.0.md (not served here)
- docs/releases/v0.11.0.md (not served here)
- docs/releases/v0.2.0.md (not served here)
- docs/releases/v0.3.0.md (not served here)
- docs/releases/v0.3.1.md (not served here)
- docs/releases/v0.3.2.md (not served here)
- docs/releases/v0.3.3.md (not served here)
- docs/releases/v0.3.4.md (not served here)
- docs/releases/v0.3.5.md (not served here)
- docs/releases/v0.4.0.md (not served here)
- docs/releases/v0.4.1.md (not served here)
- docs/releases/v0.4.2.md (not served here)
- docs/releases/v0.5.0.md (not served here)
- docs/releases/v0.6.0-expanded-release-design.md (not served here)
- docs/releases/v0.6.0.md (not served here)
- docs/releases/v0.7.0.md (not served here)
- docs/releases/v0.7.1.md (not served here)
- docs/releases/v0.7.2.md (not served here)
- docs/releases/v0.7.3.md (not served here)
- docs/releases/v0.8.0.md (not served here)
- docs/releases/v0.8.1.md (not served here)
- docs/releases/v0.8.2.md (not served here)
- docs/releases/v0.9.0.md (not served here)
- docs/releases/vulnerability-gate.md (not served here)
- docs/serving.md
- example-bundle/decisions/ADR-001-use-data-olympus.md (not served here)
- example-bundle/decisions/ADR-002-single-writer-serving.md (not served here)
- example-bundle/decisions/index.md (not served here)
- example-bundle/index.md (not served here)
- example-bundle/log.md (not served here)
- example-bundle/memory/accepted/2026-06-20-nestjs-module-naming-collision.md (not served here)
- example-bundle/memory/accepted/index.md (not served here)
- example-bundle/memory/index.md (not served here)
- example-bundle/projects/acme-app/README.md (not served here)
- example-bundle/projects/acme-app/components/api/README.md (not served here)
- example-bundle/projects/acme-app/components/api/index.md (not served here)
- example-bundle/projects/acme-app/index.md (not served here)
- example-bundle/reference/index.md (not served here)
- example-bundle/reference/rest-api-endpoints.md (not served here)
- example-bundle/tech-stacks/backend-nestjs/STD-BN-001-module-structure.md (not served here)
- example-bundle/tech-stacks/backend-nestjs/index.md (not served here)
- example-bundle/universal/foundation/STD-U-001-writing-style.md (not served here)
- example-bundle/universal/foundation/STD-U-002-code-review.md (not served here)
- example-bundle/universal/foundation/STD-U-003-commit-message-format.md (not served here)
- example-bundle/universal/foundation/STD-U-004-commit-message-format.md (not served here)
- example-bundle/universal/foundation/STD-U-702-telegram-cron-routing.md (not served here)
- example-bundle/universal/foundation/index.md (not served here)
- example-bundle/universal/security/STD-U-601-secrets.md (not served here)
- example-bundle/universal/security/index.md (not served here)
- example-bundle/viz.html (not served here)
- example-bundle/workflows/WF-001-review-flow.md (not served here)
- example-bundle/workflows/index.md (not served here)
- glama.json (not served here)
- pyproject.toml (not served here)
- release/adoption-lines.json (not served here)
- release/exceptions.json (not served here)
- scripts/__init__.py (not served here)
- scripts/adoption_ratification.py (not served here)
- scripts/check_benchmark_docs.py (not served here)
- scripts/check_changelog.py (not served here)
- scripts/check_doc_consistency.py (not served here)
- scripts/check_version_free.py (not served here)
- scripts/ci_status.py (not served here)
- scripts/compute-version.sh (not served here)
- scripts/compute_release.py (not served here)
- scripts/deployed_digest.py (not served here)
- scripts/lint_pr_title.py (not served here)
- scripts/maintenance_inventory.py (not served here)
- scripts/okf_conformance.py (not served here)
- scripts/placeholder_version.py (not served here)
- scripts/prose_lint.py (not served here)
- scripts/rc_decide.py (not served here)
- scripts/rc_verify_and_publish.py (not served here)
- scripts/release_artifacts.py (not served here)
- scripts/release_readiness.py (not served here)
- scripts/release_record.py (not served here)
- scripts/run-local.sh (not served here)
- scripts/sbom_evidence.py (not served here)
- scripts/sdlc_recut.py (not served here)
- scripts/sdlc_version.py (not served here)
- scripts/security_alerts.py (not served here)
- scripts/should_tag.py (not served here)
- scripts/smoke_installed_wheel.py (not served here)
- scripts/version_free.py (not served here)
- scripts/vulnerability_gate.py (not served here)
- server.json
- src/data_olympus/__init__.py (not served here)
- src/data_olympus/_vendor/__init__.py (not served here)
- src/data_olympus/_vendor/prose_lint.py (not served here)
- src/data_olympus/audit_log.py (not served here)
- src/data_olympus/audit_trailers.py (not served here)
- src/data_olympus/auth.py (not served here)
- src/data_olympus/capture.py (not served here)
- src/data_olympus/cli/__init__.py (not served here)
- tests/okf/LICENSE.upstream.md
Advantages
- Local-first: the memory stays in files or a database on your own machine (a rule-derived fact from the brain’s files, evidence: README.md)
- Works with 14 MCP clients (a rule-derived fact from the brain’s files, evidence: README.md)
- Plain markdown memory that you can read and edit yourself (a rule-derived fact from the brain’s files, evidence: README.md)
- No API key is named in its files (a rule-derived fact from the brain’s files, evidence: README.md)
- Open licence (Apache-2.0) (a rule-derived fact from the brain’s files)
Limitations
- No ZIP download: install it from its source (a rule-derived fact from the brain’s files)
Security
Risk level: Low risk
This brain runs
Agent instructions that run or fetch something (5)
AGENTS.md:`uv run pytest` on its own is not equivalent.AGENTS.md:`tests/test_server_cli.py` and `tests/test_smoke.py` spawn a subprocess with `sys.executable` and read installed distribution metadata, so without the editable install they fail with `No module named data_olympus.server` and a stale version assertion.AGENTS.md:Anything that gates on `uv run pytest` without the editable install (a release routine, a scheduled job) will block on a false failure.AGENTS.md:Run the linter before the tests.tests/importer-fixtures/.cursorrules:Run the type checker in CI and treat type errors as build failures rather than warnings.
- Low risk: network-instructions (AGENTS.md:75)
- Low risk: scripts-present (scripts/check_benchmark_docs.py)
- Low risk: scripts-present (scripts/okf_conformance.py)
Attribution and licence
- Created by
- Knaisoma
- Declared authors
- knaisoma (declared in pyproject.toml)
- Publisher
- Knaisoma (Official Knaisoma project)
- Source
- knaisoma/data-olympus · commit 6d46033
- Licence
- Apache License 2.0 (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Knaisoma.
Install from source
486 of its files are not served here, so there is no ZIP. knaisoma/data-olympus at 6d46033