Fixed
- Fix-forward from known-bad
v2.0.1, whose release left the package,
stability, tool-contract, and repo-contract version surfaces at2.0.0.
Changed
- Added a root
release-check.shconforming to therepo_release_check.v1
contract:--jsonemits 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'sstack release --all --preflightread mq-mcp's release verdict.
Added
- Bridget interactive session foundation (v2.1.0,
mq-mcp/bridge.py):bridget --chat— an explicit interactive REPL. One MCPClientSession
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 onexit/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_turnnow runs a bounded loop
(MAX_TOOL_ROUNDS = 10) that passestools=on every model call, so DO
MODE can chain several sequential tool calls instead of one round plus a
final answer.--doforces a tool only on the first round; per-command
approval and the--do-gatedshell_execare 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_CHARStruncation of oversized tool output. - REPL persistence: a
--chatsession 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 --historytags REPL sessions with their turn
count;bridget --continuesurfaces 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_learningmapping. Selects exactly one pending candidate (commit SHA
prefix and/orpattern_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
validationis always emitted as aMANUAL VALIDATION REQUIREDinstruction,
never an auto-filled truth claim, so promotion stays a human decision. Backed
by pure mappers inlearn_engine.py(build_record_learning_draft,
draft_inbox_candidate) andtests/test_learn_inbox_draft.py.
Verification
bash release-check.sh— all checks passed,v2.0.2 governance is green.bash release-check.sh --json—status: READY, no blockers, conforming torepo_release_check.v1.- 402 tests pass.
stack release --all --preflightreports mq-mcpUP-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.