Skip to content

improve: keep isolated tests under one second#100019

Merged
steipete merged 18 commits into
mainfrom
codex/test-under-one-second
Jul 5, 2026
Merged

improve: keep isolated tests under one second#100019
steipete merged 18 commits into
mainfrom
codex/test-under-one-second

Conversation

@steipete

@steipete steipete commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Closes #100018

What Problem This Solves

Resolves a problem where the isolated full-suite test inventory contained individual tests above one second and could OOM before reporting every leaf plan. The slow cases mixed real waits, repeated one-time initialization, broad plugin discovery, and oversized fixtures, making test feedback slower and performance regressions harder to audit.

Why This Change Was Made

The duration-report path now runs full-suite leaves with isolated files, bounded workers, timeout cleanup, RSS evidence, and partial-report preservation. Measured outliers move expensive initialization outside behavior timing, defer heavy imports, use lightweight public plugin artifacts and core-registry fast paths, preserve size-limit coverage with smaller fixtures, and exercise deadline behavior with deterministic timers.

User Impact

No end-user product behavior changes. Contributors and CI runners get a reliable isolated inventory, lower memory pressure, and individual test cases that remain below the one-second performance budget.

Evidence

  • Exact PR head: b041d4636593036a086e44513c85d702f24bebb8.
  • Reconciled exhaustive inventory on pre-rebase head 05c809399a65f4c26e83342023bf7a61adaa14f1: all 250 leaf plans accounted for; 249 non-empty reports, 87,996 tests across 6,565 files, zero individual tests above 1,000 ms, peak RSS 2.81 GB, and no OOM. The sole empty tooling-11 report is inherited from current main's live-test/no-tests shard.
  • Testbox lease: tbx_01kwsf64w84wx9na66vaabf2k1 (Actions run).
  • Full browser project: 123 files, 1,401 tests, zero individual tests above 1,000 ms on tbx_01kwsf2necer626hhd9as1sjce (Actions run).
  • Focused residual offender set: 143 tests, zero individual tests above 1,000 ms on tbx_01kwsa849x50y2xgmxw4zkyhd7 (Actions run).
  • Fresh exact-head rebase-overlap proof: 45 tests passed, zero individual tests above 1,000 ms.
  • Hosted exact-head CI run 28749363609 and Workflow Sanity run 28749363595 passed.
  • Fresh exact-head full-branch Codex autoreview: no actionable findings (0.93 confidence).

@steipete
steipete requested a review from a team as a code owner July 4, 2026 16:50
@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation channel: discord Channel integration: discord channel: imessage Channel integration: imessage channel: telegram Channel integration: telegram app: web-ui App: web-ui gateway Gateway runtime extensions: memory-core Extension: memory-core cli CLI command changes scripts Repository scripts commands Command implementations docker Docker and sandbox tooling agents Agent runtime and tooling extensions: openai channel: qqbot extensions: qa-lab extensions: codex extensions: google extensions: copilot size: XL maintainer Maintainer-authored PR labels Jul 4, 2026
@clawsweeper

clawsweeper Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs changes before merge. Reviewed July 5, 2026, 1:54 PM ET / 17:54 UTC.

Summary
The PR refactors isolated Vitest full-suite reporting, sharding, and many test/runtime seams to keep individual isolated tests under one second while preserving partial reports and RSS evidence.

Reproducibility: yes. for the review blockers: source inspection shows the active setTimeout spies surround vi.waitFor while matching the same 1,000 ms delay they intend to capture. I did not rerun the full isolated inventory in this read-only review.

Review metrics: none identified.

Stored data model
Persistent data-model change detected: migration/backfill/repair: extensions/discord/setup-entry.test.ts, migration/backfill/repair: extensions/memory-core/src/short-term-promotion.test.ts, migration/backfill/repair: extensions/voice-call/doctor-contract-api.test.ts, serialized state: extensions/browser/src/browser/pw-session.get-page-for-targetid.extension-fallback.test.ts, serialized state: extensions/browser/src/browser/routes/tabs.attach-only.test.ts, serialized state: extensions/browser/src/browser/server.control-server.test-harness.ts, and 15 more. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #100018
Summary: This PR is the candidate implementation for the open isolated test latency and inventory reliability issue.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🦐 gold shrimp
Result: needs maintainer review before merge.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Fix the three timeout-spy captures so vi.waitFor cannot be recorded as a production timer.
  • [P2] Refresh focused test or exact-head CI proof after the timer repair.

