Skip to content

Run Base project reconciliation from the Base runtime instead of project virtualenvs #1611

Description

@codeforester

Goal

Run Base's own project reconciliation code from the Base runtime instead of requiring every participating project to host Base's Python dependencies.

Background

For non-uv projects, Base merges bootstrap packages such as Click, PyYAML, and tomli from lib/base/default_manifest.yaml into the project virtualenv, then runs base_setup through base-wrapper using that project venv. This makes even shell-only or non-Python projects appear unhealthy without a Python virtualenv needed primarily by Base itself.

#1569 moved ordinary project environments to project-local .venv, but it intentionally preserved Base's runtime model. Related issues #812, #1008, and #1065 addressed routing and inherited-state defects rather than this control-plane/runtime coupling.

Scope

  • Separate the Base control-plane interpreter and dependencies from project-owned runtime dependencies.
  • Execute Base manifest reconciliation from the Base runtime venv where possible.
  • Keep project Python environments optional and owned by project declarations.
  • Preserve Python-package artifact installation into the intended project environment.
  • Define pre-runtime behavior for projects that do not need Python.
  • Update check, doctor, setup, workspace reports, activation, docs, and migration tests.

Acceptance Criteria

  • A shell-only or non-Python Base project can be healthy without a project .venv created solely for Base.
  • Base core modules run from the Base-owned runtime.
  • Project-declared Python artifacts still reconcile into the correct project environment.
  • uv-managed and explicitly isolated project environments remain supported.
  • Diagnostics clearly distinguish Base runtime failures from project runtime failures.

Validation

  • Focused runtime-routing and setup reconciliation tests.
  • BATS fixtures for shell-only, non-uv Python, uv, and Base-self projects.
  • Workspace status/check/doctor regression tests.
  • Full Base validation gate.
  • git diff --check.

Non-Goals

  • Do not remove support for project Python virtualenvs.
  • Do not make Base a dependency solver.
  • Do not change project-owned run/test/build commands unnecessarily.

Project Fields

  • Status: Backlog
  • Priority: P1
  • Size: L
  • Area: Runtime
  • Initiative: Adoption Polish

Agent Assignment

Human first. This changes a central runtime boundary and should begin with a compatibility design and fixture matrix.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or product improvement

Type

No type

Fields

No fields configured for issues without a type.

Projects

Status
Backlog

Relationships

None yet

Development

No branches or pull requests

Issue actions