#1941·eigent

[BUG] Pending managed-file status omits filenames containing spaces or Chinese characters

Author: dborodchukCreated Sep 15, 2026Updated Sep 15, 2026

What version of eigent are you using?

Reproduced on v1.0.4, commit 6bb55842f73766f7b219aa5ef5bcf5965f3acdaa. The same parser is still present on current main bde88812dde35f3c29acf50756e7da4a46c663ba (checked September 14).

System information

macOS 26.5.2, Python 3.11.15, Git 2.50.1. Reproduced using the backend services and temporary Git repositories.

Problem description

After checkpointing my report.md or 报告.md, subsequent edits are missing from ContentRepositoryService.status(...).pending_managed_paths.

  1. Initialize a repository through ContentRepositoryService.bootstrap.
  2. Create my report.md and checkpoint it through ContentRepositoryService.checkpoint.
  3. Change its contents and call ContentRepositoryService.status.

Expected: pending_managed_paths == ("my report.md",). Actual: pending_managed_paths == (), although Git reports the modification. The same happens with 报告.md.

log

The same nine real-Git regression cases were run against upstream and the proposed fix:

Upstream 6bb5584: 8 failed, 1 passed, 12 deselected
Proposed fix 3061388: 9 passed, 12 deselected

Patched service reproduction:
Edited 'my report.md': pending managed paths = ('my report.md',)
Edited '报告.md': pending managed paths = ('报告.md',)

The patch and draft are AI-assisted. I reviewed the code and reran the verification locally: both service reproductions succeeded and all nine regression cases passed.

Additional context

GitBackend.path_status uses newline-delimited porcelain output and retains Git's quoted filename representation. Its keys therefore fail to match the actual managed paths.

The prepared fix uses git status --porcelain=v1 -z, explicit UTF-8 decoding, and consumes the extra source record for renames/copies. It changes one production file and adds parser and service regression tests.

Would this focused fix be welcome? I would like to confirm the scope before opening a PR.