template_patch_email_bundle__8JGX3RQ

Status: Failed
Started: 3/19 16:10
Execution: 1m 38.7s
Test: 11.6s
2026-03-19 08:21:18.360	DEBUG	native:1	Pochi	pochi v0.6.1
2026-03-19 08:21:18.365	DEBUG	native:7	PochiConfigManager	add workspace config: /root/.pochi/config.jsonc
2026-03-19 08:21:18.554	DEBUG	/$bunfs/pochi:503183	loadAgents	Loaded 5 custom agents (5 valid, 0 invalid)
2026-03-19 08:21:18.554	DEBUG	/$bunfs/pochi:503184	loadSkills	Loaded 2 skills (2 valid, 0 invalid)
2026-03-19 08:21:18.654	DEBUG	/$bunfs/pochi:439420	PochiVendor	JWT is expiring or missing, fetching a new one
2026-03-19 08:21:20.484	DEBUG	/$bunfs/pochi:415701	MCPHub	MCP servers configuration changed via signal:
2026-03-19 08:21:20.484	DEBUG	/$bunfs/pochi:415813	MCPHub	Build MCPHub Status
2026-03-19 08:21:20.647	DEBUG	/$bunfs/pochi:502609	TaskRunner	Starting TaskRunner...
2026-03-19 08:21:20.747	DEBUG	/$bunfs/pochi:454339	listFiles	Listing workspace files from /root with maxItems 500
2026-03-19 08:21:20.947	DEBUG	/$bunfs/pochi:496641	generateTaskTitle	Generating task title, old: null, new: You are a contributor working in a jj repository at `/home/user/repo`. You have a 4-commit patch series on a `feature` branch above `main`. You need to format these commits as email patches for submission to a project mailing list.
2026-03-19 08:22:54.378	DEBUG	/$bunfs/pochi:503269	TaskRunner	Failed:

 TypeError  undefined is not an object (evaluating 'getErrorTrace(error40).map'), 417706, 47, 417706, 47, /$bunfs/root/pochi
error stack:
  • pochi	prettyFormatErrorObj
	/$bunfs/pochi:417706
  • pochi	<anonymous>
	/$bunfs/pochi:417701
  • native	reduce
	native:1
  • pochi	log
	/$bunfs/pochi:417840
  • pochi	onError
	/$bunfs/pochi:500813
  • pochi	makeRequest
	/$bunfs/pochi:432009
  • pochi	async <anonymous>
	/$bunfs/pochi:431766
  • pochi	async step
	/$bunfs/pochi:502738
  • pochi	async run
	/$bunfs/pochi:502615
  • pochi	async <anonymous>
	/$bunfs/pochi:503269
  • native	processTicksAndRejections
	native:7
undefined is not an object (evaluating 'getErrorTrace(error40).map')
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Hit:2 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Hit:3 http://archive.ubuntu.com/ubuntu noble-backports InRelease
Hit:4 http://security.ubuntu.com/ubuntu noble-security InRelease
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
curl is already the newest version (8.5.0-2ubuntu10.8).
0 upgraded, 0 newly installed, 0 to remove and 13 not upgraded.
downloading uv 0.9.7 x86_64-unknown-linux-gnu
no checksums to verify
installing to /root/.local/bin
  uv
  uvx
everything's installed!

To add $HOME/.local/bin to your PATH, either restart your shell or run:

    source $HOME/.local/bin/env (sh, bash, zsh)
    source $HOME/.local/bin/env.fish (fish)
Downloading pygments (1.2MiB)
 Downloading pygments
Installed 6 packages in 26ms
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-8.4.1, pluggy-1.6.0
rootdir: /tests
plugins: json-ctrf-0.3.5
collected 19 items

../tests/test_outputs.py FFFFFFFFFFFFFFFFFFF                             [100%]

=================================== FAILURES ===================================
________________________ test_patches_directory_exists _________________________

    def test_patches_directory_exists():
>       assert os.path.isdir(PATCHES_DIR), \
            f"{PATCHES_DIR} directory does not exist."
E       AssertionError: /home/user/patches directory does not exist.
E       assert False
E        +  where False = <function isdir at 0x740c07eec2c0>('/home/user/patches')
E        +    where <function isdir at 0x740c07eec2c0> = <module 'posixpath' (frozen)>.isdir
E        +      where <module 'posixpath' (frozen)> = os.path

/tests/test_outputs.py:11: AssertionError
___________________________ test_cover_letter_exists ___________________________

    def test_cover_letter_exists():
        path = os.path.join(PATCHES_DIR, "0000-cover-letter.patch")
>       assert os.path.isfile(path), \
            f"{path} does not exist. Write the cover letter."
E       AssertionError: /home/user/patches/0000-cover-letter.patch does not exist. Write the cover letter.
E       assert False
E        +  where False = <function isfile at 0x740c07eec220>('/home/user/patches/0000-cover-letter.patch')
E        +    where <function isfile at 0x740c07eec220> = <module 'posixpath' (frozen)>.isfile
E        +      where <module 'posixpath' (frozen)> = os.path

