Repository navigation
v2.6.0
Added
-
mq-hal actionsshows a local, append-only ledger of what HAL ran,
cancelled or refused. The router,executesteps and confirmed
open/fixeach write onemq_hal.action.v1entry to
$MQ_HAL_STATE_DIR/actions.jsonlwith 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 --verificationandstack-status --verificationpresent 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 compatibilityshows 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.--jsonprints 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 readinessandmq-hal route divergenceexpose 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 anddocs-review, with optional--era/--task-classfilters. -
Consumer contracts for
mq-agent stack cockpit,release-checkand
provenance --json: the schemas (andruntime_identity, which provenance
references) are vendored inschemas/vendor/, and
tests/stack-contract-smoke.shchecks them against mq-agent (CI checks out
the four files), validates sanitized real-shaped fixtures, and feeds them
throughhal.stack,hal.releaseandhal.provenance. CI installs
jsonschemafor it. -
Consumer contract for
mqlaunch doctor --json(mq.doctor-status.v1,
owned by macos-scripts, vendored inschemas/vendor/).
tests/doctor-status-contract-smoke.shchecks the copy against macos-scripts
(CI checks it out), validates a fixture anddoctor-summary --sample
against the schema, and feeds the real shape throughbriefand
doctor_summary. -
mq-hal changescompares 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
SKIPPEDafter 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 feedbackis 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:9bfor every profile (router,
planner, critic, code), the planner, routing, doctor and model checks,
replacingqwen3:4b-instruct,qwen3:8bandqwen2.5-coder:7b. Install
hints in README and guides pullqwen3.5:9b.
Fixed
-
Router
grep_repopasses.torg, so it no longer waits on stdin when
stdin is not a terminal (pipes, scripts, CI). -
mq-hal open --confirmwith a missing editor reports exit 127 instead of
raisingFileNotFoundError, 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, andmq-hal "..." | headno longer ends withBrokenPipeError. -
release-check.shno longer prints "all smoke tests passed" when a smoke
test fails after an earlier gate has already failed. -
Stack verification resolves the cockpit label
mqlaunchto the configured
macos-scriptsrepo, preserving an explicit mqlaunch override. Register
mqobsidianin the default repository map so both components are checked
instead of reported as unconfigured. -
hal.py,doctor_summary.py,fix_planner.pyandmodel_test.pysend
think: falseto Ollama, asplanner.pyalready did. qwen3.5 thinks by
default:model_test.pytook 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.pyis nowhal/operator_actions.py. Run as a script it put
hal/first onsys.pathand shadowed the stdliboperatormodule, so on
any Python that does not importcollectionsat startup (a python.org
build, orpython3 -S) mq-hal crashed on import with a circular-import
error.tests/stdlib-shadow-smoke.shforbids stdlib names inhal/and
scripts/and runs everyhal/module withoutsite. -
mq-hal releaseshowed readinessunknownfor every repo on real
mq-agent stack release-checkoutput: the parser looked forready/
statuson each repo, and real items carryblockersandwarnings
lists instead. A repo with blockers is nowno, one without isyes
(warnings do not block). -
doctor-summarymiscounted real doctor output: walking every string read
the top-levelstatusas a second warning and a check'sdetail: missing
as a serious issue — 1 serious and 2 warnings for a run with 0 failures and
1 warning. Amq.doctor-status.v1document is now read from its own summary
and checks; other doctors keep the heuristic. The--sampledocument used a
messagekey real output never had and is now shaped like v1. -
mq-hal changes --no-saveno longer reports "baseline recorded" when there
is no previous snapshot; it says the baseline was not saved. -
mq-hal stackreads the cockpit contractmq-agentactually emits. The view
still expectedcomponents[]/name/status/overall, while
mq-agent stack cockpit --jsonemitsrepos[]/repo/gate/
overall_gateundermq_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 intomq-hal; this stays a presentation fix. -
mq-hal brainandmq-hal runtimefind truth exports wheremq-agentwrites
them.mq-agentwrites stack truth undermemory/stack-truth/whilemq-hal
probed only a top-leveltruth/, sobrainreported zero truth exports and
runtimewarnedmissing: truthwith the producer output sitting there.
Accepted locations are centralized inBRAIN_FOLDER_SOURCESand 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 inhal/brain.pyand
hal/runtime.pylost their explicittype: ignore[no-redef, import-not-found]annotations. Behaviour is unchanged.