Skip to content

v2.6.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 20:20
· 5 commits to main since this release
v2.6.0
ae3b0e9

Added

  • mq-hal actions shows a local, append-only ledger of what HAL ran,
    cancelled or refused. The router, execute steps and confirmed
    open/fix each write one mq_hal.action.v1 entry to
    $MQ_HAL_STATE_DIR/actions.jsonl with intent, repo, routing, command,
    confirmation, outcome, exit code and duration (newest 1000 kept). Prompts
    and arguments are secret-redacted before write. A failed ledger write only
    warns; it never blocks the command.

  • audit --verification and stack-status --verification present repo-signal's
    existing changed-file evidence as PASS, FAIL, STALE or NOT_VERIFIED, separately
    from structural/runtime status. Shared bounded read-only collection supports
    canonical and legacy stack views; missing or malformed evidence never passes.
    Default and sample paths do not start verification providers. No tests or
    receipt writes are performed by HAL.

  • mq-hal compatibility shows the stack compatibility report produced by
    mq-agent stack compatibility --json (mq.stack-compatibility.v1):
    repositories, producer/consumer relationships, findings with every
    implicated repo, and mq-agent's next action. --json prints the producer's
    bytes. Transport differs from provenance in one way: mq-agent exits 2 for
    FAIL and 3 for UNAVAILABLE while still printing a report, so a non-zero exit
    with a valid report is a report, and the view passes mq-agent's exit code
    through. HAL derives no severity, blocking rule or remedy of its own.

  • mq-hal route readiness and mq-hal route divergence expose mq-agent's
    evidence-gated learned-routing state as read-only operator views. HAL validates
    the producer schema IDs, preserves mq-agent's recommendation/status, current
    analysis era, route counts and safety flags, and never recomputes eligibility,
    ranks a route or grants promotion. Divergence defaults to mq-agent's current
    era and docs-review, with optional --era / --task-class filters.

  • Consumer contracts for mq-agent stack cockpit, release-check and
    provenance --json: the schemas (and runtime_identity, which provenance
    references) are vendored in schemas/vendor/, and
    tests/stack-contract-smoke.sh checks them against mq-agent (CI checks out
    the four files), validates sanitized real-shaped fixtures, and feeds them
    through hal.stack, hal.release and hal.provenance. CI installs
    jsonschema for it.

  • Consumer contract for mqlaunch doctor --json (mq.doctor-status.v1,
    owned by macos-scripts, vendored in schemas/vendor/).
    tests/doctor-status-contract-smoke.sh checks the copy against macos-scripts
    (CI checks it out), validates a fixture and doctor-summary --sample
    against the schema, and feeds the real shape through brief and
    doctor_summary.

  • mq-hal changes compares the current check with the previous local
    snapshot and lists new, resolved, persisting, and unverified problems by
    stable check ID with source and timestamp. A check that is missing or
    SKIPPED after a previous problem is reported as unverified, never as
    resolved. Works without Ollama, supports --json, and reuses the dashboard
    collectors instead of adding new probes.

  • mq-hal feedback is a read-only operator view over mq-agent Feedback
    Engine status, reports, comparisons and candidates. Machine JSON is passed
    through unchanged; human output renders producer verdicts and future unknown
    states neutrally without recomputing them. Mutating feedback actions remain
    outside HAL.

Changed

  • Default local Ollama model is qwen3.5:9b for every profile (router,
    planner, critic, code), the planner, routing, doctor and model checks,
    replacing qwen3:4b-instruct, qwen3:8b and qwen2.5-coder:7b. Install
    hints in README and guides pull qwen3.5:9b.

Fixed

  • Router grep_repo passes . to rg, so it no longer waits on stdin when
    stdin is not a terminal (pipes, scripts, CI).

  • mq-hal open --confirm with a missing editor reports exit 127 instead of
    raising FileNotFoundError, and the attempt is recorded in the action ledger.

  • Router output on a pipe: HAL's own line now comes before the command's
    output, and mq-hal "..." | head no longer ends with BrokenPipeError.

  • release-check.sh no longer prints "all smoke tests passed" when a smoke
    test fails after an earlier gate has already failed.

  • Stack verification resolves the cockpit label mqlaunch to the configured
    macos-scripts repo, preserving an explicit mqlaunch override. Register
    mqobsidian in the default repository map so both components are checked
    instead of reported as unconfigured.

  • hal.py, doctor_summary.py, fix_planner.py and model_test.py send
    think: false to Ollama, as planner.py already did. qwen3.5 thinks by
    default: model_test.py took 25 s against its 30 s timeout, now 0.8 s, and
    an intent request took 46-80 s instead of 1.1 s.

  • hal/operator.py is now hal/operator_actions.py. Run as a script it put
    hal/ first on sys.path and shadowed the stdlib operator module, so on
    any Python that does not import collections at startup (a python.org
    build, or python3 -S) mq-hal crashed on import with a circular-import
    error. tests/stdlib-shadow-smoke.sh forbids stdlib names in hal/ and
    scripts/ and runs every hal/ module without site.

  • mq-hal release showed readiness unknown for every repo on real
    mq-agent stack release-check output: the parser looked for ready /
    status on each repo, and real items carry blockers and warnings
    lists instead. A repo with blockers is now no, one without is yes
    (warnings do not block).

  • doctor-summary miscounted real doctor output: walking every string read
    the top-level status as a second warning and a check's detail: missing
    as a serious issue — 1 serious and 2 warnings for a run with 0 failures and
    1 warning. A mq.doctor-status.v1 document is now read from its own summary
    and checks; other doctors keep the heuristic. The --sample document used a
    message key real output never had and is now shaped like v1.

  • mq-hal changes --no-save no longer reports "baseline recorded" when there
    is no previous snapshot; it says the baseline was not saved.

  • mq-hal stack reads the cockpit contract mq-agent actually emits. The view
    still expected components[] / name / status / overall, while
    mq-agent stack cockpit --json emits repos[] / repo / gate /
    overall_gate under mq_stack_cockpit.v1. Cockpit placeholder dashes are
    now read as absent rather than as operator statuses, and the shared feedback
    normalizer knows the cockpit vocabulary — GO, NO-GO, REVIEW, DRIFT,
    BLOCKED, fresh, aging, stale. The smoke case is copied from the real
    cockpit-v1 shape, so the test no longer agrees with an imaginary producer.
    No routing authority moves into mq-hal; this stays a presentation fix.

  • mq-hal brain and mq-hal runtime find truth exports where mq-agent writes
    them. mq-agent writes stack truth under memory/stack-truth/ while mq-hal
    probed only a top-level truth/, so brain reported zero truth exports and
    runtime warned missing: truth with the producer output sitting there.
    Accepted locations are centralized in BRAIN_FOLDER_SOURCES and both commands
    read the same mapping. Freshness and aging remain a separate concern; no
    scheduler was added.

  • Two module invariants that the rebuilt ports had reintroduced: hal/stack.py
    regained a shebang despite having no __main__ and never being executed
    directly, and the script-mode fallback imports in hal/brain.py and
    hal/runtime.py lost their explicit type: ignore[no-redef, import-not-found] annotations. Behaviour is unchanged.