diff --git a/docs/ko/upstream-lock.md b/docs/ko/upstream-lock.md
index e3dd9bf..386e3b6 100644
--- a/docs/ko/upstream-lock.md
+++ b/docs/ko/upstream-lock.md
@@ -41,7 +41,7 @@ CodeSpace는 [고정 버전의 Codex 수정 정책](upstream-patches.md)에 따
| CodeSpace 사용 | 관리 대상 PTY 실행([CSRG-U5](devguard-integration.md#devguard-lifecycle)). PTY 어댑터의 `spawn_observed`가 CodeSpace의 관찰 상한(2초)으로 관찰자를 등록하고, 그 창에서 DevGuard의 `Observe`가 reap 전에 이루어짐. 관리하지 않는 PTY 실행은 여전히 `spawn_pty_process`를 호출함 |
| 출처 | W3 실험 B의 관찰자([DevGuard 결정 패킷 3.2절](https://github.com/novelKR/DevGuard/blob/668750b4ab6ad582904c3d05ffceffa062b26243/docs/handoff/2026-09-28-w3-decision-packet.md#32-experiment-b-backend-owned-pre-reap-observation-packet-132))를 이 릴리스의 두 Unix PTY 경로로 옮긴 것. 수정한 파일마다 CodeSpace 수정 고지가 있음(Apache-2.0 4(b)) |
| 검증 | 패치 적용 tree에서 함. Linux x86_64: crate 테스트 36개를 30회 반복해 모두 통과. macOS: 테스트 38개를 30회 반복해 모두 통과, DevGuard `6e7e065`로 W3 실험 B의 B1-B13 통과. Linux, macOS, Windows 대상 clippy 통과 |
-| 업스트림 | Codex는 외부 pull request를 받지 않음. 기능 요청 [openai/codex#53298](https://github.com/openai/codex/issues/53298)을 2026-10-12 소유자 승인으로 제출함 |
+| 업스트림 | Codex는 외부 pull request를 받지 않음. 기능 요청 [openai/codex#53298](https://github.com/openai/codex/issues/53298)을 2026-10-12 소유자 승인으로 제출했고, 이 기능은 CodeSpace에만 필요해서 2026-10-14 소유자가 not planned로 닫음([업스트림 우선](upstream-patches.md#patch-upstream)). 열린 업스트림 요청 없음 |
| 제거 조건 | Codex 릴리스가 같은 관찰(단일 waiter, bound, 결과 보고)을 제공하고 CodeSpace가 그것으로 옮기거나, CodeSpace가 더 이상 회수 전에 PTY 실행을 관찰하지 않으면 패치를 뺌 |
| 핀 변경 시 | 패치를 되돌리고 서브모듈을 옮긴 뒤, 후보에 패치를 다시 옮기거나 제거 조건에 따라 빼고, Linux와 macOS에서 테스트를 다시 실행하고 이 기록을 갱신 |
| 되돌리기 | CodeSpace의 관찰자 사용을 먼저 되돌린 뒤, 패치 파일과 이 기록을 함께 되돌림 |
diff --git a/docs/ko/upstream-patches.md b/docs/ko/upstream-patches.md
index 30941b1..3a8a907 100644
--- a/docs/ko/upstream-patches.md
+++ b/docs/ko/upstream-patches.md
@@ -47,7 +47,7 @@ CodeSpace는 [고정한 릴리스](upstream-lock.md) 하나의 Codex 코드를
### 업스트림 우선
-Codex는 코드 변경을 자기 팀에서만 받고, 기능 요청은 issue tracker에서 받습니다([기여 안내](https://github.com/openai/codex/blob/rust-v0.154.0/docs/contributing.md)). 패치마다 그 기능을 그곳에 기능 요청으로 제안하고 패치를 참고 자료로 붙입니다. 요청을 제출할지는 소유자가 정합니다. 그 상태는 기록에 남기고, Codex 릴리스가 같은 기능을 제공하고 CodeSpace가 그 릴리스로 옮기면 패치를 제거합니다.
+Codex는 코드 변경을 자기 팀에서만 받고, 기능 요청은 요청자의 사용 사례와 함께 issue tracker에서 받습니다([기여 안내](https://github.com/openai/codex/blob/rust-v0.154.0/docs/contributing.md)). 패치의 기능은 Codex 사용자에게도 필요할 때만 그곳에 제안하고, CodeSpace를 위한 API가 아니라 그 사용자들의 문제로 설명합니다. CodeSpace에만 필요한 기능은 요청 없이 패치로 유지합니다([첫 패치](#case-pre-reap)). 요청을 제출할지는 소유자가 정합니다. 업스트림 상태는 기록에 남기고, Codex 릴리스가 같은 기능을 제공하고 CodeSpace가 그 릴리스로 옮기면 패치를 제거합니다.
@@ -122,6 +122,7 @@ Codex는 코드 변경을 자기 팀에서만 받고, 기능 요청은 issue tra
- **검토한 것**(2026-10-11, [DevGuard #14](https://github.com/novelKR/DevGuard/issues/14#issuecomment-6110596020)): 문서화된 제약으로 두기, Codex의 공개 `spawn_from_driver` 위에 CodeSpace 자체 PTY를 두기, Codex에 회수 전 hook을 넣기. [업스트림 어댑터 명세](https://github.com/novelKR/DevGuard/blob/668750b4ab6ad582904c3d05ffceffa062b26243/docs/handoff/2026-09-28-cs-dg-upstream-adapter-work-spec-1.md#8-preferred-investigation-b-an-upstream-owned-bounded-pre-reap-observation-contract)는 업스트림이 소유하고 시간 제한이 있는 회수 전 관찰을 우선하며, CodeSpace 자체 PTY는 CodeSpace가 Codex에 맡긴 메커니즘을 CodeSpace 안으로 옮기는 일입니다.
- **결정.** 소유자는 hook을 골랐고, 수명 주기 작업과 병행했습니다. [#92](https://github.com/novelKR/CodeSpace/pull/92)는 PTY를 회수 뒤에 관찰하는 상태로 병합했고, hook은 별도 변경으로 준비했습니다. 관찰 기능은 먼저 Codex 사전 릴리스에서 만들어 시험했고([DevGuard W3 결정 자료](https://github.com/novelKR/DevGuard/blob/668750b4ab6ad582904c3d05ffceffa062b26243/docs/handoff/2026-09-28-w3-decision-packet.md#32-experiment-b-backend-owned-pre-reap-observation-packet-132) 3.2절), 그 뒤 `rust-v0.154.0`으로 옮겼습니다. 이어서 후속 변경이 이를 관리 대상 PTY 실행에 연결했습니다([실행 뒤 생명주기](devguard-integration.md#devguard-lifecycle)).
- **형식.** 서브모듈이 가리킬 커밋을 담은 fork, 또는 공식 릴리스 위의 패치 파일. 어느 쪽이든 버전을 옮길 때 다시 옮겨야 하며, `rust-v0.159.x`에서는 이 PTY 코드가 바뀝니다. 소유자는 패치 파일을 골랐습니다. 서브모듈은 공식 릴리스에 남고, 변경과 그 기록, 이후의 이식은 모두 CodeSpace에서 검토하며, 따로 최신으로 유지할 저장소가 생기지 않습니다. 이 문서는 그 선택을 규칙으로 정한 것입니다.
+- **업스트림.** 이 기능을 2026-10-12 소유자 승인으로 [openai/codex#53298](https://github.com/openai/codex/issues/53298)에 제출했습니다. 2026-10-14 소유자가 not planned로 닫았습니다. DevGuard 연동에만 필요한 기능을 Codex 내부 크레이트의 새 API로 요청한 것이었고, Codex 사용자에게는 필요하지 않았습니다. 그래서 [업스트림 우선](#patch-upstream)은 Codex 사용자에게도 필요한 기능만 제안합니다.
diff --git a/docs/translations.json b/docs/translations.json
index 1e679f7..63e5303 100644
--- a/docs/translations.json
+++ b/docs/translations.json
@@ -757,8 +757,8 @@
"하위-패치",
"확인과-갱신"
],
- "source_sha256": "5a850ffa3d315d739c5fc3e35ba9ada1a9709e651915632264ea12851ab03087",
- "translation_sha256": "17ab2bb0858c4f8521d31a49e1648f43bddaaaa27240fba5bf501f7a2c4ecc82"
+ "source_sha256": "92cd4658c9f0f16260983a522cfa4dee3349810342f721183970937abf358006",
+ "translation_sha256": "dcd84052e7973f310c10fe4d26c6ba3e32780f050b0e635c8b8218c1c03d80e7"
},
{
"id": "upstream-update",
@@ -855,8 +855,8 @@
"형식",
"회수-전-관찰-첫-패치"
],
- "source_sha256": "b54b42d0c9eea5b911aea5bfab6829d33606cd739a74fe6efba16503c6fa44f3",
- "translation_sha256": "5b1da3fb965b81c348625a0760c99fafc651f473bf1cc7fec371af8a98354c21"
+ "source_sha256": "4f8577009361cb1c48c68a2a09e8c63f5279e6840aa62c4a58f31492a618ed31",
+ "translation_sha256": "64e4da26e1e4bf8309c3626d0d590b21e7d0a77203519e9b3fcc3e3ce5cafe9c"
},
{
"id": "documentation",
diff --git a/docs/upstream-lock.md b/docs/upstream-lock.md
index de2541a..237a6a1 100644
--- a/docs/upstream-lock.md
+++ b/docs/upstream-lock.md
@@ -39,7 +39,7 @@ CodeSpace carries one patch to `codex-utils-pty`, under the [policy for changing
| Use in CodeSpace | governed PTY executions ([CSRG-U5](devguard-integration.md#devguard-lifecycle)): the PTY adapter's `spawn_observed` registers an observer with CodeSpace's observation bound (2 s), and its window carries DevGuard's `Observe` before the reap. Ungoverned PTY executions still call `spawn_pty_process` |
| Provenance | ported from the observer of W3 experiment B ([DevGuard decision packet, section 3.2](https://github.com/novelKR/DevGuard/blob/668750b4ab6ad582904c3d05ffceffa062b26243/docs/handoff/2026-09-28-w3-decision-packet.md#32-experiment-b-backend-owned-pre-reap-observation-packet-132)) to both Unix PTY paths of this release. Each modified file carries a CodeSpace modification notice (Apache-2.0 section 4(b)) |
| Verification | on the patched tree: Linux x86_64, the crate's 36 tests in each of 30 runs; macOS, its 38 tests in each of 30 runs and W3 experiment B's cases B1-B13 against DevGuard `6e7e065`. Clippy is clean for Linux, macOS and Windows targets |
-| Upstream | Codex accepts no external pull requests. Feature request [openai/codex#53298](https://github.com/openai/codex/issues/53298), filed on 2026-10-12 with the owner's approval |
+| Upstream | Codex accepts no external pull requests. Feature request [openai/codex#53298](https://github.com/openai/codex/issues/53298) was filed on 2026-10-12 with the owner's approval and closed by the owner on 2026-10-14 as not planned, because only CodeSpace needs this capability ([upstream first](upstream-patches.md#patch-upstream)). No upstream request is open |
| Removal | drop the patch when a Codex release offers an equivalent observation (one waiter, a bound, an outcome) and CodeSpace moves to it, or when CodeSpace no longer observes PTY executions before the reap |
| Pin changes | revert the patch, move the submodule, then port the patch to the candidate or drop it under the removal condition; rerun its tests on Linux and macOS and update this record |
| Rollback | revert the patch file and this record together, after reverting any CodeSpace use of the observer |
diff --git a/docs/upstream-patches.md b/docs/upstream-patches.md
index 61e4d19..28ae906 100644
--- a/docs/upstream-patches.md
+++ b/docs/upstream-patches.md
@@ -47,7 +47,7 @@ For each patch, the [pin record](upstream-lock.md#codex-downstream-patch) holds
### Upstream first
-Codex takes code changes only from its own team and asks for feature requests in its issue tracker ([contributing](https://github.com/openai/codex/blob/rust-v0.154.0/docs/contributing.md)). Each patch's capability is proposed there as a feature request, with the patch as a reference. Submitting the request is the owner's decision. Its status stays in the record, and the patch is removed once a Codex release offers an equivalent and CodeSpace moves to it.
+Codex takes code changes only from its own team and asks for feature requests in its issue tracker, explained by the requester's use case ([contributing](https://github.com/openai/codex/blob/rust-v0.154.0/docs/contributing.md)). A patch's capability is proposed there only when Codex's own users need it too, described as their problem rather than as an API for CodeSpace. A capability that only CodeSpace needs is carried without a request ([the first patch](#case-pre-reap)). Submitting a request is the owner's decision. The record states the upstream status, and the patch is removed once a Codex release offers an equivalent and CodeSpace moves to it.
@@ -122,6 +122,7 @@ Each was closed in CodeSpace or documented and pinned by a test. None moved the
- **Weighed** on 2026-10-11 ([DevGuard #14](https://github.com/novelKR/DevGuard/issues/14#issuecomment-6110596020)): keeping a documented limitation, a CodeSpace-owned PTY on Codex's public `spawn_from_driver`, or a pre-reap hook in Codex. The [upstream adapter specification](https://github.com/novelKR/DevGuard/blob/668750b4ab6ad582904c3d05ffceffa062b26243/docs/handoff/2026-09-28-cs-dg-upstream-adapter-work-spec-1.md#8-preferred-investigation-b-an-upstream-owned-bounded-pre-reap-observation-contract) prefers an upstream-owned, bounded observation before the reap, and a CodeSpace-owned PTY would move a mechanism CodeSpace delegates to Codex into CodeSpace.
- **Chosen.** The owner chose the hook, in parallel with the lifecycle work: [#92](https://github.com/novelKR/CodeSpace/pull/92) merged with PTY observation after the reap, and the hook was prepared as a separate change. The observer had first been built and tested on a Codex prerelease ([DevGuard W3 decision packet](https://github.com/novelKR/DevGuard/blob/668750b4ab6ad582904c3d05ffceffa062b26243/docs/handoff/2026-09-28-w3-decision-packet.md#32-experiment-b-backend-owned-pre-reap-observation-packet-132), section 3.2) and was ported to `rust-v0.154.0`. A follow-up then connected it to governed PTY executions ([lifecycle after launch](devguard-integration.md#devguard-lifecycle)).
- **Form.** A fork whose commit the submodule would name, or a patch file on the official release. Either has to be ported when the pin moves, and `rust-v0.159.x` changes this PTY code. The owner chose the patch file: the submodule stays official, and the change, its record and each later port are reviewed in CodeSpace, with no second repository to keep current. This page makes that choice the rule.
+- **Upstream.** The capability was filed as [openai/codex#53298](https://github.com/openai/codex/issues/53298) on 2026-10-12 with the owner's approval. The owner closed it on 2026-10-14 as not planned: it asked for a new API in an internal Codex crate that only the DevGuard integration needs, and Codex's own users did not share the need. [Upstream first](#patch-upstream) now proposes only what Codex's users need too.