fix(studio): restore metadata pick-lists, unblock repo vocab reads, correct token docs (v0.70) - #176
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
configs/metadata/people.yamlon 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. Newtests/test-metadata-yaml.jsparses all fiveconfigs/metadata/*.yamlwith the same vendored parser; wired intopixi run testand the protocol-roundtrip CI workflow so a bad UI edit fails loudly.READABLE_EXACTinjs/studio-github.jsonly allowedroster.yaml/genotypes.yaml; the other three reads threw insiderefreshCourseMeta's try/catch and silently fell back to the site list. Added.WRITABLE_PREFIXESalso gainspattern-sets/(the opt-in post-run SD snapshot could never commit).studio-github.js+ CLAUDE.md now state the rule: every root vocab file the Studio reads must be inREADABLE_EXACT.Token guidance (docs + Studio copy)
cshl-2026is 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, sopublic_reposcope 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.docs/development/data-repo-token-runbook.md: renew the course token, lab-member fine-grained recipe (going-forward recommendation), org-owner checklist.tests/test-arena-studio-alt.jsClassic-footer assertion now matches the line's shape instead of a pinned version literal.Verification
pixi run testgreen (incl. new 26-check metadata test; studio-github 118/118).api.github.comin 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.format-checkwarnings on 4 untouched dashboard/tall-rig files are not from this PR.Follow-up (separate PR, after
reiserlab/arena-experimentsexists)Generalize "course repo" → data-repo registry, Rig id label, per-person tokens, seeding script — per the approved plan.
🤖 Generated with Claude Code