Skip to content

v0.7.0rc3 — soak-substrate (test trio + coverage gate)

Pre-release
Pre-release

Choose a tag to compare

@cipher813 cipher813 released this 22 May 17:35
4e459bb

[0.7.0rc3] - 2026-05-22

Test coverage

  • CI now enforces ≥80% test coverage. pyproject.toml gains
    [tool.coverage.run] + [tool.coverage.report] config with
    fail_under = 80; ci.yml runs pytest --cov so a PR that drops
    coverage below the floor fails the build. Excluded modules
    (dashboard/*, __main__.py, upgrade.py, downgrade.py,
    llm.py) are under-testable-by-design and documented in the
    config — Streamlit UI / entry-point shim / release-engineering
    scripts requiring real Fly+AWS / deprecated optional-LLM module
    the deployed product doesn't use.
  • Current coverage: 86% (suite 850 → 855 passing).
  • README coverage badge added: coverage-86%-brightgreen.
    Static, manually updated on each release (matches the existing
    static-badge pattern for Status / Python / License / MCP).
  • New tests/test_nli.py additions cover: _ensure_loaded HF
    download failure → NLIUnavailableError; _ensure_loaded
    unexpected label-set rejection; prewarm() swallows
    unavailability per acceptable-secondary-observability category;
    classify_pair softmax + input-building path with stubbed session.

CI / release tooling

  • New .github/workflows/ci-server-extras.yml workflow. Installs
    mnemon-memory[server] ONLY (the production-equivalent install
    used by the Fly Docker image) plus pytest as a separate test
    runner, and runs the full suite under that minimal install. Catches
    the failure class that bit memory_check_contradictions on
    2026-05-22 — production code that imports something from [llm] /
    [ui] would pass ci.yml (full [dev] extras installed) but
    fail this workflow. Includes a guard assertion that
    llama-cpp-python is NOT installed under [server] — so a future
    PR can't accidentally move it across without flipping the
    intentional "mnemon is LLM-free by default" posture.

  • scripts/promote_stable.sh layer3 --exercise-all-tools. New
    opt-in flag that, after the test Fly app is up but before the
    downgrade step, iterates every registered MCP tool against the
    remote and asserts each returns cleanly (no opaque error envelope,
    no unhandled exception, no NLI/embedder/baked-model breakage).
    Composes with tests/test_tools_integration.py (PR #158, local-
    process Python-level canary): this Fly-level probe catches the
    failure modes the local canary can't see (missing baked models,
    Anthropic MCP proxy timeouts, transport regressions). Tool list
    resolved dynamically from mcp._tool_manager._tools so tools
    added in future PRs are exercised automatically. Adds ~30-60s to
    the layer3 run; opt-in so non-NLI-touching releases aren't taxed.

  • scripts/_layer3_remote_helper.py gains an exercise-all-tools
    subcommand wired through the FastMCP tool manager. Two regression-
    lock tests added to tests/test_promote_stable.sh harness (15
    passing, was 13) covering helper dispatch + flag plumbing through
    the bash dispatcher.