[37m2026-03-19 08:10:47.104[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:10:47.110[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:10:47.196[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:10:47.197[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:10:47.215[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:10:49.020[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:10:49.020[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:10:49.172[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:10:49.190[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:10:49.286[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 developer migrating from Git to Jujutsu (jj). You have a local Git repository in `/home/user/project` that has a `main` branch. You need to initialize a co-located jj repository, create a new jj commit that modifies `app.py` to add a new function `def migrate(): pass`, and then export this jj commit to a new Git branch named `jj-migration` so that your Git-using teammates can see it. [37m2026-03-19 08:11:47.147[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:11:55.874[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: You are a developer migrating from Git to Jujutsu (jj). You have a local Git repository in `/home/user/project` that has a `main` branch. You need to initialize a co-located jj repository, create a new jj commit that modifies `app.py` to add a new function `def migrate(): pass`, and then export this jj commit to a new Git branch named `jj-migration` so that your Git-using teammates can see it., new: Initialize Jujutsu repository and migrate commit to Git branch [37m2026-03-19 08:12:04.847[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:12:44.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:13:41.787[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:15:25.837[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:50.895[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.701[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/project and recursive [90mundefined[39m [37m2026-03-19 08:18:59.705[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:08.035[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:17.478[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:23.185[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:35.593[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:54.058[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:06.827[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.093[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:30.879[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
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 17ms
============================= 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_dot_jj_directory_exists _________________________
def test_dot_jj_directory_exists():
dot_jj = os.path.join(REPO_DIR, ".jj")
> assert os.path.isdir(dot_jj), f"{REPO_DIR} is not a valid jj repository (.jj directory missing)."
E AssertionError: /home/user/project is not a valid jj repository (.jj directory missing).
E assert False
E + where False = <function isdir at 0x70a9281302c0>('/home/user/project/.jj')
E + where <function isdir at 0x70a9281302c0> = <module 'posixpath' (frozen)>.isdir
E + where <module 'posixpath' (frozen)> = os.path
/tests/test_final_state.py:12: AssertionError
_______________________ test_app_py_has_migrate_function _______________________
def test_app_py_has_migrate_function():
app_py_path = os.path.join(REPO_DIR, "app.py")
with open(app_py_path, "r") as f:
content = f.read()
> assert "def migrate():" in content, "The 'migrate' function was not found in app.py."
E AssertionError: The 'migrate' function was not found in app.py.
E assert 'def migrate():' in 'def main():\n pass\n'
/tests/test_final_state.py:18: AssertionError
________________ test_jj_bookmark_exists_and_points_to_migrate _________________
def test_jj_bookmark_exists_and_points_to_migrate():
# Check if the bookmark exists
result = run_cmd(["jj", "bookmark", "list"])
> assert result.returncode == 0, f"jj bookmark list failed: {result.stderr}"
E AssertionError: jj bookmark list failed: Error: There is no jj repo in "."
E Hint: It looks like this is a git repo. You can create a jj repo backed by it by running this:
E jj git init
E
E assert 1 == 0
E + where 1 = CompletedProcess(args=['jj', 'bookmark', 'list'], returncode=1, stdout='', stderr='Error: There is no jj repo in "."\nHint: It looks like this is a git repo. You can create a jj repo backed by it by running this:\njj git init\n').returncode
/tests/test_final_state.py:23: AssertionError
____________________________ test_git_branch_exists ____________________________
def test_git_branch_exists():
result = run_cmd(["git", "branch"])
assert result.returncode == 0, f"git branch failed: {result.stderr}"
> assert "jj-migration" in result.stdout, "The Git branch 'jj-migration' does not exist."
E AssertionError: The Git branch 'jj-migration' does not exist.
E assert 'jj-migration' in '* main\n'
E + where '* main\n' = CompletedProcess(args=['git', 'branch'], returncode=0, stdout='* main\n', stderr='').stdout
/tests/test_final_state.py:35: AssertionError
_____________ test_git_branch_points_to_same_commit_as_jj_bookmark _____________
def test_git_branch_points_to_same_commit_as_jj_bookmark():
# Get the git commit hash for the branch
git_result = run_cmd(["git", "rev-parse", "jj-migration"])
> assert git_result.returncode == 0, f"git rev-parse failed: {git_result.stderr}"
E AssertionError: git rev-parse failed: fatal: ambiguous argument 'jj-migration': unknown revision or path not in the working tree.
E Use '--' to separate paths from revisions, like this:
E 'git <command> [<revision>...] -- [<file>...]'
E
E assert 128 == 0
E + where 128 = CompletedProcess(args=['git', 'rev-parse', 'jj-migration'], returncode=128, stdout='jj-migration\n', stderr="fatal: am...orking tree.\nUse '--' to separate paths from revisions, like this:\n'git <command> [<revision>...] -- [<file>...]'\n").returncode
/tests/test_final_state.py:40: AssertionError
=========================== short test summary info ============================
FAILED ../tests/test_final_state.py::test_dot_jj_directory_exists - Assertion...
FAILED ../tests/test_final_state.py::test_app_py_has_migrate_function - Asser...
FAILED ../tests/test_final_state.py::test_jj_bookmark_exists_and_points_to_migrate
FAILED ../tests/test_final_state.py::test_git_branch_exists - AssertionError:...
FAILED ../tests/test_final_state.py::test_git_branch_points_to_same_commit_as_jj_bookmark
============================== 5 failed in 0.05s ===============================