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

Projects

Status
Backlog

Relationships

None yet

Development

No branches or pull requests

Issue actions