Risk before merge

  • [P2] Merging with the current timer-capture races would weaken the PR's main automation-reliability goal by leaving deterministic-timeout tests able to flake, hang, or fire the wrong callback under load.
  • [P1] The diff changes isolated test planning/reporting automation broadly enough that maintainers should require the timer repairs plus refreshed exact-head proof before landing.

Maintainer options:

  1. Fix timer captures first (recommended)
    Repair the three tests so vi.waitFor cannot satisfy the captured 1,000 ms timers, then rerun focused tests and current-head proof before merge.
  2. Pause for human adoption
    Keep the branch open for a maintainer to preserve the broad performance work while folding in the timer fixes manually.
Copy recommended automerge instruction
@clawsweeper automerge

Special instructions:
In extensions/codex/src/app-server/compact.test.ts, src/secrets/resolve.test.ts, and src/security/install-policy.test.ts, prevent the active setTimeout spies from capturing Vitest vi.waitFor 1,000 ms watchdog timers; use a phase flag, capture after readiness, or a non-1,000 ms polling helper, then rerun the focused tests.

Next step before merge

  • The remaining blockers are mechanical timer-capture repairs in three test files and do not require product direction.

Security
Cleared: The diff touches scripts, secret-target lookup, and process-timeout tests, but I found no concrete security or supply-chain regression beyond the functional timer blockers.

Review findings

  • [P2] Capture only the compaction timeout — extensions/codex/src/app-server/compact.test.ts:868-870
  • [P2] Avoid waitFor while collecting exec timers — src/secrets/resolve.test.ts:290-292
  • [P2] Avoid waitFor while collecting policy timers — src/security/install-policy.test.ts:259-261
Review details

Best possible solution:

Keep the planning/reporting improvements, but first phase-gate or otherwise narrow the three timeout captures so they can only fire production timers, then rerun focused timer tests and exact-head automation proof.

Do we have a high-confidence way to reproduce the issue?

Yes for the review blockers: source inspection shows the active setTimeout spies surround vi.waitFor while matching the same 1,000 ms delay they intend to capture. I did not rerun the full isolated inventory in this read-only review.

Is this the best way to solve the issue?

No as submitted: the overall performance direction is maintainable, but the timeout tests must capture only production timers before this is the best fix. A phase-gated capture or non-1,000 ms polling helper is the narrower repair.

Full review comments:

  • [P2] Capture only the compaction timeout — extensions/codex/src/app-server/compact.test.ts:868-870
    The setTimeout spy captures the first 1,000 ms timer while vi.waitFor is still active. That can make triggerCompletionTimeout point at the waiter instead of the compaction completion timer, so the later callback may never request turn/interrupt and the test remains flaky or falsely passing.
    Confidence: 0.9
  • [P2] Avoid waitFor while collecting exec timers — src/secrets/resolve.test.ts:290-292
    The active global timer spy records every 1,000 ms timeout while this vi.waitFor runs. That can satisfy the length check with the waiter's watchdog plus the initial resolver timer before the script readiness byte re-arms the no-output timer, causing at(-1) to fire the wrong callback.
    Confidence: 0.9
  • [P2] Avoid waitFor while collecting policy timers — src/security/install-policy.test.ts:259-261
    This has the same timer-capture race as the exec-secret test: vi.waitFor can contribute its 1,000 ms watchdog to noOutputTimeouts while the policy spy is active, so the test can read the pid or fire at(-1) before the policy no-output timer is the captured callback.
    Confidence: 0.9

Overall correctness: patch is incorrect
Overall confidence: 0.9

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 8a187447f94a.

Label changes

Label justifications:

  • P2: This is normal-priority contributor and CI performance work with limited product blast radius but concrete test reliability blockers before merge.
  • merge-risk: 🚨 automation: The PR changes isolated test planning/reporting automation and currently leaves timer tests that can remain flaky or hanging after merge.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (linked_artifact): Linked Testbox/Actions proof and the current-head Real behavior proof check support the isolated-inventory claim, though the timer blockers still need code repair before merge.
  • proof: sufficient: Contributor real behavior proof is sufficient. Linked Testbox/Actions proof and the current-head Real behavior proof check support the isolated-inventory claim, though the timer blockers still need code repair before merge.
Evidence reviewed

Acceptance criteria:

  • [P1] pnpm test extensions/codex/src/app-server/compact.test.ts src/secrets/resolve.test.ts src/security/install-policy.test.ts.
  • [P1] pnpm check:changed -- extensions/codex/src/app-server/compact.test.ts src/secrets/resolve.test.ts src/security/install-policy.test.ts.

What I checked:

  • Repository policy applied: Root and scoped AGENTS.md files were read; the review applied the OpenClaw rules for deep PR review, protected maintainer-label handling, test-performance changes, automation merge risk, and Codex dependency inspection. (AGENTS.md:29, 8a187447f94a)
  • Compaction timer race remains: At exact PR head, the compaction test installs a global setTimeout spy for 1,000 ms timers before awaiting vi.waitFor, so the captured callback is not proven to be the production compaction timeout. (extensions/codex/src/app-server/compact.test.ts:868, b041d4636593)
  • Exec no-output timer race remains: At exact PR head, the exec-secret test records every 1,000 ms setTimeout while vi.waitFor is active, so the waiter's own timer can satisfy the readiness count before the resolver re-arms its no-output timer. (src/secrets/resolve.test.ts:290, b041d4636593)
  • Install-policy no-output timer race remains: At exact PR head, the install-policy test has the same active 1,000 ms setTimeout spy around vi.waitFor, so noOutputTimeouts.at(-1) can fire the wrong callback. (src/security/install-policy.test.ts:259, b041d4636593)
  • Production timers being tested: The production Codex compaction, exec-secret, and install-policy paths all arm their owner timeouts with setTimeout, so the tests need to capture those production timers specifically. (extensions/codex/src/app-server/compact.ts:184, b041d4636593)
  • Codex protocol checked: Sibling Codex source confirms turn/interrupt takes threadId and turnId, and turn/started carries threadId plus the active turn; the compaction test is exercising a real app-server interrupt contract. (../codex/codex-rs/app-server-protocol/schema/typescript/v2/TurnInterruptParams.ts:5, be33f80bc651)

Likely related people:

  • steipete: Recent blame for the timeout code paths and earlier full-suite scheduler commits point to Peter Steinberger, and the linked issue/PR are sponsored from that account. (role: recent area contributor and issue sponsor; confidence: high; commits: cd305b3b0cb9, 5eab61b45df6, 66ac5194f7a6; files: extensions/codex/src/app-server/compact.ts, src/secrets/resolve.ts, src/security/install-policy.ts)
  • gumadeiras: Commit 8e444ac added grouped performance report benchmark coverage that this PR builds on. (role: introduced grouped performance report surface; confidence: medium; commits: 8e444ac5a600; files: scripts/test-group-report.mjs, test/scripts/test-group-report.test.ts)
  • vincentkoc: Recent history from prior review context and local commit availability ties Vincent Koc to nearby fast-path and test/reporting surfaces relevant to this PR's secret registry and test infrastructure work. (role: recent adjacent contributor; confidence: medium; commits: 1e20f15581f9; files: scripts/test-group-report.mjs, src/secrets/target-registry-query.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.
