Mark the UniProt, Alliance and Cross-Database work as parked, not dead - #207
Merged
Conversation
I proposed deleting about 500 lines of this to save maintenance effort. That was the wrong trade: Helia did the work to make UniProt integration possible and Adam did the same for Alliance, and "we are not working on it right now" is not "it is dead". Deleting a colleague's work to make my refactors cheaper is not a saving. So instead the status is written down where someone will find it. Each module now says three things: it is deliberately not deployed, it must not be deleted, and it must not be invested in while parked -- keeping it importable through a refactor is enough. Also records that it has not been exercised since today, so if it is ever un-parked its behaviour is unverified even where the code still type-checks. That is the fact most likely to bite whoever resurrects it. No behaviour change. The chatbot already defaults to Reactome only, in both config_default.yml and chat-chainlit.py's fallback -- these profiles run only if a config.yml names them explicitly. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Principle VII. Capability that is built, works and is deliberately not deployed had no stated policy, so it read as dead code -- and I proposed deleting about 500 lines of it to make refactors cheaper. The principle names both failure modes. Do not delete parked work to cheapen a refactor: it cost someone real effort, "not working on it now" is not "dead", and rebuilding costs far more than carrying. Do not invest in it either: keeping it importable and type-checking through a refactor is the whole obligation. It also records that parked code is unexercised, so its behaviour is unverified even where it type-checks -- the fact most likely to bite whoever resurrects it, and the reason the module docstrings in this same PR say so where they will be found. MINOR bump: a principle added, none removed or redefined. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I proposed deleting ~500 lines of this to save maintenance effort. That was the wrong trade, and this is the correction — in the two places it needs to be recorded.
Helia did the work to make UniProt integration possible; Adam did the same for Alliance. "We are not working on it right now" is not "it is dead", and deleting a colleague's work to make my refactors cheaper is not a saving.
Constitution, Principle VII — "Parked is not dead" (v1.0.0 → 1.1.0)
The policy was missing, which is why the code read as dead. It names both failure modes:
It also records the specific proposal that prompted it, because a principle with a scar attached is harder to argue away than one without.
The modules say the same thing where you'd find it
cross_database.py,retrievers/uniprot/rag.pyanddata_generation/alliance/each now state that they are deliberately undeployed, must not be deleted, and must not be invested in.They also record that the code has not been exercised since today, so if it is ever un-parked its behaviour is unverified even where it still type-checks. That is the fact most likely to bite whoever picks it up, and it belongs at the point of discovery rather than after.
No behaviour change
The chatbot already defaults to Reactome-only data, in both
config_default.ymlandchat-chainlit.py's fallback. Nothing needed changing for that; this only writes down why the rest is there.🤖 Generated with Claude Code