Repository navigation
docs(codex): propose native remote-list policy with executable probes #6157
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
Draft
luvs01
wants to merge
15
commits into
lidge-jun:dev
Choose a base branch
from
luvs01:rfc/5848-native-remote-list-policy-20260928
base: dev
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+1,277
−0
Draft
Changes from all commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
1e3a1c9
docs(codex): propose native remote-list provider policy with isolated…
luvs01 a0f933c
docs-codex: reject malformed thread ids in the native-policy spec
luvs01 3b29117
docs(codex): validate UUID thread ids, fix probe counts, and run prob…
luvs01 787ef30
ci(probes): pin actions to full commit SHAs per repo policy (#6157)
luvs01 bb28275
fix(probes): enforce upstream UUID shapes, deterministic aiohttp, con…
luvs01 96148ab
chore(probes): drop accidentally committed __pycache__ (#6157)
luvs01 858add4
ci(devlog): persist no checkout credentials; probe bridge forwards cl…
luvs01 f43e66b
test(devlog): cover bidirectional close-code forwarding in the bridge…
luvs01 5dc1a73
Merge current dev and refresh remote-list probe verification
luvs01 bd317d0
docs: distinguish PR head metadata from merge-ref checkout evidence
luvs01 16d779c
Merge current dev and refresh remote-list probe evidence
luvs01 b3ff2be
Merge current dev snapshot update
luvs01 d4405a8
Merge current dev and refresh remote-list RFC verification
luvs01 f53277d
Merge upstream dev 3bb7a561 into PR #6157
luvs01 d767d2f
Merge upstream dev 6da27743 into PR #6157
luvs01 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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| name: devlog probes | ||
|
|
||
| # Runs the offline unit probes that live beside a devlog plan. The suite exists so | ||
| # an exact-head gate actually executes the research fixtures a docs PR cites | ||
| # instead of leaving them as locally-verified-only claims. | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| on: | ||
| pull_request: | ||
| paths: | ||
| - "devlog/**/probes/**" | ||
| - ".github/workflows/devlog-probes.yml" | ||
|
|
||
| concurrency: | ||
| group: devlog-probes-${{ github.event.pull_request.number || github.ref }} | ||
| cancel-in-progress: true | ||
|
|
||
| jobs: | ||
| unittest: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 | ||
| with: | ||
| persist-credentials: false | ||
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6 | ||
| with: | ||
| python-version: "3.x" | ||
| - name: aiohttp for socket fixtures (required; the socket suite imports it unconditionally) | ||
| run: python -m pip install aiohttp | ||
| - name: Run every discovered probe suite | ||
| shell: bash | ||
| run: | | ||
| set -euo pipefail | ||
| found=0 | ||
| while IFS= read -r -d '' dir; do | ||
| found=1 | ||
| echo "== probes: $dir" | ||
| (cd "$dir" && python -m unittest discover -s . -p 'test_*.py' -v) | ||
| done < <(find devlog -type d -name probes -print0) | ||
| if [[ "$found" -eq 0 ]]; then | ||
| echo "no devlog probe directories present" | ||
| fi | ||
32 changes: 32 additions & 0 deletions
32
devlog/_plan/260928_remote_thread_provider_policy/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,32 @@ | ||
| # 5848: native remote-list provider policy before a backend relay | ||
|
|
||
| Status: **proposal and executable specifications only; no production fix**. | ||
| Date: 2026-09-28. | ||
|
|
||
| Related: [#5848](https://github.com/lidge-jun/opencodex/issues/5848), | ||
| [duplicate #5906](https://github.com/lidge-jun/opencodex/issues/5906), | ||
| [upstream #48358](https://github.com/openai/codex/issues/48358). | ||
|
|
||
| ## Proposed decision | ||
|
|
||
| Prefer a narrowly scoped, operator-opt-in policy in **native Codex app-server** | ||
| for remote `thread/list` requests that do not supply a provider array. Keep the | ||
| normal default-provider behavior, all existing authorization, and history intact. | ||
| The mobile client's explicit all-provider request remains the simplest upstream | ||
| client correction. Compare both with the previously tested local backend relay; | ||
| do not turn that experimental relay into an installed feature in this PR. | ||
|
|
||
| The current OpenCodex runtime and [ADR-5848](../../../structure/decisions/ADR-5848-provider-table-remote-history-visibility.md) | ||
| remain unchanged. This proposal does **not** close #5848. | ||
|
|
||
| ## Work remaining | ||
|
|
||
| - [x] Identify the native remote-connection boundary and existing provider predicate. | ||
| - [x] Specify precedence and test the native-policy proposal offline. | ||
| - [x] Retain and rerun the isolated loopback relay alternative. | ||
| - [ ] Obtain upstream agreement on the native configuration/API contract. | ||
| - [ ] Implement config/schema, trusted-origin plumbing, and Rust regressions upstream. | ||
| - [ ] Verify native pagination, managed policy, account changes, and actual mobile resume. | ||
| - [ ] Establish released-version/capability detection before adding any OpenCodex toggle. | ||
|
|
||
| See [design](010_design.md) and [verification](020_verification.md). |
134 changes: 134 additions & 0 deletions
134
devlog/_plan/260928_remote_thread_provider_policy/010_design.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,134 @@ | ||
| # Design comparison and proposed native contract | ||
|
|
||
| This is an RFC, not an accepted architecture change or a released setting. | ||
| `probes/native_policy.py` is an executable specification, **not native Rust code**. | ||
| No probe is imported by OpenCodex or registered in its runtime/CLI/test suite. | ||
|
|
||
| ## Evidence and scope | ||
|
|
||
| The source baseline is OpenAI Codex | ||
| `1cc7e2361237ce7244430ee1d581c77f95c57ac8` and OpenCodex `dev` | ||
| `eb7f0f0970c2298f8b2d66d170c4d4be869f301b`. | ||
|
|
||
| - [Native list predicate](https://github.com/openai/codex/blob/1cc7e2361237ce7244430ee1d581c77f95c57ac8/codex-rs/app-server/src/request_processors/thread_processor.rs#L5456-L5530): explicit nonempty arrays filter to those ids; `[]` removes the provider predicate; omission defaults to the configured provider, except for related-thread queries. | ||
| - [Remote connection origin](https://github.com/openai/codex/blob/1cc7e2361237ce7244430ee1d581c77f95c57ac8/codex-rs/app-server-transport/src/transport/remote_control/client_tracker.rs): native remote sessions open with `ConnectionOrigin::RemoteControl`; messages become native transport events. | ||
| - [Original rationale, #5658](https://github.com/openai/codex/pull/5658): provider annotations/filtering address cross-provider resume/decryption failures. Visibility is not proof that a conversation is safe to resume under a different provider. | ||
| - [OpenCodex mitigation, #6007](https://github.com/lidge-jun/opencodex/pull/6007): warnings and documentation without rewriting native history or intercepting native RPC. | ||
|
|
||
| ## Alternatives | ||
|
|
||
| | Approach | Can leave official mobile app unchanged? | Additional ownership | Recommendation | | ||
| | --- | --- | --- | --- | | ||
| | Mobile explicitly sends `modelProviders: []` (or a chosen list) | No | Client's list behavior and resume UX | Simplest client correction; continue upstream tracking. | | ||
| | Native, opt-in, remote-only default list policy | Yes, once a compatible native build ships | Native config and request policy, no extra service | **Preferred implementation proposal** when the host needs explicit control. | | ||
| | Local relay selected through `chatgpt_base_url` | Potentially; live service not verified | Shared backend traffic, token forwarding, connection lifecycle | Research fallback, not a default or currently supported remedy. | | ||
| | Globally change omitted filter to all providers | Yes | Changes behavior for every caller | Do not use: loses the existing default isolation behavior. | | ||
| | Rewrite `openai` history tags to `opencodex` | Yes in some observations | Native SQLite/rollout state | Do not use: violates the retained history-writer boundary. | | ||
|
|
||
| The native proposal minimizes new connection and credential handling; this is an | ||
| engineering recommendation, not evidence of upstream acceptance or deployment. | ||
| Neither upstream route can be delivered by modifying OpenCodex's `/v1` inference | ||
| proxy alone. This PR publishes the comparison rather than disguising a probe as a fix. | ||
|
|
||
| ## Proposed native setting (name subject to upstream review) | ||
|
|
||
| **Illustrative only; do not add this to current Codex/OpenCodex configuration.** | ||
|
|
||
| ```toml | ||
| [remote_control] | ||
| thread_list_model_providers = ["openai", "opencodex"] | ||
| ``` | ||
|
|
||
| Absent setting means opt-out. An explicitly empty array means all providers; | ||
| a nonempty array means exactly those ids. Do not automatically infer equivalence | ||
| from provider names, model names, or a shared URL. The setting changes listing, | ||
| not authentication, permission checks, routing, compaction, or resume semantics. | ||
| An operator who only needs two provider ids need not opt into every provider. | ||
|
|
||
| ### Precedence | ||
|
|
||
| 1. Existing authentication and managed remote-control policy still run first. | ||
| 2. A request's explicit provider **array**, including `[]`, always wins. | ||
| 3. With no array, parent/ancestor queries retain their current no-default-filter behavior. | ||
| 4. Only a server-identified remote connection may use the operator's configured policy. | ||
| 5. With no policy, and for every non-remote connection, preserve the existing default. | ||
|
|
||
| Typed Rust `Option<Vec<String>>` treats omission and JSON `null` alike. This | ||
| proposal deliberately applies its default to both. The raw relay probe preserves | ||
| all present JSON keys, including null; that difference is documented and must not | ||
| be mistaken for identical behavior between the two alternatives. | ||
|
|
||
| Use the native `ConnectionOrigin` attached to the connection. Never infer remote | ||
| origin from clientInfo.name, a user-agent, JSON fields, or a caller-supplied header. | ||
| The Python enum tests only model this trusted input; they do not prove authentication. | ||
|
|
||
| ### Native implementation boundary | ||
|
|
||
| The upstream change must add and validate the config contract, snapshot it with | ||
| the native app-server's effective configuration, carry the trusted connection | ||
| origin to the `thread/list` handler, and resolve the provider predicate before | ||
| calling the existing store pagination. A new RPC layer is unnecessary. | ||
|
|
||
| Conceptual selection, **not a drop-in patch**: | ||
|
|
||
| ```text | ||
| if request supplies provider array: use that array | ||
| else if parent/ancestor query: use existing related-thread behavior | ||
| else if trusted origin is RemoteControl and operator policy is configured: | ||
| use the configured array | ||
| else: use existing configured-default behavior | ||
| ``` | ||
|
|
||
| Do not add a global exception to `list_threads_common` for all callers. Do not | ||
| change `thread/start`, `thread/resume`, `turn/start`, stored provider metadata, | ||
| or request error handling. Keep source/cwd/archive/project filters and ordering. | ||
| The new configuration's trust/precedence should prevent project content from | ||
| silently opting an operator into a broader default; upstream must choose and test | ||
| the appropriate configuration layers and any managed restrictions. | ||
|
|
||
| Hold one effective policy throughout a listing/pagination sequence. A changed | ||
| policy requires a fresh listing cursor; do not combine pages obtained under | ||
| incompatible filters. Native tests must pin behavior with actual cursor semantics. | ||
| The fixture tests here use integer pagination, not native opaque cursors. | ||
|
|
||
| ## Local relay alternative: what was and was not shown | ||
|
|
||
| [Native startup](https://github.com/openai/codex/blob/1cc7e2361237ce7244430ee1d581c77f95c57ac8/codex-rs/app-server/src/lib.rs) | ||
| uses `config.chatgpt_base_url` for remote control. The | ||
| [URL protocol](https://github.com/openai/codex/blob/1cc7e2361237ce7244430ee1d581c77f95c57ac8/codex-rs/app-server-transport/src/transport/remote_control/protocol.rs) | ||
| accepts loopback URLs. A host-side relay is therefore a concrete design alternative: | ||
|
|
||
| ```text | ||
| unchanged mobile <-> existing ChatGPT backend <-> local relay <-> native app-server | ||
| ``` | ||
|
|
||
| Connection establishment starts on the host. Enroll/pair/refresh can be forwarded | ||
| rather than reimplemented. However, `chatgpt_base_url` is shared with | ||
| [authentication configuration](https://github.com/openai/codex/blob/1cc7e2361237ce7244430ee1d581c77f95c57ac8/codex-rs/core/src/config/auth_keyring.rs) | ||
| and other backend consumers. A WebSocket-only implementation is insufficient. | ||
| [Enrollment persistence](https://github.com/openai/codex/blob/1cc7e2361237ce7244430ee1d581c77f95c57ac8/codex-rs/app-server-transport/src/transport/remote_control/enroll.rs) | ||
| also keys state by URL/account/client, so changing the URL can affect enrollment | ||
| selection; whether live re-pairing is required remains unverified. | ||
|
|
||
| The retained relay fixture accepts only literal `127.0.0.1` HTTP upstreams and | ||
| synthetic credentials. It is not a production service and cannot be configured | ||
| for ChatGPT. It handles regular and single-chunk frames; multi-chunk messages are | ||
| passed unchanged. Actual protocol-v3 segmentation, native reconnect/ACK/cursors, | ||
| account changes, managed network policy, and full backend compatibility remain | ||
| release gates, not claims supported by these tests. See native | ||
| [WebSocket handling](https://github.com/openai/codex/blob/1cc7e2361237ce7244430ee1d581c77f95c57ac8/codex-rs/app-server-transport/src/transport/remote_control/websocket.rs). | ||
|
|
||
| No global base-URL mutation, token-pool integration, production listener, | ||
| configuration migration, history write, or authentication bypass is proposed here. | ||
|
|
||
| ## Upstream and downstream follow-through | ||
|
|
||
| An upstream implementation needs Rust config/schema, origin-scoping, explicit/null/ | ||
| related-query, pagination, and managed-policy tests. Keep existing defaults intact. | ||
| Document the omitted/default behavior and regenerate affected schema/TS fixtures. | ||
|
|
||
| After an accepted implementation is released, OpenCodex may consider an opt-in | ||
| integration with positive capability/version evidence and precise configuration | ||
| ownership/restoration. Merely writing an unknown TOML key is not a feature test. | ||
| Until then, retain #6007's warnings and keep #5848 open. Do not suppress the warning | ||
| because an experimental setting was written or a fixture passed. |
151 changes: 151 additions & 0 deletions
151
devlog/_plan/260928_remote_thread_provider_policy/020_verification.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,151 @@ | ||
| # Verification | ||
|
|
||
| Current local check: 2026-10-13, Linux, Python 3.12.14 and aiohttp 3.14.4. | ||
| This integration preserves prior PR head | ||
| `d4405a8bc14bf0e7af3a7c5b38eb79d331af620b` and merges trusted `dev` | ||
| `6da2774369aa32552e318e333902499683d053bc` without rewriting branch history. | ||
| Both integrations were conflict-free. Probe and workflow source is byte-identical | ||
| to the prior PR head; this follow-up updates verification metadata only. | ||
| The PR difference from this `dev` snapshot remains nine research/workflow files. | ||
| All inputs, accounts, tokens, thread ids, and database rows are synthetic. | ||
| No native Codex process, user home, installed config, or real service was accessed. | ||
|
|
||
| The 63 Python probes, 127 Bun tests, and repository gates below were executed on | ||
| the `3bb7a561` integration, committed locally as | ||
| `f53277df9e73ff8839107431680bbb1695792604`. The subsequent `6da27743` integration | ||
| changes only the project version from 2.84.0 to 2.85.0 in `package.json` and | ||
| `desktop/src-tauri/{Cargo.toml,Cargo.lock,tauri.conf.json}`. Probe, workflow, test, | ||
| runtime, and test-runner source plus dependency pins remain byte-identical; | ||
| `package.json` differs only in its version value. Those 190 tests were not | ||
| repeated for this metadata-only follow-up. The current integration's privacy | ||
| scan and diff check were rerun. The release version check confirmed all four | ||
| sources carry 2.85.0; the focused working-tree version test passed (one test, | ||
| two assertions, nine tests filtered out). No hosted CI result is claimed for it. | ||
|
|
||
| From the repository root: | ||
|
|
||
| ```sh | ||
| cd devlog/_plan/260928_remote_thread_provider_policy/probes | ||
| python3 -m unittest -v test_native_policy test_probe test_loopback_bridge | ||
| ``` | ||
|
|
||
| **Inventory and local execution on the `3bb7a561` integration: 63 tests, 0 failures, across three suites.** | ||
|
|
||
| - 23 tests specify the proposed native policy: opt-out, trusted-origin scoping, | ||
| explicit arrays, null semantics, parent/ancestor exceptions, immutable policy, | ||
| exact ids, UUID thread-id validation, and synthetic paginated fixture reads. | ||
| - 29 retained raw-frame tests cover the relay alternative's ordinary/single-chunk | ||
| rewrites, byte-identical pass-through, limits, and unsupported inputs. | ||
| - 11 localhost HTTP/WebSocket tests use a mock host and mock backend, | ||
| checking two-way traffic, fixture auth/headers, explicit filters, enrollment, | ||
| unrelated HTTP, fixture endpoint restrictions, and both directions of close-code | ||
| forwarding. | ||
|
|
||
| The 23 + 29 offline tests use the Python standard library only. The 11 socket tests | ||
| need aiohttp; no production dependency manifest is changed. | ||
|
|
||
| Historical author-local execution on 2026-09-28 covered the 52 standard-library tests | ||
| (test_native_policy + test_probe); the socket suite was not part of that recorded | ||
| run. The then-current socket inventory was 9 tests. The | ||
| devlog-probes workflow added by this PR installs aiohttp as a required step (the | ||
| step fails the job if install fails) and discovers every devlog/**/probes | ||
| directory. The retained record for head `787ef30698` reports 61 hosted tests. | ||
| The later close-code regressions raised the count to 63. PR CI run `36492693336`, | ||
| job `109164783438`, is associated with head `f43e66b3`, but its checkout log records | ||
| the PR merge ref at `7b2ec3931dcd92f777a642c464d80990e7f38008`; that checked-out | ||
| merge ref passed all 63 tests. Run metadata's head SHA is not the checkout SHA. | ||
| The current local execution above independently ran all three suites. Each new | ||
| PR head needs its own associated hosted results; old runs do not attest to a new | ||
| integration commit. The workflow retains its normal merge-ref checkout behavior. | ||
|
|
||
| ```sh | ||
| python3 -m unittest -v test_native_policy test_probe | ||
| ``` | ||
|
|
||
| The synthetic database has 5,200 `openai` rows, one `opencodex` row, and one `other` | ||
| row. Default filtering yields one; the two-id opt-in yields 5,201; all providers | ||
| yields 5,202. Page sizes 1, 37, and 1,000 are exercised. The fixture dump hash stays | ||
| unchanged after reads. This demonstrates the specification, not native SQLite | ||
| schema compatibility or actual mobile results. | ||
|
|
||
| ## Repository checks | ||
|
|
||
| The current isolated Linux worktree uses runtime Bun 1.4.2 and the repository | ||
| selected test runner Bun 1.4.3. These checks passed on the `3bb7a561` integration: | ||
|
|
||
| ```sh | ||
| bun run typecheck | ||
| bun run structure:check | ||
| bun run privacy:scan | ||
| bun run skill:surface:check | ||
| bun scripts/test-layout/plan.ts | ||
| bun scripts/file-size-ratchet.ts | ||
| git diff --check 3bb7a5612c35c8079f5683a6d408a6907cf98bbe | ||
| ``` | ||
|
|
||
| The official wrapper selected Bun 1.4.3 through `OCX_TEST_RUNNER_BUN` for: | ||
|
|
||
| ```sh | ||
| bun run test --parallel=1 ./tests/test-layout.test.ts \ | ||
| ./tests/test-layout-tooling.test.ts \ | ||
| ./tests/ci-workflows/file-size-ratchet.test.ts \ | ||
| ./tests/ci-workflows/structure-ssot.test.ts \ | ||
| ./tests/ci-workflows/repo-hygiene.test.ts \ | ||
| ./tests/ci-workflows/ci-scope-gaps.test.ts | ||
| ``` | ||
|
|
||
| All 127 tests passed (941 assertions, no failures or skips). The layout planner | ||
| reported zero moves and zero unresolved files; all nine generated management | ||
| surface files were current. No generated output needed regeneration. The checks | ||
| cover the merged layout, repository hygiene, and current CI runtime/test-runner | ||
| roles; the Python suites exercise every executable specification this PR adds. | ||
|
|
||
| The earlier Windows run (Python 3.14.3, aiohttp 3.14.3) and fixed-disk workaround | ||
| are historical environment evidence, not the environment used for this refresh. | ||
| The full local Bun suite was not rerun: this PR changes only the research unit | ||
| and probe workflow relative to `dev`, and concurrent worktrees share this | ||
| validation environment. All 63 focused probes, the 127 focused Bun tests, and the applicable static | ||
| gates were run instead. Wider repository coverage remains for CI associated with the | ||
| new PR head, using the normal PR merge ref. No test budget or assertion was relaxed. | ||
|
|
||
| The version-only follow-up used: | ||
|
|
||
| ```sh | ||
| bun scripts/release-version-sources.ts check 2.85.0 | ||
| bun run test --parallel=1 ./tests/ci-workflows/release-version-sources.test.ts \ | ||
| -t 'every version source in the working tree carries package.json' | ||
| bun run privacy:scan | ||
| git diff --check 6da2774369aa32552e318e333902499683d053bc | ||
| ``` | ||
|
|
||
| ## Hosted checkpoint and review boundary | ||
|
|
||
| For the previous PR head `b3ff2be3c65e84aac0ceeedb343d107359da114d`, maintainer | ||
| review confirmed that probe job `110273026033` checked out merge ref `1b40f8a` | ||
| (incorporating that head into `0328373`) and ran all 63 tests successfully. | ||
| That is historical evidence; it does not attest to this new `6da27743` integration. | ||
| New associated run/job links, actual checkout SHA and tree must be recorded in | ||
| the PR checkpoint after those checks complete. Run metadata alone is not checkout | ||
| evidence, and no prior green result is relabeled as a new-head pass. | ||
|
|
||
| The 2026-10-02 maintainer response dismissed only superseded correctness requests. | ||
| It did not approve the RFC or waive independent workflow/boundary review. | ||
| The PR remains Draft pending explicit maintainer workflow/security approval and | ||
| an exact-head readiness decision. The author's later independent static-review | ||
| evidence and hosted probe results concern the prior `d4405a8b` checkpoint; they | ||
| do not replace the maintainer's approval or waive the hold. A green CodeRabbit check caused by | ||
| Draft skipping is not a completed CodeRabbit review. | ||
|
|
||
| ## Not executed / not established | ||
|
|
||
| - Native Rust implementation, compilation, config/schema generation, or native tests. | ||
| - Actual ChatGPT mobile pairing, full pagination, resume, token renewal, or reconnect. | ||
| - The full local OpenCodex Bun suite, and new current-head-associated hosted checks until that | ||
| run completes. The earlier 52-test local run and 61-test hosted record remain | ||
| historical evidence only. | ||
| - Production multi-segment relay support or management/security review. | ||
|
|
||
| The PR adds this research unit plus one workflow that runs it: devlog-probes.yml | ||
| is a new CI lane, so the executable contract now executes on the PR merge ref rather | ||
| than only locally. No executable configuration, release artifact, or native | ||
| storage is changed. Explicit maintainer workflow/security approval remains outstanding even with green CI. |
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.
Uh oh!
There was an error while loading. Please reload this page.