/tests/test_outputs.py:17: AssertionError
____________________________ test_patch_0001_exists ____________________________

    def test_patch_0001_exists():
>       assert os.path.isfile(os.path.join(PATCHES_DIR, "0001.patch")), \
            "0001.patch does not exist."
E       AssertionError: 0001.patch does not exist.
E       assert False
E        +  where False = <function isfile at 0x740c07eec220>('/home/user/patches/0001.patch')
E        +    where <function isfile at 0x740c07eec220> = <module 'posixpath' (frozen)>.isfile
E        +      where <module 'posixpath' (frozen)> = os.path
E        +    and   '/home/user/patches/0001.patch' = <function join at 0x740c07eecc20>('/home/user/patches', '0001.patch')
E        +      where <function join at 0x740c07eecc20> = <module 'posixpath' (frozen)>.join
E        +        where <module 'posixpath' (frozen)> = os.path

/tests/test_outputs.py:22: AssertionError
____________________________ test_patch_0002_exists ____________________________

    def test_patch_0002_exists():
>       assert os.path.isfile(os.path.join(PATCHES_DIR, "0002.patch")), \
            "0002.patch does not exist."
E       AssertionError: 0002.patch does not exist.
E       assert False
E        +  where False = <function isfile at 0x740c07eec220>('/home/user/patches/0002.patch')
E        +    where <function isfile at 0x740c07eec220> = <module 'posixpath' (frozen)>.isfile
E        +      where <module 'posixpath' (frozen)> = os.path
E        +    and   '/home/user/patches/0002.patch' = <function join at 0x740c07eecc20>('/home/user/patches', '0002.patch')
E        +      where <function join at 0x740c07eecc20> = <module 'posixpath' (frozen)>.join
E        +        where <module 'posixpath' (frozen)> = os.path

/tests/test_outputs.py:27: AssertionError
____________________________ test_patch_0003_exists ____________________________

    def test_patch_0003_exists():
>       assert os.path.isfile(os.path.join(PATCHES_DIR, "0003.patch")), \
            "0003.patch does not exist."
E       AssertionError: 0003.patch does not exist.
E       assert False
E        +  where False = <function isfile at 0x740c07eec220>('/home/user/patches/0003.patch')
E        +    where <function isfile at 0x740c07eec220> = <module 'posixpath' (frozen)>.isfile
E        +      where <module 'posixpath' (frozen)> = os.path
E        +    and   '/home/user/patches/0003.patch' = <function join at 0x740c07eecc20>('/home/user/patches', '0003.patch')
E        +      where <function join at 0x740c07eecc20> = <module 'posixpath' (frozen)>.join
E        +        where <module 'posixpath' (frozen)> = os.path

/tests/test_outputs.py:32: AssertionError
____________________________ test_patch_0004_exists ____________________________

    def test_patch_0004_exists():
>       assert os.path.isfile(os.path.join(PATCHES_DIR, "0004.patch")), \
            "0004.patch does not exist."
E       AssertionError: 0004.patch does not exist.
E       assert False
E        +  where False = <function isfile at 0x740c07eec220>('/home/user/patches/0004.patch')
E        +    where <function isfile at 0x740c07eec220> = <module 'posixpath' (frozen)>.isfile
E        +      where <module 'posixpath' (frozen)> = os.path
E        +    and   '/home/user/patches/0004.patch' = <function join at 0x740c07eecc20>('/home/user/patches', '0004.patch')
E        +      where <function join at 0x740c07eecc20> = <module 'posixpath' (frozen)>.join
E        +        where <module 'posixpath' (frozen)> = os.path

/tests/test_outputs.py:37: AssertionError
_______________________ test_patch_0001_has_from_header ________________________

    def test_patch_0001_has_from_header():
>       with open(os.path.join(PATCHES_DIR, "0001.patch")) as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patches/0001.patch'

/tests/test_outputs.py:42: FileNotFoundError
_______________________ test_patch_0001_has_date_header ________________________

    def test_patch_0001_has_date_header():
>       with open(os.path.join(PATCHES_DIR, "0001.patch")) as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patches/0001.patch'

/tests/test_outputs.py:49: FileNotFoundError
___________________ test_patch_0001_subject_is_patch_1_of_4 ____________________

    def test_patch_0001_subject_is_patch_1_of_4():
>       with open(os.path.join(PATCHES_DIR, "0001.patch")) as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patches/0001.patch'

/tests/test_outputs.py:56: FileNotFoundError
___________________ test_patch_0002_subject_is_patch_2_of_4 ____________________

    def test_patch_0002_subject_is_patch_2_of_4():
>       with open(os.path.join(PATCHES_DIR, "0002.patch")) as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patches/0002.patch'

