Summary
Align evolve's .evolve/entities/ store with the Open Knowledge Format (OKF) v0.1 (spec). The store is already ~90% OKF-shaped (one fact per markdown file, type frontmatter, path-based concept ids); this tracks the remaining changes so it becomes a conformant OKF bundle — portable and readable by any OKF tooling.
Why
- Interop/portability — a standard, tool-agnostic format instead of an evolve-only convention; stores become catalog-able/publishable by OKF-aware tools.
- Self-describing & auditable — OKF's
index.md catalog + plain markdown links make the store browsable and diffable in git.
- Low cost — mostly a field rename, a generated catalog file, and a link-syntax switch.
What changes (format)
.evolve/entities/ becomes the OKF bundle root; the rest of .evolve/ (audit.log, trajectories/) stays outside it (OKF bundles are pure concept trees).
- Folder shape unchanged:
entities/<type>/<name>.md; concept id = <type>/<name> (e.g. guideline/foo) — the same ids audit/provenance already use.
- Open
type taxonomy: type stays the one required field and is a free string (OKF mandates no central registry). guideline is the common one and stays; the set is non-exclusive (user, feedback, project, reference, …).
trigger → description: the "when to recall" hint is renamed to OKF's description (also what the catalog shows).
- Add
index.md catalogs: bundle-root index.md with okf_version: "0.1" + per-type index.md (auto-generated, * [name](/type/name.md) - description). Recall reads index.md instead of listing the dir.
- Links:
[[wikilinks]] → standard markdown bundle-relative links [name](/type/name.md).
timestamp (ISO 8601) added where useful; log.md deferred.
Folder structure (before → after)
Before:
.evolve/
├── entities/
│ └── guideline/
│ ├── before-concluding-a-bob-global-instruction-file-is-not-read.md # type: guideline, trigger: …
│ ├── when-debugging-why-platform-integrations-install-sh-prints.md
│ └── … (all ~47 entities currently live under guideline/)
├── audit.log
└── trajectories/
└── claude-transcript_<session-id>.jsonl
After:
.evolve/
├── entities/ # ← OKF bundle root
│ ├── index.md # okf_version: "0.1"; catalog of every concept/group
│ ├── guideline/
│ │ ├── index.md # * [name](/guideline/name.md) - description
│ │ ├── before-concluding-a-bob-global-instruction-file-is-not-read.md # type + description (was trigger)
│ │ └── …
│ ├── feedback/
│ │ ├── index.md
│ │ └── …
│ ├── user/
│ ├── project/
│ └── reference/
├── audit.log # ← unchanged; stays outside the bundle
└── trajectories/ # ← unchanged; stays outside the bundle
└── …
Example entity after the change:
---
type: guideline
description: <when a future session should recall this>
timestamp: 2026-06-17T00:00:00Z
---
<the fact. For feedback/project, **Why:** / **How to apply:** lines.
Link related entities with [other](/guideline/other.md).>
Where in the code (broadly)
plugin-source/EVOLVE.md.j2 — agent-facing format spec (frontmatter, links, recall-via-index.md).
plugin-source/lib/evolve-lite/entity_io.py — read/write OKF-shaped entities; generate index.md; build the recall manifest from it.
- Recall/audit/provenance — concept ids unchanged, so audit + provenance keep working; readers update for the
trigger→description rename.
- Migration script for existing
guideline/*.md entities (trigger→description, generate index.md, convert any wikilinks).
- Tests: build-pipeline drift,
entity_io, installer.
Out of scope / related
Rides alongside the broader "drop hooks/custom-modes → always-on self-directed memory" redesign (branch redesign/evolve-lite-no-hooks-modes). log.md and cross-bundle publish/subscribe semantics deferred.
Reference
OKF v0.1 spec: https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md
Summary
Align evolve's
.evolve/entities/store with the Open Knowledge Format (OKF) v0.1 (spec). The store is already ~90% OKF-shaped (one fact per markdown file,typefrontmatter, path-based concept ids); this tracks the remaining changes so it becomes a conformant OKF bundle — portable and readable by any OKF tooling.Why
index.mdcatalog + plain markdown links make the store browsable and diffable in git.What changes (format)
.evolve/entities/becomes the OKF bundle root; the rest of.evolve/(audit.log,trajectories/) stays outside it (OKF bundles are pure concept trees).entities/<type>/<name>.md; concept id =<type>/<name>(e.g.guideline/foo) — the same ids audit/provenance already use.typetaxonomy:typestays the one required field and is a free string (OKF mandates no central registry).guidelineis the common one and stays; the set is non-exclusive (user,feedback,project,reference, …).trigger→description: the "when to recall" hint is renamed to OKF'sdescription(also what the catalog shows).index.mdcatalogs: bundle-rootindex.mdwithokf_version: "0.1"+ per-typeindex.md(auto-generated,* [name](/type/name.md) - description). Recall readsindex.mdinstead of listing the dir.[[wikilinks]]→ standard markdown bundle-relative links[name](/type/name.md).timestamp(ISO 8601) added where useful;log.mddeferred.Folder structure (before → after)
Before:
After:
Example entity after the change:
Where in the code (broadly)
plugin-source/EVOLVE.md.j2— agent-facing format spec (frontmatter, links, recall-via-index.md).plugin-source/lib/evolve-lite/entity_io.py— read/write OKF-shaped entities; generateindex.md; build the recall manifest from it.trigger→descriptionrename.guideline/*.mdentities (trigger→description, generateindex.md, convert any wikilinks).entity_io, installer.Out of scope / related
Rides alongside the broader "drop hooks/custom-modes → always-on self-directed memory" redesign (branch
redesign/evolve-lite-no-hooks-modes).log.mdand cross-bundle publish/subscribe semantics deferred.Reference
OKF v0.1 spec: https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md