Skip to content

Define and test the moving base-cli provider compatibility boundary #2186

Description

@codeforester

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

  • The supported provider matrix is explicit, including whether a moving sibling checkout is supported, pinned, or only diagnostic.
  • The run-index adapter has a documented payload contract and tests tolerate or intentionally reject provider-owned additive metadata with an actionable error.
  • Private provider Context fields are excluded through a centralized contract or compatibility mechanism rather than a stale hard-coded list.
  • Provider preflight checks the capabilities needed by every Base adapter that imports provider internals.
  • CI and local source-checkout guidance exercise the same compatibility contract for the release-pinned and moving-source paths.
  • A provider drift failure identifies the selected source and the repair path without weakening the released v1.9.0 pin.

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

ciContinuous integration, tests, automation, or release workflows

Type

No type

Projects

  • Status
    Backlog

Relationships

None yet

Development

No branches or pull requests

Issue actions