Skip to content

Sync people data across website, CV, and lab-manual#13

Merged
jeremymanning merged 14 commits intomainfrom
001-people-labmanual-sync
Mar 24, 2026
Merged

Sync people data across website, CV, and lab-manual#13
jeremymanning merged 14 commits intomainfrom
001-people-labmanual-sync

Conversation

@jeremymanning
Copy link
Copy Markdown
Member

@jeremymanning jeremymanning commented Mar 24, 2026

Summary

  • Added lab-manual as Git submodule and built a three-way reconciliation system to keep people.xlsx, JRM_CV.tex, and lab_manual.tex in sync
  • Extended onboard/offboard scripts to automatically update the lab-manual (commit + push to master)
  • Performed initial data reconciliation: fixed 5 name typos, added 38 missing people to lab-manual, 5 to CV, onboarded Andy Kim and Colson Duncan
  • All three sources now have 0 discrepancies, all lists sorted chronologically

New scripts

  • scripts/parse_lab_manual.py — parser + write helpers for lab_manual.tex members chapter
  • scripts/reconcile_people.py — three-way comparison tool with fuzzy name matching
  • tests/test_parse_lab_manual.py (17 tests) + tests/test_reconcile_people.py (22 tests)

Other changes

  • onboard_member.py / offboard_member.py now update lab-manual (graceful degradation on failure)
  • photo_already_processed() now checks square dimensions + transparent corners instead of just file existence
  • CI workflows updated to checkout with submodules
  • pre_push_check.py warns if submodule not initialized
  • Documentation updated (CLAUDE.md, AGENTS.md, scripts/AGENTS.md, README.md)

Test plan

  • 192 tests passing (153 existing + 17 parser + 22 reconciliation)
  • reconcile_people.py --dry-run shows 0 discrepancies
  • pre_push_check.py passes
  • Verify CI workflows run with submodule support
  • Visual check: people.html renders correctly with new members
  • Verify lab-manual submodule received all pushes

🤖 Generated with Claude Code

jeremymanning and others added 14 commits March 24, 2026 00:11
- Added ContextLab/lab-manual as Git submodule at lab-manual/
- Created scripts/parse_lab_manual.py with parser for lab_manual.tex
  members chapter, plus helpers for adding/moving members and
  committing/pushing submodule changes
- Created tests/test_parse_lab_manual.py with 17 tests (all passing)
- Updated build-content.yml to checkout with submodules
- Added full speckit artifacts (spec, plan, research, data-model, tasks)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Created scripts/reconcile_people.py: compares people.xlsx (source of
  truth), JRM_CV.tex, and lab_manual.tex using exact, nickname, and
  fuzzy matching (0.85 threshold)
- Categorizes discrepancies as auto-resolved, flagged-for-review, or
  conflicts
- Excludes non-person sheets (collaborators, director) from comparison
- Created tests/test_reconcile_people.py with 22 tests including a
  20+ name variation corpus for fuzzy matching validation
- 192 total tests passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- onboard_member.py now calls add_member_to_lab_manual() after CV update
- offboard_member.py now calls move_member_to_alumni() after CV update
- Both wrap lab-manual operations in try/except for graceful degradation
- Lab-manual changes are committed and pushed directly to master
- 192 tests passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Updated build-cv.yml to checkout with submodules: true
- Added submodule initialization check to pre_push_check.py (warning only)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Updated CLAUDE.md: added reconcile command, submodule setup, cleaned
  up auto-generated sections
- Updated AGENTS.md and scripts/AGENTS.md: added new scripts to
  structure and WHERE TO LOOK tables
- All 192 tests pass, pre-push check passes, reconciliation dry-run
  shows 57 discrepancies (18 flagged for review)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Data fixes from reconciliation dry-run:
- Fixed spelling: Aaryan Agarwal → Aaryan Agrawal in people.xlsx
- Fixed name: Maura F. Hough → Maura Hough in lab-manual
- Fixed name: Francisca O. Fadairo → Francisca Fadairo in lab-manual
- Offboarded Maura Hough (2023) to alumni in lab-manual

Added to alumni_undergrads in people.xlsx (flagged by reconciliation):
- Matthew Givens (2024-2025), Keene Dampal (2025), Jaysen Quan (2025)
- Molly McQuoid (2022), Joy Maina (2025), Emmy Thornton (2025)
- Moved Matt/Keene/Jaysen/Maura to alumni in lab-manual
- Added Joy/Emmy to lab-manual alumni
- Closed CV entries for Joy/Emmy

Onboarded Andy Kim (Hye-Sung Kim) as undergrad:
- Added to people.xlsx, JRM_CV.tex, lab-manual, Google calendars

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CV: Aaryan Agarwal → Aaryan Agrawal, Armando Oritz → Armando Ortiz
- people.xlsx: Armando Oritz → Armando Ortiz
- lab-manual: Helen Lu → Helen Liu, removed duplicate Hye-Sung Kim
  (kept Andy Kim)
- Reconciliation now shows 1 flagged item (Colson Duncan, pending
  separate onboarding) down from 18

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- photo_already_processed() now checks square dimensions + transparent
  corners (RGBA) instead of just file existence, catching unprocessed
  photos that were placed directly in images/people/
- Reprocessed Andy Kim's photo with hand-drawn border (500x500)
- Rebuilt people.html

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Onboarded Colson Duncan as undergrad (people.xlsx, CV, lab-manual,
  GitHub, Google calendars). No photo yet.
- Removed duplicate Colson entry in lab-manual (kept 2025 start year)
- Updated README.md: added lab-manual update to onboard/offboard docs,
  added reconciliation section, added submodule init to build docs
- Reconciliation now shows 0 flagged items (down from 18)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Added 5 missing people to CV (Emily Whitaker, Jaysen Quan, Keene
Dampal, Matthew Givens, Molly McQuoid) and closed their year ranges.

Added 38 missing people to lab-manual:
- 10 active undergrads to current section
- 25 alumni undergrads to alumni section
- 3 alumni grad students to alumni section

All three sources (people.xlsx, JRM_CV.tex, lab_manual.tex) are now
100% in sync with 0 discrepancies.

Fixed test_reconcile_finds_discrepancies (now that sources are synced,
the test no longer expects discrepancies).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sorted all list blocks in both lab_manual.tex (9 lists) and
JRM_CV.tex (3 etaremune blocks) by start year. Entries with the
same start year are sorted alphabetically by name.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Processed colson_duncan.jpg with face detection and border, updated
people.xlsx image reference, rebuilt people.html.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Points to commit 5e83c41 which has deduplicated entries, sorted lists,
and all 38 missing people added.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jeremymanning jeremymanning merged commit 7549160 into main Mar 24, 2026
2 checks 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