Goal
Define and enforce the compatibility contract for every base-cli provider path so Base source validation cannot silently select a provider that fails Base adapters or documentation contracts.
Background
Base CI and the release BOM pin base-cli v0.4.3, and the pinned provider passes the Base suite. The documented source-checkout path in docs/testing.md tells contributors to clone the sibling base-cli checkout, and base_cli_runtime.sh prefers that moving checkout whenever it is present.
Against current base-cli origin/main, still reporting VERSION 0.4.3, the Base Python suite fails in two provider-boundary tests:
- The run-index adapter expects the older exact payload while
base_cli._runtime.refresh_run_bundle_index emits additive complete and omitted_bundles metadata.
- The Base documentation test treats the provider new private
Context._run_lease field as public because the exclusion list is hard-coded.
Base also imports private provider runtime state directly, while base_cli_adapters.provider only validates command-protocol symbols. This is a source-development and release-boundary failure, not a failure of the BOM-pinned v1.9.0 stack.
Scope
- Provider resolution and compatibility checks in
lib/base/base_cli_runtime.sh and cli/python/base_cli_adapters
- Run-index and
Context contracts used by Base
- Source-checkout documentation and tests for pinned, installed, explicit-source, and sibling-source providers
Acceptance Criteria
Validation
env -u BASE_HOME ./bin/base-test with the release-pinned provider
- The documented sibling source-checkout command with the current provider
- Focused run-index, context-documentation, and provider-preflight tests
git diff --check
Non-Goals
- No unreviewed upgrade of the released
base-cli pin.
- No change to the standalone
base-cli project outside the compatibility contract needed by Base.
Project Fields
- Status: Backlog
- Priority: P2
- Area: Python
- Initiative: Contract Hardening
- Size: S
- Milestone: v1.10.0
Agent Assignment
- Human first; provider ownership and release compatibility need maintainer agreement before implementation.
Goal
Define and enforce the compatibility contract for every
base-cliprovider path so Base source validation cannot silently select a provider that fails Base adapters or documentation contracts.Background
Base CI and the release BOM pin
base-cliv0.4.3, and the pinned provider passes the Base suite. The documented source-checkout path indocs/testing.mdtells contributors to clone the siblingbase-clicheckout, andbase_cli_runtime.shprefers that moving checkout whenever it is present.Against current
base-cliorigin/main, still reporting VERSION 0.4.3, the Base Python suite fails in two provider-boundary tests:base_cli._runtime.refresh_run_bundle_indexemits additivecompleteandomitted_bundlesmetadata.Context._run_leasefield as public because the exclusion list is hard-coded.Base also imports private provider runtime state directly, while
base_cli_adapters.provideronly validates command-protocol symbols. This is a source-development and release-boundary failure, not a failure of the BOM-pinned v1.9.0 stack.Scope
lib/base/base_cli_runtime.shandcli/python/base_cli_adaptersContextcontracts used by BaseAcceptance Criteria
Contextfields are excluded through a centralized contract or compatibility mechanism rather than a stale hard-coded list.Validation
env -u BASE_HOME ./bin/base-testwith the release-pinned providergit diff --checkNon-Goals
base-clipin.base-cliproject outside the compatibility contract needed by Base.Project Fields
Agent Assignment