|
| 1 | +# 009_0 — Merge-readiness judgment: codex/bucket2-fixes-260723 → dev/preview/main |
| 2 | + |
| 3 | +Date: 2026-07-23. Question: may this branch be merged toward main/preview? |
| 4 | +Answer shape: content verdict + process verdict + required conditions. No PR |
| 5 | +opened, no merge executed (user instruction). |
| 6 | + |
| 7 | +## Evidence |
| 8 | + |
| 9 | +### Branch topology (verified 2026-07-23, after push) |
| 10 | + |
| 11 | +- `codex/bucket2-fixes-260723` = 11 commits on top of `origin/dev` (54e0bbf8): |
| 12 | + 2 devlog + 8 code/docs (f464f966, ea39977d, a4bd1d85, c771aaa5, f4f90e94, |
| 13 | + 95b8717c, 44082437, 70d1251e, + final devlog record). Pushed to origin. |
| 14 | +- `origin/dev` is 26 commits ahead of `origin/main` (9e68ed67) and 28 ahead of |
| 15 | + `origin/preview` (6d6bef8b = v2.7.33 tag commit). preview is an ancestor of dev. |
| 16 | +- Commit author name: bitkyc08-arch, which GitHub maps to the repository-owner |
| 17 | + account @lidge-jun. |
| 18 | + |
| 19 | +### Local gate state (all fresh runs on the final HEAD) |
| 20 | + |
| 21 | +- `bun run test`: 3542 pass / 0 fail (290 files), re-run after every WP. |
| 22 | +- `bun run typecheck`: exit 0. `bun run lint:gui`: clean. `bun run build:gui`: ok. |
| 23 | +- `bun run privacy:scan`: passed. docs-site build: 121 pages. |
| 24 | +- Regression coverage added per fix: 6 (#289) + 6 (#292) + 7 (#287) + 9 (#295) |
| 25 | + + 11 (#300) named cases. |
| 26 | + |
| 27 | +### Policy surface (MAINTAINERS.md / AGENTS.md / workflows) |
| 28 | + |
| 29 | +- Normal PRs target `dev`; a PR requires ≥1 maintainer approval + required CI. |
| 30 | + **Authors do not approve their own pull requests** — commits here are authored |
| 31 | + by the owner, so approval must come from the other maintainer (@Ingwannu). |
| 32 | +- `ci.yml` triggers: PR → {main, dev} and push → {main, preview, dev}. |
| 33 | + `service-lifecycle.yml` triggers: PR → {main, dev}. Therefore **no CI has run |
| 34 | + on this branch yet** — CI starts when a PR to dev opens, and again on the dev |
| 35 | + push after merge. |
| 36 | +- Security boundary: WP3 (#292) adds DNS-resolved destination-policy enforcement |
| 37 | + on model discovery — a direct change to the SSRF boundary (hardening |
| 38 | + direction). Per MAINTAINERS.md this requires **explicit security review**; |
| 39 | + it is merge condition #1, not an optional focus area. The other four fixes do |
| 40 | + not touch auth/credentials/OAuth/workflows/release automation/dependencies. |
| 41 | +- Branch policy: `main` moves only by maintainer promotion from `dev`; |
| 42 | + `preview` is the prerelease train. `scripts/release.ts` enforces: preview |
| 43 | + branch → version must contain `-preview.`; main → no prerelease suffix. |
| 44 | +- Release train gates (memory skill opencodex-release-train): push dev → wait |
| 45 | + for BOTH `ci.yml` and `service-lifecycle.yml` green on the exact release SHA |
| 46 | + → dev→preview, publish preview → preview→main, publish stable → verify |
| 47 | + `npm view @bitkyc08/opencodex dist-tags --json`. |
| 48 | + |
| 49 | +## Verdict |
| 50 | + |
| 51 | +**Content: LOCAL GATES GREEN — ready to open the PR.** All five fixes are |
| 52 | +complete, locally gate-green, regression-covered, and documented across |
| 53 | +locales. This supports "ready to open the PR", not an unqualified merge GO. |
| 54 | + |
| 55 | +**Merge state: NOT READY until three external conditions complete** (audit |
| 56 | +round 1, reviewer Peirce, all accepted): |
| 57 | + |
| 58 | +1. **Explicit security review (mandatory, not optional).** WP3 adds DNS-resolved |
| 59 | + destination-policy enforcement on model discovery (src/codex/catalog.ts), |
| 60 | + directly changing the SSRF boundary in a hardening direction. MAINTAINERS.md |
| 61 | + requires explicit security review for security-boundary changes; practically |
| 62 | + this must come from @Ingwannu (the author — GitHub account @lidge-jun — |
| 63 | + cannot self-approve). |
| 64 | +2. **PR CI green — `ci.yml` only.** Workflow triggers verified: ci.yml runs on |
| 65 | + PRs to dev/main and pushes to main/preview/dev; `gh run list --branch |
| 66 | + codex/bucket2-fixes-260723` is empty (no CI on feature-branch pushes). |
| 67 | + **`service-lifecycle.yml` will NOT run on this PR**: its path filters |
| 68 | + (src/service.ts, src/cli*.ts, src/lib/bun-runtime.ts, package.json, bun.lock, |
| 69 | + the workflow itself) match nothing in this diff. Do not wait for it here; |
| 70 | + the both-workflows gate applies at the release-train SHA when paths match. |
| 71 | +3. **GUI regression-test coverage decision.** Root CI runs only |
| 72 | + `bun test --isolate tests` (ci.yml:72); `gui/tests/claude-code-autoconnect.test.tsx` |
| 73 | + (WP4's 5 SSR cases) is NOT executed by CI — the auto-connect regression pin is |
| 74 | + currently local-only. Options: (a) wire it into CI — a workflow change, which |
| 75 | + is itself a security-boundary edit requiring its own review, so NOT done |
| 76 | + silently here; (b) relocate the cases into a CI-executed suite; (c) accept and |
| 77 | + document the gap. Default recommendation: (b) or (a) as a follow-up PR; the |
| 78 | + gap does not block merging this branch if the reviewer accepts it. |
| 79 | + |
| 80 | +**Promotion remains a maintainer decision.** After dev merge, dev→preview |
| 81 | +(version `2.7.x-preview.*`) then preview→main (`2.7.x`) follows the release |
| 82 | +train with both CI workflows green on the exact release SHA (when their path |
| 83 | +filters match), then npm dist-tag verification. dev already carries 26 |
| 84 | +unreleased commits, so the next train ships more than these five fixes. |
| 85 | + |
| 86 | +**NOT allowed:** direct merge of this branch into `preview` or `main` — that |
| 87 | +bypasses the dev-integration policy and skips required CI. |
| 88 | + |
| 89 | +## Recommended next action |
| 90 | + |
| 91 | +Open the PR to `dev` (user decision — withheld per instruction), watch ci.yml |
| 92 | +on the PR, obtain @Ingwannu's approval explicitly covering the SSRF-boundary |
| 93 | +change, decide the GUI-test coverage question, then let the maintainer run the |
| 94 | +preview/main train when ready. `git merge-tree` confirms the branch merges |
| 95 | +cleanly into origin/dev today (exit 0). Note: `dev` branch protection is |
| 96 | +policy-only (no GitHub branch protection rules), so approval/CI discipline is |
| 97 | +social, not enforced. |
| 98 | + |
| 99 | +## Watch items |
| 100 | + |
| 101 | +- Local `dev` branch in the main checkout is +12/-0 vs origin/dev (unpushed |
| 102 | + work including the a89504fc server fix and earlier devlog units) unrelated to |
| 103 | + this branch; keep it out of this merge decision, but account for it before |
| 104 | + any dev push. |
| 105 | +- #290 remains open (needs-info); it is not a merge blocker. |
0 commit comments