-
Notifications
You must be signed in to change notification settings - Fork 820
docs(devlog): record Wave 5C and correct the #1887 consolidation call #1952
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 all commits
660b917
6a9ed2b
8674e7f
529f61e
d071c47
01b8368
0885a27
53f1495
71b3701
a4cc3e6
06ce6c2
0253193
88b4eb3
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 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -49,3 +49,131 @@ a timing change on inference. | |||||||||||||||||
| Each PR either lands with focused tests green on `origin/dev`, or carries a | ||||||||||||||||||
| recorded blocker disposition naming exactly what is missing. Merge order is | ||||||||||||||||||
| preserved and verified with `git merge-base --is-ancestor`. | ||||||||||||||||||
| ## Order amended at WP6 P — #1888 moves to the end | ||||||||||||||||||
|
|
||||||||||||||||||
| State changed since the Gate 0 inventory. #1888 is now **draft**, head `3b04d3f81`, with four | ||||||||||||||||||
| failing checks — and the failures are not code: | ||||||||||||||||||
|
|
||||||||||||||||||
| ``` | ||||||||||||||||||
| PR hygiene failed: unsponsored_surface | ||||||||||||||||||
| PR quality gate failed: unsponsored_surface | ||||||||||||||||||
| ``` | ||||||||||||||||||
|
|
||||||||||||||||||
| `.github/scripts/pr-sponsored-surface.cjs` lists `src/oauth/` as a restricted path, and | ||||||||||||||||||
| #1888 touches `src/oauth/index.ts`. The gate clears only when a maintainer applies the | ||||||||||||||||||
| `maintainer-sponsored` label, which is exactly the authorization boundary `AGENTS.md` | ||||||||||||||||||
| describes for auth surfaces. **An agent applying that label to its own merge would defeat | ||||||||||||||||||
| the control**, so #1888 is reported rather than unblocked, and the train reorders around it: | ||||||||||||||||||
|
|
||||||||||||||||||
| ``` | ||||||||||||||||||
| #1902 → #1884 → #1892 → #1904 → #1898 (then #1888, once sponsored) | ||||||||||||||||||
| ``` | ||||||||||||||||||
|
Comment on lines
+69
to
+70
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. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win List every condition before placing “Once sponsored” omits the Proposed wording-#1902 → `#1884` → `#1892` → `#1904` → `#1898` (then `#1888`, once sponsored)
+#1902 → `#1884` → `#1892` → `#1904` → `#1898` (then `#1888`, after sponsorship, conflict resolution, and required review)📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||
|
|
||||||||||||||||||
| None of the other five touch a restricted path — verified per PR. #1888 loses nothing by | ||||||||||||||||||
| going last: its dependency claim was that continuation scope should precede the others, but | ||||||||||||||||||
| the five remaining PRs touch disjoint files (`src/router.ts` + `providers/derive.ts`; | ||||||||||||||||||
| `adapters/cline-pass-*`; two fastwire test files; `src/chat/inbound.ts`; | ||||||||||||||||||
| `providers/request-pacing.ts`), so none of them consumes its output. | ||||||||||||||||||
|
Comment on lines
+72
to
+76
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 | 🟡 Minor | ⚡ Quick win Remove the withdrawn disjoint-file claim. Lines 74-76 say that the remaining PRs touch disjoint files. Lines 85-88 state that this is false because Proposed wording-the five remaining PRs touch disjoint files (...), so none of them consumes its output.
+the five remaining PRs do not depend on `#1888`'s continuation scope, so none of them consumes its output.📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||
|
|
||||||||||||||||||
| One thing to carry into #1888's eventual review: it now also touches | ||||||||||||||||||
| `src/responses/reasoning-replay-cache.ts`, `src/server/responses/core.ts` and `src/types.ts` — | ||||||||||||||||||
| the three files WP4 changed for the durable destination identity. It will need a rebase, and | ||||||||||||||||||
| the reviewer should check that its account-scoping work composes with the destination scoping | ||||||||||||||||||
| rather than duplicating it. | ||||||||||||||||||
| ## Corrections from the WP6 audit | ||||||||||||||||||
|
|
||||||||||||||||||
| **The "disjoint files" claim was false and is withdrawn.** #1892 and #1904 both modify | ||||||||||||||||||
| `tests/fastwire-characterization-routing.test.ts` and | ||||||||||||||||||
| `tests/fastwire-characterization-wire.test.ts`. Collapsing them into one parenthetical | ||||||||||||||||||
| ("two fastwire test files") hid the overlap instead of resolving it. | ||||||||||||||||||
|
|
||||||||||||||||||
| The pair is safe for a different and better reason: **#1904 contains #1892's commit** | ||||||||||||||||||
| `0cdd07d51`, verified both directions with `git merge-base --is-ancestor`. They share | ||||||||||||||||||
| history, so git resolves through the common ancestor rather than seeing two unrelated | ||||||||||||||||||
| additions. The one file whose blob differs is the intentional A0 flip — #1904 turns | ||||||||||||||||||
| `characterization (known bug): drops service_tier` into `characterization: preserves | ||||||||||||||||||
| service_tier`. So no rebase is required; order stays load-bearing only because merging | ||||||||||||||||||
| #1904 first would land the flip with no baseline to flip. | ||||||||||||||||||
|
Comment on lines
+90
to
+96
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 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -eu
file='devlog/_plan/260817_wave5_execution/060_wave5b_continuation.md'
printf '%s\n' '--- target lines ---'
sed -n '80,135p' "$file"
printf '%s\n' '--- repository refs relevant to the document ---'
git branch --all --no-color | sed -n '1,160p'
printf '%s\n' '--- commit and ref resolution ---'
for ref in 0cdd07d51 origin/dev dev; do
if git rev-parse --verify "$ref^{commit}" >/dev/null 2>&1; then
printf '%s -> %s\n' "$ref" "$(git rev-parse "$ref^{commit}")"
else
printf '%s -> unavailable\n' "$ref"
fi
done
printf '%s\n' '--- ancestry checks for available candidate refs ---'
base="$(git rev-parse --verify 0cdd07d51^{commit})"
for ref in $(git for-each-ref --format='%(refname:short)' refs/heads refs/remotes | sed -n '1,200p'); do
if head="$(git rev-parse --verify "$ref^{commit}" 2>/dev/null)"; then
if git merge-base --is-ancestor "$base" "$head"; then
printf '0cdd07d51 is ancestor of %s (%s)\n' "$ref" "$head"
fi
fi
done
printf '%s\n' '--- document references to merge-order and verification claims ---'
rg -n -C 3 '0cdd07d51|merge-base|ancestor|first-parent|`#1884`|`#1888`|`#1892`|`#1902`|`#1904`|order|sponsor|blocker' "$file"Repository: lidge-jun/opencodex Length of output: 12669 🏁 Script executed: #!/bin/bash
set -eu
file='devlog/_plan/260817_wave5_execution/060_wave5b_continuation.md'
printf '%s\n' '--- surrounding document sections ---'
sed -n '1,82p' "$file"
sed -n '135,185p' "$file"
printf '%s\n' '--- all commit identifiers and PR references ---'
rg -n -o '#(1884|1888|1892|1898|1902|1904)|[0-9a-f]{9,40}' "$file" | sed -n '1,240p'
printf '%s\n' '--- refs and object types ---'
git show-ref --head
for sha in 552a62cd8 dec332c49 2a9f08324 0cdd07d51; do
if git cat-file -e "$sha^{commit}" 2>/dev/null; then
printf '%s -> %s\n' "$sha" "$(git rev-parse "$sha^{commit}")"
else
printf '%s -> unavailable\n' "$sha"
fi
done
printf '%s\n' '--- pairwise ancestry checks for documented commits ---'
for a in 552a62cd8 dec332c49 2a9f08324 0cdd07d51; do
for b in 552a62cd8 dec332c49 2a9f08324 0cdd07d51 dev; do
if git cat-file -e "$a^{commit}" 2>/dev/null && git cat-file -e "$b^{commit}" 2>/dev/null &&
git merge-base --is-ancestor "$a" "$b"; then
printf '%s -> %s\n' "$a" "$b"
fi
done
done
printf '%s\n' '--- first-parent history containing documented landed commits ---'
git log --first-parent --oneline --decorate --ancestry-path 552a62cd8..dev -- 2>/dev/null |
rg '552a62cd8|dec332c49|2a9f08324|0cdd07d51|Merge' -m 80 || trueRepository: lidge-jun/opencodex Length of output: 8876 Document first-parent order evidence. At At lines 124-125, the ancestry checks establish inclusion in 🧰 Tools🪛 markdownlint-cli2 (0.23.2)[warning] 96-96: No space after hash on atx style heading (MD018, no-missing-space-atx) 🤖 Prompt for AI Agents |
||||||||||||||||||
|
|
||||||||||||||||||
| A full sequential merge of `#1902 → #1884 → #1892 → #1904 → #1898` onto `origin/dev` in a | ||||||||||||||||||
| scratch worktree produced **five clean merges, zero conflicts**. | ||||||||||||||||||
|
|
||||||||||||||||||
| **#1888's sponsorship label is its third blocker, not its first.** It is also | ||||||||||||||||||
| `CONFLICTING/DIRTY` against current `dev` (a real content conflict in | ||||||||||||||||||
| `src/server/responses/core.ts`) and carries `CHANGES_REQUESTED`. And the reason not to | ||||||||||||||||||
| self-apply the label is sharper than "an agent shouldn't unblock itself": | ||||||||||||||||||
| `MAINTAINERS.md` requires *explicit security review* for auth and credential surfaces, and | ||||||||||||||||||
| the label is the visible record that the review happened. Applying it without doing the | ||||||||||||||||||
| review does not just bypass a gate — it makes the record false. | ||||||||||||||||||
|
|
||||||||||||||||||
| **The train's real gate is maintainer approval.** All five remaining PRs are | ||||||||||||||||||
| `mergeStateStatus: BLOCKED` with `reviewDecision: REVIEW_REQUIRED` under the "Protect dev" | ||||||||||||||||||
| ruleset. Merge order was never the binding constraint. | ||||||||||||||||||
|
|
||||||||||||||||||
| ### Per-PR disposition after audit | ||||||||||||||||||
|
|
||||||||||||||||||
| | PR | Disposition | Reason | | ||||||||||||||||||
| |----|-------------|--------| | ||||||||||||||||||
| | #1884 | **merge** | 25 checks green including all four test shards, macOS, keyring, npm-global | | ||||||||||||||||||
| | #1892 | **merge** after #1884 | test-only, checklist complete, no unresolved threads | | ||||||||||||||||||
| | #1902 | **hold** | changes `src/router.ts` and `src/providers/derive.ts` — production routing — with no `ci`, no `test 1/4..4/4`, no `gates` at this head. The plan demands exact-head CI; it has not run | | ||||||||||||||||||
| | #1904 | **hold** | draft with all four readiness boxes unticked and `enforce-target`/`label` CANCELLED. The draft state is the gate working | | ||||||||||||||||||
| | #1898 | **defer, reason recorded** | draft. Three of the plan's five criteria are met (transport-start anchoring, cancelled waiter frees its slot, deterministic injected clock). Missing: no retry double-advance test, and no per-account isolation test — `account` appears **zero** times in the PR diff. Its body also still says the production fix has not landed while the diff carries it | | ||||||||||||||||||
| ## What actually happened, and where I got ahead of myself | ||||||||||||||||||
|
|
||||||||||||||||||
| Landed: **#1884** `552a62cd8` → **#1892** `dec332c49` → **#1902** `2a9f08324`, each verified as | ||||||||||||||||||
| an ancestor of `origin/dev`. | ||||||||||||||||||
|
|
||||||||||||||||||
| **#1902: I merged about eight minutes before the run could be judged.** The prior round held | ||||||||||||||||||
| it for lacking exact-head CI. | ||||||||||||||||||
| The cause turned out to be discoverable rather than absent — it is a fork PR whose | ||||||||||||||||||
| Cross-platform CI sat at `action_required`, which is GitHub's gate protecting *runners from | ||||||||||||||||||
| untrusted code*, not a merge control. Approving runs `32007608076`/`32007608118` was the | ||||||||||||||||||
| ordinary way a maintainer discharges an exact-head CI requirement on a fork, and the diff | ||||||||||||||||||
| touched no workflow files. | ||||||||||||||||||
|
|
||||||||||||||||||
| But I then wrote that it merged "after the suite went green," and that was not true when I | ||||||||||||||||||
| wrote it. The merge landed at `00:36:18Z`; `test 2/4` reported at `00:36:23`, `test 4/4` at | ||||||||||||||||||
| `00:36:30`, `npm-global windows` at `00:37:32`, `macos` at `00:43:58`, and the aggregating | ||||||||||||||||||
| `ci` job at `00:44:03` — so the gap to a *decidable* run was about eight minutes, not the | ||||||||||||||||||
| twelve seconds to the last shard. Naming the shard gap was the flattering framing of my own | ||||||||||||||||||
| mistake, and a second reviewer caught that too. | ||||||||||||||||||
|
|
||||||||||||||||||
| Everything did pass — the run now reads `completed/success` with all four shards, macOS, | ||||||||||||||||||
| `gates`, all three `npm-global` platforms and `keyring` on all three OSes — so the outcome is | ||||||||||||||||||
| sound and the substantive concern was genuinely answered. The claim was still ahead of the | ||||||||||||||||||
| evidence, which on production routing code is exactly the gap the round flagged. | ||||||||||||||||||
|
|
||||||||||||||||||
| **#1892: the standard was applied unevenly.** Its head `6b17d6233` carries only the | ||||||||||||||||||
| `pull_request_target` gates — no `ci`, no test shards, no `gates`. That is the same deficiency | ||||||||||||||||||
| #1902 was held for. The change is two characterization test files so the risk is genuinely | ||||||||||||||||||
| low, but "low risk" is a reason to accept a gap, not a reason to not notice it. | ||||||||||||||||||
|
|
||||||||||||||||||
| **No approving review artifact exists on any of the three.** All merged through the admin | ||||||||||||||||||
| bypass on `Protect dev`. That is consistent with `MAINTAINERS.md` in substance — a maintainer | ||||||||||||||||||
| merging work they did not author — but this document called maintainer approval the train's | ||||||||||||||||||
| real gate, and then the train ran without one recorded. | ||||||||||||||||||
|
|
||||||||||||||||||
| `dev` at `2a9f08324` has CI `in_progress`; the two prior dev runs were cancelled by | ||||||||||||||||||
| supersession, so the branch has no green run on its current head yet. That is the thing to | ||||||||||||||||||
| watch before promotion, not the individual PR runs. | ||||||||||||||||||
| ## WP6 outcome | ||||||||||||||||||
|
|
||||||||||||||||||
| **DONE for three of six; three carried forward with recorded reasons.** | ||||||||||||||||||
|
|
||||||||||||||||||
| | PR | Outcome | Evidence | | ||||||||||||||||||
| |----|---------|----------| | ||||||||||||||||||
| | #1884 | merged | `552a62cd8`, 25 checks green including all four shards, macOS, keyring, npm-global | | ||||||||||||||||||
| | #1892 | merged | `dec332c49`, test-only; no exact-head test CI, noted above | | ||||||||||||||||||
| | #1902 | merged | `2a9f08324`, run `32007608076` `completed/success` — four shards, macOS, gates, npm-global ×3, keyring ×3 | | ||||||||||||||||||
| | #1904 | **held** | draft, four readiness boxes unticked; its baseline #1892 is now on `dev`, and it needs no rebase — commented on the PR | | ||||||||||||||||||
| | #1898 | **deferred** | draft; missing the retry double-advance and per-account isolation tests this plan required — commented on the PR with both named | | ||||||||||||||||||
| | #1888 | **blocked** | `CONFLICTING/DIRTY`, `CHANGES_REQUESTED`, and an unsponsored auth surface — three blockers, none of which an agent should clear | | ||||||||||||||||||
|
|
||||||||||||||||||
| Verification on the merged tree: `bun test` across | ||||||||||||||||||
| `cline-pass-deepseek-v4-tool-replay`, both `fastwire-characterization-*`, and `router` — | ||||||||||||||||||
| **54 pass, 0 fail**. | ||||||||||||||||||
|
|
||||||||||||||||||
| `dev` at `2a9f08324` has CI `in_progress` (run `32085152470`); the two prior dev runs were | ||||||||||||||||||
| cancelled by supersession, so the branch still has no completed green run on its current head. | ||||||||||||||||||
| That is a promotion gate for WP9, not a merge gate here. | ||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -49,3 +49,22 @@ with the full payload in bounded separate storage. | |||||||||
| Train order preserved; exactly one of #1887/#1896 lands; no credential reaches a | ||||||||||
| remote plain-HTTP endpoint in any test; #1866 either lands structured payloads or | ||||||||||
| is reported with its real terminal outcome. | ||||||||||
| ## WP7 outcome | ||||||||||
|
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. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Add a blank line before the heading.
Proposed fix `#1866` either lands structured payloads or
is reported with its real terminal outcome.
+
## WP7 outcome🧰 Tools🪛 markdownlint-cli2 (0.23.2)[warning] 52-52: Headings should be surrounded by blank lines (MD022, blanks-around-headings) 🤖 Prompt for AI AgentsSource: Linters/SAST tools |
||||||||||
|
|
||||||||||
| **One merged, four carried — and one plan decision reversed.** | ||||||||||
|
|
||||||||||
| | PR | Outcome | Evidence | | ||||||||||
| |----|---------|----------| | ||||||||||
| | #1900 | merged | `2b12521ee`; run `32010651646` `completed/success` — four shards, macOS, gates, npm-global ×3, keyring ×3 | | ||||||||||
| | #1895 | held | draft + `CHANGES_REQUESTED`; its own review blocker | | ||||||||||
| | #1896 | held | draft; carries the migration list before it can be canonical | | ||||||||||
| | #1887 | **kept open** | plan said close as superseded; reversed — it holds the catalog-aware guard | | ||||||||||
|
Comment on lines
+60
to
+61
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 Preserve the model-dependent versus mechanical distinction. The Proposed wording-| `#1896` | held | draft; carries the migration list before it can be canonical |
-| `#1887` | **kept open** | plan said close as superseded; reversed — it holds the catalog-aware guard |
+| `#1896` | held | draft; carries model-dependent guidance and is not a replacement for `#1887` |
+| `#1887` | **kept open** | plan said close as superseded; reversed — it holds the mechanical, catalog-aware `exec` fallback |📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||
| | #1903 | rebase needed | conflicts in `src/types.ts` against `dev` on its own | | ||||||||||
|
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 Record The row only records a 🤖 Prompt for AI Agents |
||||||||||
| | #1866 | untouched | issue, no PR exists | | ||||||||||
|
|
||||||||||
| **Process correction that stuck.** WP6 faulted me for merging #1902 about eight minutes before | ||||||||||
| its CI could be judged. For #1900 the fork run was approved, waited to `completed/success` at | ||||||||||
| `01:12:10Z`, and merged at `01:15:18Z` — three minutes after, verified independently. | ||||||||||
|
Comment on lines
+58
to
+67
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 | 🔵 Trivial | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
merge_commit="2b12521ee"
run_id="32010651646"
target_ref="$(git rev-parse --verify dev 2>/dev/null || git rev-parse --verify origin/dev)"
run_sha="$(gh run view "$run_id" --json headSha --jq '.headSha')"
printf 'run head: %s\n' "$run_sha"
printf 'merge commit: %s\n' "$(git rev-parse "$merge_commit")"
git merge-base --is-ancestor "$run_sha" "$merge_commit"
git merge-base --is-ancestor "$merge_commit" "$target_ref"Repository: lidge-jun/opencodex Length of output: 263 Record the tested commit and ancestry checks. Add 🤖 Prompt for AI Agents |
||||||||||
|
|
||||||||||
| `#1866` needs no decision here: it is an issue with no PR, and the structured Computer Use | ||||||||||
| payload it describes is a design task rather than a merge. | ||||||||||
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.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Resolve the Markdown lint findings in the changed sections.
markdownlint-cli2reports missing blank lines around headings, untyped fenced blocks at Lines 57 and 68, malformed leading PR identifiers at Lines 63, 96, and 149, and missing blank lines around the table. Add blank lines, usetextfence labels, and escape leading#1888,#1904, and#1902when they are paragraph text.Also applies to: 83-96, 121-122, 147-160
🧰 Tools
🪛 LanguageTool
[style] ~64-~64: Consider an alternative for the overused word “exactly”.
Context: ...
maintainer-sponsoredlabel, which is exactly the authorization boundaryAGENTS.md...(EXACTLY_PRECISELY)
🪛 markdownlint-cli2 (0.23.2)
[warning] 52-52: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above
(MD022, blanks-around-headings)
[warning] 57-57: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
[warning] 63-63: No space after hash on atx style heading
(MD018, no-missing-space-atx)
[warning] 68-68: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Source: Linters/SAST tools