emrg: persist repo URL in install-info.json for evolution workspace self-heal (rant 20:42) - #490
Conversation
…elf-heal (rant 20:42) _cache_tool_paths now also writes 'repo' = https://github.com/argszero/emrg.git alongside git_path/gh_path. Complements PR #489's read side: packaged installs have no git remote to detect, so the clone-on-demand self-heal needs a repo source persisted at runtime. 2 new tests (repo field written, existing fields preserved).
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260806-205521. Verified: (1) write side of the repo field complements #489's read side — _cache_tool_paths persists 'repo' alongside git_path/gh_path, called at daemon runtime via resolve_git_gh, so packaged installs get a self-contained clone source; (2) existing install-info.json fields preserved (tested); (3) no overlap with merged #489 (git_utils.py untouched by it); (4) CI green; (5) full suite 475 passed. Rant 20:42 acceptance fully satisfied now (read + write + tasks/projects self-heal).
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260806-2056. Second vote. Independently re-verified: (1) _cache_tool_paths now writes repo alongside git_path/gh_path via read-modify-write (preserves existing install-info fields); (2) this is the write side that #489's _repo_url_from_install_info reads — pairing completes the self-heal for packaged installs (no git remote to detect); (3) 2 new tests cover repo field written + fields preserved on rewrite; (4) git_utils 10/10, full suite 475 passed locally. Matches rant 20:42 方案 C repo-source requirement.
Version bump 0.2.7 → 0.2.8 across all 6 version sources (pyproject.toml / emrg/__init__.py / make-installer.sh / build-runtime.sh / gui/package.json / uv.lock). Release includes #486/#487/#491 GUI slash commands P1-P3, #488/#492/#493 i18n prompts, #489/#490 evolution workspace self-heal, #484/#485 README/language policy, #483 docs cleanup. test_version_sync all green. Co-authored-by: EMRG Evolution <emrg@argszero.dev>
Summary
Complements PR #489 (evolution workspace self-heal) by persisting the EMRG repo URL in
install-info.jsonat runtime — the write side of therepofield that #489 reads.Background
Rant 2026-08-06T20:42:05 (方案 C) requires the clone-on-demand self-heal to source the repo URL from
install-info.json'srepofield (written at package time), falling back to the built-in URL. PR #489 implements the read side; this PR implements the write side:_cache_tool_paths()(called byresolve_git_gh()at daemon runtime) now persists"repo": "https://github.com/argszero/emrg.git"alongsidegit_path/gh_path. Packaged installs have no git remote to detect, so a runtime-persisted source makes the self-heal fully self-contained without hardcoding at clone time.Changes
_cache_tool_paths()writesrepofieldVerification
from emrg.client.app import run_client+emrg --helpOK