[37m2026-03-19 08:17:15.245[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37mnative:1[39m[0m[0m[1m[37m Pochi[39m[22m[0m[0m pochi v0.6.1 [37m2026-03-19 08:17:15.294[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37mnative:7[39m[0m[0m[1m[37m PochiConfigManager[39m[22m[0m[0m add workspace config: /root/.pochi/config.jsonc [37m2026-03-19 08:17:15.535[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:503183[39m[0m[0m[1m[37m loadAgents[39m[22m[0m[0m Loaded 5 custom agents (5 valid, 0 invalid) [37m2026-03-19 08:17:15.537[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:503184[39m[0m[0m[1m[37m loadSkills[39m[22m[0m[0m Loaded 2 skills (2 valid, 0 invalid) [37m2026-03-19 08:17:15.578[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:439420[39m[0m[0m[1m[37m PochiVendor[39m[22m[0m[0m JWT is expiring or missing, fetching a new one [37m2026-03-19 08:17:17.206[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:415701[39m[0m[0m[1m[37m MCPHub[39m[22m[0m[0m MCP servers configuration changed via signal: [37m2026-03-19 08:17:17.207[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:415813[39m[0m[0m[1m[37m MCPHub[39m[22m[0m[0m Build MCPHub Status [37m2026-03-19 08:17:17.407[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:502609[39m[0m[0m[1m[37m TaskRunner[39m[22m[0m[0m Starting TaskRunner... [37m2026-03-19 08:17:17.502[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:17:17.638[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:496641[39m[0m[0m[1m[37m generateTaskTitle[39m[22m[0m[0m Generating task title, old: null, new: You are a support engineer tasked with recovering lost work for a developer. The developer was working on a repository located at `/home/user/workspace/repo`. They accidentally abandoned a commit that contained an important bug fix in `src/bugfix.py` and they don't remember the commit ID. [37m2026-03-19 08:17:57.047[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454315[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m handling listFile with dirPath /home/user/workspace and recursive [90mundefined[39m [37m2026-03-19 08:17:57.061[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:18:03.309[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454315[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m handling listFile with dirPath /home/user/workspace/repo and recursive [90mundefined[39m [37m2026-03-19 08:18:03.317[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:18:24.118[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:18:39.724[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m[39m[0m[0m[1m[37m generateTaskTitle[39m[22m[0m[0m Generating task title, old: You are a support engineer tasked with recovering lost work for a developer. The developer was working on a repository located at `/home/user/workspace/repo`. They accidentally abandoned a commit that contained an important bug fix in `src/bugfix.py` and they don't remember the commit ID., new: Recover abandoned commit containing bug fix [37m2026-03-19 08:18:40.740[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:18:44.730[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:18:59.796[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:19:22.615[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:19:27.406[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:19:50.511[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:20:05.546[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:20:12.700[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:20:18.760[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:20:24.502[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m/$bunfs/pochi:454339[39m[0m[0m[1m[37m listFiles[39m[22m[0m[0m Listing workspace files from /root with maxItems [33m500[39m [37m2026-03-19 08:25:15.309[39m[0m[0m [32m[1mDEBUG[22m[39m[0m[0m [37m[39m[0m[0m[1m[37m TaskRunner[39m[22m[0m[0m Failed: [97m[101m[1m TypeError [22m[49m[39m[0m[0m The DOMException.name getter can only be used on instances of DOMException, 1107, 17, 1107, 17, internal:util/inspect[0m[0m error stack: • [33minspect[39m[0m[0m formatError[0m[0m [37mutil/inspect:1107[39m[0m[0m • [33minspect[39m[0m[0m formatRaw[0m[0m [37mutil/inspect:854[39m[0m[0m • [33minspect[39m[0m[0m formatWithOptionsInternal[0m[0m [37mutil/inspect:1661[39m[0m[0m • [33mpochi[39m[0m[0m transportFormatted[0m[0m [37m/$bunfs/pochi:417727[39m[0m[0m • [33mpochi[39m[0m[0m log[0m[0m [37m/$bunfs/pochi:417843[39m[0m[0m • [33mpochi[39m[0m[0m onError[0m[0m [37m/$bunfs/pochi:500813[39m[0m[0m • [33mpochi[39m[0m[0m makeRequest[0m[0m [37m/$bunfs/pochi:432009[39m[0m[0m • [33m[39m[0m[0m [0m[0m [37m[39m[0m[0m • [33m[39m[0m[0m [0m[0m [37m[39m[0m[0m • [33m[39m[0m[0m [0m[0m [37m[39m[0m[0m • [33m[39m[0m[0m [0m[0m [37m[39m[0m[0m • [33mnative[39m[0m[0m processTicksAndRejections[0m[0m [37mnative:7[39m[0m[0m[0m[0m 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 /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 37ms
============================= 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 5 items
../tests/test_final_state.py FFFFF [100%]
=================================== FAILURES ===================================
_____________________ test_recovered_commit_id_file_exists _____________________
def test_recovered_commit_id_file_exists():
> assert os.path.isfile(RECOVERED_ID_FILE), f"Expected file {RECOVERED_ID_FILE} does not exist."
E AssertionError: Expected file /home/user/workspace/recovered_commit_id.txt does not exist.
E assert False
E + where False = <function isfile at 0x7083cdfc8220>('/home/user/workspace/recovered_commit_id.txt')
E + where <function isfile at 0x7083cdfc8220> = <module 'posixpath' (frozen)>.isfile
E + where <module 'posixpath' (frozen)> = os.path
/tests/test_final_state.py:12: AssertionError
______________________ test_bookmark_recovered_fix_exists ______________________
def test_bookmark_recovered_fix_exists():
result = run_jj(["bookmark", "list"])
assert result.returncode == 0, f"jj bookmark list failed: {result.stderr}"
> assert "recovered-fix" in result.stdout, "Bookmark 'recovered-fix' does not exist."
E AssertionError: Bookmark 'recovered-fix' does not exist.
E assert 'recovered-fix' in ''
E + where '' = CompletedProcess(args=['jj', 'bookmark', 'list'], returncode=0, stdout='', stderr='').stdout
/tests/test_final_state.py:17: AssertionError
___________________ test_bookmark_points_to_correct_content ____________________
def test_bookmark_points_to_correct_content():
# Verify the commit at recovered-fix has the expected file contents
result = run_jj(["file", "show", "src/bugfix.py", "-r", "recovered-fix"])
> assert result.returncode == 0, f"jj file show failed or file missing at recovered-fix: {result.stderr}"
E AssertionError: jj file show failed or file missing at recovered-fix: Error: Revision `recovered-fix` doesn't exist
E
E assert 1 == 0
E + where 1 = CompletedProcess(args=['jj', 'file', 'show', 'src/bugfix.py', '-r', 'recovered-fix'], returncode=1, stdout='', stderr="Error: Revision `recovered-fix` doesn't exist\n").returncode
/tests/test_final_state.py:22: AssertionError
__________________ test_recovered_commit_id_matches_bookmark ___________________
def test_recovered_commit_id_matches_bookmark():
# Verify the ID in the file matches the commit the bookmark points to
> with open(RECOVERED_ID_FILE, "r") as f:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E FileNotFoundError: [Errno 2] No such file or directory: '/home/user/workspace/recovered_commit_id.txt'
/tests/test_final_state.py:29: FileNotFoundError
____________________ test_recovered_commit_is_not_abandoned ____________________
def test_recovered_commit_is_not_abandoned():
# The recovered commit should be visible in default() (which means it's not abandoned)
# wait, default() is not a valid revset function, let's just check if `jj log -r <id>` works without --hidden
# Actually, jj log -r <id> might work for hidden commits if explicitly specified.
# To check if it's hidden, we can check if it's in `all()` but not in `visible_heads()`? No, `all()` is all visible commits.
# So if it's in `all()`, it's not hidden.
result = run_jj(["log", "--no-graph", "-r", "recovered-fix", "-T", "commit_id"])
> assert result.returncode == 0, "The recovered-fix commit is not visible or doesn't exist."
E AssertionError: The recovered-fix commit is not visible or doesn't exist.
E assert 1 == 0
E + where 1 = CompletedProcess(args=['jj', 'log', '--no-graph', '-r', 'recovered-fix', '-T', 'commit_id'], returncode=1, stdout='', stderr="Error: Revision `recovered-fix` doesn't exist\n").returncode
/tests/test_final_state.py:53: AssertionError
=========================== short test summary info ============================
FAILED ../tests/test_final_state.py::test_recovered_commit_id_file_exists - A...
FAILED ../tests/test_final_state.py::test_bookmark_recovered_fix_exists - Ass...
FAILED ../tests/test_final_state.py::test_bookmark_points_to_correct_content
FAILED ../tests/test_final_state.py::test_recovered_commit_id_matches_bookmark
FAILED ../tests/test_final_state.py::test_recovered_commit_is_not_abandoned
============================== 5 failed in 0.09s ===============================