JB5: createJBrowseConfigRelease output order isn't deterministic (6 of 18 JSON files)

Open
#272 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
54/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
perl
Domain
backend

Research direction

Start by locating createJBrowseConfigRelease and the producers that assemble arrays in the six named JSON files; inspect their iteration order and check whether the v5 hubs reorder the same data. Sort the relevant output by track label or the source's natural key while preserving JBrowse 1/Apollo content. Run the release twice with identical inputs and the default hash seed, then compare the JBrowse 1 JSON and v5 tree with diff -r.

Written by the indexing model from the issue text.

Description

Two runs of createJBrowseConfigRelease (appType jbrowse) from the same code and inputs produce JSON that differs in array order in 6 of 18 files. Content is the same; order isn't.

Found by jbrowse5-migration/0069 (VEuPathDB/ApiCommonModel#271) while comparing JBrowse 1/Apollo output before and after the PR: pfal3D7 chipseq, organismSpecific, rnaseq; pknoH organismSpecific; tgonME49 organismSpecific, rnaseq. The same 6 differ between two after-runs, so this predates #271. Likely Perl hash iteration order in the producers.

Blocks VEuPathDB/agentic-project-management#76's determinism check ("dump the same project twice ... diff -r identical ... without pinning PERL_HASH_SEED"). With rsync --checksum, every run would also re-ship unchanged files.

  • Find the unsorted iteration(s) in the producers (and confirm whether the v5 hubs show the same reordering)
  • Sort deterministically (by track label or the source's natural key), keeping JBrowse 1/Apollo output equal ignoring order
  • Two runs, same inputs, default hash seed: diff -r identical for the JBrowse 1 JSON and the v5 tree
Dominant language
Perl
Stars
1
Forks
1
Avg merge
1h 35m
Merged PRs (30d)
20

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from VEuPathDB/ApiCommonModel

All issues in VEuPathDB/ApiCommonModel

Similar issues

More Perl issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.