Skip to content

fix: fixture smoke rejects invalid test reports - #1805

Closed
bkudiess wants to merge 4 commits into
mainfrom
bkudiess-w2a-upstream-draft
Closed

bkudiess wants to merge 4 commits into
mainfrom
bkudiess-w2a-upstream-draft

Conversation

@bkudiess

@bkudiess bkudiess commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Supersedes #1801 (fix: fixture smoke rejects invalid test reports). Root of the existing stack; target remains main.

Note

Published head d507c86b8d7b990b7ebacd09c625b4e683ff13ce adds the reviewed test-fixture discovery correction. It remains a draft, not merge-ready.
The focused real-socket protocol suite passed 102/102 on source identical to this commit. New-head Build and Test run 39974979381, attempt 1 was in progress at publication. Full native closeout, corrected real Debug/production-shaped Release smoke, and current-head ClawSweeper disposition remain outstanding. Prior eb52 passes are historical, not proof of d507.

What Problem This Solves

Fixes: fixture smoke can report success when selected reports are stale or their passing counters contradict actual results.

User Impact

User impact: developers get strict fixture-report admission and the actual report path before launch. There is no product UI change.

The prerequisite test fixture also exercises its intended x64-runtime matrix on native ARM64 Windows PowerShell. Production architecture detection is unchanged.

Why This Change Was Made

Reuse the existing TestResultContract.ps1 owner with fresh invocation directories and no selected skips. Preserve selectors, build identity, child-only environment, timeout and owned cleanup. Preparation removes one duplicate Debug success case while retaining failures at both suite positions and Release success.

The test-only BuildPrerequisiteTests correction passes the build-script path as a separate parameter to a temporary wrapper, assigns the simulated AMD64 architecture inside the child after Windows PowerShell starts, then invokes unmodified build.ps1 -CheckOnly -NoTrustRepository and propagates its exit code. It preserves all four runtime cases, assertions, fake VC-runtime inputs, two-minute timeout, child environment isolation and cleanup. No production hook, runtime installation, skip or assertion relaxation was added.

The latest fixture-only correction adds explicit projects.list (no registered projects) and environments.list (one available synthetic local Gateway environment) read payloads to CreateBrowse. Existing advertisement and strict empty-parameter validation apply normally. It preserves unexpected-request and mutation-denial guards, every composer assertion, and production behavior; it does not add real project creation, filesystem access or a generic success fallback.

Evidence

Current publication, 2026-10-23: d507c86b8d7b990b7ebacd09c625b4e683ff13ce, tree 527be21d155115c378d8e21a13d0fec857af6266, was fast-forwarded from parent eb52e7dba34d78321a4c85af88321d07bc6e7e12 without rebasing or new source changes. The two-file correction adds 41 lines in the synthetic scenario and real-socket protocol tests. The same independent Opus 5.5 review of this delta reported no P0-P3 findings, as recorded by the coordinator; that static acceptance is not full runtime proof. Stack 1807 (ID 2431235), its three-PR order, bases and draft state were preserved.

Prior published refresh, 2026-10-22: head eb52e7dba34d78321a4c85af88321d07bc6e7e12, tree 6d7f5fbeb1cc55cb77675a036598b5057580aa1e, comparison base 8ca63eb746bfafa8a31c743922b5350b839749f5. Its three bottom-layer commits retain fixture admission, duplicate-success cleanup and the test-only ARM64 correction. Their patches and messages were identical across the conflict-free local refresh. That earlier publication used an exact lease against b1f5886bfaf3ac3ed5dc8fb837ec1bcba43ff00c; none of the three PRs was merged or auto-merged.

Inherited upstream repair: the pinned base includes #1831 (fix(ci): keep progressing E2E fixtures alive under the hang guard), commit 6647e5497dd0f87a8d61dae83e6d98bb9e8b2797, rather than duplicating that change here. It also retains #1824 (fix(setup): install a Node runtime supported by the Gateway). The earlier observed main bef07da01911fa78ed5ab728ab9248bbb1ec0466 and publication-time main fb45902950fd4f62d20a37dbbafac27e916917f2 are separate from the pinned source used for prior local validation; no automatic rebase was performed. Prior eb52 hosted CI subsequently completed successfully, but matching-d507 CI and runtime proof must stand on their own.

