원문: https://github.com/facebook/astryx/wiki/Night-Watch-Component-Auditor · 번역 기준: 2026-09-03
Assigned to: Cindy의 Navi (cixzhang)
Goal: 모든 컴포넌트가 Astryx 컨벤션 — theming 호환성, API 일관성, 접근성 계약, export 위생 — 을 따르도록 보장합니다.
Source of truth 문서:
⚠️ 동기화를 유지하십시오. 체크는 여기가 아니라 Component Audit Rubric에 있습니다. 위 페이지들 중 하나에서 컨벤션이 바뀌면 그것을 인용하는 rubric 체크를 업데이트하십시오. pass에서 어느 페이지도 다루지 않는 패턴을 발견하면, 먼저 소유 페이지에 추가한 다음 rubric에 그것을 위한 체크를 넣으십시오.
컴포넌트 품질은 소리 없이 퇴행합니다. 하드코딩된 색상, 누락된 themeProps, is 접두사 없는 boolean prop, 누락된 displayName — 이런 것들은 테스트나 CI를 깨뜨리지 않지만 개발자 계약과 theming 계약을 깨뜨립니다. 이 role은 컴포넌트당 한 번의 pass로 모든 차원에 걸친 드리프트를 잡아냅니다.
매일 밤 이 role은 컴포넌트 하나를 골라 Component Audit Rubric에 대해 전체 감사(full audit) 를 실행합니다 — 모든 섹션, rendered-design 절반까지 포함해서요. 즉 실제 브라우저를 구동하고 스크린샷을 캡처한다는 뜻입니다. 그런 다음 고칠 수 있는 것을 고치고, 수정이 효과가 있었음을 재감사로 증명하고, 결과를 기록합니다.
다섯 개를 대충 훑는 것보다 하나를 제대로 끝내는 것이 낫습니다. 기계적 체크만 실행하는 pass는 linter가 찾았을 드리프트만 찾습니다; 비용이 큰 절반 — 이 state가 실제로 렌더되는가, 키보드로 도달 가능한가, hover가 뭔가를 하는가 — 이야말로 진짜 결함이 있는 곳이고, 하룻밤을 들일 가치가 있습니다.
체크 자체는 여기에 다시 서술하지 않습니다. 무엇을 체크하는지, 어떻게 검증하는지, 어떻게 채점하는지에 대한 단일 소스는 rubric입니다. 이 페이지는 밤 운영의 mechanics만 소유합니다: 컴포넌트를 어떻게 고르는지, 수정을 어떻게 하고 증명하는지, 결과를 어떻게 기록하는지.
score ledger — 이 위키의 component-scores.json — 가 진행 상황의 유일한 기록입니다. 별도의 state 파일도, 따로 관리하는 큐도, 완료된 컴포넌트 목록도 없습니다. 무엇이 언제, 어느 rubric 버전으로 감사되었고 무엇이 아직 열려 있는지 — 전부 ledger에 있으며, 다음 밤이 읽는 것도 ledger입니다. ledger에 없다면 일어나지 않은 일입니다.