Repository navigation
Conversation
7 failing -> 1 failing The /v1/agent-device mount, the proxy host, the front map and the lease flow. Fixture fixes in edge.test.ts: phone models for the slow drivers, a long TTL for the held lease, room for 5 devices, timing gaps after a hang-up.
1 failing -> 1 failing Splits the refusal check and the settle steps so Fallow's complexity check passes.
1 failing -> 1 failing
…472) 1 failing -> 0 failing
…tes, report a proxy that fails to load (#472)
… able to fail; fix the cross-tenant comment (#472)
Contributor
Author
Review notesNot blocking, not verified. Each is one reviewer's claim.
Written by an agent. |
V3RON
marked this pull request as ready for review
October 13, 2026 06:13
This was referenced Oct 13, 2026
V3RON
added a commit
that referenced
this pull request
Oct 13, 2026
## What changed - `.github/workflows/ci.yml`: the Quality job ran `pnpm check` serially. Its steps now run as parallel jobs: - **Static checks**: typecheck, typecheck:e2e, lint, lint:comments, format:check (keeps `fetch-depth: 0` for the comment lint). - **Unit tests**: `pnpm run test:unit`. - **E2E (1/3)**, **(2/3)**, **(3/3)**: `pnpm run build && pnpm run build:e2e`, then `vitest run --project e2e --tags-filter='!slow' --shard=i/3`. `fail-fast: false`, so one red shard does not hide the others. - **Quality** still exists. It `needs` all of the above, runs `if: always()`, and fails unless every one of them succeeded or was skipped. The required check keeps its meaning. - `.agents/scripts/merge-pr.sh`: when it decides whether red CI may be re-run, it skips the Quality check. Quality fails when a job it needs was cancelled, so judging it would call a cancelled job "this PR's to fix". The jobs it needs are checks of their own and are judged directly. `src/merge-pr.test.ts`: the fake `gh` now models the split (one red job plus the Quality check that needs it); the cancelled-job test fails without the skip. - `docs/internal/agent-rules/toolchain.md` and `docs/internal/DELIVERY.md` describe the split. - `pnpm check` is unchanged. `ci-failures.mjs` needs no change: it reads `--log-failed` for the whole run, which covers every shard. ## Before CI run 38355362705 (PR #497): Quality took about 5 min. Static checks about 19 s, unit tests 45 s, then build and the e2e project 228 s, one after another. ## After CI run 38359780444 on this PR, job wall times: | Job | Time | | --- | --- | | Static checks | 32 s | | Unit tests | 61 s | | E2E (1/3) | 103 s | | E2E (2/3) | 117 s | | E2E (3/3) | 102 s | | Quality (sums them up) | 4 s, done 124 s after the run started | Before: Quality 312 s. After: 124 s. Console (194 s) is now the slowest check. The shards are close. Shard 3 holds `warm-targets.test.ts` (69 s), most of it one test that waits out a fixed 60 s warm-pool retry delay. ## Review Spec review: skipped. Code review: 2 blocking, 1 fixed, 1 notes. Claims review: 0 blocking, 0 fixed, 0 notes. Rejected: - code: .github/workflows/ci.yml:100 CI copies pnpm check's steps and the e2e vitest filter, so editing one leaves the other stale — not blocking: splitting jobs repeats the commands, and a comment says to keep them in step Rounds: 2. Tokens: n/a. *Written by an agent.*
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.
Closes #472
Status
Implement: done (49/49 green; stop-time cancel per the maintainer's decision; no protocol bump) Review: round 2 + claims-only passed Hardware: n/a Gate: running
Next: gate
Done when
src/agent-device/edge.test.ts(the adapter andauthenticatelines insrc/agent-device/host/upstream.test.ts, the front map lines insrc/agent-device/front/front-map.test.ts, the shared line insrc/agent-device/shared/rpc.test.ts), and each fails when the behaviour it names is removed.agentDevice.enabledtrue and HTTP on,/v1/agent-device/healthwith a simlock token answers the proxy's health; with it false, 404.simlock list --devices, shown by the release test.docs/HTTP-API.mddocuments/v1/agent-device/*, the one-token-per-agent rule and the messages above.Assumptions
AgentDeviceHost.tag/.authenticate,SupervisorAgentDeviceUpstream,FrontMap.add/get/markEnded/refresh,commandLeaseId) — the red commit holds inert stubs with these names so the tests typecheck; green may rename them and update the tests that call them, since no spec line fixes them.FakeAgentDevicereads the tenant from thex-agent-device-tenantheader, elseparams.tenantId, elseparams.meta.tenantId, as the proxy on agent-device'ssimlock-integrationbranch stamps it.HostLink.forward(request, identity)takes the identity, and the host tags the request it hands the proxy with a random header value (a map the host owns), not aWeakMapkeyed on theRequest: the proxy givesauthenticatea copy of the request, so aWeakMapwould never match. The header is overwritten on every forward and never reaches agent-device.--targetvalues other thanmobile,tvanddesktopask for no class (the smallest change; the spec names no message for them).createLeasing: they need nothing from leasing, andTokenStorestays where it is because the host does not use it (requireAuthis the one token check).lease.request, the front waits on alease.listdispatch (raced against the CLI's hang-up). A request parked while the daemon starts cannot be called back, and this keeps a CLI that left before startup finished from ever being admitted (the "hangs up before simlock admitted" test).edge.test.ts(no assertion changed): the slow and no-address drivers get phone models; the held lease in the 330 s test gets the maximum TTL so it does not expire during the wait; the--targettest allows 8 running devices for its 5 leases; the two hang-up tests wait 50 ms after the hang-up so the server sees the closed socket before the daemon moves on.Review
Spec review: 8 blocking, 4 fixed, 4 notes. Code review: 9 blocking, 7 fixed, 0 notes. Claims review: 0 blocking, 0 fixed, 2 notes.
Rounds: 2. Tokens: 19.8M.
Rejected:
Written by an agent.