同步 #491 漏改的提示词断言,修 master 上两条 AGC Rust lane 的 CI 红
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m20s
Project CI / Backend tests (pull_request) Failing after 12s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m6s
Project CI / Frontend tests (pull_request) Successful in 2m3s
Project CI / Repository checks (pull_request) Failing after 12s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m23s
Project CI / Native shell tests (pull_request) Successful in 5m45s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 8m8s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m52s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m20s
Project CI / Backend tests (pull_request) Failing after 12s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m6s
Project CI / Frontend tests (pull_request) Successful in 2m3s
Project CI / Repository checks (pull_request) Failing after 12s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m23s
Project CI / Native shell tests (pull_request) Successful in 5m45s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 8m8s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m52s
- tests/provider:工具计划与修复请求的 run_id 断言反转为「不得携带」(#491 已把 runId 移出提示词) - tests/response_stream:4 个 finalization/replan 用例同步 run_id 与 session_id 断言(同一 run 改由 runtime/DB 断言承担) - tests/project_tools:删除确认后的重规划请求同样反转为「不得携带 run_id」 - admin-web:AGC 模板 409 写入错误用例把聚焦断言套进 waitFor,消除 CI 抢跑 flake
This commit is contained in:
@@ -339,7 +339,10 @@ test.each([409, 503])(
|
||||
await confirmWrite();
|
||||
const message = await screen.findByRole('alert');
|
||||
const feedback = message.parentElement!;
|
||||
expect(document.activeElement).toBe(feedback);
|
||||
// 聚焦发生在 React passive effect 里(AdminAgcTemplatesPage 的 feedback 聚焦 useEffect),
|
||||
// 而 findByRole 在 alert 节点一挂上就返回,可能早于该 effect 执行;这里等聚焦落地,
|
||||
// 避免在 CI 负载下抢跑。断言口径不变:焦点最终必须落在提示区而不是弹窗面板。
|
||||
await waitFor(() => expect(document.activeElement).toBe(feedback));
|
||||
expect(feedback.tabIndex).toBe(-1);
|
||||
expect(focus).toHaveBeenCalledWith({ preventScroll: true });
|
||||
expect(viewport.scrollTop).toBe(20);
|
||||
|
||||
@@ -1011,7 +1011,9 @@ async fn background_agent_runtime_file_delete_confirmation_replans_after_stale_p
|
||||
let replanning_request = receiver
|
||||
.recv_timeout(Duration::from_secs(10))
|
||||
.expect("same-run replanning request after stale delete approval");
|
||||
assert!(replanning_request.contains("design-stale-delete-confirm-run"));
|
||||
// 提示词不再携带 run/session 标识(team-conventions:提示词不写宿主实现细节);
|
||||
// 同一 run 由下面的 completed.run_id 判定,这里守住“内部标识不进请求”的边界。
|
||||
assert!(!replanning_request.contains("design-stale-delete-confirm-run"));
|
||||
assert!(replanning_request.contains("projectRevisionDrift=true"));
|
||||
assert!(replanning_request.contains("旧动作未执行"));
|
||||
|
||||
|
||||
@@ -5492,7 +5492,10 @@ async fn background_agent_runtime_repairs_malformed_tool_plan_in_same_run() {
|
||||
let initial_request = receiver
|
||||
.recv_timeout(Duration::from_secs(2))
|
||||
.expect("initial tool plan request");
|
||||
assert!(initial_request.contains(run_id));
|
||||
// run/session 标识不再进入提示词(team-conventions:AGC 外置智能体提示词只写模型要遵守的
|
||||
// 指令与契约,不写宿主实现细节),同一 run 由下面的 runtime 状态与 DB 记录判定;
|
||||
// 这里改成守住反方向边界——内部标识不得再泄露进请求。
|
||||
assert!(!initial_request.contains(run_id));
|
||||
assert!(!initial_request.contains("上一条输出不符合工具计划协议"));
|
||||
assert!(mock_http_request_json(&initial_request)["tools"]
|
||||
.as_array()
|
||||
@@ -5500,7 +5503,7 @@ async fn background_agent_runtime_repairs_malformed_tool_plan_in_same_run() {
|
||||
let repair_request = receiver
|
||||
.recv_timeout(Duration::from_secs(2))
|
||||
.expect("tool plan repair request");
|
||||
assert!(repair_request.contains(run_id));
|
||||
assert!(!repair_request.contains(run_id));
|
||||
assert!(repair_request.contains("\"role\":\"assistant\""));
|
||||
assert!(repair_request.contains("格式损坏"));
|
||||
assert!(repair_request.contains("上一条输出不符合工具计划协议"));
|
||||
|
||||
@@ -1957,7 +1957,9 @@ fn finalization_resume_discards_unpersisted_reply_after_revision_drift() {
|
||||
let request = receiver
|
||||
.recv_timeout(Duration::from_secs(2))
|
||||
.expect("stale prepared finalization must replan");
|
||||
assert!(request.contains(run_id));
|
||||
// 提示词不再携带 run/session 标识(team-conventions:提示词不写宿主实现细节),
|
||||
// 同一 run 由下面的 runtime.run_id 判定;这里守住“内部标识不进请求”的边界。
|
||||
assert!(!request.contains(run_id));
|
||||
let runtime = wait_for_agent_runtime_idle(&root, "design-director");
|
||||
assert_eq!(runtime.phase, "completed");
|
||||
assert_eq!(runtime.run_id, run_id);
|
||||
@@ -2651,11 +2653,11 @@ async fn background_finalization_replans_same_run_after_cross_agent_revision_dri
|
||||
let initial_plan_request = request_receiver
|
||||
.recv_timeout(Duration::from_secs(2))
|
||||
.expect("initial convergence plan request");
|
||||
assert!(initial_plan_request.contains(run_id));
|
||||
assert!(!initial_plan_request.contains(run_id));
|
||||
let stale_final_reply_request = request_receiver
|
||||
.recv_timeout(Duration::from_secs(2))
|
||||
.expect("blocked stale final reply request");
|
||||
assert!(stale_final_reply_request.contains(run_id));
|
||||
assert!(!stale_final_reply_request.contains(run_id));
|
||||
assert!(
|
||||
!game_creator_agent_runtime_task_lock_is_available(&root, "design-director")
|
||||
.expect("inspect lock while final reply is blocked"),
|
||||
@@ -2677,8 +2679,10 @@ async fn background_finalization_replans_same_run_after_cross_agent_revision_dri
|
||||
let replanned_request = request_receiver
|
||||
.recv_timeout(Duration::from_secs(30))
|
||||
.expect("same run replanning request");
|
||||
assert!(replanned_request.contains(run_id));
|
||||
assert!(replanned_request.contains(&session_id));
|
||||
// 提示词不再携带 run/session 标识(team-conventions:提示词不写宿主实现细节);
|
||||
// 同一 run 由本用例末尾的 runtime.run_id / runtime.session_id 判定。
|
||||
assert!(!replanned_request.contains(run_id));
|
||||
assert!(!replanned_request.contains(&session_id));
|
||||
assert!(replanned_request.contains("runtime.verification"));
|
||||
assert!(replanned_request.contains("currentRevision=2"));
|
||||
assert!(
|
||||
@@ -2689,13 +2693,13 @@ async fn background_finalization_replans_same_run_after_cross_agent_revision_dri
|
||||
let verified_request = request_receiver
|
||||
.recv_timeout(Duration::from_secs(10))
|
||||
.expect("request after current revision verification");
|
||||
assert!(verified_request.contains(run_id));
|
||||
assert!(!verified_request.contains(run_id));
|
||||
assert!(verified_request.contains("project.verify"));
|
||||
assert!(verified_request.contains("AGENT_RUNTIME_CURRENT_REVISION_OK"));
|
||||
let current_final_reply_request = request_receiver
|
||||
.recv_timeout(Duration::from_secs(30))
|
||||
.expect("current final reply request");
|
||||
assert!(current_final_reply_request.contains(run_id));
|
||||
assert!(!current_final_reply_request.contains(run_id));
|
||||
|
||||
let runtime = wait_for_agent_runtime_idle(&root, "design-director");
|
||||
wait_for_provider_handoff_terminal_cleanup(&root, "design-director", run_id);
|
||||
@@ -2830,8 +2834,10 @@ async fn read_only_background_finalization_replans_when_reply_revision_becomes_s
|
||||
let replanned_request = request_receiver
|
||||
.recv_timeout(Duration::from_secs(30))
|
||||
.expect("read-only same-run replanning request");
|
||||
assert!(replanned_request.contains(run_id));
|
||||
assert!(replanned_request.contains(&session_id));
|
||||
// 提示词不再携带 run/session 标识(team-conventions:提示词不写宿主实现细节);
|
||||
// 同一 run 由下面的 runtime.run_id / runtime.session_id 判定。
|
||||
assert!(!replanned_request.contains(run_id));
|
||||
assert!(!replanned_request.contains(&session_id));
|
||||
assert!(replanned_request.contains("responseRevision=0"));
|
||||
assert!(replanned_request.contains("currentRevision=1"));
|
||||
let runtime = wait_for_agent_runtime_idle(&root, "design-director");
|
||||
@@ -3024,7 +3030,9 @@ async fn stale_finalization_context_survives_restart_before_same_run_replanning(
|
||||
let replanned_request = request_receiver
|
||||
.recv_timeout(Duration::from_secs(2))
|
||||
.expect("restart replanning request");
|
||||
assert!(replanned_request.contains(run_id));
|
||||
// 提示词不再携带 run/session 标识(team-conventions:提示词不写宿主实现细节);
|
||||
// 同一 run 由本用例末尾的 runtime.run_id / runtime.session_id 判定。
|
||||
assert!(!replanned_request.contains(run_id));
|
||||
assert!(replanned_request.contains("currentRevision=2"));
|
||||
let verified_request = request_receiver
|
||||
.recv_timeout(Duration::from_secs(10))
|
||||
@@ -3033,7 +3041,7 @@ async fn stale_finalization_context_survives_restart_before_same_run_replanning(
|
||||
let final_reply_request = request_receiver
|
||||
.recv_timeout(Duration::from_secs(2))
|
||||
.expect("restart final reply request");
|
||||
assert!(final_reply_request.contains(run_id));
|
||||
assert!(!final_reply_request.contains(run_id));
|
||||
|
||||
let runtime = read_game_creator_agent_runtime_at(&root, "design-director")
|
||||
.expect("read completed restart runtime")
|
||||
|
||||
Reference in New Issue
Block a user