You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Deleted caller-side src/replay; source acquisition now belongs to src/commands/replay, replay-test presentation to src/cli/replay-test, and the bundled-file reader to a daemon-local adapter.
Added the R71 no-regrowth rule and flow-specific eager-closure guard, with observed planted-red proofs.
Rebased onto current main at ed26b31c94; resolved the genuine shared-tooling conflict in scripts/layering/check.ts by retaining retired-platforms-zone and adding replay-ownership.
Removed the PR-owned test-only readAdScriptSourceBundle export after the post-rebase production-export audit; the production loader remains Promise-only, while the synchronous native one-entry fixture is test support only.
Touched diff entries: 54 (24 detected renames, 20 pure moves; 78 old/new path endpoints without rename detection).
Move-adjusted production LOC: -58 lines (tracked production TypeScript in src/** and packages/*/src/**, tests excluded).
Validation
pnpm install --frozen-lockfile — pass on the fresh worktree.
Focused replay/CLI/startup/client/MCP suite — 13 files, 109 tests passed.
pnpm check:quick — pass.
pnpm format:check — pass.
pnpm build — pass.
pnpm check:layering — 163 structural tests passed; live guard passed.
pnpm check:affected --run — pass; all runnable checks passed (full fail-open selection, 517 related test files / 4,359 tests; integration-node 90 passed / 9 expected skips; GitHub-authoritative lanes skipped by declaration).
Post-rebase production-export audit — no PR-owned unused export remains; 27 unrelated current-main findings remain outside this change.
Static Maestro plant failed the startup guards with the named commands/replay/script-source-bundle.ts path; removed afterward.
R71 production-file plant failed by name with [R71 replay-ownership]; removed afterward.
git ls-files 'src/replay/**' — empty.
git diff --check origin/main...HEAD — pass.
Residual risks
Native/device/provider/live-web proof remains GitHub-authoritative; the PR is not being merged.
Exact-head iOS Smoke Tests have exposed native runner instability on two runs: the old caaf758867 head failed live simulator form input with TEXT_INPUT_COMMIT_NOT_OBSERVED, and 129c387c1d timed out opening gesture-pan-duration.ad while rebuilding the xctestrun cache for 49.9 seconds and never reaching runner readiness. The corresponding main workflow passed the replay in 39 seconds, so no timeout or replay behavior was changed; the failure remains a GitHub-authoritative native/device risk.
Independent review found no blocker on exact head b330aca2fbf2ca209ac2d144b2d588c9448eb916. #2151 cleanly closes #2127: caller-owned replay acquisition and CLI-only presentation moved to their existing owners; the daemon retains only a neutral bundled-source reader and sole replay-coordinator construction. There are no compatibility shims or stale src/replay/** source paths, R71 is live and planted-red, and moved tests preserve source ordering, environment-expanded Maestro closure, byte/error behavior, remote-host independence, and reporter output. The gross diff is move-dominated and Size CI is slightly net-negative. Exact-head CI is fully green; ready for human review.
Re-review of exact head caaf7588675504685163a10051a8228a0234cb98 found one P2 design regression in the post-rebase fix. Removing readAdScriptSourceBundle changed the shipping loadReplayScriptSourceBundle interface from always-Promise<ReplayScriptSourceBundle> to ReplayScriptSourceBundle | Promise<ReplayScriptSourceBundle>, plus a try/catch -> Promise.reject bridge and a format-dependent instanceof Promise branch in test code. Current production callers all await it, so this does not presently break replay, but execution timing is now a caller-visible input-format detail solely to preserve synchronous fixture convenience. Keep the production loader Promise-only; build the native synchronous fixture inside test support (loader-specific tests already cover production acquisition), without adding a test-only production export. The rebase itself is sound: it retains current main's retired-platforms-zone and R71, the ownership move remains clean, and Size is net-negative. Do not treat this head as ready until the interface regression is removed and the still-running exact-head CI completes.
Addressed review 5462317845 in 129c387: the production replay source loader is Promise-only again, the native one-entry bundle is constructed only in test support, and no test-only production export was restored. Focused replay coverage (13 files, 109 tests), check:quick, and the full affected gate pass. The prior Smoke Tests failure was on the old caaf758 head at live iOS form input; the new exact-head lanes are running.
Re-review of exact head 129c387c1d1b33d49f509aa9343f0bdd23171d44 confirms the P2 is resolved. loadReplayScriptSourceBundle is Promise-only again; the union return, Promise.reject bridge, and format-dependent instanceof Promise branch are gone. The synchronous native one-entry fixture now lives only in test support, without restoring a test-only production export, while production acquisition retains its command-owner coverage for caller-CWD resolution, Maestro closure, exact errors, and the 2 MiB cap. No compatibility or routing regression found; Size is further reduced. All current exact-head checks are green, with only iOS Smoke still running. Code review is clean and the readiness label may be restored while that lane completes.
The remaining red check is native runner instability, not a replay regression: run 33253374301 timed out in open before the replay action, after a 49.9s xctestrun cache rebuild caused by cache_metadata_mismatch; readiness retries then exhausted at the 60s cooperative timeout. The corresponding main run 33249518974 passed gesture-pan-duration.ad in 39s. I left timeout and replay behavior unchanged and recorded this residual risk in the PR body.
Independent CI evidence check confirms the sole red iOS Smoke job is runner/cache infrastructure noise, not a replay-path regression. The artifact request log shows the test failed during step-1 open, before any replay action: runner_xctestrun_cache rebuilt for cache_metadata_mismatch, ios_runner_startup_ensure_xctestrun consumed 49,931 ms, and runner-connect readiness then ran out the enclosing 60 s cooperative budget. All other exact-head checks are green, and this PR does not change Apple runner/cache/startup code. No owner code action is indicated; ready-for-human remains appropriate with this residual flake recorded.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ready-for-humanValid work that needs human implementation, judgment, or maintainer merge
1 participant
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2127
Summary
src/replay; source acquisition now belongs tosrc/commands/replay, replay-test presentation tosrc/cli/replay-test, and the bundled-file reader to a daemon-local adapter.mainated26b31c94; resolved the genuine shared-tooling conflict inscripts/layering/check.tsby retainingretired-platforms-zoneand addingreplay-ownership.readAdScriptSourceBundleexport after the post-rebase production-export audit; the production loader remains Promise-only, while the synchronous native one-entry fixture is test support only.src/**andpackages/*/src/**, tests excluded).Validation
pnpm install --frozen-lockfile— pass on the fresh worktree.pnpm check:quick— pass.pnpm format:check— pass.pnpm build— pass.pnpm check:layering— 163 structural tests passed; live guard passed.pnpm check:affected --run— pass; all runnable checks passed (full fail-open selection, 517 related test files / 4,359 tests; integration-node 90 passed / 9 expected skips; GitHub-authoritative lanes skipped by declaration).commands/replay/script-source-bundle.tspath; removed afterward.[R71 replay-ownership]; removed afterward.git ls-files 'src/replay/**'— empty.git diff --check origin/main...HEAD— pass.Residual risks
caaf758867head failed live simulator form input withTEXT_INPUT_COMMIT_NOT_OBSERVED, and129c387c1dtimed out openinggesture-pan-duration.adwhile rebuilding the xctestrun cache for 49.9 seconds and never reaching runner readiness. The correspondingmainworkflow passed the replay in 39 seconds, so no timeout or replay behavior was changed; the failure remains a GitHub-authoritative native/device risk.