0%

Provider Adapters and Compatibility Probes

Goal

  • Complete provider-native static projections and continuously verify their discovery contracts before activation consumes them.

Files

  • MODIFY scripts/harness_dist/provider_projection.py
  • MODIFY scripts/harness_dist/provider_probe.py
  • MODIFY scripts/harness_dist/providers.json
  • CREATE scripts/harness_dist/tests/test_provider_matrix.py

Work Items

  • 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.