Skip to content

feat(ci): report-only AgentX speculative acceptance gate / feat(ci):仅作报告的 AgentX 投机解码接受长度门禁 - #4654

Merged
adibarra merged 25 commits into
mainfrom
feat/agentx-acceptance-gate
Nov 3, 2026
Merged

adibarra merged 25 commits into
mainfrom
feat/agentx-acceptance-gate

Conversation

@adibarra

@adibarra adibarra commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Lands the report-only AgentX speculative acceptance gate from #4586 with review fixes. For each AgentX deployment and drafting configuration, a PR sweep replays the pinned SPEED-Bench coding prompts with real verification and compares the measured acceptance length (AL) with the golden curve. Verdicts never block throughput.

Changes on top of #4586:

  • AgentX throughput no longer waits for the gates; they run alongside it after the canary.
  • llmd-vllm points are gated. The exclusion predates llmd-vllm in the golden-acceptance engine map; planning now yields 4 gates for its 16 points with real verification. The planner and launcher share one exemption list (dynamo-trt, tilert).
  • Unchanged gates are reused. Each gate is keyed on its deployment id, recipe fingerprint, golden curve, srt-slurm commit and gate code; a key measured in one of the last 30 runs on the PR branch is not run again and its result is re-published.
  • Only the gate's prompt download, launch and result upload continue on error. Setup and cleanup steps fail like any benchmark job, and the summary job warns when a planned gate measured nothing.
  • SPEED-Bench prompts come from the Actions cache. al-gate-prompts.yml keeps main's entry warm; a miss prepares them with dependencies resolved as of 2026-10-27, which reproduces the pinned prompt digest.
  • minimaxm31flash_dspark gains its collection settings. musespark_dflash (collected on SGLang's /generate) and dsv41flash_dspark stay unresolved and are documented.

Not validated on GPUs: this PR adds no perf-changelog entry, so it runs no sweep. #4586 carries the entry and the first GPU run of the gate.

Validation details
  • Full agentic sweep planning: 238 gates, 380 unresolved points (was 215 and 520), no gates for exempt frameworks.
  • Bound recipes for all 1,347 AgentX speculative points are identical to main, so throughput runs are unchanged.
  • Gate reuse lookup ran against this repository's API on an existing PR branch: 238 keys, all unique, 0 reused.
  • infx/tests: same results as the Withdrawn / 已撤回 #4586 merge with main, plus the new reuse and exemption tests. zizmor and actionlint report nothing new.
AI model disclosure
  • Model/version: anthropic/claude-opus-5-5 (runtime identifier). Delegated read-only scout agents also contributed; their exact model identifiers could not be verified.
  • Role: reviewed Withdrawn / 已撤回 #4586, wrote the changes above, ran local validation and prepared this PR. The commits from Withdrawn / 已撤回 #4586 keep their authorship and that PR's own disclosure.
PR checklist and change type

Type of Change

  • Bug fix
  • New feature
  • Configuration change
  • Documentation update
  • Other (please describe)

Checklist

  • I have completed the AI model disclosure and kept it current
  • I have tested my changes locally
  • I have updated documentation if necessary
  • If python -m infx.matrix.changed --base origin/main lists affected config keys, I have appended one new entry covering them to the physical end of inferencex-e2e/perf-changelog.yaml; if it lists none, I have added none. I have not edited historical entries
  • If this PR appends an inferencex-e2e/perf-changelog.yaml entry, it carries exactly one primary sweep label (a maintainer applies it on fork PRs): full-sweep-fail-fast (recommended), full-sweep-enabled, or non-canary-full-sweep-enabled. Optional modifiers all-evals, evals-only, and agentx-fast require a primary label; the last two block reuse while applied.
  • Before merging via reuse, an authorized maintainer (OWNER/MEMBER/COLLABORATOR) has commented /use <run_id> (or the legacy /reuse-sweep-run) on this PR. Do this only once there is a final full sweep that is all green with evals passing, since after this comment the primary sweep label will no longer automatically kick off new sweeps. Remove and re-add the primary sweep label to force a new sweep.
中文

概述

在 #4586 的基础上合入仅作报告的 AgentX 投机解码接受长度(AL)门禁,并加入评审修改。PR 扫描会针对每种 AgentX 部署和草稿配置,以真实验证重放固定的 SPEED-Bench coding 提示词,并将实测 AL 与黄金曲线比较。门禁结论不会阻断吞吐量测试。

相对 #4586 的改动:

  • AgentX 吞吐量作业不再等待门禁;门禁在 canary 之后与吞吐量并行运行。
  • llmd-vllm 的点纳入门禁。原先的排除早于 llmd-vllm 被加入黄金接受引擎映射;现在其 16 个点规划为 4 个使用真实验证的门禁。规划器和启动器共用同一份豁免列表(dynamo-trt、tilert)。
  • 复用未变化的门禁。每个门禁以部署 id、配方指纹、黄金曲线、srt-slurm 提交和门禁代码为键;若该键在 PR 分支最近 30 次运行中已有结果,则不再重跑,并重新发布该结果。
  • 只有门禁的提示词下载、启动和结果上传在出错时继续。环境准备和清理步骤与其他基准测试作业一样会失败;汇总作业会在规划的门禁没有测量结果时发出警告。
  • SPEED-Bench 提示词来自 Actions 缓存。al-gate-prompts.yml 在 main 上保持缓存可用;缓存未命中时使用 2026-10-27 的依赖解析结果准备提示词,可复现固定的提示词摘要。
  • minimaxm31flash_dspark 补充了收集设置。musespark_dflash(在 SGLang 的 /generate 上收集)和 dsv41flash_dspark 仍列为未解析,并已在文档中说明。

尚未在 GPU 上验证:本 PR 没有添加 perf-changelog 条目,因此不运行扫描。#4586 包含该条目,并承担门禁的首次 GPU 运行。

验证详情:完整 agentic 扫描规划为 238 个门禁、380 个未解析点(原为 215 和 520),豁免框架没有门禁;全部 1,347 个 AgentX 投机解码点的配方与 main 相同,吞吐量运行不变;门禁复用查询已对本仓库 API 在现有 PR 分支上运行,238 个键均唯一,复用 0 个;infx/tests 结果与 #4586 合入 main 后一致,并新增复用和豁免测试;zizmor 和 actionlint 没有新问题。

AI 模型使用说明:anthropic/claude-opus-5-5(运行环境提供的标识)负责评审 #4586、编写上述改动、本地验证并准备本 PR;另有只读 scout 子 agent 参与调查,其确切模型标识无法确认。来自 #4586 的提交保留原作者及该 PR 的说明。

AlphaBladez and others added 8 commits October 27, 2026 10:45
Milestone M1 of #1651. Before AgentX throughput, every AgentX speculative
deployment and drafting configuration runs once with real verification on
the SPEED-Bench coding prompts its golden curve was collected with. The
generation engine's own counters give the realized acceptance length (AL),
which the run summary compares with the golden AL. Report-only: gate jobs
always finish green and throughput ignores the verdict.

- infx/srt_slurm/al_gate.py plans one gate per deployment and drafting
  configuration and lists points it cannot gate as unresolved.
- infx/bench/speedbench.py prepares the prompts once per run on a hosted
  runner with the pinned NeMo-Skills prepare.py and checks a pinned digest.
- infx/bench/al_gate.py replays the golden collection through aiperf and
  reads AL from Prometheus counters (infx/results/agentic/spec_decode.py).
- Golden curves record their collection settings in a slim collection block.
- Real-verification runs strip forced acceptance wherever a recipe sets it.
- run-sweep.yml adds al-gate-select, al-gate, al-gate-multinode and
  al-gate-collect; AgentX throughput waits for al-gate-collect.

中文:
都会以真实验证运行一次,使用其黄金曲线采集时的 SPEED-Bench coding 提示词。生成引擎
自身的计数器给出实际接受长度(AL),运行摘要将其与黄金 AL 对比。仅报告、不阻断:
门禁作业始终显示成功,吞吐量测试忽略其结论。

- infx/srt_slurm/al_gate.py 为每个部署与草稿配置规划一个门禁,并将无法设门禁的点
  列为未解析。
- infx/bench/speedbench.py 在 GitHub 托管的 Runner 上用固定版本的 NeMo-Skills
  prepare.py 每次运行只准备一次提示词,并校验固定摘要。
- infx/bench/al_gate.py 通过 aiperf 重放黄金采集,并从 Prometheus 计数器读取 AL
  (infx/results/agentic/spec_decode.py)。
- 黄金曲线在精简的 collection 块中记录采集设置。
- 真实验证运行会移除配方中任何位置设置的强制接受。
- run-sweep.yml 新增 al-gate-select、al-gate、al-gate-multinode 和 al-gate-collect;
  AgentX 吞吐量测试等待 al-gate-collect。

(cherry picked from commit 0bd0e9360121cb0823a69dbcb794dac41430927e)
(cherry picked from commit 7aa34ec9b599e22d7809409d26c838b4a4bb9d52)
Explicit cancellation and setup-success conditions allow the canary and AL planner to run on label-triggered sweeps whose optional reuse job is skipped.

中文:当标签触发的扫描跳过可选复用任务时,通过显式取消状态和 setup 成功条件,确保 canary 与接受长度规划任务继续执行。

(cherry picked from commit 43da4256aa52b2f96fa03e3a40ae6681ebb89ac1)
…pace

Keep canary execution eligible after the optional reuse check is skipped. Free unused SDK storage on the hosted gate-planning runner before the pinned SPEED-Bench resolver materializes its coding source datasets.

中文:可选复用检查被跳过后,保持 canary 执行资格;在托管门禁规划 runner 上释放未使用的 SDK 空间,供固定 SPEED-Bench 解析器生成 coding 源数据集。

(cherry picked from commit 1faca8705c8b9af074dcfe13ff947905afbb4184)
Use the pinned harness AIPerf entrypoint and the current schema-2 recipe binder. Preserve native power collection for throughput jobs and record the upstream Qwen qualification sweep.

适配当前 InferenceX 的固定版本 harness 入口与 schema-2 配置绑定器,保留吞吐量作业的原生功耗采集,并记录上游 Qwen 验证扫描。
将接受长度门禁验证记录关联到上游 PR #4586。
…view

# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
…e-gate

# Conflicts:
#	inferencex-e2e/perf-changelog.yaml
@adibarra adibarra added the full-sweep-fail-fast Full sweep with canary gate; first failure cancels the rest of that matrix (recommended) label Oct 29, 2026
@adibarra
adibarra requested a review from a team October 29, 2026 18:04
@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution!

  • Review: If this PR changes files owned by someone other than a repository admin or @SemiAnalysisAI/core, ask one eligible CODEOWNER to complete the latest PR_REVIEW_CHECKLIST.md before contacting a core maintainer on Slack. Follow the template exactly, including As a PR reviewer and CODEOWNER, I have reviewed this and have, so sign-off verification triggers.
  • PR verification: Sweeps run only when the PR appends an inferencex-e2e/perf-changelog.yaml entry and carries exactly one primary label: full-sweep-fail-fast (strongly recommended; canary plus per-matrix fail-fast), full-sweep-enabled (canary; matrix jobs continue after a failure), or non-canary-full-sweep-enabled (no canary or fail-fast). The modifiers all-evals, evals-only, and agentx-fast require a primary label. On fork PRs, a maintainer applies the label. See sweep labels and reuse.
  • After merging: PR authors must ensure all GitHub Actions jobs pass. Transient failures often pass on rerun; see how to rerun failed jobs.
中文

感谢你的贡献!

  • **审阅:**如果 PR 修改的文件归属于仓库管理员及 @SemiAnalysisAI/core 之外的 CODEOWNER,请先联系一位有资格的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,再通过 Slack 联系核心维护者。必须严格遵循模板,并保留 As a PR reviewer and CODEOWNER, I have reviewed this and have,才能触发签核验证。
  • **PR 验证:**只有当 PR 在 inferencex-e2e/perf-changelog.yaml 末尾追加了条目,并且恰好带有一个主标签时,才会运行扫描:full-sweep-fail-fast(强烈推荐;canary 加逐矩阵 fail-fast)、full-sweep-enabled(有 canary;矩阵任务在失败后继续运行)或 non-canary-full-sweep-enabled(无 canary,也无 fail-fast)。修饰标签 all-evals、evals-only 和 agentx-fast 必须与主标签一起使用。fork PR 的标签由维护者添加。参见扫描标签与复用。
  • **合并后:**PR 作者必须确保所有 GitHub Actions 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明。

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

inferencex-e2e/infx diff: +2050 -35

Generally most InferenceX submissions don't need to add changes to the infx package. On the off chance they do, generally the diff is small. Please prompt your agent to clean your PR to keep your diff to only necessary & minimal changes too. We have an increased code quality bar for changes to the infx package.

中文

大多数 InferenceX 提交通常不需要修改 infx 包。即使确实需要,改动通常也很小。请让你的 agent 清理 PR,使改动只包含必要且最小的内容。infx 包的改动有更高的代码质量要求。

@adibarra
adibarra marked this pull request as draft October 29, 2026 18:07
@adibarra
adibarra marked this pull request as ready for review October 29, 2026 18:07
@claude

claude Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @adibarra's task in 1m 51s —— View job


Review of PR #4654

  • Gather context (diff, prior reviews)
  • Review workflows (run-sweep, templates, prompt cache)
  • Review infx gate / reuse / planner code
  • Check perf-changelog placement
  • Post findings

Summary: I found one 🟡 warning and no blocking issues. The gate reuse key in infx/workflows/al_gate_reuse.py:21-30 does not hash replay.py, venv.py, golden_al_distribution/curves.py or the srt launch and collect modules, though the gate depends on all of them. replay.py and curves.py change in this PR. If one of these files changes later on the branch, the old key still matches and the earlier verdict is re-published as current, including a stale golden AL or ratio. The inline comment has a suggested fix.

Things I checked that look right:

  • Gates are kept apart from throughput: the !inputs.al-gate guards on the upload steps, the _algate result filename suffix, and power telemetry turned off for gates.
  • continue-on-error applies only to the prompt download, launch and result upload steps.
  • The !cancelled() fixes on canary-select and the canary jobs.
  • The perf-changelog.yaml entry is at the end of the file.

I couldn't run python -m infx.matrix.changed --base origin/main here because the command needs permission this job doesn't have. So I haven't confirmed that qwen3.8next-fp4-gb300-sglang-agentic-mtp is the only affected config key.

@adibarra
adibarra marked this pull request as draft October 29, 2026 18:11
@adibarra
adibarra marked this pull request as ready for review October 29, 2026 18:11
@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

@claude

claude Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @adibarra's task in 26s —— View job


Re-review of PR #4654

  • Check what changed since the last review (e0f0c2524, 5c22586f9, 67d9fa09a)
  • Check whether the reuse-key warning is fixed
  • Post summary

Re-review: LGTM, no blocking issues found. The earlier 🟡 warning is fixed in e0f0c2524: al_gate_reuse.gate_key now hashes --code-version, which run-sweep.yml:480 builds from the git versions of inferencex-e2e/infx, benchmarks/srt_al_gate.sh and utils/srt-slurm. That covers replay.py, venv.py, the golden curves and the srt launch and collect modules, and the workflow, README and tests were updated to match.

I couldn't run infx.matrix.changed or the reuse tests, because both commands need permission this job doesn't have.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Findings marked 🟡 are optional suggestions and need no follow-up push.

Additional findings (outside the current diff — GitHub can't attach inline comments there):

  • 🟡 inferencex-e2e/infx/workflows/al_gate_reuse.py — Conditional: on PR branches that have run full sweeps, each sweep's gate planning may make hundreds to thousands of API calls against the shared github.token budget. When no key is reused (the first sweep after any gate-code or recipe change), measured() pages through every artifact of up to LOOKBACK_RUNS = 30 runs. Only gate artifacts matter. Fix: publish one per-run index artifact (for example from al-gate-collect) and fetch it with /actions/runs/{id}/artifacts?name=<index>. That keeps the lookup to about one listing call per run.

    Why this was flagged

    The early break at al_gate_reuse.py:48 fires only when every key has been found. A PR that changes any file in GATE_INPUTS, the curve, the recipe or the srt-slurm commit gets all-new keys, so the loop walks all 30 runs. For each run, github.paginate requests /actions/runs/{id}/artifacts at 100 per page (infx/github.py:114). A full sweep uploads several artifacts per benchmark job across 1,000+ AgentX points plus fixed-sequence jobs, which is many pages per run. The GITHUB_TOKEN REST limit is per repository (1,000 requests per hour on non-Enterprise plans), so this lookup can drain the budget other jobs in the repo depend on, such as collect-job-events and klaud. It also makes the 60s gh api --paginate timeout more likely. The base branch makes none of these calls. I could not count real artifacts per run from this checkout; the risk holds whenever recent runs on the branch were full sweeps.

    Verification: Line 47 of inferencex-e2e/infx/workflows/al_gate_reuse.py walks up to LOOKBACK_RUNS = 30 runs, and the only early exit is line 48: if found.keys() == keys: break. Every visited run gets a full artifact listing at per_page: 100 (infx/github.py:114-116), and the key not in keys filter is applied only after that (line 55). The calls draw on the shared GITHUB_TOKEN (run-sweep.yml:462).

Comment thread inferencex-e2e/perf-changelog.yaml Resolved

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Findings marked 🟡 are optional suggestions and need no follow-up push.

Still open from earlier reviews (3):

If you have decided not to act on one of these findings, resolve its thread (a reply alone leaves it open) and the next review stops counting it. To review this commit again now, use Re-run on its "Claude Code Review" check.

Comment thread .github/workflows/run-sweep.yml Resolved
@adibarra adibarra removed the full-sweep-fail-fast Full sweep with canary gate; first failure cancels the rest of that matrix (recommended) label Oct 29, 2026
@claude

claude Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @adibarra's task in 56s —— View job


Re-review of PR #4654

  • Find what changed since the last review (bf1bbdfdb, b1317285d, e13adf8d2, 2d17244db, plus merges from main)
  • Check whether the earlier findings are fixed
  • Review the new changes
  • Post summary

Re-review: I found no new blocking issues. The latest commits remove the perf-changelog entry, which resolves the earlier 🔴 pr-link finding because the entry no longer exists. The refactor in 2d17244db deletes residual_overrides and the related forcing-settings code. That's safe for the gate: in gate mode al is None, and build_overrides still unsets the forcing variables in the recipe environment and in each role's env/args. It also resets vLLM synthetic to block. A framework outside ENGINES becomes an unresolved planning error instead of a gate, so dropping the plan_commands guard has no effect.

Still open: the earlier 🔴 branch-name reuse finding is unchanged. al_gate_reuse.measured() lists runs by $GITHUB_HEAD_REF only. A run from a different PR (for example a fork) with the same branch name can supply an algate_<key> artifact, and this PR would publish it as its own result. Keeping only runs whose head_sha is in pr_commit_shas(...), as reuse.py does, would close this.

Perf changelog: I couldn't run infx.matrix.changed, because it needs approval in this job. Instead I read the launcher and bench diff (infx/launch/**, infx/bench/agentic/**) directly. Every behavior change there is behind request.al_gate. The one exception is the replay.py rename, which keeps the /metrics default, so throughput points should be unchanged and having no entry looks right. Please confirm matrix.changed lists no keys.

@adibarra
adibarra marked this pull request as draft November 3, 2026 00:25
@adibarra
adibarra marked this pull request as ready for review November 3, 2026 00:25
@claude

claude Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @adibarra's task in 24s —— View job


Re-review of PR #4654

  • Find what changed since the last review (02ab38dfc)
  • Check whether the earlier findings are fixed
  • Post summary

Re-review: LGTM, no blocking issues found. 02ab38dfc fixes the last open 🔴 finding, the branch-name reuse one. al_gate_reuse.measured() now keeps only runs whose head_sha is in sweep_runs.pr_commit_shas(repo, pr_number, token), which is the check reuse.py and merge_with_reuse.py already use. run-sweep.yml passes --pr-number and grants pull-requests: read. The test now includes a run from another PR, which the lookup skips.

The same commit also fixes the earlier 🟡 lookup-robustness finding. Timeouts, bad zips and malformed JSON (JSONDecodeError is a ValueError) now count as "nothing reusable" instead of aborting gate planning. A result without result_filename is no longer picked up, so the KeyError at re-publish can't happen.

Not done: I couldn't run test_al_gate_reuse.py or infx.matrix.changed, because both commands need approval in this job. As noted in the last review, every launcher and bench change I read is behind request.al_gate, so having no perf-changelog entry looks right. Please confirm that matrix.changed lists no keys.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I reviewed the latest push and found no new bugs. A human should still look, because this is a 2.4k-line change to the sweep workflows that handles HF secrets, artifact reuse and GPU scheduling.

What was reviewed:

  • al_gate_reuse.py: reuse now only uses runs whose head SHA is one of this PR's commits. Download, zip and JSON failures now fall back to "not reusable" instead of aborting the plan step.
  • run-sweep.yml: the reuse key now hashes the whole infx tree plus the gate script and the srt-slurm submodule, so changes to gate code produce a new key.
  • The new prompt-cache workflow, the gate launch, collection and planning paths, and the golden-curve collection blocks.
Extended reasoning...

The PR adds a report-only speculative-acceptance gate to CI: new workflows and steps in run-sweep and the benchmark templates, gate planning and launch code under infx/srt_slurm, infx/bench and infx/launch, a reuse module that downloads earlier run artifacts, and collection settings for each golden curve. The security-sensitive parts are workflow steps that receive the read-only HF token and a reuse path that trusts JSON from earlier run artifacts. That path is now limited to runs whose head SHA belongs to this PR. Earlier inline concerns about cross-PR reuse and lookup errors look addressed in the current code. I deferred because of the change's size, its CI and secret-handling surface, and the fact that it has not been run on GPUs.

Still open from earlier reviews (3):

  • Unresolved: 3 minor or pre-existing.

@adibarra adibarra added full-sweep-fail-fast Full sweep with canary gate; first failure cancels the rest of that matrix (recommended) agentx-fast Run AgentX throughput with 1 warmup request per lane and a 20-minute profile; not reusable labels Nov 3, 2026
@adibarra adibarra removed full-sweep-fail-fast Full sweep with canary gate; first failure cancels the rest of that matrix (recommended) agentx-fast Run AgentX throughput with 1 warmup request per lane and a 20-minute profile; not reusable labels Nov 3, 2026
@adibarra
adibarra marked this pull request as draft November 3, 2026 02:00
@adibarra
adibarra marked this pull request as ready for review November 3, 2026 02:00
@claude

claude Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @adibarra's task in 32s —— View job


Re-review of PR #4654

  • Find what changed since the last review (841102cc9, plus c45610b33 and 42eb98a03, which cancel each other out)
  • Review the new changes
  • Post summary

Re-review: LGTM, no blocking issues found.

The only functional change is 841102cc9. Every gate now replays at speedbench.REPLAY_CONCURRENCY = 64 instead of each curve's collection.concurrency, and the planner picks the smallest point at or above 64, or else the largest. I checked that the change is complete:

  • concurrency is gone from every curve's collection block.
  • Nothing still reads collection["concurrency"]. The only uses are infx/bench/al_gate.py:129 and infx/srt_slurm/al_gate.py:126, and both now use the constant.
  • The planner test patches REPLAY_CONCURRENCY, so it covers the new choice of representative point.
  • Both READMEs say the change assumes AL does not depend on concurrency.
  • The reuse key includes the git tree of inferencex-e2e/infx, so this change gives every gate a new key. No result from before the change will be reused.

The temporary GLM-5.2 perf-changelog entry is added in c45610b33 and removed in 42eb98a03. The PR's changed files no longer include perf-changelog.yaml.

Not done: I couldn't run infx.matrix.changed, the tests, or a git diff --stat against main, because each needs approval in this job. As noted in the earlier reviews, every launcher and bench change is behind request.al_gate, so having no perf-changelog entry still looks right. Please confirm that matrix.changed lists no keys.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code review found no issues

No high-confidence issues detected in this change.

Still open from earlier reviews (3):

  • Unresolved: 3 minor or pre-existing.

@adibarra
adibarra marked this pull request as draft November 3, 2026 02:10
@adibarra
adibarra marked this pull request as ready for review November 3, 2026 02:10
@claude

claude Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @adibarra's task in 33s —— View job


Re-review of PR #4654

  • Find what changed since the last review (7c2ea972c)
  • Review the new changes
  • Post summary

Re-review: LGTM, no blocking issues found.

7c2ea972c makes two changes, and both look correct:

  • al_gate_reuse.measured() no longer walks the branch's last 30 runs. It now makes one GET /actions/artifacts?name=algate_<key> call per key. It skips expired artifacts and keeps only those whose workflow_run.head_sha is one of this PR's commits, so the cross-PR check from 02ab38dfc still holds. It then takes the newest result that isn't an error and has a result_filename.
    • This fixes the earlier 🟡 about API volume: the lookup is now about one call per key instead of a full artifact listing for each run.
    • It also removes the 30-run window. A result stays reusable until its artifact expires, even if the reused verdicts are still uploaded as a single algate_reused artifact.
    • github.paginate accepts params as its fifth positional argument. Removing --branch is consistent across the workflow, the module and the test.
  • speedbench-al.yml now reads the existing curve's collection block through load_curve and appends it after the new matrix. Re-collecting a curve no longer drops the gate's settings, which fixes the earlier 🟡 about losing them on re-collection. The PR body for the generated curve PR asks reviewers to check that the block still matches.

Not done: I couldn't run the tests or infx.matrix.changed, because both need approval in this job. As in the earlier reviews, every launcher and bench change I read is behind request.al_gate, so having no perf-changelog entry still looks right.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nothing blocking. The comments below are optional suggestions. There is no need to push a fix for them before merging.

@adibarra
adibarra marked this pull request as draft November 3, 2026 02:20
@adibarra
adibarra marked this pull request as ready for review November 3, 2026 02:20
@claude

claude Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @adibarra's task in 16s —— View job


Re-review of PR #4654

  • Find what changed since the last review (a7141e662)
  • Check whether the earlier finding is fixed
  • Post summary

Re-review: LGTM, no blocking issues found.

a7141e662 fixes the 🟡 re-run duplicate finding from the last review. measured() now drops any artifact whose workflow_run.id matches --run-id, and run-sweep.yml passes $GITHUB_RUN_ID as that argument. After "Re-run all jobs", attempt 1's algate_<key> artifacts are therefore no longer re-published as algate_reused. That means al-gate-collect can't count them twice or report a negative "measured nothing" count. The test adds an artifact from run 99 that is newer and belongs to this PR. The lookup skips it and still picks s2's earlier result, so the new filter is covered. The walrus binding inside the comprehension evaluates in the right order: head_sha is checked before run.get("id").

Not done: I couldn't run the tests or infx.matrix.changed, because both need approval in this job. This commit changes only the reuse lookup, so having no perf-changelog entry still looks right.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code review completed

Nothing new to post: everything this review found is already covered by existing comments on this pull request or didn't merit a separate one.

@adibarra
adibarra merged commit 38f1832 into main Nov 3, 2026
12 of 15 checks passed
@adibarra
adibarra deleted the feat/agentx-acceptance-gate branch November 3, 2026 04:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants