Skip to content

Align the .evolve knowledge store with the Open Knowledge Format (OKF) #272

Description

@illeatmyhat

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, …).
  • triggerdescription: 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 triggerdescription rename.
  • Migration script for existing guideline/*.md entities (triggerdescription, 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions