Repository navigation
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs changes before merge. What this changesThe 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.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete 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 Before merge
FindingsNone. Tests
Agent review detailsHow this fits togetherThe 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]
Technical reviewBest 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
TestingProof path: in-process harness. SecurityNone. EvidenceWhat I checked:
Likely related people:
Review metrics
Root-cause clusterRelationship: Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. LabelsLabel changes:
Label justifications:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale6/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. WorkflowClawSweeper edits this one comment on every review. Comment Reviewed October 21, 2026, 12:10 PM ET / 16:10 UTC. |
bf3b60e to
5705b71
Compare
5705b71 to
450f0d2
Compare
|
Preparation follow-up at current head 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: 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. |
450f0d2 to
b1f5886
Compare
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
b1f5886 to
eb52e7d
Compare
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
Supersedes #1801 (fix: fixture smoke rejects invalid test reports). Root of the existing stack; target remains main.
Note
Published head
d507c86b8d7b990b7ebacd09c625b4e683ff13ceadds 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
eb52passes are historical, not proof ofd507.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.ps1owner 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
BuildPrerequisiteTestscorrection passes the build-script path as a separate parameter to a temporary wrapper, assigns the simulatedAMD64architecture inside the child after Windows PowerShell starts, then invokes unmodifiedbuild.ps1 -CheckOnly -NoTrustRepositoryand 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) andenvironments.list(one available synthetic local Gateway environment) read payloads toCreateBrowse. 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, tree527be21d155115c378d8e21a13d0fec857af6266, was fast-forwarded from parenteb52e7dba34d78321a4c85af88321d07bc6e7e12without 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, tree6d7f5fbeb1cc55cb77675a036598b5057580aa1e, comparison base8ca63eb746bfafa8a31c743922b5350b839749f5. 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 againstb1f5886bfaf3ac3ed5dc8fb837ec1bcba43ff00c; 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 mainbef07da01911fa78ed5ab728ab9248bbb1ec0466and publication-time mainfb45902950fd4f62d20a37dbbafac27e916917f2are separate from the pinned source used for prior local validation; no automatic rebase was performed. Prioreb52hosted CI subsequently completed successfully, but matching-d507CI and runtime proof must stand on their own.The same independent Claude Opus 5.5 reviewer inspected the assembled prepared chain
eb52e7db/bca32068433d5b6141b3c0643e062d89bc17be42/d10e867feee3792acfc378584f6e54410fb2ebd6on pinned8ca63eb7. 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-
d507hosted CI, mandatory full native build/Shared/Tray, corrected real Debug/production-shaped Release smoke and fresh ClawSweeper disposition remain pending. The prioreb52local 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 base51f18c1222c996fb6fa2eb4d7e8d668492103a0e. #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 ofeb52.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
e748ccd341f9c182a1c2088c314a676e34b8d5e9against maine4d79798bd59af7242c75b3fb98911f27adf3817. 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
c4bcb3b7db1e3e6f204992d73fbf4b9c4fe8994amade 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
Scope
winnodeRequired 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 overeb52before commit; both source hashes and the full patch exactly match committedd507. 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
d507when 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 ond507have not run and are not waived.Historical eb52 local validation and hosted CI
All results in this subsection belong to prior committed head
eb52e7dba34d78321a4c85af88321d07bc6e7e12on pinned8ca63eb746bfafa8a31c743922b5350b839749f5, notd507. Native Windows ARM64, PowerShell 7.6.7, .NET SDK 10.0.402 and .NET runtime 10.0.13 were used.OPENCLAW_REPO_ROOTexplicitly 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.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>eb52, 15:29:15-15:30:34 UTC. The post-refresh run was justified because-CheckOnlyalso validates Markdown changed upstream; it was not a failed-assertion retry.pwsh -NoProfile -File .\build.ps1 -NoTrustRepositorydotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore --logger 'trx;LogFileName=shared.trx' --results-directory <private-results-directory>dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore --logger 'trx;LogFileName=tray.trx' --results-directory <private-results-directory>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
ReleaseSigningWorkflowTestscases. Full Shared'sMarkdownParserFuzzTests.Build_ManyListItems_ScalingCurvepassed withlist 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 invocationsresult belongs tob1, not a neweb52execution;test-proof-evidence.ps1and 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 Gate120081363112successful. 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 tod507.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> -Screenshotsran 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-boundeb52build before/after execution and in all fixture receipts. Integration passed 32/32; UI had 29 passed, 2 failed, 0 skipped / 31 total. BothComposerNew_InitialConversationBackAndForwardandComposerNew_DelayedCompletionRetainsNotificationsfailed the retained unexpected-request assertion because the synthetic scenario lackedprojects.list; discovery would next needenvironments.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.All nine E2E setup logs across the three then-current stack runs explicitly report
Gateway Node runtime: v24.22.1and 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 mergef11ab5294d60456e03bc6f89bb8e5529dc4f6145, retained separately from the PR head.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 requires24.22.1+or26.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_UsesOnlyAdvertisedChoiceswas 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
39732990766and39732990363. 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
git diff 51f18c1222c996fb6fa2eb4d7e8d668492103a0e..b1f5886bfaf3ac3ed5dc8fb837ec1bcba43ff00c --checkgit diff 8ca63eb746bfafa8a31c743922b5350b839749f5..eb52e7dba34d78321a4c85af88321d07bc6e7e12 --checkgit range-diff 51f18c1222c996fb6fa2eb4d7e8d668492103a0e..9472d538b0273d06e644005ac705e39444cdfbb0 8ca63eb746bfafa8a31c743922b5350b839749f5..eb52e7dba34d78321a4c85af88321d07bc6e7e12pwsh -NoProfile -File .\scripts\test-proof-evidence.ps1b1local run PASS: 111 checks / 52 controlled invocations. No extraeb52run; unchanged script/validator bytes preserve source correspondence, not new execution.pwsh -NoProfile -File .\scripts\test-ci-workflow-contract.ps1The pre-correction full local
b1closeout 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 wereBuildPrerequisiteTests.CheckOnly_UsesTheAppLocalRuntimeResolver. Although the fixture requestedPROCESSOR_ARCHITECTURE=AMD64in the launch environment, native ARM64 Windows PowerShell observedARM64before the script ran and bypassed the x64 runtime resolver. A separate bounded, task-owned child probe observed that assigningAMD64after 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/refreshedeb52and the subsequent full Tray pass are recorded above; the old failing report and first corrected source identity remain separate. Productionbuild.ps1and its architecture logic were not modified.The earlier full
b1Shared scaling observation was10k=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 historicalbf3b60e. 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
5705b71e77a1c5018029abea8a10bb72573e0dfehad 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 headbf3b60e87ebfd8d5726672acea72faead459638fseparately 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-NoTrustRepositoryfor the full build and omitted--no-restorefor tests. Ordinary allowed skips are not complete custom proof.Real Behavior Proof
eb52plus the exact two-file precommit correction whose hashes/patch match currentd507c86b8d7b990b7ebacd09c625b4e683ff13ce. Prior full closeout, green hosted CI and failed real Debug smoke belong toeb52, notd507.GatewayFixtureProtocolTestscommand and historical full/smoke commands are recorded in Validation.Passed: 102, Failed: 0, Skipped: 0in 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.Yes/No/N/A): Yes for retained historical job/report evidence; no public screenshot link. Privateeb52app-only failure captures were inspected and retained, not presented as passingd507proof.d507hosted 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
Yes/No): NoYes/No): NoYes/No): NoYes/No): No new execution capability.Yes/No): NoYes, explain the risk and mitigation: N/A. Existing execution and owned-cleanup boundaries remain intact.Compatibility and Migration
Yes/No): Yes for valid reports and existing defaults. Invalid or zero-execution reports intentionally fail.Yes/No): No new environment requirements.Yes/No): No.Review Conversations
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.