OKF format support
Status: DECIDED (0.9.0). OKF is a first-class format supported by AKM
through the built-in okf adapter. First-class means every applicable case in
the conformance runbook passes end to end; adapter-local recognition alone is
not sufficient.
The decision
OKF is AKM's least-common-denominator format for Markdown concepts and generic read behavior. AKM can install, recognize, index, search, and show conformant OKF bundles without converting them to an AKM-native layout. OKF support is held to the observable conformance contract in the OKF v0.2 conformance runbook.
That baseline does not make OKF AKM's database schema or force non-Markdown formats through Markdown. In particular, OKF is not:
- an AKM asset type;
- a serialization imposed on scripts, YAML tasks, environment files, secrets, Agent Skills, or other native non-Markdown assets;
- a replacement for adapter-owned capability, validation, redaction, placement, or execution rules.
The core provides path identity, open descriptive types, generic Markdown
content/fragment reads, and a normalized search projection. Adapters add
behavior to that baseline. They never narrow the core by rejecting an item only
because its type is unfamiliar.
First-class support contract
For a bundle selected as adapter: okf, AKM must provide all of the following:
- Every conformant non-reserved Markdown concept is recognized with its OKF
path-minus-
.mdconcept ID. type,title,description,tags, andtimestampare read according to OKF rules. Unknown types and unknown frontmatter fields remain valid.index.mdandlog.mdretain their OKF structural meaning and are not indexed as concepts.- OKF links are retained as relationships. A dangling link does not prevent indexing.
- A ref emitted by search for an OKF concept is accepted by show and other
applicable ref-consuming commands. Adapter-owned concept IDs such as
tables/customersmust not be rejected merely because they do not use an AKM bundle placement directory. - Markdown heading fragments are accepted as input-only selectors and never become part of durable identity.
- An OKF target without adapter-owned authoring rejects AKM-native write commands before touching disk. AKM must never silently place native files in an OKF bundle.
The shipped okf adapter is consumer-only. Its supported behavior is the
portable content/fragment baseline; it does not infer task, command, script,
environment, or secret capabilities from an arbitrary OKF type value.
Progressive enhancement
AKM Markdown is an OKF-compatible superset. Newly authored AKM Markdown emits a
non-empty native type plus any AKM-specific frontmatter required by its asset
kind. The akm adapter still derives native identity and capability from its
directory, extension, filename, and content rules; frontmatter type does not
override those rules. Existing legacy Markdown without type remains readable
and is upgraded when AKM creates or semantically rewrites it rather than during
indexing.
The result is progressive enhancement:
- Any OKF type gets path identity, indexing, search, content show, and heading
fragments through the
okfadapter. - The
akmadapter recognizes AKM-owned types and adds their specialized behavior: command prompts, runnable scripts, workflows, tasks, redacted environment/secret views, memories, lessons, and other native capabilities. - Unknown
typevalues remain valid data. They get generic behavior unless the selected adapter explicitly adds more.
akm bundle create records adapter: akm. akm bundle add records the detected adapter, and an
explicit configured adapter always wins over probing. Strong native AKM layout
evidence wins before the broader OKF probe because AKM Markdown is an OKF
superset. An index-less bundle containing conformant typed Markdown can still be
recognized as OKF.
The normalized IndexDocument is the additive cross-format projection. Its
basic Markdown fields align with OKF, while adapters may project additional
metadata and capabilities without changing identity.
v0.2 update (#730)
OKF v0.2 (Google Cloud) adds a trust/provenance frontmatter family
(generated/verified/sources) and a lifecycle family
(status/stale_after), standardizes an actor convention
(<producer>/<version> / human:<id> / process:<id>), and makes one
breaking-with-fallback change: timestamp is superseded by generated.at,
with consumers permitted (and expected) to fall back to the legacy
timestamp field when generated/generated.at is absent. The decision
above is unchanged by this update — the okf adapter remains consumer-only
and the read/write split stays exactly where §5/§5.1 already drew it:
-
Read side (any OKF bundle, third-party or AKM-authored): the
okfadapter parses the full v0.2 family —generated.at(with thetimestampfallback),verified(a list, or v0.2's permitted single-mapping shorthand),sources(an object list),status,stale_after, andokf_version— leniently, exactly like every other optional OKF field (missing, malformed, or foreign values never reject a document). These land on new, NAMESPACEDIndexDocumentfields (provenance,lifecycleStatus,staleAfter,okfVersion) rather than overloading the three AKM-native fields that already occupy adjacent names:sources?: string[](wiki citation strings),generation?: number(consolidation merge depth), and the existingquality: "generated"enum value. Seeakm-0.9.0-bundle-adapter-spec.md§0.1 for the full mapping. -
Write side (AKM-native assets only, through the proposal path): since AKM Markdown is already an OKF-compatible superset (the progressive- enhancement contract above), the new provenance fields are written only to AKM-native assets, at proposal-promotion time (
promoteProposal) — never through theokfadapter, which stays consumer-only. Accepting a proposal stamps the v0.2 families using the existingsource/sourceRun/gateDecision/reviewprovenance the proposals system already tracks instate.db.The on-disk shape is deliberately hybrid:
generated: {by, at}andverified: [{by, at}]are written bare at the top level, exactly as OKF v0.2 spells them. Neither key has any pre-existing AKM consumer, so spelling them the spec's way costs nothing and makes the OKF-superset claim above true for trust metadata — a third-party OKF v0.2 reader pointed at an AKM bundle sees conformant provenance rather than one unrecognizedprovenance:key.sourcesalone stays namespaced asprovenance: {sources: [...]}, because a bare top-levelsources:genuinely collides with the pre-existing wiki citation-string convention noted above.
Every AKM-native markdown type is stamped.
workflowis the only type whose frontmatter is parsed against a closed allowlist, and that allowlist admits these keys; a re-validation fallback (promote unstamped, warn) is retained only as a backstop should a future type add a closed allowlist.stale_after-driven re-verification and trust-tier ranking are explicitly out of scope for 0.9.0 (an 0.9.x improve-tuning track).
OKF is a month-old, single-vendor Draft with no governance body; AKM vendors a frozen copy of the spec rules it implements rather than tracking upstream live. See the conformance runbook for the pinned upstream reference.
See also
akm-0.9.0-bundle-adapter-spec.mddefines the concreteokfandakmadapter boundaries.ref.mddefines the cross-format ref grammar.0.9.0-decisions.mdrecords this positioning as D11.