From: Simon Glass <simon.glass@canonical.com> This series contains three groups of improvements to pickman: Refactoring (patches 1-8): Clean up the codebase by splitting large functions into smaller helpers, adding test coverage for prepare_apply(), extracting a run_agent_collect() helper to remove duplicated agent-streaming code, and switching to tools.read/write_file() for file I/O. Subtree handling (patches 9-10): Teach pickman to detect and handle dts/upstream subtree merges, and process subtree updates even when the maximum number of MRs is reached. Pipeline fixes (patches 11-16): Add infrastructure and logic for automatically diagnosing and fixing CI pipeline failures using a Claude agent, including GitLab API helpers, database tracking, null-byte stripping in job logs, and a retry/comment system. Simon Glass (16): pickman: Drop unnecessary f-string prefixes in do_rewind() pickman: Refactor do_rewind() into smaller helpers pickman: Refactor do_next_merges() into smaller helpers pickman: Refactor decompose_mega_merge() into smaller helpers pickman: Refactor handle_already_applied() into smaller helpers pickman: Add tests for prepare_apply() pickman: Refactor the initial part of prepare_apply() pickman: Handle dts/upstream subtree merges automatically pickman: Create a function to run an agent pickman: Use tools for file I/O pickman: Use tools for file I/O in tests pickman: Add a database table to track pipeline fixes pickman: Add pipeline helpers to gitlab_api pickman: Support automatically fixing pipeline failures pickman: Process subtree updates even at max MRs pickman: Strip null bytes from CI job logs tools/pickman/README.rst | 81 ++ tools/pickman/__main__.py | 6 + tools/pickman/agent.py | 237 ++++- tools/pickman/control.py | 972 +++++++++++++++----- tools/pickman/database.py | 65 +- tools/pickman/ftest.py | 1661 ++++++++++++++++++++++++++++++++--- tools/pickman/gitlab_api.py | 78 +- 7 files changed, 2744 insertions(+), 356 deletions(-) -- 2.43.0 base-commit: c42396807e2c92a1f87b9d671e2e09c7bf13caf2 branch: picke