Releases: cwest/okfctl
Releases · cwest/okfctl
Release list
v0.2.0
okfctl targets OKF v0.2. New bundles are created at okf_version: 0.2, and v0.1 bundles remain readable — v0.2's two breaking renames (timestamp → generated.at, body # Citations → frontmatter sources) are read with a v0.1 fallback, per spec §12's best-effort consumption rule.
Spec v0.2 support
- Provenance — reads the v0.2
generated/verified/sourcesfamilies, falling back to the v0.1 forms when a bundle declares the older version. - Freshness — resolves through
generated.atrather than filesystemmodified/created, so a regenerated node reports its real age. - Migration —
okf migrateprovides a two-phase v0.1 → v0.2 upgrade path: a mechanical pass, plus a judgment queue for the calls a tool should not make alone. Theokf-migrate-planskill ships alongside it. - Section citations — spec §-numbering shifted between v0.1 (11 sections) and v0.2 (13); stale citations throughout the codebase are corrected.
Search
- Passage-level indexing — sub-node passages are indexed and returned as snippets, so a hit points at the paragraph rather than the file. Retrieval quality on the real corpus improved 0.545 → 0.909, at a measured ~12x index size.
- Query scoping — filter semantic queries by path, type, and tag, with optional recency decay.
- Tokenizer — a model2vec directory containing
tokenizer.jsonis accepted, matching what the docs already promised.
Lint and analysis
--json— machine-readable findings for CI and downstream tooling.- Prose-only scanning — cross-reference and time-marker detection no longer reads link URLs as prose, eliminating a class of false
missing-xrefand time-sensitive findings. Both inline[text](url)and reference-style[ref]: urllinks are excluded. - Title-as-home-node — a node whose title leads with a term is credited as that term's home, closing a coverage-gap false positive.
- Broken internal links — gated as defects when they look like defects.
- Vendored and derived directories — skipped during the bundle walk.
- Drift opt-out — a bulk mechanical commit can declare itself as such and skip the git-drift check.
New in this release
okfctl-api— an HTTP API plugin over a bundle, serving/statsand/graph. Walking skeleton; the ADR describing its shape ships with it.- Bulk index promotion — promote directory-as-concept
index.mdnodes in bulk.
Documentation
ADRs are introduced and the PRD is reconciled to shipped reality. AGENTS.md pins spec conformance as the working contract for the repo.
v0.1.0
Changelog
- ebdb1a6 chore(license): set copyright holder to Google LLC across the repo
- 20ac64f docs(prd): okfctl product requirements document (#1)
- d62ae44 docs(skills): ship okf-authoring, okf-curation-health, okf-semantic-search (#14)
- 9275d86 feat(analyze): okfctl analyze — proactive curation report (freshness, clusters) (#17)
- 169efc1 feat(lint): semantic curation checks — lint --semantic (increment 7) (#12)
- 5d2a25d feat(okfctl): maintain derived artifacts by default — created/modified, log.md, index.md + drift findings (#15)
- f0b72d9 feat(search): Model2Vec safetensors loader + StaticModel (increment 5c-1) (#10)
- 911bb60 feat(search): WordPiece tokenizer + --embedder model2vec (increment 5c-2) (#11)
- c85500b feat: okfctl increment 2a — reserved-file lifecycle (index + log) (#3)
- 616ae30 feat: okfctl walking skeleton (increment 1 — init/author/validate) (#2)
- 5d2bb70 fix(lint): increment 8 lint precision — 2,438 findings → 21 on the real corpus (#13)
- 94ef043 review(okfctl): increment 2b node mutation verbs (edit/mv/rm) (#4)
- 4721595 review(okfctl): increment 3 lint structural checks (#5)
- 8a22307 review(okfctl): increment 4 graph export + serve (#6)
- 6180825 review(okfctl): increment 5a core plugin dispatch (#8)
- 06941a2 review(okfctl): increment 5b okfctl-search semantic plugin (#9)
- f0d9d4e review(okfctl): increment 6 type templates + validate overlay (#7)
- c7daafb ✨ feat(okfctl): node refresh — bulk-fix stale modified timestamps (#16)
- c920da8 ✨ feat(okfctl): registry/connect for git-backed remote bundle sources (#22)
- 3c3a293 ✨ feat(plugin): implement plugin install over PATH dispatch (#21)
- 4d542bb ✨ feat(search): core lexical + graph-structural search (PRD §6.3) (#23)
- b16f8b9 🐛 fix(graph): reconcile svg claim — DOT-pipe is the sanctioned SVG path (#19)
- ce21526 🐛 fix(index): conform index.md generation to OKF SPEC §6/§11 (#24)
- 7d3c414 🐛 fix(index): emit nested per-directory indexes with dir-relative links (§6) (#26)
- 9e02c61 🐛 fix(index): preserve okf_version marker on bundle-root index (#18)
- 307ccc5 🔧 chore(init): scaffold new project
- 5169ecd 🔧 chore(okfctl): add release mechanics — goreleaser, version injection, installable binaries (#20)
- 3daa7a8 🧪 test(okf): spec-conformance suite — okfctl output validates clean (#25)