Architecture Decision Records¶
Design decisions that are not obvious from reading the code. Each ADR documents why a decision was made, not just what. The code already shows the what.
ADRs come in two layers:
Implementation decisions (numbered
001-008): runtime, data model and operational choices discovered while building PROTEA. They explain trade-offs of concrete code paths (KNN algorithm choice, queue topology, deduplication strategy, retries, etc.).Strategic decisions (
D1-D31): plan-level decisions taken in the master plan revision 3 (2026-05-05). They drive the structure of the project, the deployment story, and the thesis writing cadence.
Implementation decisions¶
All implementation ADRs (001-008) follow the MADR template (Status / Context / Decision / Consequences sections). They are numbered in discovery order, not superseded by the D-series, and remain the authoritative record for the runtime, data model, and operational choices described.
ADR |
Status |
Decision |
Problem it solves |
|---|---|---|---|
001 |
Accepted |
pgvector does not scale to 500K+ vectors; GPU must be reserved for inference |
|
002 |
Accepted |
A mid-operation crash left the job invisible to monitoring |
|
003 |
Accepted |
Thousands of batch jobs per pipeline flooded the jobs table |
|
004 |
Accepted |
Failed messages were lost; retries without backoff amplified failures |
|
005 |
Accepted |
A coordinator dispatching 500 batches opened 500 TCP connections |
|
006 |
Accepted |
30K duplicate sequences in Swiss-Prot waste hours of GPU time |
|
007 |
Accepted |
Re-ranker iteration cadence would contaminate the production dependency tree |
|
008 |
Accepted |
Upstream cafaeval reports coverage > 1 in PK; precision is under-divided |
|
009 |
Accepted |
Cancelled messages held a prefetch slot and could deadlock the predictions queue |
Strategic decisions¶
Decisions taken in the master plan revision 3 (2026-05-05). Statuses: Accepted, Pending (gate opens at the indicated phase), Deferred (scheduled later in the timeline) or Obsolete (superseded by a later revision).
ID |
Decision |
Status |
Phase / Gate |
|---|---|---|---|
D1 |
Accepted |
F0 (closed); enacted F0-F2 |
|
D2 |
Accepted |
F1 |
|
D3 |
Accepted |
F3 |
|
D4 |
Pending |
gate at F4 |
|
D5 |
Accepted |
F1 |
|
D6 |
Pending |
gate at F5 |
|
D7 |
Pending |
gate at F-OPS |
|
D8 |
Accepted |
F8a |
|
D9 |
Obsolete |
superseded by D1 |
|
D10 |
Pending |
T1.6 (requires_human) |
|
D11 |
Accepted |
F3 |
|
D12 |
Accepted |
F-EXP |
|
D13 |
Accepted |
F8a / F8b |
|
D14 |
Deferred |
F9 post-defense |
|
D15 |
Accepted |
F-OPS |
|
D16 |
Accepted |
F0 |
|
D17 |
Obsolete |
n/a |
|
D18 |
Accepted |
F-THESIS |
|
D19 |
Accepted |
F-RESEARCH |
|
D20 |
Accepted |
F-THESIS |
|
D21 |
Accepted |
F-THESIS |
|
D22 |
Accepted |
F-THESIS |
|
D23 |
Accepted |
F-LAFA |
|
D24 |
Accepted |
F0 (closed) |
|
D25 |
Pending |
gate at F-OPS |
|
D26 |
Accepted |
F-OPS |
|
D27 |
Pending |
gate at F-OPS |
|
D28 |
Pending |
gate at F-OPS |
|
D29 |
Pending |
gate at F-OPS |
|
D30 |
Accepted |
F7 |
|
D31 |
Accepted |
F2C / §24 |
|
D34 |
Accepted |
F-EXP-RESET |
|
D35 |
Accepted |
F-EXP-RESET |
|
D36 |
Accepted |
F-EXP-RESET |
|
D37 |
Single auth system, manual approvals, multi-instance (FEAT-AUTH) |
Accepted |
F-AUTH (complete, FARM-AUTH.1-11) |
D38 |
Defer neural-head champion; pivot to curated dataset packaging (F-DATA-PACK) |
Accepted |
F-DATA-PACK |