Background Provider Setup Visibility & Windows Seed Fix
Agents Remember 2.7.0
Worktree provider setup is now observable instead of silent, and the seed-copy rapid-deploy path finally works on Windows. A healthy six-minute setup and a wedge no longer look identical — and on Windows, that six-minute setup mostly stops happening at all.
Highlights
worktree_startreturns within seconds: the provider chain runs in the background and writes a durable, heartbeat-stampedsetup-progress.jsonyou (or a dashboard) can watch.- The seed-refused → full-reindex transition — the moment expected duration jumps from ~1 minute to N minutes — is flagged as
seedFallbackthe instant it happens, with the refusal reason. - CGC seed export/load argv is rendered in container form: Windows hosts stop failing every seed export on a
C:/path the Linux runner can't see, and stop silently paying the full reindex on every worktree start.
Worktree Provider Setup (GitHub #53)
- Background daemon-thread setup with a durable phase-progress file under the worktree group (
provider-runtime/setup-progress.json): schemaar-provider-setup-progress/v1with identity fields (repoName,taskName,worktreeGroup), per-phase records, a 15s heartbeat, and a reservedcurrentPhase.metricsshape (itemsDone/itemsTotal/percent/unit) for future per-item indexing progress. worktree_statusis the poll surface:running(current phase, elapsed, heartbeat age,seedFallback), thenok/ready-with-failed-phases/failed— orstalewhen the heartbeat dies (server killed mid-setup).worktree_start(retry_provider_setup=true)relaunches a failed or stale setup on the existing contract; it refuses while a live setup is running.worktree_cleanup/worktree_abandonrefuse to tear down a worktree whose background setup is still alive (forceoverrides on abandon).- Dry runs stay fully synchronous; config-level preflight failures (settings unreadable, providers disabled) still block the start fast.
- The temp lifecycle settings file's lifetime transfers to the setup thread, and worktree provider setup is now bounded by the documented
timeoutCaps.providerSetupSecondscap (default 1800) instead of a hardcoded 120s.
CodeGraphContext Seeding (GitHub #58)
- Everything after
--in a seed export/load command executes inside the Linux runner container; those paths (bundle files, export--reporoot) are now rendered viato_container_path(drive letter stripped on Windows, identity on POSIX). - Shared context helpers moved to
providers/context_common.py: importing them from inside theproviders/contextfacade package could leave the facade permanently missing every CGC name (an import-order-dependent ImportError), discovered while wiring the fix.
Quality
- 26 new tests: progress-file lifecycle/heartbeat/staleness projections, phase announcement order including the seedFallback transition, launcher thread behavior, contract-before-launch ordering, retry refusal/relaunch, controller settings-file ownership, teardown guards, and a Windows drive-letter argv guard.
- The Docker-gated provider workflow integration test now polls the progress file to a terminal state, matching the async contract.