This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+14 more
Summary
AI summaryAdds safe-fix capability, schema upgrader demo, code graph coverage, brief summary verb, and three new MCP host integrations.
Full changelog
Myco v0.5.5 — Close every audit loose thread (8 MAJORs merged)
TL;DR: every post-release round since v0.4.1 surfaced the same pattern — infrastructure in place, no concrete use. v0.5.5 ships eight MAJORs at once, closing each "staring at it for months" item. No contract-surface shape change; every v0.5.4 invocation resolves unchanged.
Governing three-round craft: docs/primordia/v0_5_5_close_audit_loose_threads_craft_2026-04-17.md.
The eight MAJORs
A — First fixable lint dimensions
immune --fix has been a no-op flag since v0.4.0. v0.5.5 lands the base class hook (Dimension.fix() + Dimension.fixable: ClassVar[bool]), kernel dispatch that iterates each dimension's findings when fix=True, a write-surface guard before every fix (targets outside canon.system.write_surface.allowed are refused), and two concrete fixable dimensions:
- M2 (missing entry-point) → creates the canon-declared entry point (
MYCO.mdby default) from a minimal skeleton. Idempotent. - MB1 (raw backlog) → triggers
reflect(ctx)to bulk-promote; reports promotion count.
New doctrine: safe-fix discipline — idempotent / narrow / non-destructive / write-surface-bounded.
B — Schema upgrader demo
v0.5.1 shipped schema_upgraders: dict[str, Callable] with chain-apply + cycle detection but never exercised end-to-end. v0.5.5 registers a synthetic v0→v1 upgrader under key "0" (a schema version no real canon ever used). Substrates with schema_version: "0" now parse silently through the chain; unknown versions without a registered upgrader still emit UserWarning. Proves the forward-compat seam works.
C — Sporulate doctrine boundary
L2 digestion.md writes the rule explicitly: sporulate does NOT call an LLM. Per L0 principle 1, the Agent calls its own model; the substrate stays provider-agnostic. sporulate prepares scaffolding (source selection + shared-tag extraction + first-line seeds); the Agent writes synthesis prose. sporulate.py docstring + manifest summary rewritten to match.
D — Symbiont protocol stub
src/myco/symbionts/ has been empty since v0.4.0. v0.5.5 writes L3 symbiont_protocol.md defining symbionts as per-host Agent-sugar adapters (Claude Code skills, Cursor rules, VS Code tasks) — orthogonal to substrate-local .myco/plugins/. Package stays empty; first concrete symbiont ships in a later release.
F — Circulation graph covers src/**
The v0.4.1 audit flagged that the mycelium graph covered notes/**, docs/**, canon, and the entry point — but not code. v0.5.5 adds an AST walker (graph_src.py) that extracts from myco.X import Y → module-path edges plus docs/... docstring references → doc-node edges. Stdlib/third-party/__pycache__ skipped; syntax errors tolerated. SE1 now surfaces real code-to-doctrine dangling references (6 on myco-self at ship time).
G — myco brief verb
L0 principle 1 says humans don't browse Myco. v0.5.5 carves one explicit exception: brief produces a stable-section markdown rollup for a single human reading moment. Seven sections in fixed order: Identity / Hunger / Immune / Notes / Primordia / Local plugins / Suggested next. --format markdown (default) or --format json. Does NOT replace any agent-side verb.
I — 3 new automated MCP hosts
myco-install host coverage goes from 7 to 10:
- gemini-cli —
~/.gemini/settings.json(JSONmcpServersfamily) - codex-cli —
~/.codex/config.tomlvia block-level regex surgery; preserves sibling[mcp_servers.*]tables and comments; validates parse on Python 3.11+ - goose —
~/.config/goose/config.yamlwith theextensions.mycokey
J — Graph persistence
.myco_state/graph.json caches the mycelium graph. Fingerprint = sha256(canon_text) + sorted (path, mtime) for every .py under src/. Cold build rebuilds; warm build loads cache (~6x speedup on myco-self). build_graph(ctx, use_cache=False) forces rebuild; invalidate_graph_cache(substrate) clears. traverse's payload gains src_node_count + cached fields.
Verification on myco-self
myco --version→myco 0.5.5myco brief→ 7 stable sections, markdown (or JSON)myco traverse→ 80 src nodes + 271 edges, cache hit on re-runmyco immune --fix→ M2 + MB1 fix paths live- All 9 legacy verb aliases still resolve (DeprecationWarning once each)
- 10 MCP host schemas writable via
myco-install host <client>
Test coverage
556 passed (was 543 at v0.5.4). +13 net across the eight MAJORs; sub-agents added ~43 tests along the way with some test consolidation in the mix.
Upgrade
cd ~/myco && git pull && myco immune
No migration action required. Every v0.5.4 CLI invocation still works. The v0.5.x verb aliases continue to resolve through v1.0.0. The schema upgrader demo is under version "0" (never a real shipped version) so no production substrate is affected. The .myco_state/graph.json cache is created lazily; deleting it is always safe.
Records
- Governing craft:
docs/primordia/v0_5_5_close_audit_loose_threads_craft_2026-04-17.md - L3 symbiont protocol:
docs/architecture/L3_IMPLEMENTATION/symbiont_protocol.md - Contract changelog:
docs/contract_changelog.mdv0.5.5 section - Full CHANGELOG:
CHANGELOG.md
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 Battam1111/Myco
Agent-first cognitive substrate with 18 manifest-driven verbs (germinate / eat / assimilate / sporulate / traverse / immune / molt / …) and 25 lint dimensions enforcing contract invariants mechanically (R1–R7). Cross-session / cross-project memory via a self-validating filesystem graph — AST + markdown-link derived, not embedding-based. Provider-agnostic by design: MP1/MP2 dims forbid LLM-SDK imports in the kernel and plugin tree. Editable-default install. Works with Claude Code, Cursor, Windsurf, Zed, VS Code, and any MCP client.
Related context
Related tools
Beta — feedback welcome: [email protected]