Repository navigation
chore(deps): upgrade portable-pty to 0.9.0 #3029
Description
Request and current authorization
The user requested investigation and a reviewed plan to update AgentsCommander's PTY library to the latest published version. This ticket tracks the eventual dependency upgrade; the current assignment is planning only. Do not implement, update Cargo manifests/lockfiles, run application builds or interactive tests, open a PR, or merge as part of this planning request.
Verified starting point
- Registry checked 2026-10-15: latest stable/max/newest portable-pty release is 0.9.0, not yanked, published 2025-02-11. Official package checksum b4a596a2b3d2752d94f51fac2d4a96737b8705dddd311a32b9af47211f08671e. Reconfirm at implementation intake; do not silently replace an agreed target if the registry changes.
- AgentsCommander base a1a694b: src-tauri/Cargo.toml:15 and crates/session-bridge/Cargo.toml:9 declare 0.8; root Cargo.lock resolves 0.8.1.
- Source comparison found no mandatory Rust call-site adaptation, but no updated build/runtime was performed. Child::as_raw_handle was already required in 0.8.1 and the local test implementation already supplies it.
- Windows 0.9.0 changes ConPTY cursor inheritance. Upstream portable-pty 0.9.0 doesn't work on windows wezterm/wezterm#6783 discusses an unanswered cursor-position query and possible startup deadlock; this is not an observed AgentsCommander regression. Investigation must address actual startup/hidden/attach behavior in both consumers.
- Unix changes executable search through PATH/cwd, preserves inherited SHELL, clears the child's blocked signal mask, and adds tty_name. 0.9.0 also changes serial API/dependencies. portable-pty aborts on exec failure instead of returning a spawn error wezterm/wezterm#7742 reports Unix exec-error handling; do not assume this is introduced by 0.9.0 or expand into unrelated upstream repairs.
Required plan and acceptance
- Inspect both consumers and their existing tests from a verified base; identify exact files, dependency resolution, necessary compatibility adaptations and reusable verification. State what is observed versus proposed.
- Produce the smallest complete implementation plan for latest stable portable-pty, including exact target, scope, failure behavior, platform/runtime risks, future verification commands, and rollback limited to this change.
- Obtain explicit author, Rust developer, Rust Grinch and architecture Grinch consensus on the same immutable plan version and SHA-256. Resolve substantive findings without adding optional work as gates.
- Deliver the plan, consensus evidence and any genuinely unresolved prerequisite to the user. Keep implementation/test/build/merge authorization separate; marking a candidate READY does not authorize execution.
- The eventual upgrade must preserve successful session startup, terminal I/O and replies, resize and cleanup, with Windows and supported Unix behavior covered proportionately. No claim of performance improvement is required.
Exclusions
No redesign of the PTY subsystem, integration of the capture tool, new capture product, activity/Working detector work, general dependency refresh, broad test infrastructure, or unrelated issue repair. Any newly discovered necessary extension must be surfaced explicitly.
Evidence
- https://docs.rs/crate/portable-pty/latest
- wezterm/wezterm@1e941fc
- Project shared .ac/room-18-ac-dev-team-v5/room-shared/pty-upgrade-dev-feasibility-v1.md and pty-comparison-v1.md preserve prior source-based evidence and its limits.
No implementation branch or PR exists for this planning request. Create the issue branch from synchronized main only when the authorized workflow requires it for implementation.
Activity
mblua commentedon Oct 15, 2026
I3029 — authorized planning intake, 2026-10-15
Issue: #3029
User request: "ok, investiguen y hagan el plan para el update a la última versión de la libreria".
Current deliverable is investigation and an implementation-ready reviewed plan only. No product/dependency/lock edits, application builds, runtime/interactive tests, implementation, push, PR or merge are authorized by this request. Existing findings are reused and verified where relevant. This intake records scope and evidence, not the technical solution or implementation approval.
Latest stable from crates.io API verified 2026-10-15: portable-pty 0.9.0, not yanked; checksum B4A596A2B3D2752D94F51FAC2D4A96737B8705DDDD311A32B9AF47211F08671E. https://docs.rs/crate/portable-pty/latest agrees. Reconfirm before later implementation and reconcile any target change instead of silently substituting it.
Repo: D:/0_repos/AgentsCommander_iac/.ac/room-18-ac-dev-team-v5/repo-AgentsCommander; main = origin/main = a1a694b, clean at intake. Branch creation deferred because current request is planning only; proposed future branch chore/3029-portable-pty-upgrade is not yet created.
Prior v2 comparison/consultation plan does not authorize this implementation plan. Its exact-version consensus and reports remain useful investigation evidence, not approval for a new candidate.
Workflow: code-implementation-workflow, architect-authored Full contract (compact, proportional specification; no forced phase split). Upstream changes startup protocol and Unix compatibility in a shared multi-threaded PTY path. Score is 36/100; Concurrency>=10 and Verification>=8 apply. Required initial consensus participants for every candidate version: ac-architect-v5 author, ac-dev-rust-v5 feasibility, ac-dev-rust-grinch-v5 risk/proof, ac-architect-grinch-v5 architecture/minimum scope. All four must approve identical Plan-SHA256. Planning round may author/review a candidate before consensus; implementation remains gated. Immutable versions under this directory follow shared Guidelines/code-change-plans.md and code-change-plan-template.md; first plan path plan-v1-portable-pty-upgrade.md.
Scope and evidence
Upgrade the actual portable-pty consumers of AgentsCommander to latest published stable, with only required adaptations and meaningful regression verification. Preserve current successful launch, I/O and terminal replies, resize and cleanup. Investigate Windows cursor-query startup for visible/hidden/late-attach sessions and session-bridge; Unix executable resolution, environment and signals; dependency resolution and actual supported targets. Plan must distinguish unexecuted future checks from source evidence and define how necessary blockers are handled without silently selecting a design during implementation.
Known references at base: src-tauri/Cargo.toml:15, crates/session-bridge/Cargo.toml:9 (0.8 declarations); root Cargo.lock:4518 (0.8.1). No mandatory Rust adaptation found in previous source review, not proof of compile/runtime. Child::as_raw_handle exists in both versions and PoisonedChild already implements it. Upstream 0.9 Windows adds INHERIT_CURSOR; #6783 discusses unanswered position query. Unix PATH/cwd/SHELL and signal-mask behavior changed. API adds tty_name, Downcast/Send, signal getter; serial2 replaces serial. #7742 is an open Unix exec-error report, not proven introduced by this upgrade; no authorization for a general upstream repair.
Reusable shared evidence (absolute roots below):
Official sources: https://static.crates.io/crates/portable-pty/portable-pty-0.8.1.crate and portable-pty-0.9.0.crate at same endpoint; portable-pty 0.9.0 doesn't work on windows wezterm/wezterm#6783; portable-pty aborts on exec failure instead of returning a spawn error wezterm/wezterm#7742. Prior raw archive comparison can be regenerated from public sources without reading peer replica scratch.
Excluded: capture tool integration, PTY redesign, Working/activity detectors, general dependency updates, optional infrastructure, unrelated bug repairs. If scope extension proves necessary, identify it and its evidence explicitly. Do not discard an added feature based only on coordinator judgment; user decides scope extensions. Future interactive/image/mouse/keyboard testing requires user consultation before delegation under Role.md; this planning assignment executes none.
Technical scoring v1
Raw 78. Final round((78-10)/190*99)+1 = 36/100. Excluded ceremony: issue, branch/PR, messaging, review rounds, CI waiting, merging, release/version bookkeeping. No score inflation for process.
Planning completion requires the concrete full plan, source-backed review verdicts with identical digest, material issue/reviewer questions resolved or honestly reported. A ready plan does not authorize execution; stop after delivering planning result to user.
mblua commentedon Oct 15, 2026
I3029 — round 1 consolidated result
Candidate full version2: plan-v2-portable-pty-upgrade.md, Plan-SHA256 919E25825F128DEF4C8C8178E00B082AF180D7DD5212AB4923AB50B260F78AF4. Version1 was a truncated authoring artifact, not a second review round. Both preserved unchanged.
Required reviewer approvals: 0/3, author approval absent. This is the round1 comparison baseline.
Consolidated findings
was not found in PATH;0.9.0 changes it. Update the plan to preserve semantic negative-test assertion. This is source-based inference, not an executed failure. It makes a literal three-path-only hypothesis insufficient.Scope/authority reconciliation
User asked for investigation and a plan to update the library, without a three-file restriction. Intake allowed necessary adaptations and verification. The three-path statement in v2 is an unapproved hypothesis, not a user prohibition. Planning the necessary Unix assertion adaptation fits that request; do not add a redundant user approval solely for that path. New product behavior/redesign/capture integration remains outside scope. No implementation is authorized.
Runtime/input exclusion and user-consultation gate remain effective: the isolated probe's automatic cursor response injects input. Concrete permission question pending; elapsed time is not consent. Author may continue independent static planning, reconcile review conflicts and specify the proposed probe/future regression procedure without executing them. No ready claim while material B1/decision remains unresolved.
Next candidate must incorporate the Unix test expectation, settle supported bridge/Unix coverage, make the verification executable and either close B1 with permitted evidence or explicitly retain its real prerequisite. Same four participants, new immutable version and matching digests; no vote transfer. No code edits, tests, builds or product run occurred.
mblua commentedon Oct 16, 2026
I3029 — authorization for three isolated Windows probes
User response in active conversation: "dale, haganlas". This explicitly approves the immediately preceding concrete proposal: three disposable portable-pty Windows runs, 0.8.1 control, 0.9.0 without cursor reply, 0.9.0 with automatic cursor reply; only cmd.exe /c echo READY, bounded runtime and owned-process cleanup, no GUI/capture/physical input and no AgentsCommander product changes.
This is the exact exception to the runtime/input exclusion in intake-v1.md and plan-v2-portable-pty-upgrade.md requested by both Grinches. Permission does not approve the product plan, dependency updates, deployment, or additional application tests. Do not ask for this permission again. The user-authorized investigation includes the disposable fixture/artifact preparation necessary to perform these three probes.
Reviewed recipe: room-18-ac-dev-team-v5/room-shared/i3029-rust-review-r1.md and i3029-architecture-review-r1.md from .ac. Product candidate remains v2, SHA256 919E25825F128DEF4C8C8178E00B082AF180D7DD5212AB4923AB50B260F78AF4; it has no implementation consensus. These probes gather B1 evidence; they are not implementation of the upgrade.
Scope: run the same minimal openpty24x80 -> cmd.exe /c echo READY observation with exact published0.8.1 and0.9.0, capture raw bytes/hex, marker/exit/elapsed/query/reply events. Two cases write no PTY input; response case writes only ESC[1;1R after observing ESC[6n. Observe at most10seconds per case and bound the entire case externally (30seconds or the reviewed necessary bound). A control sequence alone is not READY; zero bytes is not PASS. Report whether spawning itself, first marker or exit blocks. Preserve the actual library's non-returning behavior rather than hiding a hang behind an unbounded join/drop. Kill/clean only the experiment's own processes if required and report proof/uncertainty.
Paths: fixture and evidence only in D:/0_repos/AgentsCommander_iac/.ac/room-18-ac-dev-team-v5/room-shared/i3029-pty-probe/. No product repo/lock/config edits, worktree, global settings change, installation, or general test infrastructure. Source owner chooses smallest fixture consistent with reviewed recipe, records exact source/dependency digests. Build outputs and Cargo output/cache overrides remain within authorized scratch; no application build. OS/process metadata and published source inspection are allowed. Base repo for provenance is D:/0_repos/AgentsCommander_iac/.ac/room-18-ac-dev-team-v5/repo-AgentsCommander, source-investigation base a1a694b (not a claim the standalone probe is an AC executable).
Owners: ac-dev-rust-v5 authors the disposable investigation fixture; ac-dev-rust-grinch-v5 verifies its observation and bounded cleanup against the approved three-case recipe; ac-shipper-v5 builds the reviewed source and supplies paths/source digest/dependency versions/exe SHA256/bytes/toolchain/commands; ac-cli-tester-v5 independently verifies artifact provenance and executes only the three approved cases. Tester does not build, copy/rename artifacts, or change product. Coordinator routes artifacts and accepts concrete results. This is a standalone library probe, not a packaged AgentsCommander test: do not build or relabel an AgentsCommander executable as a substitute. Preserve the skill's provenance, isolation, input permission and result requirements.
Return evidence once per actual run, not repeated experiments for ceremony. If a case is inconclusive because the fixture is defective, report concrete limitation before any extra input/runtime beyond the approved contract. No GUI/window capture or physical mouse/keyboard use. Any fixture additions must directly resolve observation, deadline, process cleanup or comparison equivalence; optional infrastructure is excluded.
Next: after the three results, architect prepares next immutable product-plan candidate using the original four participants and planning-round cold-start gate; no votes transfer. Source findings on the Unix assertion and supported bridge deployment remain necessary. No automatic implementation follows planning consensus in this task.
mblua commentedon Oct 16, 2026
I3029 — accepted evidence from the three authorized probes
User approval: "dale, haganlas", recorded in probe-authorization-v1.md. The independent tester ran A/B/C exactly once on Windows10.0.26300.9711 with system ConPTY (no adjacent conpty.dll/OpenConsole). No further test is authorized by this result. No AgentsCommander product code/config/dependency/lock/branch change or application run occurred.
openpty and spawn returned in all three cases. B raw output exactly4bytes ESC[6n; C restores output/exit after the permitted response, so B is not an unexplained fixture failure. Timing is per worker gate, not total shell duration or a performance comparison. Reader starts before spawn in the fixture, unlike AC ordering; no integrated AC/hidden-session/resize/Unix/bridge behavior is certified. No output is counted from OSC title text.
All wrappers completed without timeout/drain error. Each owned job reports successful termination/query with active0. Independent post-run metadata checks found all9 recorded supervisor/worker/child PIDs absent. No process sweep/taskkill fallback. OS-owned ConPTY processes outside the job are not covered by jobzero proof; retain that limit.
Evidence root D:/0_repos/AgentsCommander_iac/.ac/room-18-ac-dev-team-v5/room-shared/i3029-pty-probe/v3/.
TEST-REPORT-v1.md SHA256 5813D08FE44C47AE046D48558D3C47890EE542FADE64A88955AAA0E2F19C88E9. Lead independently rehashed report and B/raw.bin (D907695B104F1C48F93AC2A6F8F6826688A7B359B4B101B26AF46022778DBF72), read B/C events and verified app repo clean at a1a694b after the probes. Report contains raw/events/cleanup digests and exact commands. Source set SHA256SUMS6865A0545E8DD4B5E1F48D70271DD88DA27C820AF8C4616AA13F80DD7BE478A4; source independently approved in room-shared/i3029-probe-source-review-v3.md. Locked build provenance in v3/BUILD-RECEIPT.md, exes independently rehashed by lead/tester.
Next authorized work remains investigation plus product upgrade plan. Author must resolve the demonstrated cursor-response requirement against actual AC startup/visibility and supported bridge deployment, preserve bytes/ownership/cleanup, include the known Unix assertion adaptation, and write exact future regression proof. Coordinator supplies evidence, not a preferred technical solution. Do not automatically extend this three-case input permission into new integrated tests. All four original implementation-plan participants must review the next immutable version/digest; no vote transfer from v2 or fixture approval.
mblua commentedon Oct 16, 2026
Ronda 2 de planificación: sin consenso para plan v5, SHA256
927B0920CAEC26119B8BCFE8D7A94754930840685E1C8D910D18B2F88CD1533C, base9f410ff2cbe37d1847f3a0fc93cbc1015af3f212.Autor APPROVE/READY; Rust PLAN_APPROVED; Rust Grinch y Architecture Grinch CHANGES_REQUIRED. Independientes1/3.
Progreso de consenso desde la ronda anterior: SÍ. Antes autor NEEDS_ANOTHER_ROUND y0/3; ahora la respuesta autónoma de cursor está resuelta a nivel de diseño, al igual que plataformas/Unix. Queda reforzar el observable integrado (consulta consumida/respuesta escrita en host de referencia).
Otros bloqueos: evitar ClosePseudoConsole en el único lector durante fallo de respuesta; corregir/justificar nuevos locks; resolver desacuerdo sobre necesidad del cleanup propio frente al lifecycle existente. No se ordena retirar una posible ampliación opcional sin aplicar la regla de consulta del usuario. Se requiere nueva versión y mismos cuatro votos; ninguno se transfiere.
Registro completo local:
.ac/plans/3029-portable-pty-upgrade/round2-consensus.md. Sin implementación, nuevos builds/tests/runtime ni rama. Issue permanece abierto; se continúa la planificación.mblua commentedon Oct 16, 2026
Decisión de alcance del usuario: “ok, mantene el stop”. Ante fallo al escribir la respuesta inicial de cursor se conserva Stop explícito; no se añadirá terminación automática de la sesión en este plan. El proceso podría seguir vivo hasta Stop. Se mantiene la respuesta automática normal de cursor necesaria para0.9.0.
Consulta resuelta: autoría de la siguiente versión continúa en la misma ronda3, con correcciones de prueba integrada y manejo de fallo según propuesta del arquitecto. Requiere los mismos cuatro votos sobre el nuevo digest, sin transferir aprobaciones de v5. Registro:
.ac/plans/3029-portable-pty-upgrade/scope-decision-keep-stop-v1.md.Sólo planificación; esta decisión no autoriza implementar ni ejecutar nuevos probes/builds/runtime.
mblua commentedon Oct 16, 2026
Ronda3 sin consenso para plan v6, SHA256
B8217489DD73558843754E6B4F2383354BB1686F1A6C125F9AA815792130B374. Autor, Rust y ArchitectureGrinch aprueban; RustGrinch pide cambios (total3/4; independientes2/3).Progreso de consenso desde la ronda anterior: SÍ. N2 observable integrado, N3 locks y B3 recuperación opcional cerrados. Se mantiene decisión explícita del usuario de conservar Stop, sin aborto automático.
Único bloqueo N1b: terminar el lector al fallar CPR puede dejar Stop cerrando ConPTY sin drainer, con riesgo de bloqueo en Windows. Reviewer propone mantener readloop normal tras desarmar respuesta fallida y ajustar oracle. Autor debe verificar/resolver en nueva versión; no se transfiere voto. Registro completo
.ac/plans/3029-portable-pty-upgrade/round3-consensus.md.Sólo planificación; no implementación ni nuevos builds/tests/runtime/probes.
mblua commentedon Oct 16, 2026
Planificación completada con consenso 4/4 para plan v7.
Plan canónico local:
.ac/plans/3029-portable-pty-upgrade/plan-v7-portable-pty-upgrade.mdPlan-SHA256:
1D4DFD90480871BA2DBF0D01A654E72D3CEC8E3A9C1843E4E1BB472621C968E4Base de diseño:
9f410ff2cbe37d1847f3a0fc93cbc1015af3f212.Autor READY_FOR_IMPLEMENTATION; Rust, Rust Grinch y Architecture Grinch PLAN_APPROVED sobre el mismo digest. Registro de votos:
.ac/plans/3029-portable-pty-upgrade/round4-consensus.md. Progreso de consenso desde la ronda anterior: SÍ; antes3/4, ahora4/4, N1b cerrado.Una fase, seis archivos: ambos Cargo.toml, Cargo.lock, local_backend.rs, output.rs y cfg de test en git_watcher.rs. Actualización dirigida a0.9.0; respuesta autónoma de cursor Windows y parser existente; adaptaciones/regresiones Unix; bridge soportado Docker/Linux. Se preserva decisión del usuario: Stop, sin cierre automático añadido. Tras fallo CPR, lector sigue drenando para conservar Stop, sin nuevos hilos/teardown/locks de registros.
Los tres probes ya autorizados sustentan la necesidad del handshake; no acreditan integración AC. Pruebas integradas Windows, Unix, Docker e2e, PRE/POST y CI siguen futuras/pedientes. Repo limpio en main a la base indicada, sin cambios de producto ni nuevos builds/tests/runtime.
Se completó investigación y plan; no se implementó el upgrade. Issue permanece OPEN/PENDING para eventual implementación. La autorización actual no incluye ejecutarla; no PR, merge, release ni version bump.
mblua commentedon Oct 16, 2026
Implementation is now explicitly authorized by the user for plan v7, including its automated PTY tests and delivery through a PR to main. This supersedes the previous planning-only authorization while preserving the frozen plan bytes and scope.
Plan:
.ac/plans/3029-portable-pty-upgrade/plan-v7-portable-pty-upgrade.mdPlan/P01 SHA256:
1D4DFD90480871BA2DBF0D01A654E72D3CEC8E3A9C1843E4E1BB472621C968E4.The lead independently verified all four exact votes and report hashes against
round4-consensus.md; no vote transferred. Step7.5 cold-start purge succeeded. Full workflow, score36/raw78, one phase/six paths; existing score and evidence reused.Preserve explicit Stop, continue reader draining after failed cursor response, and add no automatic close on that failure. Main revalidated and fast-forwarded to
9f87ec7ff5bc5ecf8cbfabd80a924dc238939485; independent review is classifying the #3028 delta and taking the clean PRE graph before implementation. Official sparse registry index still ends at0.9.0, not yanked, with the agreed package checksum. Proposed branchchore/3029-portable-pty-upgrade.Acceptance remains the frozen plan: targeted dependency resolution, autonomous hidden Windows startup with actual session observer, I/O/resize/attach/exit/Stop, Unix cases, real Docker bridge e2e, PRE/POST SCC/arcs, independent code review, all applicable CI on the exact PR head, then PR merge and cleanup. No result is claimed before execution. No release/version bump/install or packaged artifact requested.
mblua commentedon Oct 16, 2026
Local implementation gates passed on
08aac4811c27c7b3c5f5a8782738e691cb309103(base9f87ec7ff5bc5ecf8cbfabd80a924dc238939485), branchchore/3029-portable-pty-upgrade. Code is not on main yet; PR/full CI are the next gates.Both manifest pins are
=0.9.0, with a directed lock update. The Windows reader handles one cursor query without attach, uses the existing parser's cursor, and preserves reader draining and explicit Stop after a failed response. No automatic close was added. Both independent static reviews and PRE/POST SCC/module-pair comparisons passed on that exact head.Rust1.98.1 compile/check and test no-run passed. The verified test executables were then run directly with equivalent package cwd/environment and libtest arguments, after a Cargo listing unexpectedly attempted to rebuild and was interrupted before running tests. That interrupted command is not reported as a cargo-test pass. Actual Windows10.0.26300.9711 results: I3029 six passed, observer consumed/written1/1 in hidden startup, input/exit and Stop; PoisonedChild1 passed; local_backend71 passed and1 pre-existing ignored; bridge-lib5 passed; layering guards1+5+3 passed; fmt passed. No new test was ignored, and the existing ignored test is not counted as passing.
Cross-platform verification: PENDING_LINUX_TESTS. Developed on Windows. No native Unix executor or accessible Docker CLI is established here; CI full does not execute the new I3029 Unix cases or real bridge Docker e2e. These tests remain mandatory and are not waived.
The standing Windows/Linux handoff policy permits reviewed changes to land through a green protected PR while unavailable other-OS tests remain explicitly pending. It supersedes only the frozen plan's other-OS-before-landing ordering; plan v7 bytes and all other gates remain unchanged. Keep this issue OPEN and retain
developed-windows/requires-test-linux; the PR must not use an automatic closing reference. Do not claim full completion before the missing results are reconciled.After PR merge, this issue will receive the exact landed main SHA, PR link and executable Linux/Docker commands with expected counts, marker/exit/cleanup evidence. The user will route a Linux group to run them. No cross-room contact, VM/service installation, workflow change, release, version bump or packaged artifact is included.
mblua commentedon Oct 16, 2026
I3029 — remaining-delta rescore after approved scope exception
Original issue score36/raw78 remains historical for portable-pty upgrade/CPR design. Remaining delta is one existing test-inventory row: total4→5, TestOnly2→3, explanatory comment. User approved exact seventh-file exception2026-10-16. No product flow/fixture change.
Raw13. Final round((13-10)/190*99)+1=3. Excluded ceremony: new immutable plan, consensus/review rounds, issue/branch/PR, delegation, CI waiting, push/merge/cleanup. Existing gate semantics were scored as technical tooling, not ceremony.
Path: keep original Full one-phase complete plan and original four-party digest consensus for this continuation. The complete upgrade retains its PTY design/concurrency criteria; the remaining3 does not erase those contracts or the explicit same-participants requirement. Do not create a new issue/branch/phase or rescore completed implementation as new work.
Merge pull request #3035 from mblua/chore/3029-portable-pty-upgrade
mblua commentedon Oct 16, 2026
Cross-platform verification: PENDING_LINUX_TESTS
Developed on: Windows. Test on: native Linux with Docker.
Landed origin/main SHA:
1950bd21640e41ab596f8601f5e66265ddfa1ee3.PR: #3035 (merged).
Reviewed/CI head:
b50dee8bf359153e5c069ee755acb8a23dc02d7b; landed main tree is byte-identical to that head. PR CI completed successfully: 7 workflows, 26 checks, all 14 required contexts green. Local checkout is clean on main=origin/main; feature branch was removed locally/remotely.Both consumers now pin portable-pty
=0.9.0. Windows handles its first cursor query in the existing reader. Cursor-response failure disarms the responder while the reader continues draining; explicit Stop retains teardown ownership. No automatic close on reply failure.Already verified:
8a95882a; Grinch approved reuse because the only subsequent source-tree delta was the inherited main-only coverage workflow argument. No old execution is attributed to a new commit.b50dee8b: 1211 module pairs byte-identical PRE/POST/committed/working, complete SCC1x89 unchanged, arc/cycle checks passed, no baseline regeneration. Own code/architecture/runtime reviews passed.issue_2683tests, all passed/0failed/0ignored, including bothspawn_sync_search_path_testscases (positive injected PATH and negative missing probe directory). Checkout merged8a into its already-contained main parent, so its tree equals8a. Rust inputs remain identical to landed main. Independent Grinch audited this evidence; no PATH rerun is needed solely for this handoff.08aac481, with unchanged inputs; it is not a real Docker/PTy execution. Unix inventory is not selected by current Linux/macOS jobs and is not claimed PASS.Missing tests and setup
Use the landed SHA above. If main has advanced, report the actual tested SHA, both identities and relevant intervening changes rather than assuming equivalence. Use a clean authorized checkout; do not overwrite unrelated work. Build through the target group's build owner/workflow. Rust1.98.1 and Linux native development dependencies follow
.github/workflows/pr-regression-gates.yml; use repo-local Cargo output directories and retain stdin-closed/deadline handling. Docker CLI/daemon must be operational and authorized for this disposable image/container test; no installation into the user's live app is requested.From the repository root, set repo-local build paths before Cargo, then use package cwd:
Expected: exactly3 behavior tests PASS,0failed,0ignored:
pty::output::tests::issue_3029_cursor_position_respects_reader_token: real parser cursor/token isolation.pty::local_backend::spawn_sync_search_path_tests::issue_3029_unix_launch_contracts: explicit cwd-relative executable/PATH resolution, SHELL sentinel, invalid executable/directory semantic failures and owned child/session cleanup.pty::local_backend::spawn_sync_search_path_tests::issue_3029_unix_child_inherits_shell_and_unblocked_signals: actual child fixture invocation, inherited sentinel andSIGUSR1_BLOCKED=0, parent thread mask restored and cleanup.The third test invokes
pty_3029_child_fixtureitself with its dedicated environment and exact child selector. Running the helper normally returns early and is not acceptance evidence. Verify the fixture actually ran and the signal/SHELL marker assertion passed. A zero-selected filter, compile-only run or skipped/ignored case is not PASS. Preserve selected names, stdout/stderr, exit/duration and cleanup evidence. Apply plan limits (build40min, suite10min, individual PTY observations5s) with the target group's existing bounded runner; no new harness is requested.Then, from the same
src-tauricwd:AGENTSCOMMANDER_RUN_DOCKER_E2E=1 cargo +1.98.1 test --locked -p session-bridge --test docker_bridge_e2e docker_bridge_connects_streams_pty_output_and_exits -- --exact --nocaptureExpected: exactly1 actual Docker e2e PASS,0failed,0ignored, with image built from
crates/session-bridge/Dockerfile(agentscommander/session-bridge:e2e-test), real WebSocket hello, PTY markerbridge-e2e, exit frame/code0 and successful helper delivery assertions. Capture Docker image identity/build log and test stdout/stderr/exit; prove owned containers/processes were cleaned up. The test uses disposable--rmcontainers; audit owned cleanup, especially after failure. Missing flag prints an early-return skip while libtest may say passed: that is NOT acceptance. Docker unavailable or a deadline failure is BLOCKED/FAIL, never PASS.Report in this issue: actual source SHA, OS/kernel/Rust/Docker versions, build/artifact provenance, each requested test PASS/FAIL/BLOCKED, actual selected counts/skips, marker/exit/cleanup evidence and logs/artifact links. Retain the primary failure separately from cleanup errors. Do not mutate unrelated state or install a release.
The main-only coverage pipeline is also newly running on landed
1950bd21: Frontend coverage38933834827, now using--maxWorkers=1. It is post-merge verification, not a previously passed PR check; the origin coordinator will reconcile its native completion notice without polling.The standing cross-OS policy permits this reviewed/green-PR publication with unavailable native Linux tests openly deferred, not waived. Keep #3029 OPEN with
developed-windowsandrequires-test-linuxuntil the origin coordinator reconciles sufficient passing results. No automatic closing reference was used. The user chooses/routes the Linux group; no new cross-room authority is created.mblua commentedon Oct 16, 2026
Closing at the user's explicit request: “cerralo y si algo luego falla, lo reabrimos”. This overrides the earlier instruction to keep the issue open pending target-OS verification.
Implementation landed through PR #3035 at
1950bd21640e41ab596f8601f5e66265ddfa1ee3; the PR's tested head had all 26 checks, including all 14 required contexts, green. Stop and reader draining remain preserved. The checkout was left clean on main; the team was closed. No additional packaged build or installation was requested.The Linux handoff remains the record of unexecuted verification: three Unix issue3029 behavior tests with the actual child fixture, plus the real Docker bridge e2e. Closure does not turn these into passing results. The main-only coverage pipeline's final result has not yet been reconciled here. Existing pending-test labels and evidence are retained accurately.
If a subsequent failure is reported or verified, reopen this issue and reconcile it against the landed SHA and the existing evidence.