Skip to content

YOK-2794: merge queue landing - #857

Merged
beebauman merged 1 commit into
mainfrom
YOK-2794
Sep 3, 2026
Merged

YOK-2794: merge queue landing#857
beebauman merged 1 commit into
mainfrom
YOK-2794

Conversation

@beebauman

Copy link
Copy Markdown
Contributor

Item branch for YOK-2794; lands through the merge queue's merge_group integration gate.

`yoke watch doctor -- --quick`, the one doctor shape the session rules
teach, always exited 1 on a relayed machine: the wrapper shelled the
engine entrypoint, which opens the control-plane database itself and so
refused before running a single check. It named `yoke doctor run` as the
recovery — a command with no watcher wrapper, and one that printed a
single JSON line at the end with no progress at all. A relayed machine
therefore had no streaming doctor path, and the rules taught a command
that could not work there.

The wrapper now runs the transport-keyed `yoke doctor run`, and that
command streams on both transports. Progress is emitted from the one
seat every runner already passes through, `execute_check_isolated`, so
the engine entrypoint, the `doctor.run.run` handler, and the
client-side composition passes of a relayed run all report without any
of them remembering to. Emission is opt-in: a caller installs a sink,
and without one the handler stays silent when it executes server-side.
A relayed batch carries one check, so its response is that transport's
progress tick and its verdict renders from the returned row.

A runner that executes a check without the authority that check needs
rewrites the resulting failure as not-applicable once the call returns,
so the two loops that do that withhold the in-loop verdict and emit the
final one instead. Otherwise the raw failure wakes a follower urgently
for a verdict the report never carries: a `--quick` run emitted eleven
such lines against three real failures. Start lines still stream, so a
long batch stays visibly alive, a genuine failure still reaches the
urgent tier, and a rewritten one goes out as the N/A it became.

`yoke doctor run` also gains the output contract it was standing in for:
the Ouroboros Health Report in human mode instead of one JSON line,
`--file PATH` to write it, and doctor's own exit status (0 clean, 1 a
recorded FAIL or a failed run) — the status the doctor skill already
told callers to branch on.

Moving the field-note footer helpers to the module that renders the
report moved the canonical import with them, so the importing-consumer
roster follows. That the roster's own test was not selected is a
selector defect, fixed here rather than worked around: a contract roster
names its subjects as repo-relative path strings, and reachability only
followed dotted module literals, so editing a governed file left the
test guarding its roster unreachable until CI found it. The index now
resolves path literals against its own file list too — the
workspace-anchored writer roster has the same shape and the same gap.

Teaching follows in the same change: the Claude session rules and the
wrapper `--help` name one shape and mark the engine entrypoint
source-dev; AGENTS.md carries the harness-neutral half; and the doctor
skill drops its transport branch, along with two claims a composed
relayed run had already outgrown — that source-tree and project-local
checks cannot run over https.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@beebauman
beebauman enabled auto-merge September 3, 2026 07:16
@beebauman
beebauman added this pull request to the merge queue Sep 3, 2026
Merged via the queue into main with commit e889d34 Sep 3, 2026
24 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 3, 2026
@beebauman
beebauman deleted the YOK-2794 branch September 3, 2026 07:57
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant