O OmniLAB / DocsDEVELOPMENT · 0.5.0.dev0Source on GitHub ↗
SUPERVISED LOCAL DEVELOPMENT

Focused companion acceptance#

This is the historical pre-repair acceptance record. Its original reproductions are retained in tests/companion_crash_baseline.py. The subsequent local repair and its guarantees are documented in recovery; current release gates are in release readiness.

Status: suitable only for supervised local use; not a Windows release candidate. This pass uses the preservation matrix and integration report as its baseline. It does not repeat the preservation audit or certify general model quality.

Packaged practical task#

A fresh Windows Python 3.13 virtual environment installed the baseline wheel (c419cc3839ce126fc78adac000b86369fc995a1b5a6c7775a559194040d84338) with the constrained tray dependencies. Imports resolve inside site-packages; pip check passes. The environment is isolated on the existing Windows host, not a fresh Windows machine. The shell's initial network restriction required rerunning installation with network access; dependency pins were not loosened.

The real repository task reviewed companion crash recovery through the existing review_change workflow, generic profile and Large compute cap. The local explorer used the configured GPT-OSS preference and produced a durable summary with repository evidence. A fresh worker received the same handoff packets for the review stage. The GPT-OSS review attempt failed and handed off to Codex; it did not produce a valid local review. No substitute model was silently used. The supervising Codex reviewed the code and process evidence, corrected the summary's overly broad crash-safety wording, and completed explicit checkpoints. This is completion of a bounded review task, not approval to release.

The run completed with seven durable workflow jobs and seven separately reviewed events, ending at codex_verified. Usage feedback records the explorer as corrected and the failed local review as rejected. Companion event decisions record the supervisor's corrected handoff, rather than accepting a failed model answer. All worker processes exited; the callback delivery table remains empty.

The two local calls used exact gpt-oss:20b, digest 17052f91a42e97930aa6e28a6c6c06a983e6a58dbb00434885a0cf5313e376f7. Reported usage: explorer 2,249 input / 186 output; failed review 2,431 / 342. The latter token counts do not imply a usable answer. No benchmark was launched.

Local jobs finish before review: their events remain pending and the dock shows waiting_for_codex. Explicit local supervisor decisions are recorded separately with supervisor_local_review; they do not represent an authenticated callback. The task's original not_run validation status is retained and acknowledged, rather than rewritten as model-certified testing. Actual acceptance checks are documented by the supervisor outside that immutable evidence envelope.

Recovery acceptance: release blocker#

tests/test_companion_acceptance.py uses isolated databases, a deterministic loopback provider and real child processes terminated with os._exit at commit boundaries. It is characterization coverage: passing tests reproduce and expose the unresolved defect; they do not mean recovery is safe.

Interruption Observed restart behavior Recovery verdict
Before companion job claim Queued job executes once after restart Recoverable
After job claim / workflow creation Job retained as interrupted; no automatic replay Explicitly blocked
After workflow claim / reservation Lease expires to handed_off; spent reservation retained Explicitly blocked
Provider answer before result reference Provider work can exist without saved result content Content cannot be reconstructed
After result-reference or stage commit, before companion completion Ledger advances, handoff content is absent, job becomes interrupted Release blocker
Inside companion completion transaction Job/result/event transaction rolls back together; earlier workflow commit survives Same cross-store blocker
After companion completion commit Result and unique review event survive restart Recoverable
After waiting-checkpoint or accepted-checkpoint commit Ledger says waiting_for_codex or codex_verified; companion job is interrupted without result Release blocker
Review claimed before invocation Controller restart marks delivery uncertain; no replay Explicit reconciliation required
Fixture response before delivery commit Response artifact survives; delivery uncertain; no duplicate invocation Inspect artifact, reconcile delivered
Fixture response after delivery commit awaiting_decision survives; no duplicate invocation Review decision required

Detection uses companion status and companion workflow-status --job JOB_ID together. Compare the companion result/handoffs with workflow version, stages, attempts and result references. The companion detects the abandoned worker; workflow status expires the durable lease. There is no automatic cross-store repair or synthesized replacement packet.

For a missing handoff, workflow-next refuses the interrupted job. Repeated submission of the same task returns the same job; repeated restarts do not run it again. A supervisor may record a rejected local review and finalize the companion run blocked. This closes the incident record but does not recover the lost content or resolve the underlying ledger. Preserve both databases and scope new work explicitly when needed. Do not treat that procedure as a fix.

In the tested cases no job row disappears, no local generation repeats, and there is one completion review event per job. Losing output while preserving the job row is still data loss. Durable cross-store reconciliation remains a release requirement; no recovery implementation was added in this focused pass.

Callback boundary#

The local callback file/stdio/subprocess path is exercised with synthetic CLI executables and synthetic session IDs. Checks cover the exact resume ID, untrusted-evidence packet, retained artifacts, authentication_required blocking, and explicit delivered/not_delivered reconciliation. A second claim is made only after evidence-backed explicit reconciliation of an unsent fixture claim. This is a local contract test, not a live Codex callback test.

No authenticated session initialization or callback was sent. Existing explicit authorization is absent, so the actual authenticated end-to-end callback is pending. It must not be inferred from local supervisor review or fixtures.

Installation, usability and minimal fix#

The live answer exposed a Windows redirected-output defect: companion status raised UnicodeEncodeError on a nonbreaking hyphen. The only production change in this pass makes CLI JSON use ASCII escapes, preserving the decoded strings. A regression forces cp1252 output with both that hyphen and a CJK character.

Validation after the fix: 17 process/encoding acceptance tests passed in 183.79 seconds; 75 existing companion/workflow regressions passed in 46.39 seconds. Those 17 include characterization of the release-blocking recovery failure. Ruff and the documentation checker pass; the public allowlist audit has 174 files and no findings. The rebuilt source distribution installs with the documented tray dependency constraints in a second clean virtual environment; pip check passes. Packaging retains all 31 definitions. Only companion_cli.py changes among packaged runtime files relative to the baseline.

Native Tk checks inspect dock status/details and the public selector against the installed inventory. GPT-OSS remains the selected preference; exact qwen3:14b-q4_K_M remains installed with digest bdbd181c33f2ed1b31c972991882db3cf4d192569092138a7d29e973cd9debe8. Neither personal routing configuration nor models are modified.

Missing-service checks use an isolated unavailable loopback port, leaving the real Ollama service alone. The dock displays unavailable/stale inventory; the CLI fails visibly (with a raw connection traceback). The troubleshooting guide provides start-service guidance. An empty-inventory fixture verifies install guidance and exact-model rejection with no substitution and no download request. These tests do not simulate uninstalling Ollama from a fresh machine.

Remaining manual checks: authorized live callback/session resumption and its actual authentication/quota behavior; fresh Windows install with documented prerequisites; declared Python 3.11 minimum; visual dock/tray behavior, DPI, keyboard/focus and hide/reopen during real work. Other-platform certification and active-resource performance measurements remain outside this Windows pass.

All changes remain staged. No commit, push, tag, publication, model download or deletion, stable-checkout change or frozen-runtime update is part of this pass.

Source revision 0196f3f · View this page on GitHub
Implementation, dated qualification and future plans are separate. Local output requires independent acceptance.