Chasing the Ghost

How two engineers debugged a stale-state error together

A transient error appeared after an update — then vanished on restart

After a routine uv tool install --force, Amplifier logged a "Partial provider failure" warning. Restart, and it was gone. A classic stale-state ghost.

A bug you can't reproduce is still a bug worth chasing.

The warning is real, and it lives in the CLI app layer

It's a concrete, shipped code path in session_runner.py (lines 491–494) — not a rumor. The session continues with whatever providers loaded.

So the ghost is real. But what was it hiding?

# amplifier-app-cli/session_runner.py:491-494 logger.warning( "Partial provider failure: " "N/M loaded... Session continuing " "with available providers " "(self-healing NOT triggered " "for partial failure).")

One ghost, four interconnected bugs, two repos

The transient warning concealed four bugs spanning the CLI and the kernel/foundation stack — and no single person had the whole picture.

A lone-hero fix wasn't possible. This needed collaboration.

1

Silent auto-configuration of a provider from env vars, bypassing init

2

Aggressive self-healing on partial failures causing cascade failures

3

Broken activator lookup ("No activator found") from AppModuleResolver wrapping BundleModuleResolver

4

Module-ID vs provider-name mismatch making the warning report ALL providers as failed

Samuel Lee shipped the first self-healing detection in PR #61

Samuel opened PR #61 — "add self-healing for stale install state after reinstall" — authoring 3 commits to catch the config-vs-mounted provider mismatch.

One contributor landed the opening move. Then review widened it.

#61
PR by samueljklee
3
commits (a725eff, 9e8d873, f94bdf6)
Jan 23
opened 2026-01-23

Review expanded the scope, then earned approval

Diego reviewed PR #61 and pushed for broader coverage. Samuel extended the fix to check providers AND tools, then Diego approved and merged it on 2026-01-27.

This is collaboration in practice — review that makes the fix bigger.

Diego: "even if a single provider or a single module fails loading we might have to see for self healing opportunities"

Samuel: "Covered in the latest commit"

Diego: "looks good to me!" (APPROVED)

Diego built on Samuel's work — and Samuel reviewed back

PR #71 made self-healing conservative and fixed the broken activator lookup. PR #72 normalized module IDs so the warning stopped falsely blaming every provider. Samuel reviewed #71.

Co-ownership turned a single fix into a hardened stack.

Diego chased the ghost to its lair — the real root cause

In the second repo, amplifier-foundation, stale install-state.json survived --force so reinstall was skipped. Diego detected environment recreation via the Python executable's mtime (c889e85, fixes microsoft/amplifier#204).

The root cause was reachable only because the collaboration cleared the path.

# amplifier-foundation # modules/install_state.py c889e85 "fix: detect environment recreation via python executable mtime" # Fixes microsoft/amplifier#204 # (issue: install-state.json # survives env recreation)

Collaborative debugging catches what a lone hero can't

Building on each other's PRs and catching issues in review, Diego and Samuel hardened the whole provider/install-state stack. Brian Krabach later carried the fix further with an lstat hardening (342e1cd).

A self-hiding ghost gets caught — and the stack gets durably stronger.

2
engineers co-owning session_runner.py
3
PRs (#61, #71, #72) merged
342e1cd
Brian Krabach's lstat follow-on
Sources

Research Methodology

Data as of: March 2026  |  Feature status: Shipped / merged

Repos: microsoft/amplifier-app-cli, microsoft/amplifier-foundation, microsoft/amplifier-core

Commands run:

Gaps: The named bundle repo michaeljabbour/amplifier-bundle-collaboration (6 commits, no PRs/issues) does not itself contain this story; the verified story lives in the three Amplifier repos above. Amplifier's investigate/reproduce sessions are attribution-only (Co-Authored-By trailers), not independently verified metrics.

Primary contributors: Samuel Lee (samueljklee), Diego Colombo (colombod); follow-on by Brian Krabach (brkrabac).

More Amplifier Stories