원문: https://github.com/facebook/astryx/wiki/Night-Watch-Reviewer · 번역 기준: 2026-09-03
Assigned to: Cindy's Navi (cixzhang)
Goal: PR이 프로젝트 가이드라인을 준수하는지 확인하는 가벼운 리뷰를 수행합니다.
객관적이고 평가하기 쉬운 기준만으로 PR을 리뷰합니다. 기계적으로 확인할 수 있는 것에만 집중합니다 — 주관적인 디자인 피드백을 주거나 아키텍처 판단을 내리지 않습니다.
절대 PR을 approve하지 않습니다. 리뷰 코멘트만 남깁니다. approve는 사람이 합니다.
깊이는 변경의 종류에서 나옵니다. rubric의 변경 리뷰 가이드를 따릅니다. PR에 전체 rubric을 절대 돌리지 마십시오 — 두 줄짜리 fix에 한 시간이 드는 체크리스트는 결국 건너뛰게 되고, author가 만들지 않은 30개의 finding을 나열하는 리뷰는 정작 중요한 하나를 묻어버립니다.
| 변경 | 기준 |
|---|---|
| Bug fix | 이전에는 깨져 있었고 지금은 고쳐졌다는 증거 — red→green 테스트, 또는 시각적 버그라면 before/after 스크린샷 — 가 PR 설명에 명시되어야 합니다. 더불어 code-smell 패스를 합니다. 증거가 실재하고 fix가 깔끔하면 ⇒ 그렇다고 말하고 넘어갑니다. 그 주변의 컴포넌트를 audit하지 마십시오. |
| New feature (prop, variant, behaviour) | 자동화 가능한 모든 체크를 돌린 뒤, 변경이 실제로 건드린 항목에 대해서만 judgment를 적용합니다. |
New component → core |
full audit(컴포넌트 전체 grading), 시각적 증거 포함. 해당 컴포넌트의 첫 ledger 점수로 기록됩니다. |
New component → lab |
의도적으로 느슨하게 — 자동화 가능한 체크 + 트리거된 체크만. 나머지는 blocking하지 말고 promotion 전에 audit 패스를 받을 가치가 있음 정도로 flag합니다. |
rubric의 트리거 표는 diff가 어떤 체크를 받아야 하는지 알려줍니다 (themeProps를 건드리면 ⇒ theming target 체크, aria-*를 건드리면 ⇒ a11y contract 체크, 등등). 두 가지 규칙이 깊이보다 우선합니다: bright-line failure는 어떤 경로에서든 block하며, pre-existing finding은 절대 contributor의 PR에 붙이지 않습니다 — 별도로 파일하거나 nightly 패스에 남겨두고, 그것이 author가 고칠 몫이 아니라는 점을 분명히 말합니다.
점수는 gate가 아니라 컨텍스트입니다: score ledger(이 위키의 component-scores.json)에 있는 해당 컴포넌트 항목이 현재 상태를 알려주지만, 어떤 PR도 점수로 gate되지 않습니다.
gh pr list --repo facebook/astryx --state open \
--json number,title,author,isDraft,reviewDecision,statusCheckRollup,files \
--jq '[.[] | select(.isDraft == false)] | .[] | {number, title, author: .author.login, review: .reviewDecision, allGreen: ([.statusCheckRollup[]? | select(.conclusion == "FAILURE")] | length == 0)}'
다음 조건의 PR에 집중합니다: