Repository navigation
Lane contract and AGENTS.md steps 2-4 for cloud lanes (cloud migration item 5) - #223
Merged
Merged
Conversation
…Apps kept the host in the scaled window one scene rotation left, so capture trust's OS screenshot showed the wallpaper
# Conflicts: # packages/parity/test/device-run.test.ts
…t lanes rerun, so the device records await the landing driver's device run)
…h pnpm ci:test-files to dispatch and read it over REST
…ems 1 and 4) scripts/cloud-setup.sh, run by the project SessionStart hook only when CLAUDE_CODE_REMOTE=true, installs the Node every workflow pins and the pnpm of packageManager, then pnpm install --frozen-lockfile and pnpm setup:git, which now also turns rerere off. DRAGON_REQUIRE_NATIVE=1 turns a native run with a missing toolchain from blocked (owner tooling) into a failure naming the tool, in runTarget and runHostLane, as CI's "No native run was blocked" step does.
…atch mode) regen-on-ci.yml takes a sha (patch mode): no push, run-name "regen of <sha>", the combined outputs.patch uploaded as regen-patch, every cache restored only. land-devices-ci.ts adds the regen workflow, land-regen/c-<sha> scratch branches and the patch application; land.ts sends its four regen call sites and the parallel preparations through it.
…group; ci:test-files reads reports strictly and removes them
…then the merge drivers) floor-merge.test.ts pins pnpm setup:git to exactly what the landing driver sets; rerere.enabled false joins both, so the exact-equality check stays and covers the new line.
The master warm run no longer yields to patch-mode runs; a regen step cut off (timeout, lost runner, cancel) is CiUnavailable, only one that completed with failure blames the tree; patch mode does not use setup-node's saving pnpm cache; DEFAULT_REGEN_WAIT_S covers the 6-round chain; a commitApart error is CiUnavailable; the regen commit names the CI run; abandonCiRun says CI run.
…_NATIVE=1, prove the Linux path in CI Review of 892a687: the hook now has no matcher, so it reruns after compact, clear and fork (compaction drops CLAUDE_ENV_FILE exports); in a cloud session the script writes export DRAGON_REQUIRE_NATIVE=1 to CLAUDE_ENV_FILE first (PM ruling) and fails without that file; only the summary line reaches stdout; npm --prefix; curl --retry-connrefused. ci.yml's checks job runs on ubuntu-24.04 and runs cloud-setup.sh twice before setup-node, checking Node, pnpm, the export, typecheck and no reinstall.
…oid ABI rebaseline - LAND_DEVICES, LAND_TEST and LAND_REGEN accept ci-only; LAND_CI=only sets all three. Under ci-only GitHub Actions not running a step is a CiOutage: the driver stops, fails no PR, and every PR not landed stays queued (status: STOPPED BY A CI OUTAGE). All three ci-only skips the priority and quiet files; the leases are only on local paths, which ci-only never reaches. - awaitOnCi tells a run queued for runners (jobs queued, or the run pending) from one that never started: queued runs are waited for up to LAND_CI_QUEUE_WAIT (default 3 h); the run's own wait counts from its first job's start. - LAND_CI_MAX_INFLIGHT (default 2) caps the prepared CI regens a batch dispatches at once. - R3: a CI device run whose only model changes are Android image ABI changes is an architecture rebaseline, logged loudly and recorded in the landing; each changed lane must keep the previous state and exactly its failures. Under LAND_DEVICES=ci a local fallback onto records of another ABI stops the driver instead of blaming the PR.
# Conflicts: # scripts/land.ts
…after the CI rebaseline lands
…re; a nonce finds the dispatched run; every test vitest collects must run; the setup test covers env, vitest command and blocked scan
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
Commands: pnpm regen
…review) A macOS job waiting for a runner while the Ubuntu jobs ran is queued, under LAND_CI_QUEUE_WAIT from when it was first seen waiting; a running job has the step's wait from its own start; a run with jobs done but not completed is waited for up to the queue wait. Under LAND_CI=only, the PR's own CI never running or never finishing is a CiOutage. Unreadable previous device records in the ci-mode fallback refusal stop the driver (Fatal) instead of blaming the PR.
Commands: pnpm regen; pnpm run parity:devices; pnpm regen
…racking, no rebase of pushed prep
…s on the clean head; audit before the PR; direct-push rebase
iOS simulators boot pinned to Full Screen Apps (iPad capture-trust failures in queues 59 and 60)
Land: LAND_REGEN=ci runs the driver's regens on CI (regen-on-ci.yml patch mode)
Cloud session bootstrap and DRAGON_REQUIRE_NATIVE (cloud migration items 1 and 4)
Commands: pnpm regen
Commands: pnpm regen
Commands: pnpm regen
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Cloud migration plan item 5 (docs/goals/milestone-2-proof/notes/cloud-migration.md). Docs only. Every quality rule is kept; only how each rule is met changes for a cloud lane (Ubuntu x86_64, fresh clone, 30-minute command limit, no macOS, Chrome, Swift or Kotlin). The local-Mac path stays documented as an alternative.
What changed
lane-contract.md
gh apiforms for creating a PR, head sha and conflict state, the files a PR changes, open PRs, PR comments, review comments, replying to a review comment, adding and removing labels, and a commit's checks. Lanes use these until the PM confirms GraphQL passes the proxy.regenlabel, with no local fallback in the cloud; how to find the run over REST (pull_request runs on the branch, skipped ones dropped).node scripts/test-shards.ts group-filesdecides; platform-free files run locally, Chrome and native files throughpnpm ci:test-files ... --once. New Never rule: no claim that a Chrome or native file passed unless ci:test-files reported it. The cross-cutting registry tests (Chrome group) go in the ci:test-files run. Macos-only floor and pin writes use--floor-write.--once,pr:reviewwithout--wait), optionally repeated in a foreground loop under 25 minutes. No watchers, job.sh, leases or.donefiles.df -h .) replaces the macOS/System/Volumes/Data40 GB check (the cloud disk is 30 GB in total, so the old rule would always fire).pr:reviewstill uses GraphQL (plan item 2): answer findings over REST, check CI over REST, report that pr:review could not run; never claim clean without its exit 0.spec/<task>branch, which the PM commits as a board update.waiting online with run ids replaces job ids; the READY line from the lane header is now in the contract.gh pr create,pr:review --wait, the 40 GB disk rule, transcript-tail resume.AGENTS.md
pnpm typecheckplus the tests for what you changed, saying exactly what passed. The fullpnpm testruns once per landing in the driver. In the cloud, platform-free files run locally and Chrome and native files through ci:test-files.regenlabel (pnpm regenstill allowed on the Mac); targeted tests, with the full test left to the driver.pnpm teston the Mac; in the cloud, full-test.yml dispatched on a scratch branch's commit, then the push and the scratch branch's deletion). Board-only docs/goals/** pushes need only typecheck.gh pr createstill fine on the Mac).pr:reviewwithout--waitas a single poll, ending the turn while CI runs.Review fixes (42a11b6, from the Claude review of e3b21ae)
pnpm test; cloud: full-test.yml withsha, run looked up by itsfull test of <sha>title). Board-only pushes stay exempt.gh workflow run regen-on-ci.yml -f branch=run is filed under master with no branch in its title, and other labels' events add skipped runs on the branch. Lanes now use only theregenlabel, and the status command filtersbranch=<b>&event=pull_requestand drops skipped runs. The resume procedure uses it. Tested on real runs: pnt1-opacity-z lists its failure and success runs; ios-sim-fullscreen's lone skipped run is dropped.mergeable_stateunknownmeans poll again; the cloud path applies once Cloud session bootstrap and DRAGON_REQUIRE_NATIVE (cloud migration items 1 and 4) #219, test-files.yml: run chosen test files on their full-test runners, dispatched and read over REST by pnpm ci:test-files #221 and Land: ci-only mode (LAND_CI=only), queued CI runs waited for, CI Android ABI rebaseline #222 are on master; the PR body PATCH command is added.Review fixes (second round, from the Claude review of 42a11b6)
tested <ref> at <sha>line names that sha). The READY report lists the sha and every run URL. Lanes now pass the full head sha, not the branch, to ci:test-files.test files of ci-test-fileslists exactly that ref's two runs, not ci-test-files-mismatch or -plant). No run with a sha ref exists yet, so the sha form itself hasn't run; test-files.yml documentsrefas "Full commit sha or branch".What passed
pnpm vitest run packages/parity/test/regen.test.ts -t "catch-up procedure"(it reads AGENTS.md steps 1 and 2): 1 passed.pnpm typecheck: pass.No tolerance, check, test or fixture changed.
🤖 Generated with Claude Code