Skip to content

[4 of 7] Placeholder for OverrideTurnContext cleanup#23087

Closed
etraut-openai wants to merge 27 commits into
mainfrom
etraut/next-turn-state-remove-override-context
Closed

[4 of 7] Placeholder for OverrideTurnContext cleanup#23087
etraut-openai wants to merge 27 commits into
mainfrom
etraut/next-turn-state-remove-override-context

Conversation

@etraut-openai
Copy link
Copy Markdown
Collaborator

@etraut-openai etraut-openai commented May 16, 2026

Stack position: [4 of 7]

Summary

This PR is intentionally empty. It is kept as a stack placeholder so the existing review chain can remain stable.

The OverrideTurnContext removal now happens in PR5 together with the queued Op::ThreadSettings replacement. Keeping those changes together makes the review clearer than removing the old queued op before the replacement exists.

Changes

  • No code changes.
  • The branch has the same file tree as PR3.
  • The actual OverrideTurnContext replacement and removal is in PR5.

This stack addresses #20656 and #22090.

Stack

  1. [1 of 7] Add thread settings to UserInput
  2. [2 of 7] Remove UserInputWithTurnContext
  3. [3 of 7] Remove UserTurn
  4. [4 of 7] Placeholder for OverrideTurnContext cleanup (this PR)
  5. [5 of 7] Replace OverrideTurnContext with ThreadSettings
  6. [6 of 7] Add app-server thread settings API
  7. [7 of 7] Sync TUI thread settings

…into etraut/next-turn-state-input-op-consolidation

# Conflicts:
#	codex-rs/app-server/src/request_processors/turn_processor.rs
#	codex-rs/core/src/session/handlers.rs
#	codex-rs/protocol/src/protocol.rs
Copy link
Copy Markdown
Contributor

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 875b846721

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread codex-rs/core/tests/suite/override_updates.rs Outdated
Comment thread codex-rs/core/tests/suite/override_updates.rs Outdated
@etraut-openai
Copy link
Copy Markdown
Collaborator Author

@codex review

Copy link
Copy Markdown
Contributor

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5b47db287d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread codex-rs/core/src/codex_thread.rs Outdated
effort: None,
summary: None,
service_tier: None,
.update_turn_context_overrides(codex_core::CodexThreadTurnContextOverrides {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The order of changes here feels wrong. Shouldn't this be replaced with the new Op?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I figured that splitting it out this way would help with reviewing, but it created problems. I think I'll just make this PR4 a no-op and change PR5 to both introduce the new op and delete the old one. And I'll repurpose the existing tests in the process and migrate them to the new op.

Copy link
Copy Markdown
Collaborator

@pakrym-oai pakrym-oai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These tests should probably migrate to Op::TurnContext

…next-turn-state-remove-user-input-with-context

# Conflicts:
#	codex-rs/app-server/src/request_processors/turn_processor.rs
#	codex-rs/core/src/session/handlers.rs
#	codex-rs/protocol/src/protocol.rs
…into etraut/next-turn-state-input-op-consolidation
…next-turn-state-remove-user-input-with-context
Copy link
Copy Markdown
Contributor

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d6ae36fd8d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

personality: Option<Personality>,
},

/// Approve a command execution
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep TUI references buildable

Removing this Op variant here leaves the TUI crate with live references to Op::OverrideTurnContext (for example codex-rs/tui/src/app/tests.rs and codex-rs/tui/src/chatwidget/tests/permissions.rs, found with git grep at this commit). Those paths can no longer type-check once codex-tui is built against the updated protocol enum, so the removal needs to be paired with the TUI/test migration or compatibility shim in the same change.

Useful? React with 👍 / 👎.

@etraut-openai etraut-openai force-pushed the etraut/next-turn-state-remove-override-context branch from d6ae36f to 4939645 Compare May 18, 2026 23:43
@etraut-openai etraut-openai changed the title [4 of 7] Remove core OverrideTurnContext op [4 of 7] Placeholder for OverrideTurnContext cleanup May 18, 2026
@etraut-openai etraut-openai reopened this May 18, 2026
etraut-openai added a commit that referenced this pull request May 19, 2026
**Stack position:** [1 of 7]

## Summary

The first three PRs in this stack are a cleanup pass before the actual
thread settings API work.

Today, core has several overlapping "user input" ops: `UserInput`,
`UserInputWithTurnContext`, and `UserTurn`. They differ mostly in how
much next-turn state they carry, which makes the later queued thread
settings update harder to reason about and review.

This PR starts that cleanup by adding the shared
`ThreadSettingsOverrides` payload and allowing `Op::UserInput` to carry
it. Existing variants remain in place here, so this layer is mostly a
behavior-preserving API shape change plus mechanical constructor
updates.

## End State After PR3

By the end of PR3, `Op::UserInput` is the only "user input" core op. It
can carry optional thread settings overrides for callers that need to
update stored defaults with a turn, while callers without updates use
empty settings. `Op::UserInputWithTurnContext` and `Op::UserTurn` are
deleted.

## End State After PR5

By the end of PR5, core will have only two ops for this area:

- `Op::UserInput` for user-input-bearing submissions.
- `Op::ThreadSettings` for settings-only updates.

## Stack

1. [1 of 7] [Add thread settings to
UserInput](#23080) (this PR)
2. [2 of 7] [Remove
UserInputWithTurnContext](#23081)
3. [3 of 7] [Remove
UserTurn](#23075)
4. [4 of 7] [Placeholder for OverrideTurnContext
cleanup](#23087)
5. [5 of 7] [Replace OverrideTurnContext with
ThreadSettings](#22508)
6. [6 of 7] [Add app-server thread settings
API](#22509)
7. [7 of 7] [Sync TUI thread
settings](#22510)
…into etraut/next-turn-state-input-op-consolidation

# Conflicts:
#	codex-rs/core/src/session/handlers.rs
#	codex-rs/core/tests/common/test_codex.rs
#	codex-rs/core/tests/suite/request_permissions.rs
#	codex-rs/core/tests/suite/unified_exec.rs
#	codex-rs/protocol/src/protocol.rs
etraut-openai added a commit that referenced this pull request May 19, 2026
**Stack position:** [2 of 7]

## Summary

This PR removes the overlapping `Op::UserInputWithTurnContext` variant
now that `Op::UserInput` can carry thread settings overrides directly.

## Stack

1. [1 of 7] [Add thread settings to
UserInput](#23080)
2. [2 of 7] [Remove
UserInputWithTurnContext](#23081)
(this PR)
3. [3 of 7] [Remove
UserTurn](#23075)
4. [4 of 7] [Placeholder for OverrideTurnContext
cleanup](#23087)
5. [5 of 7] [Replace OverrideTurnContext with
ThreadSettings](#22508)
6. [6 of 7] [Add app-server thread settings
API](#22509)
7. [7 of 7] [Sync TUI thread
settings](#22510)
@etraut-openai etraut-openai force-pushed the etraut/next-turn-state-input-op-consolidation branch from 45fe8ff to e940365 Compare May 19, 2026 02:44
etraut-openai added a commit that referenced this pull request May 19, 2026
**Stack position:** [3 of 7]

## Summary

This PR finishes the input-op consolidation by moving the remaining
`Op::UserTurn` callers onto `Op::UserInput` and deleting `Op::UserTurn`.
This touches a lot of files, but it is a low-risk mechanical migration.

## Stack

1. [1 of 7] [Add thread settings to
UserInput](#23080)
2. [2 of 7] [Remove
UserInputWithTurnContext](#23081)
3. [3 of 7] [Remove
UserTurn](#23075) (this PR)
4. [4 of 7] [Placeholder for OverrideTurnContext
cleanup](#23087)
5. [5 of 7] [Replace OverrideTurnContext with
ThreadSettings](#22508)
6. [6 of 7] [Add app-server thread settings
API](#22509)
7. [7 of 7] [Sync TUI thread
settings](#22510)
Base automatically changed from etraut/next-turn-state-input-op-consolidation to main May 19, 2026 02:56
etraut-openai added a commit that referenced this pull request May 19, 2026
**Stack position:** [5 of 7]

## Summary

This PR adds `Op::ThreadSettings`, a queued settings-only update
mechanism for changing stored thread settings without starting a new
turn. It also removes the legacy `Op::OverrideTurnContext` in the same
layer, so reviewers can see the replacement and deletion together.

## Changes

- Add `Op::ThreadSettings` for settings-only queued updates.
- Emit `ThreadSettingsApplied` with the effective thread settings
snapshot after core applies an update.
- Route settings-only updates through the same submission queue as user
input.
- Migrate remaining `OverrideTurnContext` tests and callers to the
queued `Op::ThreadSettings` path.
- Delete `Op::OverrideTurnContext` from the core protocol and submission
loop.

This stack addresses #20656 and #22090.

## Stack

1. [1 of 7] [Add thread settings to
UserInput](#23080)
2. [2 of 7] [Remove
UserInputWithTurnContext](#23081)
3. [3 of 7] [Remove
UserTurn](#23075)
4. [4 of 7] [Placeholder for OverrideTurnContext
cleanup](#23087)
5. [5 of 7] [Replace OverrideTurnContext with
ThreadSettings](#22508) (this PR)
6. [6 of 7] [Add app-server thread settings
API](#22509)
7. [7 of 7] [Sync TUI thread
settings](#22510)
LEON-gittech pushed a commit to LEON-gittech/Open-Codex-CLI that referenced this pull request May 21, 2026
**Stack position:** [1 of 7]

## Summary

The first three PRs in this stack are a cleanup pass before the actual
thread settings API work.

Today, core has several overlapping "user input" ops: `UserInput`,
`UserInputWithTurnContext`, and `UserTurn`. They differ mostly in how
much next-turn state they carry, which makes the later queued thread
settings update harder to reason about and review.

This PR starts that cleanup by adding the shared
`ThreadSettingsOverrides` payload and allowing `Op::UserInput` to carry
it. Existing variants remain in place here, so this layer is mostly a
behavior-preserving API shape change plus mechanical constructor
updates.

## End State After PR3

By the end of PR3, `Op::UserInput` is the only "user input" core op. It
can carry optional thread settings overrides for callers that need to
update stored defaults with a turn, while callers without updates use
empty settings. `Op::UserInputWithTurnContext` and `Op::UserTurn` are
deleted.

## End State After PR5

By the end of PR5, core will have only two ops for this area:

- `Op::UserInput` for user-input-bearing submissions.
- `Op::ThreadSettings` for settings-only updates.

## Stack

1. [1 of 7] [Add thread settings to
UserInput](openai#23080) (this PR)
2. [2 of 7] [Remove
UserInputWithTurnContext](openai#23081)
3. [3 of 7] [Remove
UserTurn](openai#23075)
4. [4 of 7] [Placeholder for OverrideTurnContext
cleanup](openai#23087)
5. [5 of 7] [Replace OverrideTurnContext with
ThreadSettings](openai#22508)
6. [6 of 7] [Add app-server thread settings
API](openai#22509)
7. [7 of 7] [Sync TUI thread
settings](openai#22510)
LEON-gittech pushed a commit to LEON-gittech/Open-Codex-CLI that referenced this pull request May 21, 2026
**Stack position:** [2 of 7]

## Summary

This PR removes the overlapping `Op::UserInputWithTurnContext` variant
now that `Op::UserInput` can carry thread settings overrides directly.

## Stack

1. [1 of 7] [Add thread settings to
UserInput](openai#23080)
2. [2 of 7] [Remove
UserInputWithTurnContext](openai#23081)
(this PR)
3. [3 of 7] [Remove
UserTurn](openai#23075)
4. [4 of 7] [Placeholder for OverrideTurnContext
cleanup](openai#23087)
5. [5 of 7] [Replace OverrideTurnContext with
ThreadSettings](openai#22508)
6. [6 of 7] [Add app-server thread settings
API](openai#22509)
7. [7 of 7] [Sync TUI thread
settings](openai#22510)
LEON-gittech pushed a commit to LEON-gittech/Open-Codex-CLI that referenced this pull request May 21, 2026
**Stack position:** [3 of 7]

## Summary

This PR finishes the input-op consolidation by moving the remaining
`Op::UserTurn` callers onto `Op::UserInput` and deleting `Op::UserTurn`.
This touches a lot of files, but it is a low-risk mechanical migration.

## Stack

1. [1 of 7] [Add thread settings to
UserInput](openai#23080)
2. [2 of 7] [Remove
UserInputWithTurnContext](openai#23081)
3. [3 of 7] [Remove
UserTurn](openai#23075) (this PR)
4. [4 of 7] [Placeholder for OverrideTurnContext
cleanup](openai#23087)
5. [5 of 7] [Replace OverrideTurnContext with
ThreadSettings](openai#22508)
6. [6 of 7] [Add app-server thread settings
API](openai#22509)
7. [7 of 7] [Sync TUI thread
settings](openai#22510)
LEON-gittech pushed a commit to LEON-gittech/Open-Codex-CLI that referenced this pull request May 21, 2026
**Stack position:** [5 of 7]

## Summary

This PR adds `Op::ThreadSettings`, a queued settings-only update
mechanism for changing stored thread settings without starting a new
turn. It also removes the legacy `Op::OverrideTurnContext` in the same
layer, so reviewers can see the replacement and deletion together.

## Changes

- Add `Op::ThreadSettings` for settings-only queued updates.
- Emit `ThreadSettingsApplied` with the effective thread settings
snapshot after core applies an update.
- Route settings-only updates through the same submission queue as user
input.
- Migrate remaining `OverrideTurnContext` tests and callers to the
queued `Op::ThreadSettings` path.
- Delete `Op::OverrideTurnContext` from the core protocol and submission
loop.

This stack addresses openai#20656 and openai#22090.

## Stack

1. [1 of 7] [Add thread settings to
UserInput](openai#23080)
2. [2 of 7] [Remove
UserInputWithTurnContext](openai#23081)
3. [3 of 7] [Remove
UserTurn](openai#23075)
4. [4 of 7] [Placeholder for OverrideTurnContext
cleanup](openai#23087)
5. [5 of 7] [Replace OverrideTurnContext with
ThreadSettings](openai#22508) (this PR)
6. [6 of 7] [Add app-server thread settings
API](openai#22509)
7. [7 of 7] [Sync TUI thread
settings](openai#22510)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants