新增: 推进链阶段3收口(advance_task/run_workflow工具+status状态机收口)

This commit is contained in:
2026-06-16 21:20:41 +08:00
parent dfe0096498
commit b94e74a96d
6 changed files with 126 additions and 15 deletions

View File

@@ -247,15 +247,23 @@ async fn update_field_rejects_cross_table_column_tasks_name() {
}
#[tokio::test]
async fn update_field_allows_tasks_status() {
async fn update_field_rejects_tasks_status() {
// D-260616-04 status 收口:status 已从 tasks 白名单移除,所有 status 改动须走
// advance_status_atomic(CAS SQL 独立路径,不经通用 update_field)。update_field
// 改 status 应在白名单阶段被拒(防 update_task IPC / AI 工具旁路绕过状态机与 review_rounds 累加)。
let (projects, tasks, _r, _b) = setup().await;
projects.insert(project("p1")).await.unwrap();
tasks.insert(task("t1", "p1")).await.unwrap();
let ok = tasks.update_field("t1", "status", "done").await.unwrap();
assert!(ok);
let res = tasks.update_field("t1", "status", "done").await;
assert!(
res.is_err(),
"status 不在 tasks 白名单,应被拒(改走 advance_status_atomic)"
);
// 对照:status 未被改写,仍为初始值(task fixture 的初始 status)
let rec = tasks.get_by_id("t1").await.unwrap().unwrap();
assert_eq!(rec.status, "done");
assert_ne!(rec.status, "done", "白名单拒绝后 status 不应被改写");
}
#[tokio::test]