Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 38 additions & 1 deletion .specify/memory/constitution.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
<!--
Sync Impact Report
==================
Version: 1.0.0 -> 1.1.0 (MINOR: one principle added; none removed or redefined)

Added: Principle VII, "Parked is not dead"
Modified: none
Removed: none

Rationale: capability that is built, works and is deliberately undeployed had no
stated policy, so it was read as dead code and proposed for deletion. Both failure
modes are now named -- deleting it to cheapen a refactor, and investing in it while
parked.

Follow-up TODOs: none.
-->

# Reactome ChatBot Constitution

The team is three developers covering a large surface — website, pathway browser,
Expand Down Expand Up @@ -60,6 +77,26 @@ it records a decision, a measurement, or a defect someone else must judge — no
as a substitute for a fix that takes ten minutes. Three fixes are worth more than
five issues describing them.

### VII. Parked is not dead

Some capability here is built, works, and is deliberately not deployed: UniProt
integration, Alliance results, and the Cross-Database profile. It runs only when a
`config.yml` names it; every default is React-to-Me.

Do not delete parked work to make a refactor cheaper. That trade looks like a saving
and is not: the code cost someone real effort, "we are not working on it now" is not
"it is dead", and rebuilding is far more expensive than carrying. This principle
exists because the proposal was made -- to remove about 500 lines of UniProt and
Cross-Database serving code, on the grounds that it had been dragged through three
refactors in a week -- and it was wrong.

Equally, do not invest in parked work. It needs no new features and no new tests.
Keeping it importable and type-checking through a refactor is the whole obligation.

Parked code is unexercised, so its behaviour is unverified even where it still type
checks. Whoever un-parks it inherits that, and should be told at the point they find
it rather than after.

## Quality Gates

`main` is protected: pull request required, `enforce_admins` on, branch must be
Expand Down Expand Up @@ -100,4 +137,4 @@ used for bug triage or dependency bumps, where the ceremony costs more than the
fix. Retrofitting specifications onto existing code is archaeology and is not
done.

**Version**: 1.0.0 | **Ratified**: 2026-09-08 | **Last Amended**: 2026-09-08
**Version**: 1.1.0 | **Ratified**: 2026-09-08 | **Last Amended**: 2026-09-10
14 changes: 14 additions & 0 deletions src/agent/profiles/cross_database.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
"""The Cross-Database profile: Reactome answers combined with UniProt answers.

PARKED, NOT ABANDONED. Deliberately not deployed: every profile default is
React-to-Me, in `config_default.yml` and in `chat-chainlit.py`'s fallback, so this
runs only if a `config.yml` names it explicitly.

Do not delete it. Helia Mohammadi did the work to make UniProt integration possible, and it is kept so the capability can be resurrected
rather than rebuilt. Equally, do not invest in it while it is parked -- it does not
need new features, and a change that merely keeps it importable is enough.

If it is ever un-parked, note that it has not been exercised since 2026-09-10, so
its behaviour is unverified even where the code still type-checks.
"""

from typing import Any, Literal

from langchain_core.embeddings import Embeddings
Expand Down
14 changes: 14 additions & 0 deletions src/data_generation/alliance/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
"""Building embeddings from Alliance of Genome Resources data.

PARKED, NOT ABANDONED. Deliberately not deployed: every profile default is
React-to-Me, in `config_default.yml` and in `chat-chainlit.py`'s fallback, so this
runs only if a `config.yml` names it explicitly.

Do not delete it. Adam Wright did the work to make Alliance results possible, and it is kept so the capability can be resurrected
rather than rebuilt. Equally, do not invest in it while it is parked -- it does not
need new features, and a change that merely keeps it importable is enough.

If it is ever un-parked, note that it has not been exercised since 2026-09-10, so
its behaviour is unverified even where the code still type-checks.
"""

import os

import requests
Expand Down
14 changes: 14 additions & 0 deletions src/retrievers/uniprot/rag.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
"""Retrieval over a UniProt embeddings bundle.

PARKED, NOT ABANDONED. Deliberately not deployed: every profile default is
React-to-Me, in `config_default.yml` and in `chat-chainlit.py`'s fallback, so this
runs only if a `config.yml` names it explicitly.

Do not delete it. Helia Mohammadi did the work to make UniProt integration possible, and it is kept so the capability can be resurrected
rather than rebuilt. Equally, do not invest in it while it is parked -- it does not
need new features, and a change that merely keeps it importable is enough.

If it is ever un-parked, note that it has not been exercised since 2026-09-10, so
its behaviour is unverified even where the code still type-checks.
"""

from pathlib import Path

from langchain_core.embeddings import Embeddings
Expand Down
Loading