원문: 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되지 않습니다.


Nightly 체크리스트

1. 리뷰 준비가 된 PR 찾기

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에 집중합니다: