diff --git a/.doc/test-reports/assets/2026-09-15-chat-history-refresh-live/chat-refresh-live.py b/.doc/test-reports/assets/2026-09-15-chat-history-refresh-live/chat-refresh-live.py index 0e897468..bf2e6c35 100644 --- a/.doc/test-reports/assets/2026-09-15-chat-history-refresh-live/chat-refresh-live.py +++ b/.doc/test-reports/assets/2026-09-15-chat-history-refresh-live/chat-refresh-live.py @@ -207,6 +207,18 @@ def main(): n_win2 = n_cat2 = 0 texts2 = [] if default_s == 200 and isinstance(plan, dict): + # Duty holders must be active project members before SavePlan. + for uid, role in ( + (owner_id, "owner"), + (reviewer_id, "member"), + (approver_id, "member"), + ): + req( + "POST", + f"/api/v1/projects/{project_id}/members", + owner_token, + {"user_id": uid, "project_role": role}, + ) stages = plan.get("stages") or [] for stg in stages: for dt in stg.get("doc_tasks") or []: @@ -220,6 +232,8 @@ def main(): "expected_plan_revision": 0, "expected_selection_version": 1, }) + if save_s != 200: + task_out["save_err"] = err_snip(None, save_raw) prev_s, preview, _, _ = req("POST", f"/api/v1/projects/{project_id}/activation-preview", owner_token, {}) if prev_s == 200 and isinstance(preview, dict): activate_s, act, act_raw, _ = req("POST", f"/api/v1/projects/{project_id}/workflow-instances/activate", owner_token, {