Repository navigation
diagnose(conpty): 重复原探针并在控制台测试后采样 refs #145 - #173
Conversation
… refs #145 Adds a bounded repeat runner that keeps one independent owned-job result per iteration and preserves the probe's native failure diagnostics. Dispatched only; it does not change the lifecycle oracle, the 5s wait or any product code.
The recorded failures happened inside the full ctest job. This job runs the same suite first, records its exit without gating, then samples the original lifecycle probe twenty times to test job-level contamination.
Replaces the whole-suite variant, which failed on fixtures this dispatch job does not prepare. Runs conpty_ctrl_c and conpty_margin first (exit recorded, not gated), then samples the original probe twenty times.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7bb9940348
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| return { | ||
| "iterations": iterations, | ||
| "sessions_per_iteration": repeats + 1, | ||
| "sessions_total": iterations * (repeats + 1), |
There was a problem hiding this comment.
Count observed sessions instead of scheduled sessions
When a probe sample fails, probe.cpp immediately returns from the host, so the remaining repeats never execute. Nevertheless, sessions_total always reports the full scheduled count. For example, six iterations failing during startup report 24 sessions although only six ran. This also affects the committed post-predecessor evidence: a failure in normal repeat 1 skips a subsequent session, so 80 scheduled sessions do not establish 80 observed samples. Count sessions from the captured probe records and report the planned count separately.
Useful? React with 👍 / 👎.
| "mode": mode, | ||
| "failures": len(failures), | ||
| "elapsed_s": {"min": min(elapsed), "median": statistics.median(elapsed), "max": max(elapsed)} if elapsed else {}, | ||
| "failure_samples": failures[:5], |
There was a problem hiding this comment.
Persist every failed iteration before truncating the summary
When this tool is run using the documented standalone reproduction command, TERMFORGE_TEST_ARTIFACTS is not set, so run.execute() does not save separate artifacts. Because repeat.json is the only file written and retains only the first five failures, all diagnostics for the sixth and later failures are permanently discarded. A stale-size failure occurring after five resource-baseline failures would therefore lose the evidence this experiment is intended to capture. Persist every iteration separately or retain all failure records, limiting only an additional summary preview.
Useful? React with 👍 / 👎.
|
检查说明:本 PR 的常规门槛(build regression windows/ubuntu、qt-cpp-windows、alacritty-headless ×2)全部通过。 唯一的红色 本 PR 新增的两个作业均为 |
本片交付
回答 #145 的下一步问题:把记录的同一条样本原样重复,或在其它 ConPTY 测试之后采样,能否复现“resize 后仍回复旧尺寸”。
experiments/conpty/repeat_run.py:每迭代复用既有run.execute()(自有 Job、GO 门、原 5 秒等待与原断言),逐次保留独立结果;红色迭代保留探针原始失败字段,不重跑取绿。windows-2025-original-probe-repeat(隔离 40 迭代)与windows-2025-probe-after-conpty-tests(先跑conpty_ctrl_c/conpty_margin,其退出只记录不设门,再采样 20 迭代)。结果
唯一红色样本:iteration 10 的 normal repeat 1,
valid=false原因是steady_resources=false(线程 4→6,1.011s 结算窗口),而它的 resize 回复是正确的(resized=1、TFSIZE:120x40、child exit 37)。这与 #145 的旧尺寸症状不同,属 #38 族的稳态夹具边界。证据:README · validation.json
明确未做
benchmark_tools/differential/workflow_*/shell失败(run 40848143873),未进入采样;保留为“作业环境不等价”的反例。Refs #145 #38