The same independent Claude Opus 5.5 reviewer inspected the assembled prepared chain eb52e7db / bca32068433d5b6141b3c0643e062d89bc17be42 / d10e867feee3792acfc378584f6e54410fb2ebd6 on pinned 8ca63eb7. The coordinator recorded static source/integration acceptance with no P0-P2 or code defect requiring a change. The sole P3 note concerned middle-layer intermediate commit history, not a bottom-layer source defect. Exact-count-guarded source substitution was previously judged an acceptable maintenance tradeoff, not a request for a production-hook rewrite. Static acceptance is not runtime proof, hosted CI success or fresh ClawSweeper approval.

Not merge-ready yet: matching-d507 hosted CI, mandatory full native build/Shared/Tray, corrected real Debug/production-shaped Release smoke and fresh ClawSweeper disposition remain pending. The prior eb52 local closeout passed, but its real Debug smoke failed two cases; those failures and private app-only captures are preserved below. No real Gateway or formal MXC proof is claimed.

Retained earlier source reviews and base refresh

The prior preparation used head b1f5886bfaf3ac3ed5dc8fb837ec1bcba43ff00c, comparison base 51f18c1222c996fb6fa2eb4d7e8d668492103a0e. #1824 landed at 06:52:54 UTC and was inherited rather than duplicated. All five then-existing stack commits were patch-equivalent by range-diff, and their six changed files plus shared validator were byte-identical across that earlier refresh. Those source reviews retain their recorded identities; they are not relabeled as reviews of eb52.

Independent shared autoreview (Codex, GPT-6.1 Sol, medium, P0-P3) covered all six changed files and their full workflow/validator context at cumulative head e748ccd341f9c182a1c2088c314a676e34b8d5e9 against main e4d79798bd59af7242c75b3fb98911f27adf3817. It found one integration defect: the upstream hang-guard test harness still emitted minimal TRX incompatible with strict E2E admission. That finding superseded earlier limited-context no-findings assessments.

The correction in c4bcb3b7db1e3e6f204992d73fbf4b9c4fe8994a made the test fixture emit contract-valid reports, required admitted counts on positive cases and preserved the intended MXC missing-proof rejection. Production admission remained strict. A separate parent-relative corrective review completed with no P0-P3 findings and confirmed all five hang-guard cases remained intact. CI passed the corrected workflow contract on both then-current upper heads; native validation was still blocked at that time. Source review alone was not merge readiness. The accessibility/DevBuild layer was restacked with an equivalent patch.

Change Type

  • Bug fix
  • Feature
  • Refactor
  • Docs or instructions
  • Tests or validation
  • Security hardening
  • Chore or infrastructure

Scope

  • Tray or WinUI UX
  • Windows node capability
  • Local MCP or winnode
  • Gateway, connection, or pairing
  • Setup or onboarding
  • Permissions, privacy, or security
  • Tests, CI, or docs

Required proof pools

  • none: test-report admission and CI wiring change, not a product/native contract requiring a custom pool. Controlled contracts do not establish native fixture, accessibility, Gateway or formal MXC behavior.

Validation

Current-head focused fixture evidence and pending proof

dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore --filter 'FullyQualifiedName~OpenClaw.Shared.Tests.GatewayFixtureProtocolTests' --logger 'trx;LogFileName=fixture-protocol.trx' --results-directory <private-results-directory> passed 102 tests, 0 failed, 0 skipped, exit 0, on 2026-10-22 from 21:03:17 to 21:04:50 UTC. Native Windows ARM64 with explicit repository root and fresh isolated test roots was used. The test ran on the recorded two-file correction over eb52 before commit; both source hashes and the full patch exactly match committed d507. This is verified source correspondence, not a postcommit rerun.

The actual fresh report contains both browse/session-mutations discovery variants using the real CreateChatPlacementGateway().LoadAsync("main") over the fixture socket, four new invalid-parameter cases, and passing existing unknown-method and seven mutation-denial guards. No mocked consumer responses or weakened UI assertions were used.

