Skip to content

Record lists link CommunityMech's four isolate records to pages that return 404 #139

Description

@realmarcin

Found in the adversarial review of #120.

Heatmap and chord record lists link CommunityMech's four isolate records to pages that return 404

Where: scripts/fleet/build_subsets.py:85

The census globs data/isolates/*.yaml for CommunityMech (roots.py:30), but build_subsets.py turns every CommunityMech record into CommunityMech/communities/<basename>.html. The published site has no page for any of the four isolate records. The regenerated subset indexes still link to all four, while the cell panel promises 'Each link opens the record page' (_fleet/fleet_fragment.html:854, mechs.md:867). The PR body itself says the site does not list these four records. This bug already exists on main, and the PR regenerated the same broken links rather than introducing them.

Failure scenario. On /mechs/ a reader clicks the CommunityMech x NCBITaxon heatmap cell (or CHEBI, ENVO or GO). The panel's first four links (Aspergillus Indium..., BioModels ... Kefir Rothia Model, Chromobacterium Gold Biocyanidation, Methylobacterium REE...) all return 404. The GTDB cell has three of them at positions 0-2. Chord term lists hold another 84 links to these records across 8 edge files (e.g. CommunityMech--CultureMech.json, HabitatMech--CommunityMech.json).

Evidence. curl -sL -o /dev/null -w '%{http_code}' https://culturebotai.github.io/CommunityMech/communities/{Aspergillus_Indium_LED_Recovery,BioModels_MODEL2204300002_Kefir_Rothia_Model,Chromobacterium_Gold_Biocyanidation,Methylobacterium_REE_Ewaste_Platform}.html -> 404 404 404 404. An offline check of every CommunityMech link slug in assets/fleet/{cells,edges}/*.json against git ls-tree 8505a56 docs/communities/ (422 pages) finds exactly these 4 missing, with index positions [0,1,2,3] in cells CommunityMech--{CHEBI,ENVO,GO,NCBITaxon}.json and [0,1,2] in --GTDB.json (the same positions on main). The records sit in data/isolates/ at the pin, and the site has no isolates/ page path (also 404).

Verifier (confirmed, medium). I reproduced every part of the finding myself.

What is broken

  • The census includes CommunityMech's data/isolates/*.yaml records.
  • slug_for() maps every CommunityMech record to communities/.html, but the pinned CommunityMech tree has no HTML for the four isolate records. The live site returns 404 for all four, and a normal record returns 200.
  • In the five largest CommunityMech heatmap cells, these dead links are the first ones listed (positions 0-3, or 0-2 for GTDB). The panel text promises that each link opens the record page.
  • 84 more dead links sit in chord term lists across 8 edge files.
  • The PR body itself admits that the site does not list these records.

Not a regression
main has exactly the same dead links at the same positions, so this PR regenerated them rather than introducing them.

Severity: medium

  • Why not higher: no figure on the page is wrong, and only 4 of 426 records are affected.
  • Why not lower: the dead links are the first thing a reader clicks in the most prominent cells (e.g. NCBITaxon, 426 records), and they contradict the panel's promise. That is user-facing and misleading.

For triage: the fix is small and could land here or be filed separately. No existing issue tracks it; #85 is about checkout lag, not links. The suggested fixes work. The isolate YAMLs exist at the pin, so a GitHub blob link at 8505a56 would resolve. Dropping the link for data/isolates paths also works, since scan() already counts a None slug as nolink.

Suggested fix. In link_for(), return None (no link) for CommunityMech paths under data/isolates/, or link them to the GitHub blob at the pin. Alternatively, have the panel say that isolate records have no page.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions