absorb_fixup_multi_target__yUXBUT5

Status: Failed
Started: 3/19 15:20
Execution: 5m 6.5s
Test: 10.6s
2026-03-19 07:20:38.409	DEBUG	native:1	Pochi	pochi v0.6.0
2026-03-19 07:20:38.520	DEBUG	/$bunfs/root/pochi:503027	loadAgents	Loaded 4 custom agents (4 valid, 0 invalid)
2026-03-19 07:20:38.521	DEBUG	/$bunfs/root/pochi:503028	loadSkills	Loaded 2 skills (2 valid, 0 invalid)
2026-03-19 07:20:38.600	DEBUG	/$bunfs/root/pochi:439288	PochiVendor	JWT is expiring or missing, fetching a new one
2026-03-19 07:20:40.117	DEBUG	/$bunfs/root/pochi:415701	MCPHub	MCP servers configuration changed via signal:
2026-03-19 07:20:40.118	DEBUG	/$bunfs/root/pochi:415813	MCPHub	Build MCPHub Status
2026-03-19 07:20:40.216	DEBUG	/$bunfs/root/pochi:502453	TaskRunner	Starting TaskRunner...
2026-03-19 07:20:40.305	DEBUG	/$bunfs/root/pochi:454195	listFiles	Listing workspace files from /home/user/repo with maxItems 500
2026-03-19 07:20:40.426	DEBUG	/$bunfs/root/pochi:496495	generateTaskTitle	Generating task title, old: null, new: The repo at `/home/user/repo` has a 5-commit stack where the current working copy contains fixup changes to `parser.py`, `formatter.py`, and `runner.py` — which correspond to commits 1, 3, and 5 respectively. Use `jj absorb` to automatically distribute these fixups into the correct target commits. Verify each target commit now contains the combined changes. Write an absorb report to `/home/user/absorb_report.md` showing which changes were absorbed into which commits.
2026-03-19 07:20:52.131	DEBUG	/$bunfs/root/pochi:454195	listFiles	Listing workspace files from /home/user/repo with maxItems 500
2026-03-19 07:20:52.323	WARN		GitStatus	readGitStatus timed out after 12000ms, returning undefined
2026-03-19 07:20:54.505	DEBUG	/$bunfs/root/pochi:496495	generateTaskTitle	Generating task title, old: The repo at `/home/user/repo` has a 5-commit stack where the current working copy contains fixup changes to `parser.py`, `formatter.py`, and `runner.py` — which correspond to commits 1, 3, and 5 respectively. Use `jj absorb` to automatically distribute these fixups into the correct target commits. Verify each target commit now contains the combined changes. Write an absorb report to `/home/user/absorb_report.md` showing which changes were absorbed into which commits., new: Use jj absorb to distribute working copy fixups into their target commits and write a report
2026-03-19 07:20:57.235	DEBUG	/$bunfs/root/pochi:454195	listFiles	Listing workspace files from /home/user/repo with maxItems 500
2026-03-19 07:21:00.911	DEBUG	/$bunfs/root/pochi:454195	listFiles	Listing workspace files from /home/user/repo with maxItems 500
2026-03-19 07:21:04.139	WARN		GitStatus	readGitStatus timed out after 12000ms, returning undefined
2026-03-19 07:21:07.400	DEBUG	/$bunfs/root/pochi:454195	listFiles	Listing workspace files from /home/user/repo with maxItems 500
2026-03-19 07:21:09.242	WARN		GitStatus	readGitStatus timed out after 12000ms, returning undefined
2026-03-19 07:21:12.921	WARN		GitStatus	readGitStatus timed out after 12000ms, returning undefined
2026-03-19 07:21:19.404	WARN		GitStatus	readGitStatus timed out after 12000ms, returning undefined
2026-03-19 07:25:41.671	DEBUG	/$bunfs/root/pochi:503113	TaskRunner	Failed:

 TypeError  The DOMException.name getter can only be used on instances of DOMException, 1107, 17, 1107, 17, internal:util/inspect
error stack:
  • inspect	formatError
	util/inspect:1107
  • inspect	formatRaw
	util/inspect:854
  • inspect	formatWithOptionsInternal
	util/inspect:1661
  • pochi	transportFormatted
	/$bunfs/root/pochi:417727
  • pochi	log
	/$bunfs/root/pochi:417843
  • pochi	onError
	/$bunfs/root/pochi:500661
  • pochi	makeRequest
	/$bunfs/root/pochi:432009
  • pochi	async <anonymous>
	/$bunfs/root/pochi:431766
  • pochi	async step
	/$bunfs/root/pochi:502582
  • pochi	async run
	/$bunfs/root/pochi:502459
  • pochi	async <anonymous>
	/$bunfs/root/pochi:503113
  • native	processTicksAndRejections
	native:7
The DOMException.name getter can only be used on instances of DOMException
Hit:1 http://security.ubuntu.com/ubuntu noble-security InRelease
Hit:2 http://archive.ubuntu.com/ubuntu noble InRelease
Hit:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu noble-backports 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 /home/user/.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 27ms
============================= 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 7 items

../../../tests/test_outputs.py FFFF..F                                   [100%]

=================================== FAILURES ===================================
________________________ test_commit_1_has_strip_parser ________________________

    def test_commit_1_has_strip_parser():
        result = jj("file", "show", "parser.py", "-r", "commit-1")
        assert result.returncode == 0
>       assert "strip()" in result.stdout, \
            "commit-1 parser.py should have the strip() fixup absorbed"
E       AssertionError: commit-1 parser.py should have the strip() fixup absorbed
E       assert 'strip()' in 'def parse(data):\n    return data.split(",")\n'
E        +  where 'def parse(data):\n    return data.split(",")\n' = CompletedProcess(args=['jj', 'file', 'show', 'parser.py', '-r', 'commit-1'], returncode=0, stdout='def parse(data):\n    return data.split(",")\n', stderr='').stdout

/tests/test_outputs.py:24: AssertionError
_____________________ test_commit_3_has_improved_formatter _____________________

    def test_commit_3_has_improved_formatter():
        result = jj("file", "show", "formatter.py", "-r", "commit-3")
        assert result.returncode == 0
>       assert "if i" in result.stdout, \
            "commit-3 formatter.py should have the 'if i' fixup absorbed"
E       AssertionError: commit-3 formatter.py should have the 'if i' fixup absorbed
E       assert 'if i' in 'def format_output(items):\n    return ", ".join(items)\n'
E        +  where 'def format_output(items):\n    return ", ".join(items)\n' = CompletedProcess(args=['jj', 'file', 'show', 'formatter.py', '-r', 'commit-3'], returncode=0, stdout='def format_output(items):\n    return ", ".join(items)\n', stderr='').stdout

/tests/test_outputs.py:31: AssertionError
_____________________ test_commit_5_has_none_check_runner ______________________

    def test_commit_5_has_none_check_runner():
        result = jj("file", "show", "runner.py", "-r", "commit-5")
        assert result.returncode == 0
>       assert "None" in result.stdout, \
            "commit-5 runner.py should have the None check fixup absorbed"
E       AssertionError: commit-5 runner.py should have the None check fixup absorbed
E       assert 'None' in 'def run(input_data):\n    return input_data.strip()\n'
E        +  where 'def run(input_data):\n    return input_data.strip()\n' = CompletedProcess(args=['jj', 'file', 'show', 'runner.py', '-r', 'commit-5'], returncode=0, stdout='def run(input_data):\n    return input_data.strip()\n', stderr='').stdout

/tests/test_outputs.py:38: AssertionError
__________________________ test_working_copy_is_clean __________________________

    def test_working_copy_is_clean():
        result = jj("diff", "-r", "@")
        assert result.returncode == 0
>       assert result.stdout.strip() == "", \
            "Working copy should be empty after absorb"
E       AssertionError: Working copy should be empty after absorb
E       assert 'Modified reg..._data.strip()' == ''
E         
E         + Modified regular file formatter.py:
E         +    1    1: def format_output(items):
E         +    2    2:     return ", ".join(str(i) for i in items if i)
E         + Modified regular file parser.py:
E         +    1    1: def parse(data):
E         +    2    2:     return [item.strip() for item in data.split(",")]...
E         
E         ...Full output truncated (5 lines hidden), use '-vv' to show

/tests/test_outputs.py:45: AssertionError
__________________________ test_absorb_report_exists ___________________________

    def test_absorb_report_exists():
        report_path = "/home/user/absorb_report.md"
>       assert os.path.isfile(report_path), \
            "Absorb report should exist at /home/user/absorb_report.md"
E       AssertionError: Absorb report should exist at /home/user/absorb_report.md
E       assert False
E        +  where False = <function isfile at 0x7537194b4220>('/home/user/absorb_report.md')
E        +    where <function isfile at 0x7537194b4220> = <module 'posixpath' (frozen)>.isfile
E        +      where <module 'posixpath' (frozen)> = os.path

/tests/test_outputs.py:64: AssertionError
==================================== PASSES ====================================
=========================== short test summary info ============================
PASSED ../../../tests/test_outputs.py::test_commit_2_unchanged
PASSED ../../../tests/test_outputs.py::test_commit_4_unchanged
FAILED ../../../tests/test_outputs.py::test_commit_1_has_strip_parser - Asser...
FAILED ../../../tests/test_outputs.py::test_commit_3_has_improved_formatter
FAILED ../../../tests/test_outputs.py::test_commit_5_has_none_check_runner - ...
FAILED ../../../tests/test_outputs.py::test_working_copy_is_clean - Assertion...
FAILED ../../../tests/test_outputs.py::test_absorb_report_exists - AssertionE...
========================= 5 failed, 2 passed in 0.19s ==========================