Normal push-triggered Build and Test run 39974979381, attempt 1 was in progress for exact d507 when observed once at publication. CodeQL completed successfully; dispatch success is not fresh ClawSweeper approval. No tests, old CI reruns, manual re-review request or diagnostic campaign were started to authorize this draft push. Full native closeout and real Debug/Release proof on d507 have not run and are not waived.

Historical eb52 local validation and hosted CI

All results in this subsection belong to prior committed head eb52e7dba34d78321a4c85af88321d07bc6e7e12 on pinned 8ca63eb746bfafa8a31c743922b5350b839749f5, not d507. Native Windows ARM64, PowerShell 7.6.7, .NET SDK 10.0.402 and .NET runtime 10.0.13 were used. OPENCLAW_REPO_ROOT explicitly selected the worktree; fresh isolated test-data, roaming and local roots were set before execution. Dependency manifests were unchanged and restored test assets existed, so tests used --no-restore, not --no-build. Every command had a fresh report destination and recorded start/finish/exit; no passing count was inferred from exit zero alone.

Command Source-bound result
dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore --filter 'FullyQualifiedName=OpenClaw.Tray.Tests.BuildPrerequisiteTests.CheckOnly_UsesTheAppLocalRuntimeResolver' --logger 'trx;LogFileName=wrapper-owner-refreshed.trx' --results-directory <private-results-directory> PASS, exit 0: 4 passed, 0 failed, 0 skipped at exact eb52, 15:29:15-15:30:34 UTC. The post-refresh run was justified because -CheckOnly also validates Markdown changed upstream; it was not a failed-assertion retry.
pwsh -NoProfile -File .\build.ps1 -NoTrustRepository PASS, exit 0: full All/Debug Shared, CLI, WinNodeCli, SetupEngine and WinUI. 15:58:37-16:02:56 UTC. The switch prevents automatic global Git trust changes without narrowing the build.
dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore --logger 'trx;LogFileName=shared.trx' --results-directory <private-results-directory> PASS, exit 0: 4,659 passed, 25 permitted skips, 0 failed / 4,684 total. 16:02:59-16:05:45 UTC.
dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore --logger 'trx;LogFileName=tray.trx' --results-directory <private-results-directory> PASS, exit 0: 4,474 passed, 0 skipped, 0 failed / 4,474 total. 16:05:46-16:10:18 UTC.

Only private results-directory values are redacted. Actual leaves, unique execution identities, counters and report times within each invocation were checked through the existing report contract. All four corrected prerequisite cases passed again inside full Tray, as did all five ReleaseSigningWorkflowTests cases. Full Shared's MarkdownParserFuzzTests.Build_ManyListItems_ScalingCurve passed with list items 10k=124ms 20k=275ms 30k=344ms, against the unchanged 30k <500 ms contract. The 25 ordinary Shared skips were 17 opt-in integration, one unavailable NVIDIA GPU and seven opt-in native MXC cases; they are not complete custom proof. Source HEAD/tree/cleanliness and recorded hashes did not drift.

The three full-closeout commands ran sequentially once with no assertion retries, extra focused-contract run or configuration/skip/threshold changes. The earlier local 111 checks / 52 controlled runner invocations result belongs to b1, not a new eb52 execution; test-proof-evidence.ps1 and the shared validator are byte-identical across this refresh. The original failed four-case Tray report is retained below rather than erased.

Prior-head Build and Test run 39848793019, attempt 1 subsequently completed SUCCESS for PR head eb52e7dba34d78321a4c85af88321d07bc6e7e12, with CI Gate 120081363112 successful. This is verified run/check metadata; raw report admission and exact CI checkout are not newly claimed here. CodeQL run 39848792954 also completed successfully. None of these prior-head results applies automatically to d507.

Historical eb52 real Debug smoke: two failures retained

pwsh -NoProfile -File .\scripts\test-gateway-fixture.ps1 -AppPath '<current-eb52-Debug-win-arm64-exe>' -Configuration Debug -ArtifactsDirectory <private-results-directory> -Screenshots ran unmodified on 2026-10-22 from 20:44:50 to 20:51:08 UTC and exited 1. The explicit executable and assembly matched the source-bound eb52 build before/after execution and in all fixture receipts. Integration passed 32/32; UI had 29 passed, 2 failed, 0 skipped / 31 total. Both ComposerNew_InitialConversationBackAndForward and ComposerNew_DelayedCompletionRetainsNotifications failed the retained unexpected-request assertion because the synthetic scenario lacked projects.list; discovery would next need environments.list.

These pre-existing main test-fixture omissions are the two explicit reads corrected by d507, not production-capability fallbacks. Both failure reports and visible discovery-error captures remain before evidence, not retroactively passing scenarios. All recorded owned processes/profiles/listeners were cleaned up; 80 app-only PNGs remain private. Release build/smoke did not start after the Debug failure. The corrected real smoke has not yet been rerun.

Historical b1 hosted execution after Node prerequisite repair

Run 39736849387, attempt 1 finished FAILURE. PR head: b1f5886bfaf3ac3ed5dc8fb837ec1bcba43ff00c. Actual tested merge checkout: 25fd5dd8fbbcc0230825584cf27ffb9954115058. These identities come from checkout logs, not an assumption that CI ran the PR head directly.

Check Actual result
Report/evidence contracts PASS: 111 checks / 52 controlled runner invocations.
Workflow contracts and hang-guard fixture PASS: all 5 cases.
Shared / Tray PASS: 4,676 passed / 8 permitted skips and 4,474 passed / 0 skips.
Connection / WinNode CLI PASS: 1,672 passed / 1 skip; 129 passed / 0 skips.
Setup/connect E2E PASS: 43 passed / 0 failed / 7 permitted skips.
Network E2E PASS: 2/2.
Revocation E2E ABORTED during setup; zero completed results.
Ordinary WinUI / Accessibility PASS: 509 passed / 33 permitted skips; 23/23.
Dev containment PASS: 31/31.
CI Gate FAIL, enforcing the failed E2E lane above.

All nine E2E setup logs across the three then-current stack runs explicitly report Gateway Node runtime: v24.22.1 and successful CLI installation. The old Node-version rejection was resolved in those executions. The seven setup skips remain MXC-capable-runner exclusions, not formal containment proof.

Revocation recovery hit the existing 600-second inactivity guard during fixture setup. WSL creation took 339.5 seconds; Node installation, Gateway start, pairing and verify-e2e completed, but guarded post-wizard restart work had not finished when the guard aborted the testhost. TRX has a Failed summary with zero completed results. This is not a passing empty report or a test assertion failure.

At that historical head, the deadline owner was the existing 10-minute Blame guard, not the 20-minute workflow step limit. Exact slowdown causality remains unproved; successful shards also emitted the restart-owner warning, so that warning alone does not prove deadlock. No timeout was increased and no blind retry was performed in that investigation. The new source inherits upstream #1831's progressing-fixture hang-guard correction, but that is not evidence of a successful new-head hosted run.

All four multiline-PowerShell variants and all six reasoning-picker variants passed on each then-current stack head. These historical passes do not explain or erase the earlier capture-marker failure or UI testhost crash.

Retained earlier CI and failure history

Previous-head hosted execution: 2026-10-22, before Node prerequisite refresh

Run 39732989428, attempt 1 finished FAILED. PR head: 450f0d257096407caee2173af8af3064387b58f9. Actual job checkout: synthetic merge f11ab5294d60456e03bc6f89bb8e5529dc4f6145, retained separately from the PR head.

Check Actual result
Focused report/evidence contracts PASS: 111 checks / 52 controlled runner invocations.
Workflow contracts and E2E hang-guard fixture PASS: all 5 hang-guard cases.
Shared suite PASS: 4,676 passed / 0 failed / 8 permitted skips.
Tray suite PASS: 4,474 passed / 0 failed / 0 skipped.
Hosted x64 publish smoke, x64/ARM64 MSIX artifacts and bundle PASS. These are not the required local full-build command.
Setup/connect E2E FAIL: 20 passed / 23 failed / 7 skipped.
Network / revocation E2E FAIL: 0/2 and 0/1 passed/failed.

