mirror of
https://github.com/openai/codex.git
synced 2026-11-02 19:43:24 +00:00
Register the Guardian thread context feature flag (#42529)
## What changed - Add the disabled, under-development `guardian_thread_context` feature flag for selecting thread-owned context for Guardian reviewers. - Expose the boolean setting in the generated configuration schema. - Verify default, base configuration, and profile override resolution. GitOrigin-RevId: c4878be96d12f4ccd84356df15d3e55f13ac141f
This commit is contained in:
@@ -774,6 +774,9 @@
|
||||
"guardian_reuse_parent_compaction": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"guardian_thread_context": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"guardianv2": {
|
||||
"$ref": "#/definitions/FeatureToml_for_GuardianV2ConfigToml"
|
||||
},
|
||||
@@ -6122,6 +6125,9 @@
|
||||
"guardian_reuse_parent_compaction": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"guardian_thread_context": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"guardianv2": {
|
||||
"$ref": "#/definitions/FeatureToml_for_GuardianV2ConfigToml"
|
||||
},
|
||||
|
||||
@@ -299,6 +299,9 @@ pub enum Feature {
|
||||
SendAsyncMessage,
|
||||
/// Enable automatic review for approval prompts.
|
||||
GuardianApproval,
|
||||
/// Select thread-owned context for both Guardian reviewers.
|
||||
/// Config-only until reviewer wiring lands; read from the thread's fixed feature set.
|
||||
GuardianThreadContext,
|
||||
/// Reuse encrypted parent compaction when restarting Guardian review sessions.
|
||||
GuardianReuseParentCompaction,
|
||||
/// Include completed node_repl or cua_repl Code Mode responses in Guardian reviews.
|
||||
@@ -1519,6 +1522,12 @@ pub const FEATURES: &[FeatureSpec] = &[
|
||||
stage: Stage::Stable,
|
||||
default_enabled: true,
|
||||
},
|
||||
FeatureSpec {
|
||||
id: Feature::GuardianThreadContext,
|
||||
key: "guardian_thread_context",
|
||||
stage: Stage::UnderDevelopment,
|
||||
default_enabled: false,
|
||||
},
|
||||
FeatureSpec {
|
||||
id: Feature::GuardianReuseParentCompaction,
|
||||
key: "guardian_reuse_parent_compaction",
|
||||
|
||||
@@ -162,6 +162,44 @@ fn guardian_v2_feature_config_preserves_boolean_toggle() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn guardian_thread_context_resolves_boolean_config_and_profile_overrides() {
|
||||
for (base, profile, enabled) in [
|
||||
("", "", false),
|
||||
("guardian_thread_context = false", "", false),
|
||||
("guardian_thread_context = true", "", true),
|
||||
(
|
||||
"guardian_thread_context = true",
|
||||
"guardian_thread_context = false",
|
||||
false,
|
||||
),
|
||||
(
|
||||
"guardian_thread_context = false",
|
||||
"guardian_thread_context = true",
|
||||
true,
|
||||
),
|
||||
] {
|
||||
let base = toml::from_str::<FeaturesToml>(base).expect("base features");
|
||||
let profile = toml::from_str::<FeaturesToml>(profile).expect("profile features");
|
||||
let features = Features::from_sources(
|
||||
FeatureConfigSource {
|
||||
features: Some(&base),
|
||||
..Default::default()
|
||||
},
|
||||
FeatureConfigSource {
|
||||
features: Some(&profile),
|
||||
..Default::default()
|
||||
},
|
||||
FeatureOverrides::default(),
|
||||
);
|
||||
let mut expected = Features::with_defaults();
|
||||
if enabled {
|
||||
expected.enable(Feature::GuardianThreadContext);
|
||||
}
|
||||
assert_eq!(features.enabled_features(), expected.enabled_features());
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn guardian_v2_feature_config_deserializes_classifier_and_transcript_settings() {
|
||||
let features: FeaturesToml = toml::from_str(
|
||||
|
||||
Reference in New Issue
Block a user