-
Notifications
You must be signed in to change notification settings - Fork 1.3k
[WRONG BRANCH] promote dev onto main for v2.35.0 #2824
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
Closed
Closed
Changes from all commits
Commits
Show all changes
111 commits
Select commit
Hold shift + click to select a range
790a581
fix(xai): normalize web search on the Grok CLI proxy, not just the pu…
olddonkey 2a0ab4b
fix(cli): neutralize usage report terminal controls
luvs01 63941b5
fix(integrations): ignore JSON object key order in ownership
Ingwannu aac50fe
docs(devlog): record the v2.34.0 release train outcome
lidge-jun 8b1b65b
Merge pull request #2762 from lidge-jun/codex/release-train-record-2340
lidge-jun 3110bd1
fix(ci): avoid release-doc email false positive
Ingwannu 076ad30
fix(release): advance dev after v2.34.0
Ingwannu 913f844
Merge pull request #2766 from lidge-jun/ingw/fix-release-doc-privacy-…
lidge-jun 5070175
fix(moonshot): intersect nested schema bounds
Ingwannu 1d547fe
fix(openai): strip unsupported forward cache options
Ingwannu ae5d399
Merge pull request #2733 from luvs01/fix/cli-usage-terminal-controls
lidge-jun 0821ce9
Merge pull request #2726 from olddonkey/fix/xai-cli-web-search-preview
lidge-jun d1def68
Merge pull request #2761 from lidge-jun/ingw/fix-zcode-key-order-2759
lidge-jun 3b53024
Merge pull request #2764 from lidge-jun/ingw/fix-moonshot-nested-sche…
lidge-jun 50e9556
Merge pull request #2767 from lidge-jun/ingw/fix-canonical-prompt-cac…
lidge-jun d3481ee
docs(devlog): plan the ocx agentic control surface roadmap
lidge-jun d896882
docs(devlog): fold seven audit blockers into the ocx roadmap
lidge-jun 1ef9163
docs(devlog): reconcile the roadmap phase map with the wp3b split
lidge-jun 4a0cbb5
fix(tests): reap the recovery proxy instead of trusting `stop`
olddonkey be11a65
fix(storage): atomically commit cleanup run metadata
luvs01 d083f32
docs(devlog): phrase the empty-catch defect so the hygiene scanner ca…
lidge-jun e17dbfa
fix(cli): stop the CLI reporting success for failed management calls
lidge-jun 2fd41eb
fix(cli): reset process.exitCode before the provider and models handlers
lidge-jun af9d608
fix(cli): make the transport fixes reachable and cover tray
lidge-jun f8b13ed
fix(cli): report a fenced management plane as FAIL, not WARN
lidge-jun 9eb7072
docs(devlog): correct wp3's plan against the tree before implementing it
lidge-jun 0bf2a10
docs(devlog): audit the wp3 amendment and fix four defects in it
lidge-jun c1f41a6
fix(cli): settle the 409 exit code against the pre-existing native-pr…
lidge-jun f37ffe8
feat(server): declare every management route and reconcile it against…
lidge-jun 7aef44e
feat(cli): add ocx capabilities as the machine-readable surface index
lidge-jun 3216932
fix(cli): report version skew between this ocx and the running proxy
lidge-jun 00d9b1c
test(server): drop a dead try/catch the route-scanner probe never needed
lidge-jun efaf2d9
test(cli): assert the proxy version threaded through the direct trans…
lidge-jun d631470
fix(cli): make exit codes and --json usable from a script
lidge-jun fc10889
docs(devlog): record wp3b and the two places 025 under-specified the …
lidge-jun 6f66df8
fix(cli): a contended catalog lock is a skip, not a sync-cache failure
lidge-jun 40cf944
fix(cli): stop sync-cache reporting a failed refresh as a deliberate …
lidge-jun e82c43a
fix(cli): treat an absent catalog as nothing-to-sync, not a sync-cach…
lidge-jun f3a360c
fix(cli): stop discarding fields the API already returns
lidge-jun 3fc82f6
docs(skill): add the repo-owned ocx operating skill with a generated …
lidge-jun 3f810ad
fix(cli): show access key usage instead of only id, name, and prefix
lidge-jun b68edc0
feat(cli): add the pool-steering verbs and stop a log filter from lying
lidge-jun 72e5c91
ci: name the skill-surface regeneration in its own step
lidge-jun b9ebfd7
docs(devlog): record wp4, including a test that could not detect its …
lidge-jun 88295c2
feat(cli): declare ocx logs in the capability table
lidge-jun 9c4ae1c
feat(usage): attribute usage per account for non-Codex OAuth providers
lidge-jun 1bbd6b9
feat(cli): close the GUI-only gaps for storage, inspection, and nativ…
lidge-jun 368d85b
docs(devlog): record wp9 and the audit finding that disproved my own …
lidge-jun 07f943d
fix(cli): stop logout and doctor --json reporting success for work th…
lidge-jun bf0185e
test(cli): make capability/route parity bidirectional with a dated ra…
lidge-jun 1502014
docs(devlog): record wp10 and the two claims the plan audit disproved
lidge-jun 41b4d31
test(cli): seed the store so the logout non-mutation assertions are n…
lidge-jun 6a377ca
fix(cli): close the audit findings my own logout fix left open
lidge-jun 2441103
docs(devlog): record the second audit round, including two defects in…
lidge-jun 396fcfa
fix(cli): validate the logout provider by shape instead of naming das…
lidge-jun 1f07b68
fix(gui): warn when cleanup metadata is not saved
luvs01 d829215
fix(google-antigravity): gate the thought-signature sentinel correctly
lidge-jun 3468cea
fix(google-antigravity): keep the sentinel out of the real-signature …
lidge-jun 29be459
Merge pull request #2740 from luvs01/fix/storage-policy-metadata-race
lidge-jun 5511a42
fix(responses): coalesce buffered deltas so a stalled consumer cannot…
lidge-jun 922d534
feat(cursor): observe mid-stream envelope echoes and call-id corrupti…
lidge-jun 1e46430
fix(claude): derive response.failed status from the classified error …
lidge-jun eebd191
fix(google-antigravity): match the model component, not the whole Ver…
lidge-jun 7232a60
feat(cursor): umbrella capability catalog — single source of truth fo…
lidge-jun bdc1e97
Merge pull request #2794 from lidge-jun/codex/antigravity-signature-f…
lidge-jun fe063d1
Merge pull request #2747 from olddonkey/fix/update-recovery-orphan-cl…
lidge-jun 624e81a
docs(devlog): record the admin merges of #2794 and #2747
lidge-jun 7dd01bf
Merge pull request #2806 from lidge-jun/codex/round-docs
lidge-jun fbb5b02
feat(cursor): collapse the picker into umbrella rows routed through t…
lidge-jun 4d9bf16
docs(devlog): close the cursor merge-train round log (#2808)
lidge-jun afaf0a1
docs(devlog): record where the admin merge stopped
lidge-jun 8d9e286
Merge pull request #2809 from lidge-jun/codex/admin-merge-record
lidge-jun 80e251a
fix(codex): fsync coordinator adoption files with a writable handle (…
lidge-jun c70f412
Merge pull request #2773 from lidge-jun/codex/ocx-agentic-control-roa…
lidge-jun cf1a572
fix(kiro): explain empty exec output and stop reopening a delivered f…
lidge-jun 60537f0
fix(kiro): address review findings on completion suppression and fail…
lidge-jun 65c88c9
fix(cli): diagnose and refuse a colliding service token file
ea8f04f
Merge pull request #2775 from lidge-jun/codex/ocx-transport-honesty
lidge-jun 7162034
fix(cli): stop capabilities from advertising routes the CLI does not …
b1cf248
Merge pull request #2778 from lidge-jun/codex/ocx-capability-registry
lidge-jun ccc4821
fix(cli): keep restore-back and sync-cache --json as a single JSON value
5be31bd
Merge pull request #2779 from lidge-jun/codex/ocx-uniform-contract
lidge-jun c219744
merge dest to keep transport-honesty and capabilities fixes
77d1281
fix(cli): show cached Codex quota on account list --quota
cc6ea42
merge dest after 2778/2779 landed
78f3552
Merge pull request #2780 from lidge-jun/codex/ocx-dto-fidelity
lidge-jun ab0c69b
merge dest before pause-exhausted honesty fix
459c542
fix(cli): pause-exhausted is not success when some accounts were not …
761cb4c
fix(cursor): keep failure guidance for a failed exec wrapper
lidge-jun ad766f1
Merge pull request #2782 from lidge-jun/codex/ocx-new-verbs
lidge-jun d1ea980
merge dest before attribution hash fix
16b38d8
fix(usage): namespace OAuth account labels by provider
1768510
Merge pull request #2784 from lidge-jun/codex/ocx-account-attribution
lidge-jun 0b389bf
merge dest before storage codex-logs fix
a4478cd
fix(cli): keep ocx storage codex-logs as the log-guard entry
3b8a6ae
Merge pull request #2787 from lidge-jun/codex/ocx-gui-parity
lidge-jun 8490718
merge dest before skill contract fixes
04fcbc3
fix(skill): stop teaching false exit-0 and JSON-error contracts
6d0d7f0
Merge pull request #2788 from lidge-jun/codex/ocx-agent-skill
lidge-jun 32c1b02
merge dest before gap-closure review
ba79798
fix(cli): refuse JSON spellings doctor ignored and usage-exit-1 on de…
7794485
Merge pull request #2790 from lidge-jun/codex/ocx-gap-closure
lidge-jun b557a81
fix(kiro): answer a delivered final answer locally instead of asking …
lidge-jun 7cdb55b
fix(kiro): track the local-terminal stream's lifetime like every othe…
lidge-jun ca73ac1
fix(cli): unblock dest CI after the agentic-control stack
f1d819b
Merge pull request #2820 from lidge-jun/ocx/dest-ci-honesty
lidge-jun 7781a02
fix(kiro): log a locally answered turn as exact zero usage, not an es…
lidge-jun b074084
fix(kiro): mark the physical attempt as locally answered too
lidge-jun d9d2655
fix(tools): state the code-mode echo rule before the first call, not …
lidge-jun 68eaf45
fix(kiro): remember a delivered final answer instead of trusting the …
lidge-jun d7a82a8
Merge pull request #2819 from lidge-jun/codex/kiro-exec-empty-output-…
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
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
116 changes: 116 additions & 0 deletions
116
devlog/_plan/260827_igwanu_bug_pr_merge_round/000_plan.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,116 @@ | ||
| # 000 — igwanu bug-PR merge round: plan | ||
|
|
||
| Round base: `dev @ 8b1b65b8d` (local == `origin/dev`, verified 2026-08-27). | ||
| Scope: the 13 open **bug**-labelled PRs. Four are Ingwannu's (#2767, #2766, #2764, | ||
| #2761); nine are other authors' (#2747, #2745, #2740, #2733, #2729, #2726, #2693, | ||
| #2638, #2497). | ||
|
|
||
| Enhancement-labelled PRs are explicitly out of scope for this round. | ||
|
|
||
| ## The finding that orders the whole round | ||
|
|
||
| Three PRs (#2767, #2764, #2747) show **failing required CI** — `ci`, `macos`, | ||
| `test 3/4`, `gates` — while their own merged trees compile clean. The failure is | ||
| not theirs. Every one of them fails the same repository-wide assertion: | ||
|
|
||
| ``` | ||
| error: package.json version 2.34.0 equals release tag v2.34.0, but this commit is | ||
| not the one that tag names. The tree claims an already-published version. | ||
| (fail) release version line > the in-tree version is never behind a released one | ||
| ``` | ||
|
|
||
| `dev` still carries `2.34.0` after tag `v2.34.0` shipped, so *every* PR opened | ||
| after the release train inherits a red matrix. A second shared failure hits | ||
| `gates`: `privacy:scan` reads the scp-style SSH remote principal recorded in | ||
| `devlog/_plan/260827_release_train/020_preview_release.md` as an email address. | ||
|
|
||
| **#2766 repairs both.** It is the keystone: until it lands, no other PR in this | ||
| round can produce a trustworthy green matrix, and re-running their CI is wasted | ||
| work. This is the inverse of the previous round's lesson — there, green checks | ||
| were not evidence of health; here, red checks are not evidence of harm. | ||
|
|
||
| Evidence: run `33081644562` job `98550259965` (#2767), run `33080634739` job | ||
| `98546624127` (#2764), run `33059606933` job `98534630924` (#2747) — each shows | ||
| `1 fail` and that one failure is `release version line`. | ||
|
|
||
| ## Merged-tree gate (this round's own evidence, not GitHub's) | ||
|
|
||
| Every PR head was fetched, merged against `dev @ 8b1b65b8d` with | ||
| `git merge-tree --write-tree`, committed as `mtp/<n>`, checked out to an isolated | ||
| worktree sharing this repo's `node_modules`, and compiled. | ||
|
|
||
| | PR | ahead | behind dev | merge-tree | tsc on MERGED tree | | ||
| |---|---|---|---|---| | ||
| | #2767 | 1 | 0 | CLEAN | OK | | ||
| | #2766 | 2 | 0 | CLEAN | OK | | ||
| | #2764 | 1 | 0 | CLEAN | OK | | ||
| | #2761 | 1 | 2 | CLEAN | OK | | ||
| | #2747 | 1 | 26 | CLEAN | OK | | ||
| | #2745 | 2 | 26 | CLEAN | OK | | ||
| | #2740 | 1 | 26 | CLEAN | OK | | ||
| | #2733 | 1 | 43 | CLEAN | OK | | ||
| | #2729 | 2 | 89 | CLEAN | OK | | ||
| | #2726 | 1 | 63 | CLEAN | OK | | ||
| | #2693 | 2 | 118 | CLEAN | OK | | ||
| | #2638 | 2 | 179 | CLEAN | OK | | ||
| | #2497 | 1 | **386** | **CONFLICT** | not reachable | | ||
|
|
||
| The typecheck gate was itself verified rather than trusted: 12 runs finishing in | ||
| ~12s looked like a no-op, so a deliberate `const x: number = 'str'` was injected | ||
| into a merged worktree and `tsc` returned `error TS2322`, exit 1. The speed is | ||
| real — this repository is on the native TypeScript 7.0.2 compiler (~0.44s full | ||
| typecheck). The gate works. | ||
|
|
||
| ## Cross-PR file contention | ||
|
|
||
| `src/server/responses/core.ts` — **#2745, #2638, #2497**. Pairwise | ||
| `git merge-tree` required before any second one of those lands; textual | ||
| mergeability is not behavioral compatibility on the auth/routing boundary. | ||
|
|
||
| `src/adapters/openai-chat.ts` — #2764 only. `src/adapters/openai-responses.ts` | ||
| — #2767 only. `src/codex/auth-context.ts` — #2638 and #2497. | ||
| No other file is touched by two in-scope PRs. | ||
|
|
||
| ## Loop-spec | ||
|
|
||
| - Loop archetype: verifier-defined (spec-satisfaction repair per PR). | ||
| - Write scope: `devlog/_plan/260827_igwanu_bug_pr_merge_round/`, `src/` and | ||
| `tests/` only where needed to land or reimplement a PR, plus PR metadata on | ||
| GitHub and `codex/` topic branches. | ||
| - Out of scope: `main`, `preview`, releases, tags, npm publish, docs deploy, | ||
| enhancement PRs, force-push, history rewrite. | ||
| - Bounds: `dev` is push-protected — every lane travels a `codex/` branch and a PR | ||
| targeting `dev`. `bun test` takes a machine-wide lock: one suite at a time, | ||
| long suites on `ssh lidge` via `ocx-run`. Never `OCX_TEST_NO_QUEUE=1`. | ||
|
|
||
| ## Work-phase map (one phase = one full PABCD cycle) | ||
|
|
||
| | WP | Doc | Slice | Depends on | | ||
| |----|-----|-------|------------| | ||
| | wp1 | 000 | Docs-only roadmap: intake, merged-tree gate, contention map, lanes | — | | ||
| | wp2 | 010 | **Keystone** #2766 — unblock the repository-wide CI gates | wp1 | | ||
| | wp3 | 020 | Ingwannu remainder #2761, #2764, #2767 | wp2 | | ||
| | wp4 | 030 | Clean approved lane #2733, #2726, #2747 | wp2 | | ||
| | wp5 | 040 | Maintainer changes-requested #2745, #2729 | wp2 | | ||
| | wp6 | 050 | Contributor remainder #2740, #2693, #2638 | wp2, wp5 | | ||
| | wp7 | 060 | #2497 adjudication + round close-out | all | | ||
|
|
||
| ## Standing gates (inherited, all mandatory) | ||
|
|
||
| 1. Compile evidence comes from the MERGED tree, never the PR head alone. | ||
| 2. Any two PRs touching a shared file get `git merge-tree` before either merges. | ||
| 3. Green checks are not health unless the list includes `ci` / `test N/4` / | ||
| `macos`. **Corollary discovered this round: red checks are not harm until the | ||
| shared baseline is green.** | ||
| 4. One `bun test` suite at a time; remove a stale | ||
| `/tmp/opencodex-bun-test.lock` rather than bypassing the queue. | ||
| 5. Every lane travels a `codex/` branch and a PR targeting `dev`. | ||
| 6. A safety net that exists in code is not a safety net that functions. | ||
|
|
||
| ## Accept criteria (mirrored into goalplan criteria[]) | ||
|
|
||
| - c1 — all 13 PRs carry a recorded terminal disposition with SHA or reason. | ||
| - c2 — merged-tree compile gate ran for every candidate (this doc's table). | ||
| - c3 — each landed change carries a focused test receipt from the merged tree. | ||
| - c4 — `dev` advanced only through PRs targeting `dev`. | ||
| - c5 — auth/credential/OAuth surfaces are not landed autonomously. |
114 changes: 114 additions & 0 deletions
114
devlog/_plan/260827_igwanu_bug_pr_merge_round/010_phase1.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,114 @@ | ||
| # 010 — wp2: the keystone, #2766 | ||
|
|
||
| **Lane L1 (commit-then-merge). Every other MERGE in this round serializes behind | ||
| this one.** | ||
|
|
||
| Precisely scoped: review, focused verification, rebases, and approval requests for | ||
| other PRs run in parallel — their changed paths are disjoint from this one's | ||
| (`package.json` plus a release-runbook document). What must wait is the act of | ||
| merging, because landing anything else first leaves `dev` sitting on known-red | ||
| release-version and privacy gates. | ||
|
|
||
| PR #2766 `ingw/fix-release-doc-privacy-scan-2762` — head `076ad3036`, ready | ||
| (not draft), MERGEABLE, 0 commits behind `dev`, 30 checks with **zero failures**. | ||
| It is the only PR in the round whose matrix is already green, because it is the | ||
| one that repairs the matrix. | ||
|
|
||
| ## Why it is the keystone | ||
|
|
||
| Two repository-wide gates went red after the v2.34.0 release train, and they fail | ||
| on `dev` itself, not on any contributor's code: | ||
|
|
||
| 1. `tests/release-version-line.test.ts` — `package.json` is `2.34.0` and tag | ||
| `v2.34.0` is published, so every commit after the tag "claims an | ||
| already-published version". Fails `ci`, `macos`, `test 3/4`. | ||
| 2. `privacy:scan` — `devlog/_plan/260827_release_train/020_preview_release.md:36` | ||
| contains a literal scp-style SSH remote whose `user@host` principal the scanner | ||
| reads as an email address. Fails `gates`. | ||
|
|
||
| Confirmed inherited by #2767, #2764, #2747. Merging anything else first means | ||
| reading a red matrix that says nothing about the PR under review. | ||
|
|
||
| ## MODIFY map (exact, already authored by the PR) | ||
|
|
||
| MODIFY `package.json`: | ||
|
|
||
| ```diff | ||
| - "version": "2.34.0", | ||
| + "version": "2.35.0", | ||
| ``` | ||
|
|
||
| MODIFY `devlog/_plan/260827_release_train/020_preview_release.md`: | ||
|
|
||
| The runbook's push line is rewritten to build the destination from two shell | ||
| variables (`release_host=github.com`, `release_repo=lidge-jun/opencodex.git`) and | ||
| interpolate them, so the scp-style principal never appears as one literal token. | ||
| The exact diff is on the PR; it is not reproduced here, because quoting it | ||
| verbatim would reintroduce the very literal the scan rejects — this document is | ||
| itself scanned. | ||
|
|
||
| The push destination is byte-identical after expansion and the deploy-key override | ||
| is preserved. This is documentation text, not executed release automation. | ||
|
|
||
| ## Security-boundary judgement (MAINTAINERS.md) | ||
|
|
||
| The PR touches `package.json` version metadata and a release runbook document. | ||
| `AGENTS.md` flags release automation — `scripts/release.ts`, | ||
| `.github/workflows/release.yml` — for mandatory security review. **Neither file is | ||
| touched.** Verified: `release.yml` triggers on `workflow_dispatch` only, with an | ||
| explicit `version` input that must equal `package.json` and an immutable commit | ||
| input. A version bump on `dev` therefore cannot initiate a publish; a human | ||
| dispatch with an explicit version is required. | ||
|
|
||
| Dependencies and lockfiles are unchanged, and no scheduled, push-triggered, | ||
| auto-merge, or version-keyed publish path exists: `release.yml` is | ||
| `workflow_dispatch`-only and additionally rejects any ref that is not `main` or | ||
| `preview`. A version bump on `dev` cannot publish. | ||
|
|
||
| **It is still not unreviewed-autonomous.** | ||
| `.github/scripts/pr-sponsored-surface.cjs` lists `package.json` as a restricted | ||
| surface, and `MAINTAINERS.md` requires approval from at least one maintainer who | ||
| is not the author, plus explicit security review for release/package boundaries. | ||
| The PR body's unticked box says exactly this. | ||
|
|
||
| A round-level instruction to "merge the bug PRs" is not the exact-head PR approval | ||
| that `MAINTAINERS.md` and GitHub require. **Approval gate: before merge, a | ||
| non-author maintainer approves #2766 at its exact head.** `Ingwannu` is the | ||
| author, so the approval must come from another maintainer account. Cannot be | ||
| self-satisfied and cannot be inferred from this document. | ||
|
|
||
| ## TESTS | ||
|
|
||
| No new test. The behavior proof is that the two already-red repository gates turn | ||
| green, which is observable on the merged tree and on post-merge `dev` CI. | ||
|
|
||
| ## Verification (C) | ||
|
|
||
| ```bash | ||
| # merged tree already built as mtp/2766 | ||
| bun x tsc --noEmit # expect exit 0 | ||
| bun test tests/release-version-line.test.ts # expect 3 pass / 0 fail | ||
| bun run privacy:scan # expect exit 0 | ||
| ``` | ||
|
|
||
| Post-merge, the decisive evidence is the *next* PR's matrix: re-run CI on #2767 or | ||
| #2764 and confirm `ci`, `macos`, `test 3/4`, `gates` go green with no change to | ||
| their own diffs. That is the proof the keystone actually was the keystone. | ||
|
|
||
| ## Lane execution | ||
|
|
||
| Ready, mergeable, green, 0 behind, targets `dev`, needs no rebase — so no | ||
| `codex/` branch is required. | ||
|
|
||
| Merge sequence, in order, none skippable: | ||
|
|
||
| 1. Confirm the merged-tree receipts above. | ||
| 2. **Obtain a non-author maintainer approval at the exact head `076ad3036`.** | ||
| `gh pr view 2766 --json reviewDecision` must read `APPROVED`, not | ||
| `REVIEW_REQUIRED`. | ||
| 3. `gh pr merge 2766`. | ||
|
|
||
| If step 2 cannot be satisfied in this round, #2766 exits as **NEEDS_HUMAN | ||
| (approval)** — and because it is the keystone, every PR gated behind it inherits | ||
| that outcome. That is a real possible terminal state for this round, not a | ||
| formality to route around. |
104 changes: 104 additions & 0 deletions
104
devlog/_plan/260827_igwanu_bug_pr_merge_round/011_wp1_outcome.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,104 @@ | ||
| # 011 — wp1 outcome: roadmap lock | ||
|
|
||
| Docs-only cycle. No production code changed. Deliverable is the plan unit itself: | ||
| `000_plan.md` plus six decade docs, locked at `77635d8c9`. | ||
|
|
||
| ## A-gate: two independent Sol-high reviewers, four rounds | ||
|
|
||
| | Round | Lane | Verdict | Result | | ||
| |---|---|---|---| | ||
| | r1 | facts | NEAR-PASS | 1 correction applied (`27b040931`) | | ||
| | r1 | judgement | **FAIL** | 2 blockers, both accepted | | ||
| | — | judgement re-verify | **FAIL** | 1 blocker incompletely closed | | ||
| | — | judgement re-verify | PASS | both closed | | ||
| | r2 | judgement confirm | PASS | rebound to the repaired files | | ||
|
|
||
| ### What the facts reviewer independently re-derived | ||
|
|
||
| Re-ran `git merge-tree` for all 13 PRs from `dev@8b1b65b8d` and confirmed all 12 | ||
| clean tree hashes matched `mtp/<n>^{tree}` exactly before typechecking, plus the | ||
| `#2497` conflict. Counted every changed path across all 13 PRs and confirmed the | ||
| contention map is exhaustive: `src/codex/auth-context.ts` (#2638, #2497) and | ||
| `src/server/responses/core.ts` (#2745, #2638, #2497), nothing else shared. | ||
|
|
||
| Its correction: the plan had collapsed two distinct shared defects into one per-PR | ||
| line. `test 3/4` and `macos` fail on `release version line`; `gates` fails on | ||
| `privacy:scan`; `ci` is the fan-in. #2747 has no `gates` failure at all because | ||
| its head predates the runbook document. | ||
|
|
||
| ### What the judgement reviewer caught — the two that mattered | ||
|
|
||
| **1. I violated this repository's own security rule.** The plan reproduced the | ||
| unfixed #2745 credential-boundary defect — mechanism, activation sequence, | ||
| remediation direction — inside `devlog/`, a public tracked directory, while the PR | ||
| is open. `AGENTS.md` §"Security working notes" forbids exactly that, and says so in | ||
| a section written because maintainer-authored triage had done it before. | ||
|
|
||
| My error in reasoning: I treated the detail as publishable because the reviewer had | ||
| already written it in a public PR comment. But the rule keys on whether the **fix | ||
| has shipped**, not on where the analysis first appeared. An open PR means | ||
| pre-disclosure. | ||
|
|
||
| The first repair was incomplete — the `TESTS` section still named the regression | ||
| design, which carries the activation shape without the prose. The reviewer caught | ||
| that too. Both are now in `.tmp/2745-security-triage.md` (gitignored, confirmed via | ||
| `git check-ignore`). | ||
|
|
||
| **2. Every merge lane skipped the approval `MAINTAINERS.md` requires.** The plan | ||
| went from "CI green" straight to `gh pr merge`. `MAINTAINERS.md:57-59` requires | ||
| approval from at least one maintainer who is not the author, and | ||
| `.github/scripts/pr-sponsored-surface.cjs:52` lists `package.json` as a restricted | ||
| surface. All four Ingwannu PRs read `REVIEW_REQUIRED`. A round-level instruction | ||
| from the user is not an exact-head PR approval. | ||
|
|
||
| It also refuted the release-safety framing as incomplete rather than wrong: no | ||
| scheduled, push-triggered, auto-merge, or version-keyed publish path exists | ||
| (`release.yml` is `workflow_dispatch`-only and rejects any ref that is not `main` | ||
| or `preview`), but `package.json` is still a restricted surface needing review. | ||
|
|
||
| ### Approval path, resolved | ||
|
|
||
| The operator is authenticated as `lidge-jun` (`gh auth status`), listed in | ||
| `MAINTAINERS.md:10` as project owner. `Ingwannu` is a separate maintainer. A | ||
| `lidge-jun` approval of an Ingwannu-authored PR is therefore a valid non-author | ||
| maintainer approval, confirmed by the reviewer against `MAINTAINERS.md:57-59`. | ||
| The gate is satisfiable without self-approval. | ||
|
|
||
| ## Keystone verification (full suite, remote) | ||
|
|
||
| `mtp/2766` pushed as `codex/mtp-2766-probe`, checked out on `lidge` | ||
| (`~/ocx-ci/opencodex`), full `bun run test` under `ocx-run`: | ||
|
|
||
| ``` | ||
| k2766: OK rc=0 finished 2026-08-28T00:25:04+09:00 | ||
| 15334 pass / 0 fail | ||
| ``` | ||
|
|
||
| Focused, on the same merged tree: | ||
|
|
||
| ``` | ||
| tests/release-version-line.test.ts 3 pass / 0 fail | ||
| bun run privacy:scan Privacy scan passed (exit 0) | ||
| bun x tsc --noEmit exit 0 | ||
| ``` | ||
|
|
||
| On plain `dev` the same scan fails on the runbook literal, and the same test fails | ||
| repository-wide. The keystone claim is proven on both sides. | ||
|
|
||
| ## Gate honesty note | ||
|
|
||
| The typecheck gate was verified rather than trusted: 12 merged trees compiling in | ||
| ~12s looked like a no-op, so a deliberate `const x: number = "str"` was injected | ||
| into a merged worktree — `error TS2322`, exit 1. The speed is real; this repository | ||
| runs the native TypeScript 7.0.2 compiler at ~0.44s for a full typecheck. | ||
|
|
||
| ## Carried into wp2 | ||
|
|
||
| 1. Merge #2766 first; it is the only PR that can produce a trustworthy green | ||
| matrix for the others. Approval at exact head `076ad3036` before merge. | ||
| 2. Review, rebase, and verification of other PRs may proceed in parallel — only | ||
| the merges serialize. | ||
| 3. Follow-up outside this round's scope: the same pre-disclosure material exists | ||
| in `devlog/_plan/260826_wp7e_presence_driven_oauth_failover/` and | ||
| `devlog/_plan/260827_dev_hardening/`. Pre-existing, belongs to other active | ||
| work streams, needs separate authority. **Escalate; do not silently rewrite.** |
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.
For a PR that edits only
skills/ocx/**, thepull_requestworkflow starts but thecifilter at lines 176-193 remains false, so this newly added check andtests/skill-ocx.test.tsare skipped; after merge, thepush.pathsallowlist at lines 28-40 prevents the workflow from starting at all. Consequently a stale generated surface or a hand-written nonexistent command can land without either advertised guard running. Addskills/**to both allowlists so the check is reachable for the files it validates.AGENTS.md reference: AGENTS.md:L180-L191
Useful? React with 👍 / 👎.