In the previous-head runs, all three E2E lanes were blocked before Gateway test bodies: production setup pinned Node 24.19.0, while the official installer requires 24.22.1+ or 26.12.1+. This production pin is unchanged by this stack. The existing repair is #1824 (fix(setup): install a Node runtime supported by the Gateway); it is now merged upstream and included through the base refresh, not duplicated in this stack. Setup/connect reported 20 passed / 23 failed / 7 skipped, network 0 passed / 2 failed, and revocation 0 passed / 1 failed. Those recorded CI Gates were correctly red. The completed post-repair outcomes are recorded above.

The UI testhost crashed while ReasoningPicker_UsesOnlyAdvertisedChoices was active. TRX has 121 passed rows and 1 skipped row, but its overall result is Failed/aborted, not a pass. Accessibility did not run. The active test is not proof of crash causality; no conclusive native crash cause was captured.

The original malformed-TRX fast-validation failures remain in canceled/superseded runs 39732990766 and 39732990363. Replacement runs pass the repaired gate; canceled runs are not counted as passes. No assertions, hang deadlines or skip policy were weakened.

Local source checks and retained before/after evidence

Command / check Result
git diff 51f18c1222c996fb6fa2eb4d7e8d668492103a0e..b1f5886bfaf3ac3ed5dc8fb837ec1bcba43ff00c --check PASS, no whitespace errors.
git diff 8ca63eb746bfafa8a31c743922b5350b839749f5..eb52e7dba34d78321a4c85af88321d07bc6e7e12 --check PASS on the prepared source; no whitespace errors.
git range-diff 51f18c1222c996fb6fa2eb4d7e8d668492103a0e..9472d538b0273d06e644005ac705e39444cdfbb0 8ca63eb746bfafa8a31c743922b5350b839749f5..eb52e7dba34d78321a4c85af88321d07bc6e7e12 PASS correspondence: all three bottom-layer patches/messages identical, no rebase conflict. This is correspondence, not a new runtime execution.
pwsh -NoProfile -File .\scripts\test-proof-evidence.ps1 Prior b1 local run PASS: 111 checks / 52 controlled invocations. No extra eb52 run; unchanged script/validator bytes preserve source correspondence, not new execution.
pwsh -NoProfile -File .\scripts\test-ci-workflow-contract.ps1 Historical hosted result is recorded above. No new local bottom-layer workflow result is claimed from another layer's run.

The pre-correction full local b1 closeout on 2026-10-22 passed full build and Shared 4,659 / 25 skips / 0 failures, but Tray failed 4 cases, with 4,470 passed / 0 skipped / 4,474 total. All four failures were BuildPrerequisiteTests.CheckOnly_UsesTheAppLocalRuntimeResolver. Although the fixture requested PROCESSOR_ARCHITECTURE=AMD64 in the launch environment, native ARM64 Windows PowerShell observed ARM64 before the script ran and bypassed the x64 runtime resolver. A separate bounded, task-owned child probe observed that assigning AMD64 after startup selected the intended branch while preserving the actual ARM64 process and parent environment. It did not execute the build/resolver or establish which startup component rewrote the variable.

The temporary-wrapper correction retained all original assertions and runtime inputs. Its first targeted run passed 4/4 on the hash-recorded uncommitted correction over b1. A distinct 4/4 run at committed/refreshed eb52 and the subsequent full Tray pass are recorded above; the old failing report and first corrected source identity remain separate. Production build.ps1 and its architecture logic were not modified.

The earlier full b1 Shared scaling observation was 10k=172ms / 20k=436ms / 30k=499ms, a narrow pass under the unchanged threshold. Current main/head parser and scaling-test sources were identical, including correspondence to historical bf3b60e. Source equality establishes no W2a parser/test semantic change; later passes do not establish the old timing failures' cause. No blanket baseline suite or old real-failure experiment was rerun merely to seek a green result.

Retained historical validation, not current-head proof

Prior head 5705b71e77a1c5018029abea8a10bb72573e0dfe had a recorded Windows ARM64 closeout: focused contracts 112 checks / 53 controlled invocations, full build, Shared 4,637 passed / 25 skipped / 0 failed, Tray 4,461 passed / 0 skipped / 0 failed. Earlier head bf3b60e87ebfd8d5726672acea72faead459638f separately passed Shared 4,450 / 35 skips / 0 failures and Tray 4,257 / 0 / 0. Earlier Shared scaling failures of 836 ms and 577 ms against the unchanged <500 ms threshold remain historical; subsequent passes do not establish their cause. Initial callback-state harness failures were corrected before those passes. The old stale-baseline log lacks its cleaned-up harness source and is not independently reconstructable from that log alone.

Historical commands were pwsh -NoProfile -File ./scripts/test-proof-evidence.ps1, ./build.ps1, and the Shared/Tray commands above with fresh TRX logger/results destinations. The prior #1805 (fix: fixture smoke rejects invalid test reports) closeout used -NoTrustRepository for the full build and omitted --no-restore for tests. Ordinary allowed skips are not complete custom proof.

Real Behavior Proof

  • Environment tested: native Windows ARM64 for source-bound focused protocol tests and separately recorded historical local/real-app runs; hosted Windows results retain their own prior-head identities.
  • PR head or commit tested: eb52 plus the exact two-file precommit correction whose hashes/patch match current d507c86b8d7b990b7ebacd09c625b4e683ff13ce. Prior full closeout, green hosted CI and failed real Debug smoke belong to eb52, not d507.
  • Exact steps or command run: the focused GatewayFixtureProtocolTests command and historical full/smoke commands are recorded in Validation.
  • Evidence after fix: Passed: 102, Failed: 0, Skipped: 0 in the actual fresh protocol report, including real-client discovery in both scenario variants and strict malformed/unknown/mutation guards. Earlier four-case prerequisite, full-suite and admission results retain their historical attribution above.
  • Observed result: the real client receives the explicit empty project catalog and synthetic available local environment over a socket; undeclared methods, non-object/extra parameters and prohibited mutations still fail. This does not establish that corrected Debug/Release app smoke has passed.
  • Screenshot or artifact links verified? (Yes/No/N/A): Yes for retained historical job/report evidence; no public screenshot link. Private eb52 app-only failure captures were inspected and retained, not presented as passing d507 proof.
  • Not verified or blocked: matching-d507 hosted CI completion, mandatory full native build/Shared/Tray, corrected unmodified Debug and production-shaped Release fixture smoke, and fresh ClawSweeper disposition. Historical timing-cause and missing stale-baseline harness-source limits remain. No real Gateway/provider, formal MXC or actual timeout process-tree termination proof is claimed.

Security Impact

  • New permissions or capabilities? (Yes/No): No
  • Secrets or tokens handling changed? (Yes/No): No
  • New or changed network calls? (Yes/No): No
  • Command or tool execution surface changed? (Yes/No): No new execution capability.
  • Data access scope changed? (Yes/No): No
  • If any answer is Yes, explain the risk and mitigation: N/A. Existing execution and owned-cleanup boundaries remain intact.

Compatibility and Migration

  • Backward compatible? (Yes/No): Yes for valid reports and existing defaults. Invalid or zero-execution reports intentionally fail.
  • Config or environment changes? (Yes/No): No new environment requirements.
  • Migration needed? (Yes/No): No.
  • If yes, list the exact upgrade steps: N/A. Use emitted invocation paths instead of assuming fixed report paths.

Review Conversations

  • I replied to or resolved every bot review conversation addressed by this PR.
  • I left unresolved only conversations that still need maintainer judgment.

Earlier responses remain in the retained history; current-head review disposition is incomplete. The substantive ClawSweeper verdict at comment 6320660255 still targets historical bf3b60e; no fresh verdict or manual re-review request is claimed. The duplicate-success suggestion is addressed. New local proof and outstanding real-smoke/timing limitations still need a fresh, evidence-based disposition.

@clawsweeper

clawsweeper Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Oct 21, 2026
@clawsweeper

clawsweeper Bot commented Oct 21, 2026

Copy link
Copy Markdown

Codex review: needs changes before merge.

What this changes

The fixture smoke runner reuses strict report validation and creates a fresh report directory for each suite.

