Skip to content

Extract manifest contracts from base_setup behind a neutral package boundary #1610

Description

@codeforester

Goal

Move Base manifest contracts behind a neutral Python package boundary so unrelated subsystems no longer depend on setup internals.

Background

Manifest models, loading, schema constants, validators, and compatibility imports currently live under base_setup. Roughly thirty non-test production files outside that package import it. This makes base_setup the implicit domain core and obscures the intended dependency direction.

Closed issues #288, #1420, #1442, and #1461 split manifest internals, while #1576 extracted devcontainer and devenv consumers. None established a neutral manifest package or mechanically enforced the package dependency graph.

Scope

  • Define a focused package such as base_manifest owning the model, loader, schema constants, validators, and public read API.
  • Preserve documented compatibility imports during migration.
  • Move consumers incrementally without duplicating schema definitions.
  • Document the intended Python package dependency DAG.
  • Add import-boundary or structure tests that reject wrong-direction dependencies.
  • Identify any setup-specific manifest reconciliation that should remain in base_setup.

Acceptance Criteria

  • New code can consume manifest contracts without importing base_setup.
  • Manifest parsing behavior, errors, and dataclass output remain compatible.
  • Compatibility facades are explicit and tested.
  • The allowed dependency direction is documented and mechanically checked.
  • At least one major non-setup consumer migrates to the neutral package.

Validation

  • Full manifest parser and compatibility tests.
  • Package structure/import-boundary tests.
  • Focused tests for migrated consumers.
  • Pylint on touched production Python.
  • git diff --check.

Non-Goals

  • Do not create a vague catch-all base_core package.
  • Do not redesign the manifest schema.
  • Do not extract a separately published package in the first slice.

Project Fields

  • Status: Backlog
  • Priority: P2
  • Size: L
  • Area: Python
  • Initiative: Contract Hardening

Agent Assignment

Human first. Establish the dependency boundary and compatibility plan before moving consumers.

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