This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
ReleasePort's take
Light signalThe v3.10.0 release adds two new MCP tools—`relations(entity_id)` and `timeline(entity_id)`—and updates validation to warn on unknown relation keys.
Why it matters: These additions enable automated graph edge resolution and Git history retrieval for entities, with no migration required; update installer to version 3.10.0.
Summary
AI summaryUpdates Deferred, Compatibility, and entity_id across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Adds `relations(entity_id)` MCP tool to resolve graph edges from frontmatter. Adds `relations(entity_id)` MCP tool to resolve graph edges from frontmatter. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Feature | Medium |
Adds `timeline(entity_id)` MCP tool to fetch Git history for an entity's document. Adds `timeline(entity_id)` MCP tool to fetch Git history for an entity's document. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Feature | Medium |
Updates `validate_doc()` to warn on unknown relation keys and invalid status values. Updates `validate_doc()` to warn on unknown relation keys and invalid status values. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Feature | Medium |
Adds `flaiwheel.frontmatter` YAML parser with zero new pip dependencies. Adds `flaiwheel.frontmatter` YAML parser with zero new pip dependencies. Source: llm_adapter@2026-05-23 Confidence: low |
— |
| Feature | Medium |
Adds `GitWatcher.log_for_file(rel_path, limit=50)` read‑only helper powering `timeline()`. Adds `GitWatcher.log_for_file(rel_path, limit=50)` read‑only helper powering `timeline()`. Source: llm_adapter@2026-05-23 Confidence: low |
— |
| Feature | Medium |
Adds new tests: `tests/test_frontmatter.py`, `tests/test_watcher_log.py`, and additional cases in `tests/test_server.py` (284 pass). Adds new tests: `tests/test_frontmatter.py`, `tests/test_watcher_log.py`, and additional cases in `tests/test_server.py` (284 pass). Source: llm_adapter@2026-05-23 Confidence: low |
— |
| Feature | Medium |
Provides upgrade instructions: re‑run installer; no data migration required. Provides upgrade instructions: re‑run installer; no data migration required. Source: llm_adapter@2026-05-23 Confidence: low |
— |
| Feature | Medium |
Documents backward compatibility: all previous MCP tools unchanged, frontmatter optional, no new pip dependencies. Documents backward compatibility: all previous MCP tools unchanged, frontmatter optional, no new pip dependencies. Source: llm_adapter@2026-05-23 Confidence: low |
— |
| Refactor | Medium |
Quality checks now strip frontmatter before running, preventing confusion with leading `---` block. Quality checks now strip frontmatter before running, preventing confusion with leading `---` block. Source: llm_adapter@2026-05-23 Confidence: high |
— |
| Refactor | Medium |
Updates README "Architecture" diagram to reflect 30 tools, including `relations()` and `timeline()`. Updates README "Architecture" diagram to reflect 30 tools, including `relations()` and `timeline()`. Source: llm_adapter@2026-05-23 Confidence: low |
— |
| Refactor | Medium |
Updates `AGENTS.md`, `CLAUDE.md`, installer‑templated blocks, and `FLAIWHEEL_TOOLS.md` to list new `relations()` and `timeline()` tools. Updates `AGENTS.md`, `CLAUDE.md`, installer‑templated blocks, and `FLAIWHEEL_TOOLS.md` to list new `relations()` and `timeline()` tools. Source: llm_adapter@2026-05-23 Confidence: low |
— |
| Refactor | Medium |
Bumps `_FW_VERSION` fallback in `scripts/install.sh` to `3.10.0`. Bumps `_FW_VERSION` fallback in `scripts/install.sh` to `3.10.0`. Source: llm_adapter@2026-05-23 Confidence: low |
— |
Full changelog
Highlights
Structured Relations (v1) — Flaiwheel can now derive a per-project knowledge graph directly from YAML frontmatter on your existing markdown docs. No new persistent store, no graph_add/invalidate writes — markdown stays canonical and Git history is the validity window.
Two new MCP tools (28 → 30 total):
| Tool | Purpose |
|------|---------|
| relations(entity_id) | Resolve outbound + inbound edges (replaces, depends_on, fixes, implements) across the project |
| timeline(entity_id) | Git history for the doc holding the entity — "what was true at time T?" |
Frontmatter convention
---
id: adr-0042
type: architecture
replaces: [adr-0017]
depends_on: [service-summarizer, supabase-edge]
fixes: []
implements: []
status: active # active | superseded | deprecated
superseded_at: null
---
Recognised scalar keys: id, type, status, superseded_at.
Recognised relation keys: replaces, depends_on, fixes, implements.
Added
relations(entity_id)MCP tool — resolves the graph from frontmatter, marks unresolved targets, returns inbound + outbound edges.timeline(entity_id)MCP tool — newest-first Git history (hash, author, ISO date, subject) for the entity's doc.flaiwheel.frontmatter— stdlib-only YAML subset parser (scalars, flow lists[a, b], block lists- item). Zero new pip dependencies.GitWatcher.log_for_file(rel_path, limit=50)— read-only helper that powerstimeline().validate_doc()now warns on unknown relation keys (info) and invalidstatusvalues (warning).- Tests:
tests/test_frontmatter.py,tests/test_watcher_log.py, plusTestValidateDocFrontmatter/TestRelations/TestTimelineintests/test_server.py(284 tests pass).
Changed
- Quality checks (
_check_single_completeness,_check_single_headings,_check_heading_structure) now strip frontmatter before running, so the leading---block no longer confuses the "first heading must be h1" rule or word counts. - README "Architecture" diagram updated: 30 tools (search, write, classify, manage, projects, relations, timeline).
AGENTS.md,CLAUDE.md, installer-templatedflaiwheel.mdc/AGENTS.mdblocks and the standaloneFLAIWHEEL_TOOLS.mdreference now listrelations()+timeline()in the tool table.scripts/install.sh:_FW_VERSIONfallback bumped to3.10.0(the remote refresh frommain'spyproject.tomlremains authoritative).
Deferred (explicitly, by design)
- SQLite ER store with
valid_from/valid_to— original v1 plan. Deferred to v2; will only be revisited ifrelations()on real projects becomes measurably too slow. Avoids dual-source-of-truth drift between markdown and a sidecar DB. - AST-driven code↔symbol edges — merged with backlog item #13 as v3; gated on v1+v2 being insufficient.
Upgrade
Re-run the installer in any project — it auto-detects the new version from main, rebuilds the Docker image, and recreates the container:
bash <(curl -sSL https://raw.githubusercontent.com/dl4rce/flaiwheel/main/scripts/install.sh)
No data migration needed. Existing docs without frontmatter continue to work; relations() simply returns entity not found until you opt in by adding an id: to a doc.
Compatibility
- Backwards-compatible. All previous MCP tools unchanged.
- Frontmatter is optional everywhere — quality checks only warn (never block) on unknown keys.
- No new pip dependencies. No new ports. No new persistent state outside the existing knowledge repo.
Full changelog: https://github.com/dl4rce/flaiwheel/blob/main/CHANGELOG.md
Diff: https://github.com/dl4rce/flaiwheel/compare/v3.9.40...v3.10.0
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About dl4rce/flaiwheel
Self-hosted memory and governance layer for AI coding agents. 28 MCP tools with structured knowledge capture, hybrid search (semantic + BM25 + cross-encoder reranking), behavioral documentation nudges, cold-start codebase analyzer, and git-native storage. Single Docker container, zero cloud dependencies.
Related context
Beta — feedback welcome: [email protected]