Example: fixture-ui.trx has total=2 and passed=2, but both result rows say Failed.

  • Before: The counter-only check accepts the contradictory report.
  • After: The shared validator rejects the disagreement.

Review scores

Measure Result What it means
Overall readiness 🦐 gold shrimp (3/6) Useful and source-correct, with controlled regression evidence rather than shipped-entry-point proof; hosted checks are green, while the disclosed local validation blocker remains.
Proof confidence 🦐 gold shrimp (3/6) This collaborator-authored PR is outside the ordinary contributor proof gate; its current-head Windows ARM64 output demonstrates controlled runner checks with synthetic TRX reports, while actual fixture execution and OS process-tree termination remain unproved.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Product

Kind: Bug fix · Worth it: Yes · Fix scope: Complete
User problem: Developers can receive successful fixture-proof results from stale or internally contradictory reports.
Reason: The collaborator-authored direction restores established strict-proof semantics using the existing shared owner.

Merge readiness

⛔ Needs changes before merge - 1 item remains

Keep open: this collaborator-authored PR fixes report admission still missing on main, with no introduced correctness or security defect found; its explicit draft and disclosed local validation blocker remain unresolved.

Priority: P2
Reviewed head: bf3b60e87ebfd8d5726672acea72faead459638f

Before merge

  • Complete next step - Establish the local Shared scaling failure's cause with comparable base/head evidence and resolve the required validation blocker without weakening the threshold.

Findings

None.

Tests

  • Low-value test scripts/test-proof-evidence.ps1: Remove one duplicate Debug passed case: FailureIndex=1 and FailureIndex=2 both execute the same two-suite success scenario because neither injects a failure.
  • Missing end-to-end proof: The controlled launcher does not demonstrate the unmodified smoke command consuming real dotnet reports, and the historical pre-fix negative control cannot be independently reconstructed.
Agent review details

How this fits together

The developer smoke script launches selected integration and UI suites, then validates their process exit and TRX reports before declaring fixture proof successful.

flowchart LR
  A[Developer smoke command] --> B[Fixture runner]
  B --> C[Selected dotnet suites]
  C --> D[Invocation TRX reports]
  D --> E[Shared report validator]
  E --> F[Pass or failure]
Loading

Technical review

Best possible solution:

Keep the focused cutover to the shared validator while preserving suite selection, child environment, timeout, and owned-process cleanup.

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

Current main accepts positive total and matching passed counters without checking timestamps or leaf outcomes, establishing a source-verifiable acceptance path for contradictory reports.

Is this the best way to solve the issue?

Reusing the established strict validator removes the competing parser and fixes admission at its existing owner without changing application behavior.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against 489208e06780.

Provenance checked

  • Fixture report admission keeps the original intent (3e74082: Provide opt-in real-app fixture smoke that rejects failed, skipped, missing-report, and zero-test runs.)
  • Shared report contract and controlled regressions keeps the original intent (3977f82: Prevent stale or incomplete validation from being accepted through strict shared admission and invocation-specific report directories.)

Testing

Proof path: in-process harness.

Security

None.

Evidence

What I checked:

Likely related people:

  • Barbara Kudiess: Raw commit 3977f82 adds scripts/test-proof-evidence.ps1:30 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: 3977f8206ed4; files: scripts/test-proof-evidence.ps1)
  • Scott Hanselman: Raw commit 3e74082 adds scripts/test-gateway-fixture.ps1:28 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: 3e740827aeb1; files: scripts/test-gateway-fixture.ps1)

Review metrics

Metric Value Why it matters
Runner versus regression changes Runner +7/-9 lines; regression script +218 lines Production logic shrinks by reusing the existing owner; added coverage exercises admission and runner wiring through a controlled launch boundary.

Root-cause cluster

Relationship: canonical
Canonical: #1805
Summary: This PR replaces the closed predecessor with the identical implementation commit.

Members:

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

Labels

Label changes:

  • add P2: Incorrect fixture-proof admission undermines developer validation, with limited direct product impact.
  • add rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🐚 platinum hermit.
  • add status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action.

