mirror of
https://github.com/Jeuners/ECC.git
synced 2026-09-09 23:12:30 +02:00
* feat: add worktree-lifecycle service (ecc.worktree-lifecycle.v1) The "unowned moat" from the orchestrator landscape research: no existing tool ships deterministic merge-conflict prediction or a safe worktree GC. - scripts/lib/worktree-lifecycle/git.js: injectable, hermetic git layer. Predicts merge conflicts WITHOUT touching the working tree via `git merge-tree`. Strips inherited GIT_* env so it is safe inside hooks. - scripts/lib/worktree-lifecycle/lifecycle.js: deterministic state machine (main/dirty/conflict/merge-ready/merged/stale/idle) + planCleanup that buckets worktrees into remove / salvage / keep. Only fully-merged trees are auto-removable; stale (unmerged+inactive) => salvage, never deleted. - scripts/worktree-lifecycle.js: CLI (--json/--conflicts/--stale/ --cleanup-plan/--base/--stale-days/--repo). - tests/lib/worktree-lifecycle.test.js: 11 tests (fake-git + real-git). Safety model mirrors the reference-arch salvage rule, validated by the 2026-06-05 MacBook->Mac Mini consolidation. Tests: 11/0. * fix: hermetic git env in session adapters + mcp-inventory lint - session adapters (codex-worktree, opencode): resolveGitBranch stripped no git env, so the "outside a repo" path returned the host branch when run inside a git hook (GIT_DIR set). Strip GIT_* before rev-parse. - mcp-inventory: fix eslint no-unused-vars (signatures) and a stale eslint-disable directive in the merged code. * test: run each test with inherited git env stripped (hermetic runner) When the suite runs inside a git hook (pre-push), git sets GIT_DIR/ GIT_WORK_TREE, which hijack 'git -C <dir>' calls in tests that exercise real git, making them operate on the host repo. Strip GIT_* before spawning each test so the suite is isolated from ambient git state. --------- Co-authored-by: ECC Test <ecc@example.test> |
||
|---|---|---|
| .. | ||
| agent-compress.test.js | ||
| changed-files-store.test.js | ||
| command-plugin-root.test.js | ||
| control-pane-actions.test.js | ||
| control-pane-state.test.js | ||
| cost-estimate.test.js | ||
| inspection.test.js | ||
| install-config.test.js | ||
| install-executor.test.js | ||
| install-lifecycle.test.js | ||
| install-manifests.test.js | ||
| install-request.test.js | ||
| install-state.test.js | ||
| install-targets.test.js | ||
| locale-install.test.js | ||
| mcp-config.test.js | ||
| mcp-inventory.test.js | ||
| observer-sessions.test.js | ||
| orchestration-session.test.js | ||
| package-manager.test.js | ||
| project-detect.test.js | ||
| resolve-ecc-root.test.js | ||
| resolve-formatter.test.js | ||
| selective-install.test.js | ||
| session-adapters-codex.test.js | ||
| session-adapters-opencode.test.js | ||
| session-adapters.test.js | ||
| session-aliases.test.js | ||
| session-bridge.test.js | ||
| session-manager.test.js | ||
| shell-split.test.js | ||
| skill-dashboard.test.js | ||
| skill-evolution.test.js | ||
| skill-improvement.test.js | ||
| state-store.test.js | ||
| tmux-worktree-orchestrator.test.js | ||
| utils.test.js | ||
| worktree-lifecycle.test.js | ||