-
Notifications
You must be signed in to change notification settings - Fork 1.1k
docs(devlog): plan the 260911 lane dispatch round #4217
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
39409f9
docs(devlog): plan the 260911 lane dispatch round
lidge-jun 1ae5c24
docs(devlog): record the round PR and lane seed commits in the ledger
lidge-jun 1ff816a
docs(devlog): fold audit round 1 into the lane territories and packets
lidge-jun 555321e
docs(devlog): fold audit round 2 into explicit lane ownership and nam…
lidge-jun ccda2d2
docs(devlog): regenerate the ledger from live git and gh output
lidge-jun 33d4ee2
docs(devlog): fold audit round 3 and record the one rejected finding
lidge-jun 538668b
docs(devlog): add the per-lane dispatch handoff
lidge-jun File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,71 @@ | ||
| # Lane dispatch round — 260911 | ||
|
|
||
| Freeze: `origin/dev` `6d3ad12e3` (package.json 2.51.0). Every lane branch is cut from that SHA. | ||
|
|
||
| ## Why this round exists | ||
|
|
||
| `dev` did not move for 24 hours while 80 pull requests stayed open. The blocking pattern is not | ||
| reviewer capacity alone: three of the most urgent PRs (#4184, #4181, #4203) sat at | ||
| `CHANGES_REQUESTED`, and four more (#4188, #4174, #4171, #4210) were reset to draft by the | ||
| readiness gate after a push. Waiting on those forks does not land anything this round. | ||
|
|
||
| ## What decides the lane boundaries | ||
|
|
||
| File ownership, not topic. `010_lane_partition.md` records the measured collisions across 27 open | ||
| PRs. Two facts fix the shape of this round: `src/server/responses/core.ts` is contended by four | ||
| open PRs and `src/providers/quota.ts` by another four, while twelve PRs touch no file any other | ||
| PR touches. Lanes are cut so that no two lanes own the same file, which is what makes unlimited | ||
| parallel agents useful rather than a rebase generator. | ||
|
|
||
| ## Decision-free filter | ||
|
|
||
| This round dispatches only work whose expected behaviour is already fixed by a filed issue, so no | ||
| lane has to invent a maintainer policy. An item is in when the issue states the expected result and | ||
| no competing design is open; it is out when landing it would decide a policy the maintainer has not | ||
| decided. | ||
|
|
||
| Six items inside the round also left a real choice open; audit round 1 caught that and the orchestrator | ||
| made those calls in writing (`030_audit_round1.md`), so no lane decides policy. | ||
|
|
||
| Excluded on purpose, with the decision that blocks each one: | ||
|
|
||
| - #4213 — whether unknown native-surface endpoints are forwarded upstream or keep returning 404 is a | ||
| proxy policy decision, and the issue explicitly asks for it. | ||
| - #4198, #4179 — publishing an official container image changes a documented policy | ||
| ("opencodex does not publish an official container image"). | ||
| - #4173 — the atomic update design competes with #4185 and #4203 already in flight. | ||
| - Contributor feature PRs (#4183, #4100, #4111, #4193, #4033, #4042) — these need review, not | ||
| reimplementation, and reimplementing them would discard the author's work. | ||
|
|
||
| ## Roles | ||
|
|
||
| The orchestrator thread owns the round: it holds the host goal, tracks every lane, refreshes live PR | ||
| and CI state, and performs merges one at a time. Lane threads own implementation inside their file | ||
| territory and stop at a green PR; they never merge and never touch another lane's files. | ||
|
|
||
| ## Execution rules carried from earlier rounds | ||
|
|
||
| These are not new. They are the rules this repository's earlier parallel rounds ran under, and they | ||
| are repeated inside every packet so a lane thread that never reads this file still obeys them. | ||
|
|
||
| 1. **No local product suite.** No `bun test`, no `bun run test`, no `bun run typecheck`, no build, no | ||
| install. Report those checks as `NOT RUN` and bind confidence to hosted CI. Reading source and | ||
| running read-only `git`/`gh` is not a suite run. | ||
| 2. **Push with `--no-verify`**, and prefix every mutating git command with | ||
| `git -c core.hooksPath=/dev/null` — this repository's hooks can start a GUI install, typecheck, | ||
| and build, which rule 1 forbids. | ||
| 3. **Ordinary dependent PRs.** The first PR of a lane targets `dev`; a child targets its parent's | ||
| head branch, and is retargeted to `dev` after the parent lands. No native GitHub stacks. | ||
| 4. **Attribution.** Carrying, superseding, or reimplementing another author's work requires a | ||
| `Co-authored-by` trailer naming that author in a branch commit, not prose. | ||
| 5. **Final-head CI is the proof.** Green on an older head, a cancelled run, or a skipped job is not | ||
| passing evidence. The exact pushed SHA must be the one that is green. | ||
| 6. **Unlimited `xai/grok-4.6` subagents**, read-only. They verify, reproduce, and audit; they do not | ||
| write files, and no finding enters a lane's work without a `path:line` anchor. | ||
|
|
||
| ## Merge policy | ||
|
|
||
| Merges are serialized through the orchestrator because `dev` is protected and shared. A lane PR | ||
| merges when its exact head is green on final-head CI; the landing is proven by fetching `origin/dev` | ||
| and checking ancestry, never by the merge command's own output. | ||
|
|
75 changes: 75 additions & 0 deletions
75
devlog/_plan/260911_lane_dispatch_round/010_lane_partition.md
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| # Lane partition — measured file collisions | ||
|
|
||
| Method: `gh pr view <n> --json files` over 27 open PRs on 2026-09-11, `devlog/` paths dropped, then | ||
| grouped by path. Revision 3, after two audit rounds (`030_audit_round1.md`, `040_audit_round2.md`). | ||
|
|
||
| Ownership below is stated as an exact path or as one named directory meaning every file under it. | ||
| No two lanes name the same path, and no named directory contains another lane's path. | ||
|
|
||
| ## Contended files | ||
|
|
||
| | Count | Path | Open PRs | | ||
| |---|---|---| | ||
| | 4 | `src/server/responses/core.ts` | #4050, #4118, #4181, #4184 | | ||
| | 4 | `src/providers/quota.ts` | #4090, #4105, #4174, #4210 | | ||
| | 4 | `tests/providers/provider-quota.test.ts` | #4090, #4105, #4174, #4210 | | ||
| | 3 | `gui/src/i18n/{de,en,fr,ja,ko,ru,tr,zh,zh-TW}.ts` | #4111, #4183, #4193 | | ||
| | 3 | `scripts/test-layout/layout.json` | #4119, #4193, #4203 | | ||
| | 3 | `tests/fixtures/test-layout-expected.json` | #4119, #4193, #4203 | | ||
| | 2 | `src/server/claude-messages.ts` | #4050, #4184 | | ||
| | 2 | `src/server/chat-completions.ts` | #4118, #4184 | | ||
| | 2 | `src/types/tools.ts` | #4171, #4181 | | ||
| | 2 | `src/combos/resolve.ts` | #4090, #4105 | | ||
| | 2 | `src/config.ts` | #4100, #4183 | | ||
| | 2 | `src/update/job.ts` | #4185, #4203 | | ||
|
|
||
| Collision-free PRs, touching no file any other open PR touches: #4062, #4104, #4119, #4124, #4130, | ||
| #4139, #4159, #4177, #4178, #4187, #4188, #4199. | ||
|
|
||
| ## Ownership | ||
|
|
||
| **L1** `codex/260911-l1-responses-core` — `src/server/responses/core.ts`, | ||
| `src/server/responses/compact.ts`, `src/server/responses/policy-fallback.ts`, | ||
| `src/server/chat-completions.ts`, `src/server/claude-messages.ts`, | ||
| `src/server/request-log-conversation.ts`, `src/server/responses-undeclared-tool-guard.ts`, | ||
| `src/providers/opencode-go-transport.ts`, `src/types/tools.ts`, | ||
| `docs-site/src/content/docs/reference/configuration/providers.md`. Stack: #4172 → #4176. | ||
|
|
||
| **L2** `codex/260911-l2-catalog-provider` — `src/providers/quota.ts`, | ||
| `src/providers/quota-types.ts`, `src/providers/quota-wire.ts`, | ||
| `src/providers/quota-routing-cache.ts`, `src/providers/quota-key-accounts.ts`, | ||
| `src/providers/account-quota-disk.ts`, `src/providers/registry.ts`. Stack: #4201. | ||
|
|
||
| **L3** `codex/260911-l3-account-pool` — `src/codex/account-usability.ts`, | ||
| `src/codex/account-pause.ts`, `src/codex/account-store.ts`, `src/codex/account-runtime-state.ts`, | ||
| `src/codex/plan.ts`, `src/codex/plan-from-token.ts`, `src/codex/warmup.ts`, | ||
| `src/codex/model-entitlements.ts`, `src/server/responses/codex-auth-error.ts`, | ||
| `src/server/management/oauth-account-routes.ts`, the single key `codexPool.excludedPlans` in | ||
| `src/config.ts`, and `docs-site/src/content/docs/guides/codex-integration.md` and its seven locale copies under | ||
| `docs-site/src/content/docs/{fr,ja,ko,ru,tr,zh-cn,zh-tw}/guides/codex-integration.md`. | ||
| Stack: #4126 → #4212 → #4211. | ||
|
|
||
| **L4** `codex/260911-l4-service-cli` — directories `src/update/`, `src/cli/`, `src/client/`; files | ||
| `bin/ocx.mjs`, `src/cli.ts`, `src/service.ts`, `src/config/pending-teardown.ts`, | ||
| `src/lib/bun-runtime.ts`, `src/lib/package-tree-integrity.ts`, `src/lib/process-control.ts`, | ||
| `src/codex/catalog/effort.ts`, `src/codex/cli-install-provenance.ts`, | ||
| `docs-site/src/content/docs/getting-started/installation.md`. Stack: #4202 → #4169 → #4204 → #4207. | ||
|
|
||
| **L5** `codex/260911-l5-integrations-io` — directory `src/integrations/`; file | ||
| `src/config/atomic-write.ts`. Stack: #4197 → #4214. | ||
|
|
||
| **L6** `codex/260911-l6-streaming-tools` — `src/server/responses/codex-ws-exchange.ts`, | ||
| `src/server/responses/codex-ws-wire.ts`, directory `src/adapters/qoder/`. Stack: #4191 → #4190. | ||
|
|
||
| **L7** `codex/260911-l7-docs` — `docs-site/src/content/docs/guides/providers.md`, | ||
| `docs-site/src/content/docs/guides/remote-hub.md`. Stack: #4215 → #4200. | ||
|
|
||
| ## Custody of shared assets | ||
|
|
||
| - `scripts/test-layout/layout.json` and `tests/fixtures/test-layout-expected.json`: every lane | ||
| registers its own new test files in both, as `AGENTS.md` requires. They are append-only lists, so | ||
| the conflicts are mechanical and the orchestrator resolves them during the serialized merges. | ||
| - `gui/src/i18n/*`: no lane adds a locale key this round. A lane that needs one stops and reports. | ||
| - `src/config.ts`: only L3, and only `codexPool.excludedPlans`. | ||
| - `docs-site/src/content/docs/guides/providers.md`: L7 only. A lane whose carried PR edits it drops | ||
| that hunk and reports the wording to the orchestrator. | ||
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Remove
#4119from the collision-free list.Line 15-16 already lists
#4119as touching both test-layout files with#4193and#4203. Therefore, Line 24-25 cannot also classify#4119as collision-free. Re-run the classification and remove the duplicate from the collision-free list, or correct the contention rows if they are stale.🧰 Tools
🪛 markdownlint-cli2 (0.23.2)
[warning] 25-25: No space after hash on atx style heading
(MD018, no-missing-space-atx)
🤖 Prompt for AI Agents