Skip to content

v1.4.0 — mk-qa-master doctor subcommand

Latest

Choose a tag to compare

@kao273183 kao273183 released this 04 Jun 01:46
4fd6508

Additive only under the v1.0 stability lock. Tool surface unchanged (22 tools). MCP server invocation is byte-identical to v1.3.x — every existing host integration continues to work without changes.

License: still MIT. Apache 2.0 transition lands in v2.0 per the v1.2.1 announcement (see docs/RELICENSING.md).

What ships

mk-qa-master doctor — install + environment audit CLI

$ mk-qa-master doctor
mk-qa-master v1.4.0 — environment doctor

System
  ✓ Python ≥ 3.10: 3.12.10 (arm64)
  ✓ ffmpeg: /opt/homebrew/bin/ffmpeg
  ! mediamtx: not on PATH  — macOS: brew install mediamtx | Linux: ...
Core deps
  ✓ mcp: 1.27.1
  ✓ jsonschema: 4.26.0
Edge extras [edge]
  ! cv2: not installed  — pip install "mk-qa-master[edge]"
  ! ultralytics: not installed  — pip install "mk-qa-master[edge]"
  ! numpy: not installed  — pip install "mk-qa-master[edge]"
Runners
  ✓ pytest, playwright, edge, schemathesis, newman, ... (15 entries)
MCP surface
  ✓ tool count: 22 tools

Severity model

Severity When Exit code impact
ok Check passed 0
warn Optional feature missing (e.g. [edge] extras not installed) 0 — informational only
fail mk-qa-master can't function normally (Python < 3.10, mcp / jsonschema missing, registry import failure) 1

--json flag emits {version, summary: {ok, warn, fail}, results: [...]} for CI pre-flight gates and host-LLM consumption.

Dispatch wired into server.run()

Invocation Behavior
mk-qa-master (no args) MCP stdio server — backward compatible, every existing host (Claude Code / Codex / OpenClaw / Hermes) uses this
mk-qa-master doctor [--json] Doctor CLI
mk-qa-master <typo> Error to stderr + exit 2 (prevents accidentally starting a server when caller meant a subcommand)

Motivation

Users pip install mk-qa-master (base, no extras), call analyze_stream, hit missing_extras because [edge] wasn't installed. The hint and README troubleshooting already documented the fix, but the friction was real — doctor pulls every diagnosis into one command, same intent as tsc --noEmit or node --version.

Surfaced via dogfood feedback during the v1.3.1 cycle when a user installed mk-qa-master==1.3.0 without [edge] and had to ask why Edge AI didn't work.

Tests

  • 22 new tests in tests/test_doctor.py covering per-check helpers, severity contract, section ordering, plain + JSON rendering, exit-code rule, and dispatch wiring (backward-compat for the no-args path + stderr exit for unknown subcommands)

Suite: 477 passing (455 carried + 22 doctor).

Stability lock

  • ✅ Tool surface unchanged (snapshot test stays green without BREAKING_CHANGE_ACK)
  • ✅ MCP server invocation byte-identical to v1.3.x — no-args path = previous behavior
  • ✅ New CLI subcommand is additive — adding subcommands isn't a breaking change per docs/DEPRECATION-POLICY.md

Action required

None. The doctor is purely a manual operator tool. Existing MCP host integrations continue to invoke mk-qa-master with no args and get the server. Run mk-qa-master doctor after a fresh install or when an MCP tool returns missing_extras.

v2.0 timing reminder

Per docs/RELICENSING.md: the MIT → Apache 2.0 relicense waits ≥ 1 calendar month after v1.3.0 (which shipped 2026-06-03). v1.3.1 and v1.4.0 are on the same line and don't reset the clock.

🤖 Generated with Claude Code