Label justifications:

  • P2: Incorrect fixture-proof admission undermines developer validation, with limited direct product impact.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🐚 platinum hermit.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action.

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Remove the duplicate Debug success invocation while retaining both failure positions.

Rating scale

6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior.

Workflow

ClawSweeper edits this one comment on every review. Comment @clawsweeper re-review for a fresh review only. Repair and merge execution lanes are retired.

Reviewed October 21, 2026, 12:10 PM ET / 16:10 UTC.

@bkudiess
bkudiess added this pull request to stack #1807 October 21, 2026 17:12
@bkudiess
bkudiess force-pushed the bkudiess-w2a-upstream-draft branch from bf3b60e to 5705b71 Compare October 21, 2026 19:41
@roboclaw-bot roboclaw-bot added the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Oct 22, 2026
@roboclaw-bot
roboclaw-bot force-pushed the bkudiess-w2a-upstream-draft branch from 5705b71 to 450f0d2 Compare October 22, 2026 06:17
@roboclaw-bot

roboclaw-bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Preparation follow-up at current head b1f5886bfaf3ac3ed5dc8fb837ec1bcba43ff00c.

Conflicts and scoped cleanup are published. Independent full-context review identified an invalid legacy TRX fixture; that fixture was corrected without weakening production admission, and its corrective review found no P0-P3 issue. The stack includes upstream Node-runtime repair #1824 (fix(setup): install a Node runtime supported by the Gateway).

Latest Build and Test, attempt 1: FAILURE. Actual checkout: 25fd5dd8fbbcc0230825584cf27ffb9954115058. Controlled contracts passed 111 checks / 52 runner invocations; all five hang-guard cases passed.

Revocation recovery hit the existing 600-second inactivity guard during fixture setup. WSL creation took 339.5 seconds; Node installation, Gateway start, pairing and verify-e2e completed, but guarded post-wizard restart work had not finished when the guard aborted the testhost. TRX has a Failed summary with zero completed results. This is not a passing empty report or a test assertion failure.

Node 24.22.1 installation was verified. All earlier failing multiline-PowerShell/reasoning-picker variants passed in the new run, without claiming their previous failure causes were fixed.

Remaining required native local build/Shared/Tray validation needs an authorized Windows host. Actual fixture-smoke runtime proof remains absent. All three PRs remain drafts; nothing was merged or auto-merged. Earlier failures, cancellations and source identities remain in the PR body.

@roboclaw-bot roboclaw-bot added status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. and removed status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. labels Oct 22, 2026
@roboclaw-bot
roboclaw-bot force-pushed the bkudiess-w2a-upstream-draft branch from 450f0d2 to b1f5886 Compare October 22, 2026 06:53
@roboclaw-bot roboclaw-bot removed the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Oct 22, 2026
@bkudiess bkudiess added the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Oct 22, 2026
Copilot and others added 3 commits October 22, 2026 08:28
Use invocation-specific strict admission and controlled regressions. Preserve suite/report diagnostics and independently validate artifact paths.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: a44ef24f-ef71-429a-896b-852e87ce8597
Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Co-authored-by: bkudiess <7658216+bkudiess@users.noreply.github.com>
Set the simulated AMD64 architecture inside the Windows PowerShell child
after startup, then invoke the original build prerequisite check through a
parameterized path. Preserve all four runtime fixtures, assertions, timeout,
child environment isolation, exit propagation and cleanup.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 56e29ae1-f6b0-48c9-8c37-aa314d9e5b8d
@bkudiess
bkudiess force-pushed the bkudiess-w2a-upstream-draft branch from b1f5886 to eb52e7d Compare October 22, 2026 20:25
Give the browse fixture explicit read-only project and local-environment
catalogs so empty-conversation discovery uses the real client contract.
Cover both browse and session-mutations scenarios over the real socket,
and reject non-object or unexpected parameters through the existing guard.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 56e29ae1-f6b0-48c9-8c37-aa314d9e5b8d
@bkudiess bkudiess added status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. and removed status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. labels Oct 22, 2026
@bkudiess bkudiess closed this Oct 24, 2026
@bkudiess bkudiess removed the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Oct 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. 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.

2 participants