Complete providers.json rows with exact supported version ranges, binary probes, discovery paths, repository layouts, adapter forms, and symlink rules for EVERY provider in the recorded required-provider set, with the four named families as the initial inventory.
Render thin CLAUDE.md, AGENTS.md, GEMINI.md, opencode configuration, .agents/skills, and .claude/skills projections from the resolved manifest without duplicating authored policy.
Define the per-provider target-path table with tracked/untracked ownership, file/symlink support, indirection, atomic switch primitive, crash recovery, rollback, and migration of already tracked CLAUDE.md/AGENTS.md paths.
Restrict AI OS probes to static discovery and effective instruction/skill loading; leave authentication, model routing, cancellation, sandboxing, ambient authority, and transport to workflow-engine-rework.
Run ongoing compatibility probes against supported and current client versions and prove deterministic reprojection on fresh clone/CI.
Extend providers.json rows and probe receipts with distribution/fork identity plus immutable build identity, and fail closed when the resolved binary digest is outside the allowed set even though its version string satisfies the compatibility range.
Define how the acceptance gate resolves when a supported provider is deprecated by its vendor mid-plan: the required-provider set is derived from supported-status rather than a hardcoded list of four, and a deprecated provider either resolves through its declared successor or is removed from the required set by an explicit, recorded decision.
Verification
Write failing positive, negative, interruption, concurrency, and idempotency cases before implementation.
Pin the consumer-visible outcome through the real CLI/runtime entry point.
Run focused pytest and the owning runtime self-test with a 150-second test timeout.
Run python -m scripts.harness_dist verify --root . when distributed artifact classification changes.