From bf4acf0eb449f38e30bd7115355b414ffe7bcda4 Mon Sep 17 00:00:00 2001 From: JUN Date: Sun, 13 Sep 2026 22:38:35 +0900 Subject: [PATCH 1/3] docs(devlog): close the carry train record with lane I5 Lane I5 landed #4515 as a scoped slice of #4429 and deliberately did not close the issue: arming the other bridge backends does not fix the reported failure, because the boundary is the mixed-tool leg rather than the missing executor. Records that, and the pre-existing endpoint gap the review surfaced, filed as #4519 rather than attributed to the change that exposed it. --- .../060_outcome.md | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/devlog/_plan/260913_contributor_carry_train/060_outcome.md b/devlog/_plan/260913_contributor_carry_train/060_outcome.md index 3cd0ca6548..a413ff4118 100644 --- a/devlog/_plan/260913_contributor_carry_train/060_outcome.md +++ b/devlog/_plan/260913_contributor_carry_train/060_outcome.md @@ -1,7 +1,8 @@ # Outcome — the contributor carry train Twelve lanes were dispatched to land the open contributor work scored 60 or -higher. Eleven landed, one needed nothing, and one is recorded separately below. +higher. Eleven landed and one needed nothing, because the work it was sent to carry was +already on dev. ## What landed @@ -18,6 +19,7 @@ higher. Eleven landed, one needed nothing, and one is recorded separately below. | 2 | I3 | #4500 | 94063d0798 | #4467 jaychou0642-create, issue #3775 | | 2 | I4 | #4498 | 8e6c99608c | issue #4454 | | 2 | H | — | — | nothing to carry; #3663 was already on dev | +| 2 | I5 | #4515 | cb2e15ba6f | issue #4429, scoped slice | Every merge used the same gate: a Cross-platform CI run concluded success on the exact tip head SHA, the merge commit was verified with @@ -89,6 +91,41 @@ Both directions are the same defect in the plan, not in the lanes: a snapshot of the open queue is stale the moment it is taken, and only the lane touching the code can tell. +## The lane that did not close its issue + +Lane I5 is the one outcome in this train that is deliberately partial, and it is +the better result. + +#4429 reads as a missing executor: a key-auth gateway echoes hosted web_search as +a client function_call, and webSearchBridge had an executor only for ollama. +Arming the other five backends is what #4515 landed. It does not fix the reported +failure, and the lane said so rather than closing the issue. + +The reporter's own probe is why. It ends with two pending client calls, exec and +web_search, which the bridge refuses with web_search_bridge_mixed_tools. The +boundary is the mixed-tool leg, not the missing backend, so a continuation has to +preserve the client's exec call and call_id and their ordering without executing +it proxy-side and without losing hosted-search items the relay already completed. +The issue stays open for that, with the scoping recorded on it. + +The DeepSeek case in the same thread stays separate on purpose: it emits no +function calls at all, only assistant text, and making matching prose executable +would turn model output into tool execution. + +A scoped slice with an accurate description is what the packet asked for, and +refusing to close the issue is the part that makes it honest. + +## What the last review surfaced + +The security review of #4515 verified credential isolation per backend rather +than accepting the claim: only ollama spends the serving provider's key, and only +on the planner-admitted endpoint. It also found a pre-existing gap that this slice +does not widen -- webSearchBridge.endpoint skips the destination policy that +provider baseUrl values go through, so an ollama endpoint pointed at a metadata +address would receive the serving API key. That is filed as #4519 rather than +attributed to the change that exposed it. + + ## Honest limits of the proof Non-tip pull requests merged without their own `ci` check, under the recorded From 7042ef9b21c67c19f4d8c184721b32d1799b5c95 Mon Sep 17 00:00:00 2001 From: JUN Date: Mon, 14 Sep 2026 02:18:19 +0900 Subject: [PATCH 2/3] docs: bind final outcome to completed integration CI --- .../260913_contributor_carry_train/060_outcome.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/devlog/_plan/260913_contributor_carry_train/060_outcome.md b/devlog/_plan/260913_contributor_carry_train/060_outcome.md index a413ff4118..0953b9b30a 100644 --- a/devlog/_plan/260913_contributor_carry_train/060_outcome.md +++ b/devlog/_plan/260913_contributor_carry_train/060_outcome.md @@ -115,16 +115,15 @@ would turn model output into tool execution. A scoped slice with an accurate description is what the packet asked for, and refusing to close the issue is the part that makes it honest. -## What the last review surfaced +## Final integration evidence -The security review of #4515 verified credential isolation per backend rather -than accepting the claim: only ollama spends the serving provider's key, and only -on the planner-admitted endpoint. It also found a pre-existing gap that this slice -does not widen -- webSearchBridge.endpoint skips the destination policy that -provider baseUrl values go through, so an ollama endpoint pointed at a metadata -address would receive the serving API key. That is filed as #4519 rather than -attributed to the change that exposed it. +Cross-platform CI run [34760250023](https://github.com/lidge-jun/opencodex/actions/runs/34760250023) +completed successfully on `cb2e15ba6f8ac17af0620d6ff04fcfa7d88e3dcd`, the +merge commit for the last implementation PR, #4515. This verifies the integrated +batch; conditional jobs remain skips rather than claimed passes. +#4429 remains partially unresolved: the non-Ollama executor slice landed, while +mixed-tool continuation remains open. The separate follow-up is tracked in #4519. ## Honest limits of the proof From 7b4d6ab5903c7151098ae12046bf76b7a3b49fb9 Mon Sep 17 00:00:00 2001 From: JUN Date: Mon, 14 Sep 2026 02:49:57 +0900 Subject: [PATCH 3/3] docs: archive completed train and clarify remaining issue ownership --- .../260913_contributor_carry_train/000_plan.md | 0 .../001_candidate_inventory.md | 0 .../260913_contributor_carry_train/010_wave1.md | 0 .../260913_contributor_carry_train/011_wave1_outcome.md | 0 .../260913_contributor_carry_train/020_wave1_merge.md | 0 .../260913_contributor_carry_train/030_wave2.md | 0 .../040_wave2_merge_regression.md | 0 .../260913_contributor_carry_train/050_disposition.md | 0 .../260913_contributor_carry_train/060_outcome.md | 6 +++--- 9 files changed, 3 insertions(+), 3 deletions(-) rename devlog/{_plan => _fin}/260913_contributor_carry_train/000_plan.md (100%) rename devlog/{_plan => _fin}/260913_contributor_carry_train/001_candidate_inventory.md (100%) rename devlog/{_plan => _fin}/260913_contributor_carry_train/010_wave1.md (100%) rename devlog/{_plan => _fin}/260913_contributor_carry_train/011_wave1_outcome.md (100%) rename devlog/{_plan => _fin}/260913_contributor_carry_train/020_wave1_merge.md (100%) rename devlog/{_plan => _fin}/260913_contributor_carry_train/030_wave2.md (100%) rename devlog/{_plan => _fin}/260913_contributor_carry_train/040_wave2_merge_regression.md (100%) rename devlog/{_plan => _fin}/260913_contributor_carry_train/050_disposition.md (100%) rename devlog/{_plan => _fin}/260913_contributor_carry_train/060_outcome.md (95%) diff --git a/devlog/_plan/260913_contributor_carry_train/000_plan.md b/devlog/_fin/260913_contributor_carry_train/000_plan.md similarity index 100% rename from devlog/_plan/260913_contributor_carry_train/000_plan.md rename to devlog/_fin/260913_contributor_carry_train/000_plan.md diff --git a/devlog/_plan/260913_contributor_carry_train/001_candidate_inventory.md b/devlog/_fin/260913_contributor_carry_train/001_candidate_inventory.md similarity index 100% rename from devlog/_plan/260913_contributor_carry_train/001_candidate_inventory.md rename to devlog/_fin/260913_contributor_carry_train/001_candidate_inventory.md diff --git a/devlog/_plan/260913_contributor_carry_train/010_wave1.md b/devlog/_fin/260913_contributor_carry_train/010_wave1.md similarity index 100% rename from devlog/_plan/260913_contributor_carry_train/010_wave1.md rename to devlog/_fin/260913_contributor_carry_train/010_wave1.md diff --git a/devlog/_plan/260913_contributor_carry_train/011_wave1_outcome.md b/devlog/_fin/260913_contributor_carry_train/011_wave1_outcome.md similarity index 100% rename from devlog/_plan/260913_contributor_carry_train/011_wave1_outcome.md rename to devlog/_fin/260913_contributor_carry_train/011_wave1_outcome.md diff --git a/devlog/_plan/260913_contributor_carry_train/020_wave1_merge.md b/devlog/_fin/260913_contributor_carry_train/020_wave1_merge.md similarity index 100% rename from devlog/_plan/260913_contributor_carry_train/020_wave1_merge.md rename to devlog/_fin/260913_contributor_carry_train/020_wave1_merge.md diff --git a/devlog/_plan/260913_contributor_carry_train/030_wave2.md b/devlog/_fin/260913_contributor_carry_train/030_wave2.md similarity index 100% rename from devlog/_plan/260913_contributor_carry_train/030_wave2.md rename to devlog/_fin/260913_contributor_carry_train/030_wave2.md diff --git a/devlog/_plan/260913_contributor_carry_train/040_wave2_merge_regression.md b/devlog/_fin/260913_contributor_carry_train/040_wave2_merge_regression.md similarity index 100% rename from devlog/_plan/260913_contributor_carry_train/040_wave2_merge_regression.md rename to devlog/_fin/260913_contributor_carry_train/040_wave2_merge_regression.md diff --git a/devlog/_plan/260913_contributor_carry_train/050_disposition.md b/devlog/_fin/260913_contributor_carry_train/050_disposition.md similarity index 100% rename from devlog/_plan/260913_contributor_carry_train/050_disposition.md rename to devlog/_fin/260913_contributor_carry_train/050_disposition.md diff --git a/devlog/_plan/260913_contributor_carry_train/060_outcome.md b/devlog/_fin/260913_contributor_carry_train/060_outcome.md similarity index 95% rename from devlog/_plan/260913_contributor_carry_train/060_outcome.md rename to devlog/_fin/260913_contributor_carry_train/060_outcome.md index 0953b9b30a..cfdf543e52 100644 --- a/devlog/_plan/260913_contributor_carry_train/060_outcome.md +++ b/devlog/_fin/260913_contributor_carry_train/060_outcome.md @@ -96,7 +96,7 @@ code can tell. Lane I5 is the one outcome in this train that is deliberately partial, and it is the better result. -#4429 reads as a missing executor: a key-auth gateway echoes hosted web_search as +Issue #4429 reads as a missing executor: a key-auth gateway echoes hosted web_search as a client function_call, and webSearchBridge had an executor only for ollama. Arming the other five backends is what #4515 landed. It does not fix the reported failure, and the lane said so rather than closing the issue. @@ -122,8 +122,8 @@ completed successfully on `cb2e15ba6f8ac17af0620d6ff04fcfa7d88e3dcd`, the merge commit for the last implementation PR, #4515. This verifies the integrated batch; conditional jobs remain skips rather than claimed passes. -#4429 remains partially unresolved: the non-Ollama executor slice landed, while -mixed-tool continuation remains open. The separate follow-up is tracked in #4519. +Issue #4429 remains partially unresolved: the non-Ollama executor slice landed, while +mixed-tool continuation remains open. Issue #4519 separately tracks the Ollama endpoint destination-policy gap; it is not the mixed-tool continuation tracker. ## Honest limits of the proof