Skip to content

[BC-INTEGRATION-01] Implement token-based from_synbiohub on the clean BuildCompiler API #112

Description

@Gonza10V

Notion task: https://app.notion.com/p/39f1a3339dcb81b79b6cdfd8f35d0522
Parent epic: #111
Notion program: https://app.notion.com/p/39f1a3339dcb818ea29eec44007d8e6e
Temporary ID: BC-01
Release: R2 Planning Preview
Dependencies: BuildCompiler #88, #89, #91, #95
Codex-ready: yes after dependencies are satisfied

Goal

Make buildcompiler.api.BuildCompiler.from_synbiohub load authenticated collection inventory and resolve missing identities without importing the legacy BuildCompiler class.

Expected files/modules

  • src/buildcompiler/api/compiler.py
  • src/buildcompiler/inventory/
  • src/buildcompiler/sbol/resolver.py
  • tests/unit/api/
  • tests/integration/

Scope

  • Accept collections, sbh_registry, auth_token, sbol_doc, and options.
  • Reuse clean inventory/resolver boundaries and existing indexing work.
  • Use token-only authentication; keep email/password outside BuildCompiler.
  • Add mocked PartShop and optional live-token tests.

Non-goals

  • Do not preserve the legacy constructor signature.
  • Do not require PUDU/Opentrons.
  • Do not store credentials.

Acceptance criteria

  • Non-empty collections no longer raise NotImplementedError.
  • Factory returns a compiler able to plan/execute using indexed inventory.
  • Core tests remain offline and optional live tests are marked.
  • No clean API import depends on the legacy class.

Verification

  • uv run --extra test pytest tests/unit tests/stages tests/integration -q
  • ruff check and format check on clean modules.

Risks and review

  • Risk tags: security, cross-repo-contract, biological-semantics
  • Human checkpoint required: yes
  • Treat AI-generated changes as unreviewed until tests and human review pass.

Codex handoff

Implement as one focused PR. Begin by verifying dependencies and current repository state. Preserve unrelated work. Report implemented behavior, tests, commands, assumptions, and blockers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    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