This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+14 more
Summary
AI summaryAdded MYCO_PROJECT_DIR environment variable fallback for project directory resolution and fixed UnicodeEncodeError in bump_version.py on Windows.
Full changelog
v0.5.13 — 2026-04-22 — MYCO_PROJECT_DIR env-var fallback + bump-script UTF-8 fix
Contract-layer molt with zero contract-surface deltas, same
class as v0.5.9 through v0.5.12. Ships one feature + one tooling fix.
What changed
- Nothing in the R1–R7 rule text.
- Nothing in the category enum, the exit-policy grammar, or the
exit-code ladder. - Nothing in the 18-verb manifest surface.
- Nothing in the dimension roster count (still 25).
Added — MYCO_PROJECT_DIR env-var fallback
myco.surface.manifest.build_context now reads a three-level
substrate-resolution chain:
- Explicit
project_dirargument (CLI--project-dir, MCP
kwargs.project_dir). MYCO_PROJECT_DIRenvironment variable (new).Path.cwd()— legacy behaviour, unchanged.
Why. Claude Desktop — and by inference several other MCP hosts —
spawns MCP server subprocesses with cwd = C:\Windows\System32 on
Windows and silently drops the mcpServers.<name>.cwd field from
the host config. Without this feature, any substrate outside the
host process's own cwd was unreachable: find_substrate_root
walked up from System32, found no _canon.yaml anywhere, and
raised SubstrateNotFound on every tool call.
The fix. env is part of the standard MCP config schema and
every host honours it. Operators pin a substrate via:
"myco": {
"command": "...",
"args": ["-m", "myco.mcp"],
"env": { "MYCO_PROJECT_DIR": "/path/to/substrate" }
}
~ expansion runs on the env-var path so MYCO_PROJECT_DIR=~/project
works cross-platform without relying on shell expansion.
Tests. Three new unit tests in tests/unit/surface/test_manifest.py
cover the three precedence outcomes — env wins over cwd, explicit
arg wins over env, whitespace-only env falls through to cwd.
Fixed — scripts/bump_version.py Windows console UnicodeEncodeError
The release-helper script printed ✓ and → glyphs in status
output, which crashed on Windows consoles running cp936 (gbk) / cp1252
with a UnicodeEncodeError. The version bump itself completed
before the print — no file was ever left half-written — but the
script exited non-zero, obscuring that fact.
Fix: reconfigure sys.stdout / sys.stderr to UTF-8 with
errors='replace' at script start. Python 3.7+ is required for
.reconfigure(); older Pythons fall through the try/except and
keep the original encoding. Glyphs now print cleanly on modern
Windows Terminal / PowerShell and degrade to replacement
characters on legacy consoles instead of crashing.
Break from v0.5.12
None at the contract layer. Operators upgrading from v0.5.12
require no code changes, no canon edits, no script adjustments.
Observable deltas:
- MCP host configs that use
cwd(previously broken on Claude
Desktop) can keep working — but switching toenvis recommended
because it's universal and explicit. See
docs/INSTALL.md/ the host-specific snippet. - Claude Code substrates that rely on shell cwd are unchanged.
The env fallback only fires whenproject_diris unset.
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]