mirror of
https://github.com/openai/codex.git
synced 2026-09-15 12:08:01 +00:00
tests: add pre-turn context-diff compaction snapshots
This commit is contained in:
@@ -28,6 +28,7 @@ use core_test_support::test_codex::test_codex;
|
||||
use core_test_support::wait_for_event;
|
||||
use core_test_support::wait_for_event_match;
|
||||
use std::collections::VecDeque;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use core_test_support::responses::ResponsesRequest;
|
||||
use core_test_support::responses::ev_assistant_message;
|
||||
@@ -66,6 +67,8 @@ const DUMMY_FUNCTION_NAME: &str = "test_tool";
|
||||
const DUMMY_CALL_ID: &str = "call-multi-auto";
|
||||
const FUNCTION_CALL_LIMIT_MSG: &str = "function call limit push";
|
||||
const POST_AUTO_USER_MSG: &str = "post auto follow-up";
|
||||
const PRETURN_CONTEXT_DIFF_CWD_MARKER: &str = "PRETURN_CONTEXT_DIFF_CWD";
|
||||
const PRETURN_CONTEXT_DIFF_CWD: &str = "/tmp/PRETURN_CONTEXT_DIFF_CWD";
|
||||
|
||||
pub(super) const COMPACT_WARNING_MESSAGE: &str = "Heads up: Long threads and multiple compactions can cause the model to be less accurate. Start a new thread when possible to keep threads small and targeted.";
|
||||
|
||||
@@ -198,8 +201,8 @@ fn normalize_shape_text(text: &str) -> String {
|
||||
if text.starts_with("# AGENTS.md instructions for ") {
|
||||
return "<AGENTS_MD>".to_string();
|
||||
}
|
||||
if text.starts_with("<environment_context>") {
|
||||
return "<ENVIRONMENT_CONTEXT>".to_string();
|
||||
if let Some(env_context) = normalize_environment_context_for_shape(text) {
|
||||
return env_context;
|
||||
}
|
||||
if text.contains("<permissions instructions>") {
|
||||
return "<PERMISSIONS_INSTRUCTIONS>".to_string();
|
||||
@@ -208,6 +211,25 @@ fn normalize_shape_text(text: &str) -> String {
|
||||
text.replace('\n', "\\n")
|
||||
}
|
||||
|
||||
fn normalize_environment_context_for_shape(text: &str) -> Option<String> {
|
||||
if !text.starts_with("<environment_context>") {
|
||||
return None;
|
||||
}
|
||||
let cwd = text.lines().find_map(|line| {
|
||||
let trimmed = line.trim();
|
||||
let cwd = trimmed.strip_prefix("<cwd>")?.strip_suffix("</cwd>")?;
|
||||
Some(if cwd.contains(PRETURN_CONTEXT_DIFF_CWD_MARKER) {
|
||||
PRETURN_CONTEXT_DIFF_CWD_MARKER.to_string()
|
||||
} else {
|
||||
"<CWD>".to_string()
|
||||
})
|
||||
});
|
||||
Some(match cwd {
|
||||
Some(cwd) => format!("<ENVIRONMENT_CONTEXT:cwd={cwd}>"),
|
||||
None => "<ENVIRONMENT_CONTEXT:cwd=<NONE>>".to_string(),
|
||||
})
|
||||
}
|
||||
|
||||
fn message_text_for_shape(item: &Value) -> String {
|
||||
item.get("content")
|
||||
.and_then(Value::as_array)
|
||||
@@ -310,12 +332,13 @@ fn request_input_shape(request: &ResponsesRequest) -> String {
|
||||
.join("\n")
|
||||
}
|
||||
|
||||
fn sectioned_request_shapes(sections: &[(&str, &ResponsesRequest)]) -> String {
|
||||
sections
|
||||
fn sectioned_request_shapes(scenario: &str, sections: &[(&str, &ResponsesRequest)]) -> String {
|
||||
let sections = sections
|
||||
.iter()
|
||||
.map(|(title, request)| format!("## {title}\n{}", request_input_shape(request)))
|
||||
.collect::<Vec<String>>()
|
||||
.join("\n\n")
|
||||
.join("\n\n");
|
||||
format!("Scenario: {scenario}\n\n{sections}")
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
@@ -3121,6 +3144,20 @@ async fn snapshot_request_shape_pre_turn_compaction_including_incoming_user_mess
|
||||
.expect("submit user input");
|
||||
wait_for_event(&codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await;
|
||||
}
|
||||
codex
|
||||
.submit(Op::OverrideTurnContext {
|
||||
cwd: Some(PathBuf::from(PRETURN_CONTEXT_DIFF_CWD)),
|
||||
approval_policy: None,
|
||||
sandbox_policy: None,
|
||||
windows_sandbox_level: None,
|
||||
model: None,
|
||||
effort: None,
|
||||
summary: None,
|
||||
collaboration_mode: None,
|
||||
personality: None,
|
||||
})
|
||||
.await
|
||||
.expect("override turn context");
|
||||
let image_url = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGNgYAAAAAMAASsJTYQAAAAASUVORK5CYII="
|
||||
.to_string();
|
||||
codex
|
||||
@@ -3147,15 +3184,22 @@ async fn snapshot_request_shape_pre_turn_compaction_including_incoming_user_mess
|
||||
let follow_up_shape = request_input_shape(&requests[3]);
|
||||
insta::assert_snapshot!(
|
||||
"pre_turn_compaction_including_incoming_shapes",
|
||||
sectioned_request_shapes(&[
|
||||
("Local Compaction Request", &requests[2]),
|
||||
("Local Post-Compaction History Layout", &requests[3]),
|
||||
])
|
||||
sectioned_request_shapes(
|
||||
"Pre-turn auto-compaction with a context override emits the context diff in the compact request while the incoming user message is still excluded on main.",
|
||||
&[
|
||||
("Local Compaction Request", &requests[2]),
|
||||
("Local Post-Compaction History Layout", &requests[3]),
|
||||
]
|
||||
)
|
||||
);
|
||||
assert!(
|
||||
compact_shape.contains("<SUMMARIZATION_PROMPT>"),
|
||||
"expected compact request to include summarization prompt"
|
||||
);
|
||||
assert!(
|
||||
compact_shape.contains(PRETURN_CONTEXT_DIFF_CWD_MARKER),
|
||||
"expected compact request to include pre-turn context diff"
|
||||
);
|
||||
assert!(
|
||||
!compact_shape.contains("USER_THREE"),
|
||||
"current main behavior excludes incoming user message from pre-turn compaction input"
|
||||
@@ -3262,10 +3306,13 @@ async fn snapshot_request_shape_pre_turn_compaction_context_window_exceeded() {
|
||||
let include_attempt_shape = request_input_shape(&requests[1]);
|
||||
insta::assert_snapshot!(
|
||||
"pre_turn_compaction_context_window_exceeded_shapes",
|
||||
sectioned_request_shapes(&[(
|
||||
"Local Compaction Request (Incoming User Excluded on main)",
|
||||
&requests[1]
|
||||
),])
|
||||
sectioned_request_shapes(
|
||||
"Pre-turn auto-compaction context-window failure on main: compaction request excludes the incoming user message and the turn errors.",
|
||||
&[(
|
||||
"Local Compaction Request (Incoming User Excluded on main)",
|
||||
&requests[1]
|
||||
),]
|
||||
)
|
||||
);
|
||||
|
||||
assert!(
|
||||
@@ -3333,10 +3380,13 @@ async fn snapshot_request_shape_mid_turn_continuation_compaction() {
|
||||
let follow_up_shape = request_input_shape(&requests[2]);
|
||||
insta::assert_snapshot!(
|
||||
"mid_turn_compaction_shapes",
|
||||
sectioned_request_shapes(&[
|
||||
("Local Compaction Request", &requests[1]),
|
||||
("Local Post-Compaction History Layout", &requests[2]),
|
||||
])
|
||||
sectioned_request_shapes(
|
||||
"Mid-turn continuation compaction after tool output: compact request includes tool artifacts and follow-up request includes the summary.",
|
||||
&[
|
||||
("Local Compaction Request", &requests[1]),
|
||||
("Local Post-Compaction History Layout", &requests[2]),
|
||||
]
|
||||
)
|
||||
);
|
||||
assert!(
|
||||
compact_shape.contains("function_call_output"),
|
||||
@@ -3396,7 +3446,10 @@ async fn snapshot_request_shape_manual_compact_without_previous_user_messages()
|
||||
let follow_up_shape = request_input_shape(&requests[0]);
|
||||
insta::assert_snapshot!(
|
||||
"manual_compact_without_prev_user_shapes",
|
||||
sectioned_request_shapes(&[("Local Post-Compaction History Layout", &requests[0]),])
|
||||
sectioned_request_shapes(
|
||||
"Manual /compact with no prior user turn behaves as a no-op and follow-up turn carries only canonical initial context plus the new user message.",
|
||||
&[("Local Post-Compaction History Layout", &requests[0]),]
|
||||
)
|
||||
);
|
||||
assert!(
|
||||
!follow_up_shape.contains("<SUMMARY:MANUAL_EMPTY_SUMMARY>"),
|
||||
@@ -3470,10 +3523,13 @@ async fn snapshot_request_shape_manual_compact_with_previous_user_messages() {
|
||||
let follow_up_shape = request_input_shape(&requests[2]);
|
||||
insta::assert_snapshot!(
|
||||
"manual_compact_with_history_shapes",
|
||||
sectioned_request_shapes(&[
|
||||
("Local Compaction Request", &requests[1]),
|
||||
("Local Post-Compaction History Layout", &requests[2]),
|
||||
])
|
||||
sectioned_request_shapes(
|
||||
"Manual /compact with prior user history compacts existing history and the follow-up turn includes the compact summary plus new user message.",
|
||||
&[
|
||||
("Local Compaction Request", &requests[1]),
|
||||
("Local Post-Compaction History Layout", &requests[2]),
|
||||
]
|
||||
)
|
||||
);
|
||||
assert!(
|
||||
compact_shape.contains("USER_ONE"),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#![allow(clippy::expect_used)]
|
||||
|
||||
use std::fs;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use anyhow::Result;
|
||||
use codex_core::CodexAuth;
|
||||
@@ -42,6 +43,8 @@ fn estimate_compact_payload_tokens(request: &responses::ResponsesRequest) -> i64
|
||||
}
|
||||
|
||||
const DUMMY_FUNCTION_NAME: &str = "test_tool";
|
||||
const PRETURN_CONTEXT_DIFF_CWD_MARKER: &str = "PRETURN_CONTEXT_DIFF_CWD";
|
||||
const PRETURN_CONTEXT_DIFF_CWD: &str = "/tmp/PRETURN_CONTEXT_DIFF_CWD";
|
||||
|
||||
fn summary_with_prefix(summary: &str) -> String {
|
||||
format!("{SUMMARY_PREFIX}\n{summary}")
|
||||
@@ -66,8 +69,8 @@ fn normalize_shape_text(text: &str) -> String {
|
||||
if text.starts_with("# AGENTS.md instructions for ") {
|
||||
return "<AGENTS_MD>".to_string();
|
||||
}
|
||||
if text.starts_with("<environment_context>") {
|
||||
return "<ENVIRONMENT_CONTEXT>".to_string();
|
||||
if let Some(env_context) = normalize_environment_context_for_shape(text) {
|
||||
return env_context;
|
||||
}
|
||||
if text.contains("<permissions instructions>") {
|
||||
return "<PERMISSIONS_INSTRUCTIONS>".to_string();
|
||||
@@ -76,6 +79,25 @@ fn normalize_shape_text(text: &str) -> String {
|
||||
text.replace('\n', "\\n")
|
||||
}
|
||||
|
||||
fn normalize_environment_context_for_shape(text: &str) -> Option<String> {
|
||||
if !text.starts_with("<environment_context>") {
|
||||
return None;
|
||||
}
|
||||
let cwd = text.lines().find_map(|line| {
|
||||
let trimmed = line.trim();
|
||||
let cwd = trimmed.strip_prefix("<cwd>")?.strip_suffix("</cwd>")?;
|
||||
Some(if cwd.contains(PRETURN_CONTEXT_DIFF_CWD_MARKER) {
|
||||
PRETURN_CONTEXT_DIFF_CWD_MARKER.to_string()
|
||||
} else {
|
||||
"<CWD>".to_string()
|
||||
})
|
||||
});
|
||||
Some(match cwd {
|
||||
Some(cwd) => format!("<ENVIRONMENT_CONTEXT:cwd={cwd}>"),
|
||||
None => "<ENVIRONMENT_CONTEXT:cwd=<NONE>>".to_string(),
|
||||
})
|
||||
}
|
||||
|
||||
fn message_text_for_shape(item: &Value) -> String {
|
||||
item.get("content")
|
||||
.and_then(Value::as_array)
|
||||
@@ -178,12 +200,16 @@ fn request_input_shape(request: &responses::ResponsesRequest) -> String {
|
||||
.join("\n")
|
||||
}
|
||||
|
||||
fn sectioned_request_shapes(sections: &[(&str, &responses::ResponsesRequest)]) -> String {
|
||||
sections
|
||||
fn sectioned_request_shapes(
|
||||
scenario: &str,
|
||||
sections: &[(&str, &responses::ResponsesRequest)],
|
||||
) -> String {
|
||||
let sections = sections
|
||||
.iter()
|
||||
.map(|(title, request)| format!("## {title}\n{}", request_input_shape(request)))
|
||||
.collect::<Vec<String>>()
|
||||
.join("\n\n")
|
||||
.join("\n\n");
|
||||
format!("Scenario: {scenario}\n\n{sections}")
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
@@ -1515,6 +1541,21 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_including_incoming_us
|
||||
.await;
|
||||
|
||||
for user in ["USER_ONE", "USER_TWO", "USER_THREE"] {
|
||||
if user == "USER_THREE" {
|
||||
codex
|
||||
.submit(Op::OverrideTurnContext {
|
||||
cwd: Some(PathBuf::from(PRETURN_CONTEXT_DIFF_CWD)),
|
||||
approval_policy: None,
|
||||
sandbox_policy: None,
|
||||
windows_sandbox_level: None,
|
||||
model: None,
|
||||
effort: None,
|
||||
summary: None,
|
||||
collaboration_mode: None,
|
||||
personality: None,
|
||||
})
|
||||
.await?;
|
||||
}
|
||||
codex
|
||||
.submit(Op::UserInput {
|
||||
items: vec![UserInput::Text {
|
||||
@@ -1540,10 +1581,17 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_including_incoming_us
|
||||
let follow_up_shape = request_input_shape(&requests[2]);
|
||||
insta::assert_snapshot!(
|
||||
"remote_pre_turn_compaction_including_incoming_shapes",
|
||||
sectioned_request_shapes(&[
|
||||
("Remote Compaction Request", &compact_request),
|
||||
("Remote Post-Compaction History Layout", &requests[2]),
|
||||
])
|
||||
sectioned_request_shapes(
|
||||
"Remote pre-turn auto-compaction with a context override emits the context diff in the compact request while excluding the incoming user message on main.",
|
||||
&[
|
||||
("Remote Compaction Request", &compact_request),
|
||||
("Remote Post-Compaction History Layout", &requests[2]),
|
||||
]
|
||||
)
|
||||
);
|
||||
assert!(
|
||||
compact_shape.contains(PRETURN_CONTEXT_DIFF_CWD_MARKER),
|
||||
"expected remote compact request to include pre-turn context diff"
|
||||
);
|
||||
assert!(
|
||||
!compact_shape.contains("USER_THREE"),
|
||||
@@ -1640,10 +1688,13 @@ async fn snapshot_request_shape_remote_pre_turn_compaction_failure_stops_without
|
||||
let include_attempt_shape = request_input_shape(&include_attempt_request);
|
||||
insta::assert_snapshot!(
|
||||
"remote_pre_turn_compaction_failure_shapes",
|
||||
sectioned_request_shapes(&[(
|
||||
"Remote Compaction Request (Incoming User Excluded on main)",
|
||||
&include_attempt_request
|
||||
),])
|
||||
sectioned_request_shapes(
|
||||
"Remote pre-turn auto-compaction parse failure on main: compaction request excludes the incoming user message and the turn stops.",
|
||||
&[(
|
||||
"Remote Compaction Request (Incoming User Excluded on main)",
|
||||
&include_attempt_request
|
||||
),]
|
||||
)
|
||||
);
|
||||
assert!(
|
||||
!include_attempt_shape.contains("USER_TWO"),
|
||||
@@ -1721,10 +1772,13 @@ async fn snapshot_request_shape_remote_mid_turn_continuation_compaction() -> Res
|
||||
let follow_up_shape = request_input_shape(&requests[1]);
|
||||
insta::assert_snapshot!(
|
||||
"remote_mid_turn_compaction_shapes",
|
||||
sectioned_request_shapes(&[
|
||||
("Remote Compaction Request", &compact_request),
|
||||
("Remote Post-Compaction History Layout", &requests[1]),
|
||||
])
|
||||
sectioned_request_shapes(
|
||||
"Remote mid-turn continuation compaction after tool output: compact request includes tool artifacts and follow-up request includes the summary.",
|
||||
&[
|
||||
("Remote Compaction Request", &compact_request),
|
||||
("Remote Post-Compaction History Layout", &requests[1]),
|
||||
]
|
||||
)
|
||||
);
|
||||
assert!(
|
||||
compact_shape.contains("function_call_output"),
|
||||
@@ -1787,10 +1841,13 @@ async fn snapshot_request_shape_remote_manual_compact_without_previous_user_mess
|
||||
let follow_up_shape = request_input_shape(&follow_up_request);
|
||||
insta::assert_snapshot!(
|
||||
"remote_manual_compact_without_prev_user_shapes",
|
||||
sectioned_request_shapes(&[
|
||||
("Remote Compaction Request", &compact_request),
|
||||
("Remote Post-Compaction History Layout", &follow_up_request),
|
||||
])
|
||||
sectioned_request_shapes(
|
||||
"Remote manual /compact with no prior user turn still issues a compact request on main; follow-up turn carries canonical context and new user message.",
|
||||
&[
|
||||
("Remote Compaction Request", &compact_request),
|
||||
("Remote Post-Compaction History Layout", &follow_up_request),
|
||||
]
|
||||
)
|
||||
);
|
||||
assert!(
|
||||
!follow_up_shape.contains("<SUMMARY:REMOTE_MANUAL_EMPTY_SUMMARY>"),
|
||||
@@ -1873,10 +1930,13 @@ async fn snapshot_request_shape_remote_manual_compact_with_previous_user_message
|
||||
let follow_up_shape = request_input_shape(&requests[1]);
|
||||
insta::assert_snapshot!(
|
||||
"remote_manual_compact_with_history_shapes",
|
||||
sectioned_request_shapes(&[
|
||||
("Remote Compaction Request", &compact_request),
|
||||
("Remote Post-Compaction History Layout", &requests[1]),
|
||||
])
|
||||
sectioned_request_shapes(
|
||||
"Remote manual /compact with prior user history compacts existing history and follow-up includes compact summary plus new user message.",
|
||||
&[
|
||||
("Remote Compaction Request", &compact_request),
|
||||
("Remote Post-Compaction History Layout", &requests[1]),
|
||||
]
|
||||
)
|
||||
);
|
||||
assert!(
|
||||
compact_shape.contains("USER_ONE"),
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
---
|
||||
source: core/tests/suite/compact.rs
|
||||
assertion_line: 3086
|
||||
expression: "sectioned_request_shapes(&[(\"Local Compaction Request\", &requests[1]),\n(\"Local Post-Compaction History Layout\", &requests[2]),])"
|
||||
expression: "sectioned_request_shapes(\"Manual /compact with prior user history compacts existing history and the follow-up turn includes the compact summary plus new user message.\",\n&[(\"Local Compaction Request\", &requests[1]),\n(\"Local Post-Compaction History Layout\", &requests[2]),])"
|
||||
---
|
||||
Scenario: Manual /compact with prior user history compacts existing history and the follow-up turn includes the compact summary plus new user message.
|
||||
|
||||
## Local Compaction Request
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
04:message/assistant:FIRST_REPLY
|
||||
05:message/user:<SUMMARIZATION_PROMPT>
|
||||
@@ -14,7 +15,7 @@ expression: "sectioned_request_shapes(&[(\"Local Compaction Request\", &requests
|
||||
## Local Post-Compaction History Layout
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
04:message/user:<SUMMARY:MANUAL_SUMMARY>
|
||||
05:message/user:USER_TWO
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
---
|
||||
source: core/tests/suite/compact.rs
|
||||
assertion_line: 3015
|
||||
expression: "sectioned_request_shapes(&[(\"Local Post-Compaction History Layout\",\n&requests[0]),])"
|
||||
expression: "sectioned_request_shapes(\"Manual /compact with no prior user turn behaves as a no-op and follow-up turn carries only canonical initial context plus the new user message.\",\n&[(\"Local Post-Compaction History Layout\", &requests[0]),])"
|
||||
---
|
||||
Scenario: Manual /compact with no prior user turn behaves as a no-op and follow-up turn carries only canonical initial context plus the new user message.
|
||||
|
||||
## Local Post-Compaction History Layout
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:<SUMMARIZATION_PROMPT>
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
---
|
||||
source: core/tests/suite/compact.rs
|
||||
expression: "sectioned_request_shapes(&[(\"Local Compaction Request\", &requests[1]),\n(\"Local Post-Compaction History Layout\", &requests[2]),])"
|
||||
expression: "sectioned_request_shapes(\"Mid-turn continuation compaction after tool output: compact request includes tool artifacts and follow-up request includes the summary.\",\n&[(\"Local Compaction Request\", &requests[1]),\n(\"Local Post-Compaction History Layout\", &requests[2]),])"
|
||||
---
|
||||
Scenario: Mid-turn continuation compaction after tool output: compact request includes tool artifacts and follow-up request includes the summary.
|
||||
|
||||
## Local Compaction Request
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
04:function_call/<TOOL_CALL>
|
||||
05:function_call_output:<TOOL_ERROR_OUTPUT>
|
||||
@@ -14,6 +16,6 @@ expression: "sectioned_request_shapes(&[(\"Local Compaction Request\", &requests
|
||||
## Local Post-Compaction History Layout
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
04:message/user:<SUMMARY:MID_TURN_SUMMARY>
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
---
|
||||
source: core/tests/suite/compact.rs
|
||||
assertion_line: 2878
|
||||
expression: "sectioned_request_shapes(&[(\"Local Compaction Request (Incoming User Excluded on main)\",\n&requests[1]),])"
|
||||
expression: "sectioned_request_shapes(\"Pre-turn auto-compaction context-window failure on main: compaction request excludes the incoming user message and the turn errors.\",\n&[(\"Local Compaction Request (Incoming User Excluded on main)\",\n&requests[1]),])"
|
||||
---
|
||||
Scenario: Pre-turn auto-compaction context-window failure on main: compaction request excludes the incoming user message and the turn errors.
|
||||
|
||||
## Local Compaction Request (Incoming User Excluded on main)
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
04:message/assistant:FIRST_REPLY
|
||||
05:message/user:<SUMMARIZATION_PROMPT>
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
---
|
||||
source: core/tests/suite/compact.rs
|
||||
assertion_line: 2763
|
||||
expression: "sectioned_request_shapes(&[(\"Local Compaction Request\", &requests[2]),\n(\"Local Post-Compaction History Layout\", &requests[3]),])"
|
||||
expression: "sectioned_request_shapes(\"Pre-turn auto-compaction with a context override emits the context diff in the compact request while the incoming user message is still excluded on main.\",\n&[(\"Local Compaction Request\", &requests[2]),\n(\"Local Post-Compaction History Layout\", &requests[3]),])"
|
||||
---
|
||||
Scenario: Pre-turn auto-compaction with a context override emits the context diff in the compact request while the incoming user message is still excluded on main.
|
||||
|
||||
## Local Compaction Request
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
04:message/assistant:FIRST_REPLY
|
||||
05:message/user:USER_TWO
|
||||
06:message/assistant:SECOND_REPLY
|
||||
07:message/user:<SUMMARIZATION_PROMPT>
|
||||
07:message/user:<ENVIRONMENT_CONTEXT:cwd=PRETURN_CONTEXT_DIFF_CWD>
|
||||
08:message/user:<SUMMARIZATION_PROMPT>
|
||||
|
||||
## Local Post-Compaction History Layout
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=PRETURN_CONTEXT_DIFF_CWD>
|
||||
03:message/user:USER_ONE
|
||||
04:message/user:USER_TWO
|
||||
05:message/user:<SUMMARY:PRE_TURN_SUMMARY>
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
---
|
||||
source: core/tests/suite/compact_remote.rs
|
||||
assertion_line: 1879
|
||||
expression: "sectioned_request_shapes(&[(\"Remote Compaction Request\", &compact_request),\n(\"Remote Post-Compaction History Layout\", &requests[1]),])"
|
||||
expression: "sectioned_request_shapes(\"Remote manual /compact with prior user history compacts existing history and follow-up includes compact summary plus new user message.\",\n&[(\"Remote Compaction Request\", &compact_request),\n(\"Remote Post-Compaction History Layout\", &requests[1]),])"
|
||||
---
|
||||
Scenario: Remote manual /compact with prior user history compacts existing history and follow-up includes compact summary plus new user message.
|
||||
|
||||
## Remote Compaction Request
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
04:message/assistant:REMOTE_MANUAL_FIRST_REPLY
|
||||
|
||||
@@ -14,6 +15,6 @@ expression: "sectioned_request_shapes(&[(\"Remote Compaction Request\", &compact
|
||||
00:message/user:USER_ONE
|
||||
01:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
02:message/user:<AGENTS_MD>
|
||||
03:message/user:<ENVIRONMENT_CONTEXT>
|
||||
03:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
04:message/user:<SUMMARY:REMOTE_MANUAL_WITH_HISTORY_SUMMARY>
|
||||
05:message/user:USER_TWO
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
---
|
||||
source: core/tests/suite/compact_remote.rs
|
||||
assertion_line: 1793
|
||||
expression: "sectioned_request_shapes(&[(\"Remote Compaction Request\", &compact_request),\n(\"Remote Post-Compaction History Layout\", &follow_up_request),])"
|
||||
expression: "sectioned_request_shapes(\"Remote manual /compact with no prior user turn still issues a compact request on main; follow-up turn carries canonical context and new user message.\",\n&[(\"Remote Compaction Request\", &compact_request),\n(\"Remote Post-Compaction History Layout\", &follow_up_request),])"
|
||||
---
|
||||
Scenario: Remote manual /compact with no prior user turn still issues a compact request on main; follow-up turn carries canonical context and new user message.
|
||||
|
||||
## Remote Compaction Request
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
|
||||
## Remote Post-Compaction History Layout
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
---
|
||||
source: core/tests/suite/compact_remote.rs
|
||||
assertion_line: 1727
|
||||
expression: "sectioned_request_shapes(&[(\"Remote Compaction Request\", &compact_request),\n(\"Remote Post-Compaction History Layout\", &requests[1]),])"
|
||||
expression: "sectioned_request_shapes(\"Remote mid-turn continuation compaction after tool output: compact request includes tool artifacts and follow-up request includes the summary.\",\n&[(\"Remote Compaction Request\", &compact_request),\n(\"Remote Post-Compaction History Layout\", &requests[1]),])"
|
||||
---
|
||||
Scenario: Remote mid-turn continuation compaction after tool output: compact request includes tool artifacts and follow-up request includes the summary.
|
||||
|
||||
## Remote Compaction Request
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
04:function_call/<TOOL_CALL>
|
||||
05:function_call_output:<TOOL_ERROR_OUTPUT>
|
||||
@@ -15,5 +16,5 @@ expression: "sectioned_request_shapes(&[(\"Remote Compaction Request\", &compact
|
||||
00:message/user:USER_ONE
|
||||
01:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
02:message/user:<AGENTS_MD>
|
||||
03:message/user:<ENVIRONMENT_CONTEXT>
|
||||
03:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
04:message/user:<SUMMARY:REMOTE_MID_TURN_SUMMARY>
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
---
|
||||
source: core/tests/suite/compact_remote.rs
|
||||
assertion_line: 1646
|
||||
expression: "sectioned_request_shapes(&[(\"Remote Compaction Request (Incoming User Excluded on main)\",\n&include_attempt_request),])"
|
||||
expression: "sectioned_request_shapes(\"Remote pre-turn auto-compaction parse failure on main: compaction request excludes the incoming user message and the turn stops.\",\n&[(\"Remote Compaction Request (Incoming User Excluded on main)\",\n&include_attempt_request),])"
|
||||
---
|
||||
Scenario: Remote pre-turn auto-compaction parse failure on main: compaction request excludes the incoming user message and the turn stops.
|
||||
|
||||
## Remote Compaction Request (Incoming User Excluded on main)
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
04:message/assistant:REMOTE_FIRST_REPLY
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
---
|
||||
source: core/tests/suite/compact_remote.rs
|
||||
assertion_line: 1546
|
||||
expression: "sectioned_request_shapes(&[(\"Remote Compaction Request\", &compact_request),\n(\"Remote Post-Compaction History Layout\", &requests[2]),])"
|
||||
expression: "sectioned_request_shapes(\"Remote pre-turn auto-compaction with a context override emits the context diff in the compact request while excluding the incoming user message on main.\",\n&[(\"Remote Compaction Request\", &compact_request),\n(\"Remote Post-Compaction History Layout\", &requests[2]),])"
|
||||
---
|
||||
Scenario: Remote pre-turn auto-compaction with a context override emits the context diff in the compact request while excluding the incoming user message on main.
|
||||
|
||||
## Remote Compaction Request
|
||||
00:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
01:message/user:<AGENTS_MD>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT>
|
||||
02:message/user:<ENVIRONMENT_CONTEXT:cwd=<CWD>>
|
||||
03:message/user:USER_ONE
|
||||
04:message/assistant:REMOTE_FIRST_REPLY
|
||||
05:message/user:USER_TWO
|
||||
06:message/assistant:REMOTE_SECOND_REPLY
|
||||
07:message/user:<ENVIRONMENT_CONTEXT:cwd=PRETURN_CONTEXT_DIFF_CWD>
|
||||
|
||||
## Remote Post-Compaction History Layout
|
||||
00:message/user:USER_ONE
|
||||
@@ -18,6 +20,6 @@ expression: "sectioned_request_shapes(&[(\"Remote Compaction Request\", &compact
|
||||
02:message/user:USER_THREE
|
||||
03:message/developer:<PERMISSIONS_INSTRUCTIONS>
|
||||
04:message/user:<AGENTS_MD>
|
||||
05:message/user:<ENVIRONMENT_CONTEXT>
|
||||
05:message/user:<ENVIRONMENT_CONTEXT:cwd=PRETURN_CONTEXT_DIFF_CWD>
|
||||
06:message/user:<SUMMARY:REMOTE_PRE_TURN_SUMMARY>
|
||||
07:message/user:USER_THREE
|
||||
|
||||
Reference in New Issue
Block a user