docs: rewrite README for both curators and maintainers by valearna · Pull Request #86 · WormBase/caltech-curation-services · GitHub
Skip to content

docs: rewrite README for both curators and maintainers - #86

Merged
valearna merged 8 commits into
mainfrom
docs/readme-curators-and-devs
Oct 24, 2026
Merged

valearna merged 8 commits into
mainfrom
docs/readme-curators-and-devs

Conversation

@valearna

@valearna valearna commented Sep 16, 2026 •

Copy link
Copy Markdown
Collaborator

The README covered only local aCeDB, Grafana and the SES mailer setup. It said nothing about what the services actually are, or how they get deployed. This rewrites it around the two audiences who need it.

Part 1 — for curators. No shell commands. A diagram of how the pieces fit together, the split between the public forms and the password-protected curator forms (every one linked to its live URL, with a pointer to the site map that generates itself from the scripts on disk), what the OA is and the 21 datatypes it is configured for, and a table of where curated data goes — citace, the Alliance, e-mail — and on what schedule.

Part 2 — for developers. The Compose service inventory, repository layout, the env-var groups and the Dotenv-does-not-overwrite trap, a table of what needs an image rebuild versus what is already live through the bind mounts, deployment to the two AWS hosts, and operations: routing and ports, restic backups, certbot, Prometheus/Grafana, logs.

The existing AWS SES section is preserved essentially verbatim.

Review requests

@vanaukenk — Part 1 is the part that matters most, and I wrote it from the code rather than from doing the work. Please check that the descriptions of the forms and the OA datatypes match how you actually use them, and that the export schedule table is right: I read it off curation/crontab, but whether that matches what curators expect to see in a release is your call, not the crontab's.

@azurebrd — Part 2, particularly the deployment section. I worked it out by inspecting the running containers on both servers, so please confirm I have it right, especially: that the code served comes from SRC_DIR_PATH (/home/azurebrd/git/caltech-curation-services) rather than from whichever checkout Compose is invoked in, and that a CGI or script change therefore needs only a git pull there and no restart.

Unrelated bug found while checking the links

@azurebrd — every URL in Part 1 was verified, and one came back broken: pub/cgi-bin/forms/reagent_help.cgi returns 500 on production and 200 on dev.

Both hosts serve the same bind-mounted checkout, so this looks environmental rather than a problem with the script — a data file missing under /usr/caltech_curation_files on prod, or one the Apache user cannot read. The Apache error log on the prod curation container should say which. Nothing in this PR touches it; the README still links the form, since that is its canonical URL.

🤖 Generated with Claude Code

The README covered only local aCeDB, Grafana and the SES mailer setup, and
said nothing about what the services actually are or how they are deployed.

Split it into two parts:

- Part 1, for curators: how the pieces fit together, the split between the
  public forms and the password-protected curator forms (each linked to its
  live URL, with a pointer to the self-generating site map), what the OA is
  and the datatypes it is configured for, and where curated data goes and on
  what schedule.
- Part 2, for developers: the Compose service inventory, repository layout,
  the env-var groups and the Dotenv precedence trap, what needs a rebuild
  versus what is live through the bind mounts, deployment to the two AWS
  hosts, and operations (routing, backups, certs, monitoring, logs).

The deployment section documents what was previously only institutional
knowledge: there is no CI/CD, both hosts select their config through the
env_files/.env symlink, and the code that is actually served comes from
SRC_DIR_PATH rather than from the checkout Compose is invoked in.

The existing AWS SES section is preserved.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vanaukenk

Copy link
Copy Markdown
Collaborator

Kimberly points out on #86 that citace is no longer built, since there are
no new WormBase releases, so the .ace dump pipeline no longer has a consumer
downstream.

Remove it as a live destination: from the intro, the data-flow diagram, the
"where curated data goes" table, and the note telling curators to wait for a
monthly release. The Alliance is now the destination that matters.

The citace_upload/ tree stays in the repository listing, marked as legacy,
with a rough-edges entry recording the actual state: most per-datatype
dumpers are already commented out in curation/crontab, and only the papers
wrapper and Cecilia's wrapper still run on a schedule.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@valearna

Copy link
Copy Markdown
Collaborator Author

valearna and others added 5 commits September 17, 2026 11:09
Ranjana asked where to find the files kept on the instance, the gene
descriptions generated for WormBase over the years in particular.

Document /usr/caltech_curation_files: that pub/ and priv/ are browsable
through the /files alias, so most things can be fetched without server
access; the gene_descriptions layout in detail (WS268-WS298, per-species
txt/tsv/json plus the .ace and count files per run); and a table of the
other trees with their sizes and contents.

Sizes and layout surveyed on the production instance. Also records, under
rough edges, that the disk is 86% full, with citace/ (370 GB, now
consumerless) and the indefinitely kept monthly dumps (124 GB) the two
largest holdings.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The README said the hosting has "no CI/CD", which is wrong: the jenkins
service in this same Compose stack polls the sibling projects' GitHub
repositories, builds their images and replaces their running containers.
What is actually true is narrower - no pipeline exists for this repository,
so the curation service alone is deployed by hand.

Add a Jenkins section under Operations with the jobs configured on
production, the repository each tracks and the containers it runs, verified
by reading the job configs. Note that Jenkins runs privileged as root with
the host Docker socket mounted, which is how a job restarts containers and
also means a job has full control of the daemon.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The Jenkins section read as though CI/CD were a property of the curation
system. It is not: those pipelines build a set of applications developed
separately from curation, which happen to run on the same instance.

Replace it with "Other services on this instance", listing each application,
where it is reached and which containers it runs, and what it shares with the
curation system: the reverse proxy, the disk, the curation hostname for
anatomy function, and - verified in the job configs - the caltech_curation
database itself, which the ACKnowledge and WormiCloud backends connect to.
Jenkins is now described there as how those applications deploy, with the
curation system explicitly outside it.

Also stop calling them "Textpresso services"; the textpressolab.com
hostnames stay, since those are the real domains.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
acedb.org is a parked domain now: it answers 200 but serves only a redirect
stub to a registrar lander, so a status check does not catch it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The instance carries a checkout of alliance-genome/agr_genedescriptions that
nothing in this repository refers to, so it was invisible in the README while
its output - 39 GB of gene description files - was already documented.

Record both halves. pipelines/wormbase/ is the copy installed here: it never
ran automatically, there is no cron entry or Jenkins job for it, it was
launched by hand per release, and it is no longer run at all now that
WormBase is frozen, which is why WS298 is the last release on disk.
pipelines/alliance/ is where generation happens now, running automatically on
every Alliance build, with nothing on this instance involved.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@valearna
valearna merged commit a7b258c into main Oct 24, 2026
@valearna
valearna deleted the docs/readme-curators-and-devs branch October 24, 2026 17:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants