You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+27-16Lines changed: 27 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,22 +6,24 @@ Bloom owns:
6
6
7
7
- containers
8
8
- specimens
9
+
- derived samples
9
10
- plates and wells
10
11
- extraction outputs
11
12
- library prep outputs
12
13
- pools
13
14
- sequencing runs
15
+
- sequenced library assignments
14
16
- queue membership and queue-transition state for wet-lab execution
15
17
16
18
Bloom does not own:
17
19
18
20
- accessioning
19
-
- customer, order, patient, provider, shipment, or kit truth
21
+
- customer, TRF, Test, patient, provider, shipment, or kit truth
20
22
- workflow or workflow-step orchestration for the beta path
21
23
22
24
## Beta Architecture
23
25
24
-
The active beta path is queue-driven.
26
+
The active beta path is queue-driven and graph-native.
25
27
26
28
Canonical queues:
27
29
@@ -35,21 +37,29 @@ Canonical queues:
35
37
-`ilmn_start_seq_run`
36
38
-`ont_start_seq_run`
37
39
38
-
Atlas records intake outcomes first. Bloom accepts only Atlas-approved material, stores explicit Atlas external links on Bloom-owned objects, and preserves lineage from specimen and container through plate and well placement, library prep, pooling, and sequencing run creation.
40
+
Atlas records intake outcomes first. Bloom accepts only Atlas-approved material, links that material to Atlas TRF/Test/process-item context through explicit graph-linked reference objects, and preserves lineage from specimen/container through plate and well placement, library prep, pooling, sequencing run creation, and sequenced library assignment.
39
41
40
-
Ursa resolves `run_euid + index_string`through Bloom and receives:
42
+
Ursa resolves the canonical sequencing unit through Bloom with:
41
43
44
+
-`run_euid`
45
+
-`flowcell_id`
46
+
-`lane`
47
+
-`library_barcode`
48
+
49
+
Bloom returns:
50
+
51
+
-`sequenced_library_assignment_euid`
42
52
-`atlas_tenant_id`
43
-
-`atlas_order_euid`
44
-
-`atlas_test_order_euid`
53
+
-`atlas_trf_euid`
54
+
-`atlas_test_euid`
55
+
-`atlas_test_process_item_euid`
45
56
46
57
Public beta APIs return EUIDs only. Internal UUIDs are not part of the supported contract.
47
58
48
59
## Active Beta APIs
49
60
50
61
Atlas and Ursa integration paths live under:
51
62
52
-
-`/api/v1/external/specimens`
53
63
-`/api/v1/external/atlas`
54
64
-`/api/v1/external/atlas/beta`
55
65
@@ -62,26 +72,27 @@ The queue-driven beta endpoints are:
Legacy workflow and `do_action` code still exists in the repo for non-beta surfaces and historical GUI paths, but it is not on the active beta integration route. The old `/api/v1/actions/execute` API has been retired from the active API surface.
70
-
71
-
If a codepath depends on workflow-step runtime, accession ownership, or UUID-based external contracts, it is not part of the supported beta system.
80
+
Legacy workflow and `do_action` code may still exist on disk for retired surfaces, but it is not part of the active beta integration path. If a codepath depends on workflow-step runtime, accession ownership, or UUID-based external contracts, it is not part of the supported beta system.
72
81
73
82
## Development
74
83
75
-
Bloom runs on the TapDB-backed adapter layer used across the LSMC refactor. The beta queue flow uses explicit object creation, lineage writes, targeted lookup queries, and idempotency keys on direct integration calls.
84
+
Bloom runs on the TapDB-backed adapter layer used across the LSMC refactor. The beta queue flow uses explicit object creation, lineage writes, targeted lookup queries, process-item references, and idempotency keys on direct integration calls.
76
85
77
-
Focused validation commands for the beta refactor:
Bloom no longer uses the retired API-level `do_action` route for beta execution, but the repo still lacks first-class TapDB modern action templates dedicated to the new lab-operation events. That shared-library gap is documented in [docs/tapdb_required_changes.md](/Users/jmajor/projects/lims3/bloom/docs/tapdb_required_changes.md).
96
+
- active Bloom beta API contract: [docs/bloom_beta_api_contracts.md](/Users/jmajor/projects/lims3/bloom/docs/bloom_beta_api_contracts.md)
Copy file name to clipboardExpand all lines: docs/bloom_beta_api_contracts.md
+18-10Lines changed: 18 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,16 +2,18 @@
2
2
3
3
## Accepted Material Registration
4
4
5
-
Bloom accepts Atlas-approved material only after Atlas records an `ACCEPTED` intake outcome.
5
+
Bloom accepts Atlas-approved material only after Atlas records an `ACCEPTED` intake outcome and materializes one or more test process items.
6
6
7
7
Minimum request context:
8
8
9
-
- Atlas identity context for the accepted item
10
-
- Atlas order EUID
11
-
- Atlas test-order EUID
9
+
-`trf_euid`
10
+
-`test_euids[]`
11
+
- patient context
12
+
- shipment or test kit context
13
+
- queue intent
12
14
- idempotency key
13
15
14
-
Bloom response must include EUID-only identifiers for created material and explicit Atlas-link metadata.
16
+
Bloom persists Atlas linkage through graph-linked reference objects and returns EUID-only identifiers for created material plus `process_item_euids[]`.
15
17
16
18
Implemented endpoint:
17
19
@@ -36,23 +38,28 @@ Canonical beta queues:
36
38
Input:
37
39
38
40
-`run_euid`
39
-
-`index_string`
41
+
-`flowcell_id`
42
+
-`lane`
43
+
-`library_barcode`
40
44
41
45
Output:
42
46
47
+
-`sequenced_library_assignment_euid`
43
48
-`atlas_tenant_id`
44
-
-`atlas_order_euid`
45
-
-`atlas_test_order_euid`
49
+
-`atlas_trf_euid`
50
+
-`atlas_test_euid`
51
+
-`atlas_test_process_item_euid`
46
52
47
53
Rules:
48
54
49
55
- response is deterministic and replay-safe
50
56
- response contains no private UUIDs
51
-
- resolver uses Bloom lineage plus explicit Atlas external links
57
+
- resolver traverses Bloom lineage and graph-linked reference objects
58
+
- one full resolver key maps to exactly one sequenced library assignment
Refactor Bloom into the authoritative beta owner of material objects and queue-driven wet-lab execution state, without relying on the legacy workflow/workflow-step runtime for active beta paths.
5
+
This refactor is complete for the active beta path.
6
6
7
-
## Current Findings
7
+
Bloom is now the beta authority for material lineage and queue-driven wet-lab execution without depending on workflow/workflow-step runtime on the supported Atlas/Ursa path.
8
8
9
-
-`bloom_lims/core/action_execution.py` still routes through legacy object/workflow executors and legacy required-field extraction.
10
-
-`bloom_lims/domain/base.py` still contains active `do_action_*` plumbing and grouped action payload assumptions.
11
-
-`bloom_lims/domain/workflows.py` still performs queue routing through workflow-step objects.
12
-
-`bloom_lims/domain/external_specimens.py` still uses broad scans for reference and idempotency lookup paths.
13
-
- No resolver currently exists for `run_euid + index_string`.
9
+
## Active Model
14
10
15
-
## Decisions
11
+
- queue membership is represented by graph relationships
12
+
- Atlas intent enters Bloom through explicit test-process-item reference objects
13
+
- lineage is preserved from accepted material through extraction, library prep, pooling, run creation, and sequenced library assignment
14
+
- the canonical resolver unit is `sequenced_library_assignment`
16
15
17
-
- The beta queue model will be explicit and first-class; it will not be represented as active workflow/workflow-step runtime.
18
-
- Bloom will preserve material lineage with `generic_instance_lineage`.
19
-
- Atlas links will stay explicit through external-object link instances rather than embedded private identifiers.
20
-
- Public beta APIs will be EUID-only.
21
-
- Existing workflow code may remain on disk temporarily, but it must not remain on the active beta-critical path.
16
+
## Canonical Resolver
22
17
23
-
## Implementation Outline
18
+
Bloom resolves:
24
19
25
-
1. Add queue-domain services for beta queue definition, membership, transition, and lineage-aware movement.
26
-
2. Add sequencing-run and run-index resolution services that return Atlas order and test-order EUIDs.
27
-
3. Keep external specimen creation as the Atlas entry point for accepted material, but rewrite its lookup paths to avoid broad scans.
28
-
4. Remove workflow router exposure from the active beta API surface and stop documenting workflow/workflow-step as the primary model.
29
-
5. Replace or isolate legacy action execution paths so beta queue transitions use modern TapDB-backed execution only.
20
+
-`run_euid`
21
+
-`flowcell_id`
22
+
-`lane`
23
+
-`library_barcode`
30
24
31
-
## Required Validation
25
+
Bloom returns:
32
26
33
-
- create/register container plus specimen with Atlas external links
34
-
- place accepted material into an extraction queue
35
-
- map extraction output into plate/well lineage
36
-
- advance through post-extract QC and lib prep queue selection
37
-
- create pool and sequencing run
38
-
- resolve `run_euid + index_string`
39
-
- confirm public API payloads do not expose private UUIDs
27
+
-`sequenced_library_assignment_euid`
28
+
-`atlas_tenant_id`
29
+
-`atlas_trf_euid`
30
+
-`atlas_test_euid`
31
+
-`atlas_test_process_item_euid`
32
+
33
+
## Legacy Isolation
34
+
35
+
Retired workflow and `do_action` surfaces are not part of the active beta route. If a path depends on workflow-step runtime, accession ownership, or legacy action execution, treat it as non-beta.
0 commit comments