Review history (27 earlier review cycles; latest 8 shown)
  • reviewed 2026-07-05T09:43:31.394Z sha 1dba36c :: needs real behavior proof before merge. :: [P2] Refresh the docs map
  • reviewed 2026-07-05T11:49:53.371Z sha 9d530ec :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-05T13:17:53.699Z sha 7c80e4b :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-05T14:38:29.281Z sha 6cf312b :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-05T15:49:32.495Z sha 05c8093 :: needs real behavior proof before merge. :: [P2] Capture only the compaction timer | [P2] Avoid waitFor while collecting exec no-output timers | [P2] Avoid waitFor while collecting policy no-output timers
  • reviewed 2026-07-05T15:55:28.513Z sha 05c8093 :: needs real behavior proof before merge. :: [P2] Capture only the compaction timer | [P2] Avoid waitFor while collecting exec timers | [P2] Avoid waitFor while collecting policy timers
  • reviewed 2026-07-05T17:35:18.974Z sha 8b843e7 :: needs changes before merge. :: [P2] Avoid capturing vi.waitFor as the compaction timeout | [P2] Avoid waitFor while collecting exec timers | [P2] Avoid waitFor while collecting policy timers
  • reviewed 2026-07-05T17:47:14.422Z sha b041d46 :: needs changes before merge. :: [P2] Avoid capturing vi.waitFor as the compaction timeout | [P2] Avoid waitFor while collecting exec timers | [P2] Avoid waitFor while collecting policy timers

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Jul 4, 2026
@steipete
steipete force-pushed the codex/test-under-one-second branch from 1f28153 to 7c1e520 Compare July 4, 2026 17:25
@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Dependency graph guard cleared

This PR no longer has blocked dependency graph changes. A future dependency graph change requires a fresh /allow-dependencies-change comment after the guard blocks that new head SHA.

  • Current SHA: b041d4636593036a086e44513c85d702f24bebb8

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6b4c31f848

ℹ️ 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".

Comment on lines +5 to +8
export * from "../providers/openai-completions.js";
export * from "../providers/openai-prompt-cache.js";
export * from "../providers/openai-reasoning-effort.js";
export * from "../providers/openai-responses.js";

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.

P2 Badge Split light helpers out of the OpenAI barrel

Core callers that only need small helpers now import this barrel, e.g. src/agents/simple-completion-runtime.ts imports supportsOpenAIReasoningEffort and tool-schema code imports projection helpers. Because ESM export * evaluates each re-exported module, those callers also load openai-completions.ts and openai-responses.ts, both of which import the OpenAI SDK, before any provider request. This defeats the lazy provider loading this change is trying to preserve and adds startup/isolated-test cost for non-OpenAI paths; expose the light helpers through narrower internal subpaths or direct files instead of this provider barrel.

Useful? React with 👍 / 👎.

@@ -0,0 +1,7 @@
export * from "../providers/anthropic.js";

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.

P2 Badge Keep Anthropic model helpers off the provider barrel

src/agents/transport-message-transform.ts now imports resolveModelBoundThinkingReplayMode from this subpath on the common message-transform path, but this barrel first re-exports anthropic.ts, whose top-level import pulls in @anthropic-ai/sdk. That makes every agent run load the Anthropic provider implementation even when the selected model is not Anthropic, regressing the lazy transport boundary and isolated-test/startup cost; move model-contract/replay helpers to a light internal subpath or import their source file directly.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2aaa77d97e

ℹ️ 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".

Comment thread tsconfig.json
@@ -27,15 +27,20 @@
"openclaw/extension-api": ["./src/extensionAPI.ts"],
"openclaw/plugin-sdk": ["./src/plugin-sdk/index.ts"],
"openclaw/plugin-sdk/*": ["./src/plugin-sdk/*.ts"],
"@openclaw/ai": ["./packages/ai/src/index.ts"],

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.

P2 Badge Watch the new AI package sources

Adding this @openclaw/ai alias makes root runtime code resolve AI transports/providers from packages/ai/src, and scripts/tsdown-build.mjs now builds it through the separate tsdown.ai.config.ts; however, scripts/run-node-watch-paths.mjs still watches only the older package source roots and root tsdown config. In pnpm gateway:watch, editing an AI package file or its tsdown config will not rebuild/restart the gateway, leaving stale @openclaw/ai output until a manual rebuild or unrelated watched edit; add the AI source root and AI tsdown config to the run-node watch inputs.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7c80e4bdd9

ℹ️ 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".

Comment on lines +868 to +870
if (delay === 1_000 && !triggerCompletionTimeout) {
triggerCompletionTimeout = () => callback(...args);
return nativeSetTimeout(() => undefined, 60_000);

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.

P2 Badge Capture only the compaction timer

In this test the global setTimeout spy is installed before the vi.waitFor on line 890, and vi.waitFor has a 1000 ms default timeout. When the compaction request has not armed its own 1000 ms completion timer yet, this branch captures the test runner's wait timeout as triggerCompletionTimeout; calling it later does not request turn/interrupt, so the test can fail or hang instead of deterministically exercising the configured compaction timeout. Scope the capture to the timer created after beginRequest/the fake client request, or avoid vi.waitFor while this spy is active.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6cf312b49b

ℹ️ 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".

Comment on lines +290 to +292
await vi.waitFor(() => {
expect(noOutputTimeouts.length).toBeGreaterThanOrEqual(2);
});

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.

P2 Badge Do not let waitFor satisfy the timeout capture

In this POSIX no-output timeout test, the global setTimeout spy is still active while vi.waitFor runs; Vitest documents vi.waitFor's default timeout as 1000 ms (https://vitest.dev/api/vi#vi-waitfor), so the waiter's own watchdog can be pushed into noOutputTimeouts alongside the resolver's initial timer before the script emits ready. Under a slow spawn, the assertion can pass too early, readPidFile can race the pid write, or noOutputTimeouts.at(-1) can fire the waiter's timeout instead of the re-armed no-output timer, leaving the child alive and making this test flaky/hanging.

Useful? React with 👍 / 👎.

Comment on lines +259 to +261
await vi.waitFor(() => {
expect(noOutputTimeouts.length).toBeGreaterThanOrEqual(2);
});

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.

P2 Badge Do not count waitFor's timer as policy readiness

This test has the same race with the active setTimeout spy: vi.waitFor schedules a 1000 ms timeout by default (https://vitest.dev/api/vi#vi-waitfor), which matches the captured policy noOutputTimeoutMs. That means noOutputTimeouts.length >= 2 can be satisfied by the policy's first timer plus vi.waitFor's own watchdog before the readiness byte re-arms the policy timer, so the subsequent readPidFile/at(-1) steps can race or fire the wrong callback instead of killing the forked policy child.

Useful? React with 👍 / 👎.

@blacksmith-sh

This comment has been minimized.

@steipete

steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Exact-head landing proof is complete for b041d4636593036a086e44513c85d702f24bebb8.

  • Reconciled exhaustive inventory on pre-rebase head 05c809399a65f4c26e83342023bf7a61adaa14f1: all 250 leaf plans accounted for; 249 non-empty reports, 87,996 tests across 6,565 files, zero individual tests above 1,000 ms, peak RSS 2.81 GB, no OOM.
  • The interrupted local stream preserved the first 232 plan artifacts. The remaining 18 plans plus the interrupted extension-line plan were rerun on the same exact-head Testbox and aggregated with the preserved results.
  • Testbox: tbx_01kwsf64w84wx9na66vaabf2k1 (Actions run).
  • Full browser project: 123 files, 1,401 tests, zero individual tests above 1,000 ms (Actions run).
  • Focused residual offender set: 143 tests, zero individual tests above 1,000 ms (Actions run).
  • Fresh exact-head rebase-overlap proof: 45 tests passed, zero individual tests above 1,000 ms.
  • Hosted exact-head CI run 28749363609 and Workflow Sanity run 28749363595 passed.
  • Fresh exact-head full-branch Codex autoreview: no actionable findings (0.93 confidence).

Known gap: the sole empty tooling-11 report is the inherited current-main live-test/no-tests shard; it is unrelated to this PR. Every executable report and every changed surface passed.

@steipete

steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Merged via squash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling channel: discord Channel integration: discord channel: imessage Channel integration: imessage channel: telegram Channel integration: telegram channel: voice-call Channel integration: voice-call channel: zalo Channel integration: zalo commands Command implementations extensions: codex extensions: google extensions: memory-core Extension: memory-core extensions: openai extensions: qa-lab gateway Gateway runtime maintainer Maintainer-authored PR merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. scripts Repository scripts size: XL status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve isolated test latency and inventory reliability

1 participant