Repository navigation
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
Changes from 3 commits
39409f9
1ae5c24
1ff816a
555321e
ccda2d2
33d4ee2
538668b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| 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. | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| # 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. Territories were rewritten after audit round 1 (`030_audit_round1.md`): they are | ||
| explicit file lists, because the first version used globs and two lanes silently shared | ||
| `src/server/responses/`. | ||
|
|
||
| ## 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. | ||
|
Comment on lines
+26
to
+27
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win Remove Line 15-16 already lists 🧰 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 |
||
|
|
||
| ## Lanes | ||
|
|
||
| | Lane | Branch | Owned files | Stack order | | ||
| |---|---|---|---| | ||
| | L1 | `codex/260911-l1-responses-core` | `src/server/responses/core.ts`, `compact.ts`, `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` | #4172 → #4176 | | ||
| | L2 | `codex/260911-l2-catalog-provider` | `src/providers/quota*.ts`, BigModel preset definitions, `src/codex/catalog/*` except `effort.ts` | #4201 | | ||
| | L3 | `codex/260911-l3-account-pool` | `src/codex/account-*.ts`, `plan.ts`, `plan-from-token.ts`, `warmup.ts`, `model-entitlements.ts`, `src/server/responses/codex-auth-error.ts`, the one key in `src/config.ts` | #4126 → #4212 → #4211 | | ||
| | L4 | `codex/260911-l4-service-cli` | `src/update/*`, `src/service*.ts`, `src/cli/*`, `src/client/*`, `src/lib/process-control.ts`, `src/codex/catalog/effort.ts`, `src/codex/cli-install-provenance.ts` | #4202 → #4169 → #4204 → #4207 | | ||
| | L5 | `codex/260911-l5-integrations-io` | `src/config/atomic-write.ts`, `src/integrations/*` | #4197 → #4214 | | ||
| | L6 | `codex/260911-l6-streaming-tools` | `src/server/responses/codex-ws-exchange.ts`, `codex-ws-wire.ts`, `src/adapters/qoder/*` | #4191 → #4190 | | ||
| | L7 | `codex/260911-l7-docs` | `docs-site/**/guides/providers.md`, `docs-site/**/guides/remote-hub.md` | #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 maps, as `AGENTS.md` requires. These are append-only | ||
| lists, so the conflicts are mechanical; the orchestrator resolves them during the serialized | ||
| merges. Audit round 1 rejected the earlier rule that told lanes to avoid the maps by naming | ||
| convention, because the regex seeds are a placement fallback and not a substitute for the entry. | ||
| - `gui/src/i18n/*`: no lane in this round adds a locale key. A lane that needs one stops and reports | ||
| instead of editing nine files. | ||
| - `src/config.ts`: only L3 may add a field, and only `codexPool.excludedPlans`. | ||
| - Documentation: L7 owns the two guide pages it is fixing. Any other lane may update the page that | ||
| documents its own change, including the pages a carried PR already touches. | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.