Skip to content

Metadata fields: make course-vocabulary load errors visible (roster.yaml has been unparseable since 2026-08-24, unnoticed) #253

Open

Description

@mbreiser

What happened

reiserlab/cshl-2026-course/roster.yaml has been unparseable since 2026-08-24 (commit 4255f07b, "Update roster.yaml", made in the GitHub web editor): the new entry on line 73 is indented with one space instead of two, so the YAML parser sees a second block sequence where the people: mapping should end:

  - id: guest
    name: Guest
 - id: ShubhamTR          ← one space; the siblings have two
    name: Shubham Rathore
A block sequence may not be used as an implicit map key at line 73, column 1

Since then every Studio session signed in to the course repo has silently fallen back to the site roster (configs/metadata/), so the experimenter list shown on rigs was the lab's seed list, not the course roster — and the person who added themself never appeared. Nobody noticed for seven weeks because the only trace is one warn line in the raw/Console log (fetchCourseRoster → Studio.rawLog('course roster: unreadable — …', 'warn'); same pattern in fetchCourseVocab for genotypes / ages / sexes / fly numbers). Found 2026-10-14 while bench-testing PR #252.

This is the same failure family as the v0.70 fix (PR #176: a read-allowlist miss made the override silently fall back) — the fallback is correct behavior, but it must not be silent.

Proposal

  1. Inline, per field. When a course override fails (HTTP error, YAML parse error, empty/malformed list), show it where the person is looking: a small warning marker next to the affected field in Run details (experimenter / genotype / age / sex / fly #), with the file name, the error message and the line number in the tooltip and in the existing #mSrcNote line ("Experimenter list: course roster unreadable (roster.yaml line 73) — showing the lab list"). Keep the ↗ source link pointing at the course file so the fix is one click away.
  2. Say which list is live. Today the note only changes on success. On fallback, state explicitly that the site list is in use and why.
  3. Help-mode text (data-help) for the marker, in end-user voice: "The course roster could not be read, so the lab's list is shown. Fix the file in the course repo and reconnect."
  4. Optional, course-repo side: a one-step YAML check in cshl-2026-course (GitHub Action on push to the root *.yaml, mirroring tests/test-metadata-yaml.js here) so a web-editor edit that breaks a vocabulary file fails loudly at commit time.

Not in scope

Fixing the roster itself (a one-character edit in the course repo); the Studio should still tell the user when it happens again.

🤖 Generated with Claude Code

Activity

  1. mbreiser commented on Oct 14, 2026

    @mbreiser
    ContributorAuthor

    The roster itself is fixed: reiserlab/cshl-2026-course@dabb0a6a (one space → two on line 73; the remote file parses, 20 people). This issue remains about making the next such failure visible in the Studio.

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