/tests/test_outputs.py:63: FileNotFoundError
___________________ test_patch_0003_subject_is_patch_3_of_4 ____________________

    def test_patch_0003_subject_is_patch_3_of_4():
>       with open(os.path.join(PATCHES_DIR, "0003.patch")) as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patches/0003.patch'

/tests/test_outputs.py:70: FileNotFoundError
___________________ test_patch_0004_subject_is_patch_4_of_4 ____________________

    def test_patch_0004_subject_is_patch_4_of_4():
>       with open(os.path.join(PATCHES_DIR, "0004.patch")) as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patches/0004.patch'

/tests/test_outputs.py:77: FileNotFoundError
_________________________ test_patches_have_separator __________________________

    def test_patches_have_separator():
        for n in ["0001", "0002", "0003", "0004"]:
>           with open(os.path.join(PATCHES_DIR, f"{n}.patch")) as f:
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patches/0001.patch'

/tests/test_outputs.py:85: FileNotFoundError
____________________ test_patch_0001_contains_config_parser ____________________

    def test_patch_0001_contains_config_parser():
>       with open(os.path.join(PATCHES_DIR, "0001.patch")) as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patches/0001.patch'

/tests/test_outputs.py:91: FileNotFoundError
__________________________ test_cover_letter_subject ___________________________

    def test_cover_letter_subject():
>       with open(os.path.join(PATCHES_DIR, "0000-cover-letter.patch")) as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patches/0000-cover-letter.patch'

/tests/test_outputs.py:98: FileNotFoundError
______________________ test_cover_letter_has_from_header _______________________

    def test_cover_letter_has_from_header():
>       with open(os.path.join(PATCHES_DIR, "0000-cover-letter.patch")) as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patches/0000-cover-letter.patch'

/tests/test_outputs.py:105: FileNotFoundError
_________________________ test_patch_bundle_log_exists _________________________

    def test_patch_bundle_log_exists():
>       assert os.path.isfile("/home/user/patch_bundle_log.txt"), \
            "/home/user/patch_bundle_log.txt does not exist."
E       AssertionError: /home/user/patch_bundle_log.txt does not exist.
E       assert False
E        +  where False = <function isfile at 0x740c07eec220>('/home/user/patch_bundle_log.txt')
E        +    where <function isfile at 0x740c07eec220> = <module 'posixpath' (frozen)>.isfile
E        +      where <module 'posixpath' (frozen)> = os.path

/tests/test_outputs.py:112: AssertionError
_____________________ test_patch_bundle_log_has_four_lines _____________________

    def test_patch_bundle_log_has_four_lines():
>       with open("/home/user/patch_bundle_log.txt") as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patch_bundle_log.txt'

/tests/test_outputs.py:117: FileNotFoundError
_____________________ test_patch_bundle_log_patch_subjects _____________________

    def test_patch_bundle_log_patch_subjects():
>       with open("/home/user/patch_bundle_log.txt") as f:
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/user/patch_bundle_log.txt'

/tests/test_outputs.py:123: FileNotFoundError
=========================== short test summary info ============================
FAILED ../tests/test_outputs.py::test_patches_directory_exists - AssertionErr...
FAILED ../tests/test_outputs.py::test_cover_letter_exists - AssertionError: /...
FAILED ../tests/test_outputs.py::test_patch_0001_exists - AssertionError: 000...
FAILED ../tests/test_outputs.py::test_patch_0002_exists - AssertionError: 000...
FAILED ../tests/test_outputs.py::test_patch_0003_exists - AssertionError: 000...
FAILED ../tests/test_outputs.py::test_patch_0004_exists - AssertionError: 000...
FAILED ../tests/test_outputs.py::test_patch_0001_has_from_header - FileNotFou...
FAILED ../tests/test_outputs.py::test_patch_0001_has_date_header - FileNotFou...
FAILED ../tests/test_outputs.py::test_patch_0001_subject_is_patch_1_of_4 - Fi...
FAILED ../tests/test_outputs.py::test_patch_0002_subject_is_patch_2_of_4 - Fi...
FAILED ../tests/test_outputs.py::test_patch_0003_subject_is_patch_3_of_4 - Fi...
FAILED ../tests/test_outputs.py::test_patch_0004_subject_is_patch_4_of_4 - Fi...
FAILED ../tests/test_outputs.py::test_patches_have_separator - FileNotFoundEr...
FAILED ../tests/test_outputs.py::test_patch_0001_contains_config_parser - Fil...
FAILED ../tests/test_outputs.py::test_cover_letter_subject - FileNotFoundErro...
FAILED ../tests/test_outputs.py::test_cover_letter_has_from_header - FileNotF...
FAILED ../tests/test_outputs.py::test_patch_bundle_log_exists - AssertionErro...
FAILED ../tests/test_outputs.py::test_patch_bundle_log_has_four_lines - FileN...
FAILED ../tests/test_outputs.py::test_patch_bundle_log_patch_subjects - FileN...
============================== 19 failed in 0.06s ==============================