Skip to content

diagnose(conpty): 重复原探针并在控制台测试后采样 refs #145 - #173

Merged
JavaZeroo merged 4 commits into
mainfrom
diagnose/conpty-probe-repeat-r145
Oct 29, 2026
Merged

JavaZeroo merged 4 commits into
mainfrom
diagnose/conpty-probe-repeat-r145

Conversation

@JavaZeroo

Copy link
Copy Markdown
Owner

本片交付

回答 #145 的下一步问题:把记录的同一条样本原样重复,或在其它 ConPTY 测试之后采样,能否复现“resize 后仍回复旧尺寸”。

  • 新增 experiments/conpty/repeat_run.py:每迭代复用既有 run.execute()(自有 Job、GO 门、原 5 秒等待与原断言),逐次保留独立结果;红色迭代保留探针原始失败字段,不重跑取绿。
  • 两个 dispatch-only 作业(不进入常规 CI 门槛):windows-2025-original-probe-repeat(隔离 40 迭代)与 windows-2025-probe-after-conpty-tests(先跑 conpty_ctrl_c/conpty_margin,其退出只记录不设门,再采样 20 迭代)。

结果

条件 样本 resize 旧尺寸 其它红色
隔离重复(run 40847785625) 160 0 0
控制台密集测试之后(run 40849464556) 80 0 1
对照:克隆探针(#171,已合) 2800 0 0

唯一红色样本: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

明确未做

Refs #145 #38

… 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.
…tests refs #145

160 isolated sessions and 80 post-test sessions keep one owned-job result each. No stale resize reply reproduced; one post-test red is the session thread baseline exceeding the 1s settle window, not the recorded #145 symptom.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-29T09:30:27.569525Z 7bb9940 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@JavaZeroo

Copy link
Copy Markdown
Owner Author

检查说明:本 PR 的常规门槛(build regression windows/ubuntu、qt-cpp-windows、alacritty-headless ×2)全部通过。

唯一的红色 windows-2022-conpty 来自我为本切片手动 dispatch 的 conpty-compat.yml(该工作流本身就标注 known failing,用于保留 Server 2022 资源回归的严格红例),它的运行 SHA 恰好是本 PR head,因此挂在同一检查列表上;它不是本 PR 的改动引入的,也不属于常规 CI 门槛。

本 PR 新增的两个作业均为 workflow_dispatch,不进入 push/PR 常规执行。

@JavaZeroo
JavaZeroo merged commit 57cf8bb into main Oct 29, 2026
9 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant