Skip to content

[EPIC-01] Domain contracts, options, and API foundation for full_build refactor #52

@Gonza10V

Description

@Gonza10V

Rationale

This epic establishes the stable foundation for the clean-architecture full_build refactor. It should make the new package structure importable, define domain contracts, and create the first public API skeleton without pulling in SynBioHub, PUDU, or Opentrons.

Objective

Create the domain/options/API foundation needed by all downstream planning, inventory, stage, executor, adapter, and reporting issues.

Success criteria

  • New package folders exist under src/buildcompiler.
  • Domain enums and dataclasses are importable offline.
  • Build options are composed into option groups with safe defaults.
  • BuildCompiler API skeleton exists with from_synbiohub, plan, execute, and full_build entry points.
  • Core imports do not require optional automation dependencies.

Shared context

Repository: MyersResearchGroup/BuildCompiler
Branch: full_build
Source plan: buildcompiler_full_build_refactor_plan.md
Current README describes BuildCompiler as bridging SBOL design to DNA assembly, transformation, and plating workflows and already mentions full-build orchestration.
Current pyproject.toml keeps core dependencies (sbol2, biopython, pydna) separate from optional automation dependencies (pudupy, opentrons, SBOLInventory).

Child issues

Recommended execution order

  1. [ISSUE-01] Create clean-architecture package scaffolding #53
  2. [ISSUE-02] Implement domain enums and result dataclasses #54 and [ISSUE-03] Implement BuildOptions option groups #55 can run after scaffolding
  3. [ISSUE-04] Add BuildCompiler API skeleton #56 after contracts/options exist

Out of scope

  • Real planner/executor behavior.
  • Legacy compatibility wrappers.
  • Protocol generation or Opentrons simulation.

Notes for Codex

Do not implement this epic as one PR. Convert each child issue separately into a focused Codex task.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions