v0.7.8 — convergence run-train live path from the shipped CLI
[0.7.8] - 2026-07-13
Convergence — the run-train live path now works from the shipped CLI
Completes the broker live-path the SPECPKGMIN pilot surfaced as unusable from the
shipped CLI. Together these make phase-loop run-train actually open draft PRs. The
routing broker keeps a per-repo, per-train admission/evidence store so one node's
ambiguous outcome fail-closes only that repo, never siblings or unrelated trains
(broker root keyed by the roadmap's resolved-path hash).
gh pr createis now a complete non-interactive argv (fix). The broker's
GitHubBrokerAdapterissuedgh pr create --draftwith no--title/--body,
which aborts when gh is not attached to a tty ("must provide --title and --body")
— the branch pushed but no PR opened (outcome_ambiguous_blocked). It now derives
a title from the branch HEAD commit subject, passes the request'spr_bodyas
--body, pins--head <branch>, and appends--draftfor draft requests.
(agent-harness#207)build_routing_broker_client— one broker client serves a MULTI-repo train
(new).build_github_broker_clientbinds onerepo_pathat construction, so a
single client could only serve one repo; a cross-reporun_trainmis-bound
git -C <wrong-repo>on node 2+. The routing client binds a fresh
GitHubBrokerAdapterperBrokerRequest.repo(the node's resolved workspace) AND
keeps a per-repo admission + evidence store underbroker_root/<repo-slug>.
Per-repo stores are load-bearing for safety, not just routing:epoch_blockedis a
global scan over a store and an ambiguous terminal is durable + permanent and can be
tripped by a benign transient (e.g. a one-offls-remote/ghnetwork hiccup →
remote-read-failed/pr-unconfirmed), so a shared store would let one repo's
transient permanently fail-close every other repo. Per-repo stores scope the
fail-closed epoch to exactly the repo whose mutation became ambiguous.
(agent-harness#206)run-trainCLI now wires a broker-authoritative coordinator (fix).
_run_train_commandbuilds aCoordinatorRuntimecarrying the routing broker and
passes it torun_train. Previously the CLI passed no runtime, so every publish
fail-closedbroker_requiredand the train opened ZERO PRs. The broker root is
namespaced per train by the roadmap's resolved-path hash
(<ledger-dir>/broker/<path-hash>) — so two distinct roadmap files, even
same-stemmed and even under one explicit--ledger-dir, get distinct broker roots
and an ambiguous outcome in one train never fail-closes a different train. (Keying on
the stable path rather than the content digest keeps a resumed train on its own epoch
across roadmap edits.) (agent-harness#205)
SPECPKGMIN
- Harness dogfood of the
consiliency-spec-ingestwheel + GP interchange seam.
An env-gated (SPEC_ROOT/GP_ROOT/HARNESS_ROOT) cross-repo integration test that
builds + installs the wheel, runsevaluate(...), and checks the GP interchange
seam; bounds every child process with a timeout. (agent-harness#204)