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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions