psmux 3.3.8 -> 3.3.9 adoption: umbrella for the floor bump, workaround retirement, and the follow-on tracks
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- リファクタリング
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- python
- 領域
- backend, testing-qa
調査の方向性
まず、完了した子 issue #658、#659、#537 を読み、その後 psmux_backend.py と tests/test_psmux_live.py を確認してください。この umbrella issue には単独の実装目標はありません。そのトラックはすでに完了しているか、フォローアップ issue に移されています。そのため、完了は 1 人の新規コントリビューター向けの規模の変更ではなく、参照されている子 issue の作業と CI カバレッジに依存します。
索引モデルが issue の本文から書いたものです。
説明
Umbrella for the psmux 3.3.8 adoption family, in the shape of #288 (which closed when its target-resolution children were done). The children below are separate work tracks with one shared premise: every upstream defect this backend works around is fixed and released — psmux 3.3.8 (66cf613 2026-08-18) is byte-identical to the v3.3.8 tag and to master, all 19 reports filed from this project are closed and released in it, and each workaround premise was re-measured against the installed binary (smoke tables and the F1–F9 proposal).
The one sequencing rule
_LAST_UNSUPPORTED → (3,3,7) (the F1 gate in #658) is the single constant everything hangs on: it refuses 3.3.7 and admits 3.3.8+, and 3.3.8 is the first tag carrying every fix at once — there is no per-workaround floor. Workaround deletions land only behind it (on a 3.3.7 install the pipe-pane -o transport, for one, silently kills run-log capture). F6/F7 in #658 are the exception: correct on both versions, landable any time.
Children
- #658 — floor bump + workaround retirement (F1–F7): the
select_windowoverride group, the pipe-pane sidecar, the_transportablenarrowing, thekill_session=nameoverride,kill-windowfailure surfacing, and the doc-rot pass. Actionable now. Its merge closes #222. - #222 — the historical upstream-wait tracker; carries the evidence. Closes when #658's set merges, per the closure proposal.
- #659 — attended console pass for the five client-movement items, then the
switch_clientverdict-source rework (F8/F9). F8 done: all five items measured green against a real attached client (results) — the console premise is discharged, and the pass was scripted rather than hand-run, so it repeats. F9 implemented in #670; the issue closes on that merge. The pass also produced #669 and showed F9's premise was understated: the wrong verdict did not just answer False, it fired-land relocated the operator, then read the relocation as success. - #537 —
PSMUX_DATA_DIRas a per-project registry root, seam-wide. Unblocked by the same F1 gate (the installed build honours the variable, measured); stillneeds-designfor the root derivation and the cross-process contract.
Not children, but watched from here
- psmux/psmux#583 — a
-u-shaped option value still deletes the key at rc 0 on 3.3.8, so_transportable'svalue.startswith("-")clause stays after #658's F4. When a tag ships that fix, its retirement is a small follow-up with its own tag gate. - psmux/psmux#580 question — if the new pane-scoped option store ever opens to user
@keys, retiring the@opt_@Nsubstitute channel becomes a follow-up with its own tag gate and live smoke. If the allowlist is declared deliberate, the psmux#321 boundary is double-confirmed and nothing changes.
Permanent boundaries — no child should try to retire these
Per-window user options do not exist in psmux's model (psmux#321); -EncodedCommand stays the window-command transport (quoted command strings still die on 3.3.8, root-caused in the psmux#402 comment); _qualified_window_id stays (a bare @N still routes by caller's server); the #{session_attached} delta probes stay for switch-client -l / detach-client, where rc proves dispatch, not effect.
Refs: #288, psmux/psmux#483, psmux/psmux#497, psmux/psmux#482, psmux/psmux#563, psmux/psmux#558, psmux/psmux#545, psmux/psmux#583
Related, deliberately outside the umbrella
Open issues that mention psmux but are bmad-loop-side work no psmux tag affects — defects, plus the coverage the family's own claims lean on. Listed so the boundary is a decision, not an omission:
- #525 / #562 — the seam folds non-zero exits and transport faults to empty listings. Same swallow family as #658's F6, and 3.3.8 makes it worse to keep (more verbs now return meaningful non-zero), but the fix is seam honesty, not adoption. Whoever lands F6 should read both first.
- #531 / #538 — ctl-window collision and ownership proof outliving the run dir. Backend-agnostic design work; the per-project
-Lnamespace idea recorded on #222 (opportunity 2) is one candidate shape for #538. - #669 —
_display_messageprobes without-t $env:TMUX_PANE, socurrent_window_id/current_pane_id/current_return_targetanswer for the server's active window rather than the calling pane. Surfaced and measured by #659's attended pass, but no psmux tag moves it: the fix is the leaf pinning its own probe, exactly as_parked_traileralready does. Blast radius is the ctl-window prune's self-exclusion and the return-option read, not the adoption. - #671 — the same leaf's other probe-targeting residuals, both pre-dating the adoption: an unguarded
:-bearing session name goes straight intodisplay-message -t <session>(the #221 rule the sibling call sites already apply), and the attached-client count is read with a target a foreign server can answer (#315). The second one is why it is listed here rather than parked: #659's F9 made that count load-bearing in the NONZERO direction, where a borrowed count would vouch for a switch that moved nobody. - #311 — document the qualified-id obligation once at the seam. Adjacent to #658's F7 doc pass but homed in the adapter guide, not
psmux_backend.py. - #662 (PR #668) — install psmux on the Windows CI runner. Not a defect, and the reason it sits here rather than in the children: every
test_premise_*andtest_adopted_*probe this family added lives intests/test_psmux_live.py, which no CI job runs today — the Linux matrix skips it onsys.platform, and the Windows runner has no psmux on PATH. The adoption's entire evidence base is therefore observed only by hand on a developer box, and #659's F9 raised the stakes by putting two upstream exit-code premises under the same skipped module. Until this lands, a psmux behaviour drift is a silent green.
- 主要言語
- Python
- スター
- 160
- フォーク
- 68
- 平均マージ
- 1日 1時間
- マージ済み PR(30日)
- 84
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
bmad-code-org/bmad-loop のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 69/100
bmad-code-org/bmad-loop#973 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
bmad-code-org/bmad-loop#965 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
bmad-code-org/bmad-loop#835 ·
メンテナーはふだん 1 日以内に返信
-
area:adapters area:psmux bug P4
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
bmad-code-org/bmad-loop#673 · コメント 8 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 36/100
bmad-code-org/bmad-loop#972 ·
メンテナーはふだん 1 日以内に返信
bmad-code-org/bmad-loop の issue をすべて見る
似ている issue
-
[Resource]: Loreオープンresource-submission validation-passed
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
hesreallyhim/awesome-claude-code#3234 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
openminion/openminion#376 ·
メンテナーはふだん 1 日以内に返信
-
Type: ☹︎ Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
posit-dev/great-tables#1028 ·
メンテナーはふだん 1 日以内に返信
-
integration: apple_tv
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
home-assistant/core#188282 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
A "since" range is worded as a career: "the past two seasons" says "regular season career (2025 on)"オープンP4: low
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
jeffknupp/association#538 ·