Skip to content

fix(studio): restore metadata pick-lists, unblock repo vocab reads, correct token docs (v0.70) - #176

Merged
mbreiser merged 2 commits into
mainfrom
claude/arena-studio-token-setup-ef2d2c
Sep 4, 2026
Merged

fix(studio): restore metadata pick-lists, unblock repo vocab reads, correct token docs (v0.70)#176
mbreiser merged 2 commits into
mainfrom
claude/arena-studio-token-setup-ef2d2c

Conversation

@mbreiser

@mbreiser mbreiser commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Short-term half of the "re-enable the course-repo utility / plan the lab repo" work. Three live defects in the data-repo pipeline plus the docs that described the course token wrongly. No behavior change for correctly configured course benches beyond the fixes below.

Fixes

  • Experimenter dropdown empty when signed outconfigs/metadata/people.yaml on main has a one-space indent (GitHub-UI edit, 2026-08-27); the vendored YAML parser threw, loadVocab() swallowed it, and every Studio without a course token showed no experimenters (which blocks recorded runs). Re-indented. New tests/test-metadata-yaml.js parses all five configs/metadata/*.yaml with the same vendored parser; wired into pixi run test and the protocol-roundtrip CI workflow so a bad UI edit fails loudly.
  • Course age/sex/fly-number lists never loaded from the repoREADABLE_EXACT in js/studio-github.js only allowed roster.yaml/genotypes.yaml; the other three reads threw inside refreshCourseMeta's try/catch and silently fell back to the site list. Added. WRITABLE_PREFIXES also gains pattern-sets/ (the opt-in post-run SD snapshot could never commit).
  • Header comment in studio-github.js + CLAUDE.md now state the rule: every root vocab file the Studio reads must be in READABLE_EXACT.

Token guidance (docs + Studio copy)

  • The course guest account cshl-2026 is an outside collaborator, so GitHub will not let it own a fine-grained token for a reiserlab repo; the course token was necessarily classic. The repo is public since 2026-08, so public_repo scope suffices. Docs (cshl-pipeline-test-plan.md §P1c/1d, dashboard README, course docs, CLAUDE.md) corrected; sign-in prompt / lock title / help text explain fine-grained (org members) vs classic (guest / non-members) and what an expired token looks like.
  • New docs/development/data-repo-token-runbook.md: renew the course token, lab-member fine-grained recipe (going-forward recommendation), org-owner checklist.
  • Footer → v0.70; release-notes entry added. tests/test-arena-studio-alt.js Classic-footer assertion now matches the line's shape instead of a pinned version literal.

Verification

  • pixi run test green (incl. new 26-check metadata test; studio-github 118/118).
  • Local preview, signed out: Experimenter dropdown lists all 5 people (was empty on main); footer v0.70; no console errors.
  • Mocked api.github.com in the page: Studio.refreshCourseMeta() now requests and applies all five root vocab files (roster, genotypes, ages, sexes, fly_numbers) and the roster pre-fills the experimenter for the bench id.
  • Pre-existing format-check warnings on 4 untouched dashboard/tall-rig files are not from this PR.

Follow-up (separate PR, after reiserlab/arena-experiments exists)

Generalize "course repo" → data-repo registry, Rig id label, per-person tokens, seeding script — per the approved plan.

🤖 Generated with Claude Code

mbreiser and others added 2 commits September 4, 2026 12:19
…orrect token docs (v0.70)

Three live defects in the data-repo pipeline plus the docs that described the
course token wrongly.

- configs/metadata/people.yaml: a GitHub-UI edit (2026-08-27) left a one-space
  indent on the shubhamTR entry; the vendored YAML parser threw, loadVocab()
  swallowed it, and every Studio not signed into a course repo showed an EMPTY
  Experimenter dropdown (which blocks recorded runs). Re-indented, and the five
  configs/metadata/*.yaml files are now parsed in tests/test-metadata-yaml.js,
  wired into `pixi run test` and the protocol-roundtrip CI workflow.
- js/studio-github.js: READABLE_EXACT gains ages.yaml / sexes.yaml /
  fly_numbers.yaml (refreshCourseMeta read them but the allowlist refused, so
  the course override silently fell back to the site list); WRITABLE_PREFIXES
  gains pattern-sets/ (the opt-in post-run SD snapshot could never commit).
  Header comment documents the "keep both lists in sync" rule; tests added.
- arena_studio.html: sign-in prompt / lock title / help text now say which token
  to use — fine-grained (org members, one repo, Contents RW) vs CLASSIC for the
  shared course guest account (an outside collaborator cannot own a fine-grained
  token for an org repo; public_repo suffices now that the course repo is
  public) — and what an expired token looks like. Footer v0.70.
- New docs/development/data-repo-token-runbook.md (renew the course token; lab
  member recipe; org-owner checklist). cshl-pipeline-test-plan §P1c/1d rewritten
  for a classic token; dashboard README/prompt, course docs and CLAUDE.md updated
  (repo is public since 2026-08; READABLE_EXACT rule).
- tests/test-arena-studio-alt.js: Classic footer assertion matches the line's
  shape instead of a pinned version literal.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ss, not a shared inbox

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@mbreiser
mbreiser merged commit adfcb8d into main Sep 4, 2026
1 check passed
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.

1 participant