Skip to content

[SPRINT-02-06] Add canonical SBOL fixture collections for indexing and assembly tests #93

Description

@Gonza10V

Parent sprint: #87
Depends on: #88, #89, #90, #91, #92
Recommended order: 6
Codex-ready: yes

Goal

Add small canonical SBOL2 fixture documents for software tests of indexing, selection, assembly-artifact generation, and transformation/plating boundaries.

Background

The current implementation needs known-good local SBOL fixtures before debugging higher-level behavior. Without deterministic fixtures, failures may come from malformed SBOL, missing implementations, inconsistent roles, missing fusion-site metadata, or missing antibiotic metadata rather than from BuildCompiler logic.

Scope

Create minimal fixtures under a path such as:

tests/fixtures/sbol/

Fixtures should cover:

  • a complete local inventory fixture sufficient for lvl1 route-selection tests;
  • a minimal design fixture that references the inventory fixture;
  • an incomplete inventory fixture for missing-input/audit tests;
  • a metadata-defect fixture for audit diagnostics.

Requirements

  • Fixtures are local/offline and load with sbol2.Document().read(...) or an equivalent helper.
  • Fixture identities and display IDs are deterministic.
  • Fixture structure matches current BuildCompiler indexing expectations.
  • Add small fixture-loader helpers if helpful.

Non-goals

  • Do not use live SynBioHub.
  • Do not add large real-world inventory dumps.
  • Do not add PUDU or Opentrons dependencies.
  • Do not add wet-lab protocol instructions.

Acceptance criteria

  • Fixture files or deterministic fixture builders are committed under tests.
  • At least one complete fixture indexes the expected plasmid/backbone/reagent counts.
  • At least one incomplete fixture produces expected audit diagnostics.
  • Fixture-read tests pass offline.
  • The fixtures are documented enough for future tests to reuse them.

Verification

pytest -k "fixture or sbol or index"
ruff check .

Codex implementation notes

Keep fixtures minimal. The goal is deterministic software regression coverage, not realistic experimental design.

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