Skip to content

v2.0.2 — version surface fix-forward

Latest

Choose a tag to compare

@MCamner MCamner released this 18 Jul 23:41
v2.0.2
14295a8

Fixed

  • Fix-forward from known-bad v2.0.1, whose release left the package,
    stability, tool-contract, and repo-contract version surfaces at 2.0.0.

Changed

  • Added a root release-check.sh conforming to the repo_release_check.v1
    contract: --json emits the machine-readable verdict (schema, repo,
    status, blockers, warnings, evidence) on clean stdout and exits 0;
    human mode prints per-check ok/FAIL. It runs the read-only governance checks
    (contract/CHANGELOG/README version surfaces, runtime-truth, tool-contracts,
    semantic-memory, compileall) and deliberately does NOT run
    scripts/release-check.sh, which exports the tool registry (a write). Lets
    mq-agent's stack release --all --preflight read mq-mcp's release verdict.

Added

  • Bridget interactive session foundation (v2.1.0, mq-mcp/bridge.py):
    • bridget --chat — an explicit interactive REPL. One MCP ClientSession
      and one system message stay alive for the whole session; tools are
      discovered once at start. Per turn: read a line → run_turn → print →
      keep context. Exits on exit/quit/q/Ctrl-D/Ctrl-C. Input is read from
      stdin and prompts/answers go to /dev/tty (falling back to stdout), so
      piped input works and output survives a captured stdout. Not the default —
      one-shot stays the default for scripts, aliases, and automation.
    • Multi-round tool loop (bugfix): run_turn now runs a bounded loop
      (MAX_TOOL_ROUNDS = 10) that passes tools= on every model call, so DO
      MODE can chain several sequential tool calls instead of one round plus a
      final answer. --do forces a tool only on the first round; per-command
      approval and the --do-gated shell_exec are unchanged.
    • REPL context-window management: rough token estimate, per-model budget
      (BRIDGET_CONTEXT_BUDGET), whole-turn-block trimming that never drops the
      system message and preserves tool_call/tool pairing, plus
      MAX_MESSAGES / MAX_TOOL_OUTPUT_CHARS truncation of oversized tool output.
    • REPL persistence: a --chat session is recorded once at exit (not per
      turn) as a single memory entry — last prompt/answer plus turn count,
      duration, tools across all turns, do_mode, chat_mode — so short
      sessions do not push older one-shot sessions out of the five-session
      rolling window. bridget --history tags REPL sessions with their turn
      count; bridget --continue surfaces the previous REPL session summary.
      One-shot history keeps its existing stored shape.
  • learn_inbox_draft (Class A, read-only): standardizes the inbox-candidate →
    record_learning mapping. Selects exactly one pending candidate (commit SHA
    prefix and/or pattern_name) and returns a review-ready draft
    (task/lesson/validation/risk/repo/source/tags). Preview-first —
    it writes neither the curated lessons store nor the inbox queue, and
    validation is always emitted as a MANUAL VALIDATION REQUIRED instruction,
    never an auto-filled truth claim, so promotion stays a human decision. Backed
    by pure mappers in learn_engine.py (build_record_learning_draft,
    draft_inbox_candidate) and tests/test_learn_inbox_draft.py.

Verification

  • bash release-check.sh — all checks passed, v2.0.2 governance is green.
  • bash release-check.sh --jsonstatus: READY, no blockers, conforming to repo_release_check.v1.
  • 402 tests pass.
  • stack release --all --preflight reports mq-mcp UP-TO-DATE 2.0.2, preflight clean.

v2.0.1 is retained untouched as the known-bad tag. No tag deletion, no force-push, no history rewrite.

See CHANGELOG.md for the full list.