Skip to content

docs: QA 회차와 런타임 증거를 저장소 정본으로 이관 [base: develop] - #1098

Merged
OnlyReadOneBook merged 27 commits into
developfrom
docs/qa-status-and-readme
Aug 27, 2026
Merged

OnlyReadOneBook merged 27 commits into
developfrom
docs/qa-status-and-readme

Conversation

@OnlyReadOneBook

@OnlyReadOneBook OnlyReadOneBook commented Aug 24, 2026 •

Copy link
Copy Markdown
Collaborator

QA 회차 문서와 커밋별 런타임 증거를 Git으로 추적하는 저장소 정본으로 모읍니다. 최신 develop의 빌드 셋업과 개발 규칙은 보존하고, 길어진 배포·스크린샷 안내는 전용 문서로 분리했습니다.

무엇이 바뀌나

  • docs/qa/round-1.md, round-2.md, status.md에 회차 이력·현재 커버리지·3차 QA 진행 상태를 정리했습니다.
  • 로컬 QA 원본 34건을 docs/qa/evidence/<full-head-sha>.json 34건과 manifest.json으로 1:1 이관했습니다.
  • .github/scripts/qa-evidence.mjs가 원본 필드 정규화, 민감정보 비식별화, 동일 HEAD 덮어쓰기 방지, manifest 해시 생성·검증을 담당합니다.
  • 계정·수신자 ID·인증값·표시명·기기 serial/AVD·로컬 경로·비공개 URL은 제거하고, 공개 GitHub 이슈/PR 링크와 QA 의미는 보존합니다.
  • qa-device-profile.sh --json은 공개 증거에 넣을 수 있도록 로컬 serial과 AVD 이름을 출력하지 않습니다.
  • README는 모듈·문서 진입점과 최신 빌드 셋업·개발 규칙만 유지하고, 배포와 스크린샷 절차는 docs/release/distribution.md, docs/testing/screenshot.md로 분리했습니다.

이관 검증

항목 결과
원본 ↔ 공개 파일 ↔ manifest 34 ↔ 34 ↔ 34, HEAD 중복 0
필드 대조 head_sha·result·scenario·not_covered 34/34, 나머지 공개 가능한 관찰은 details에 보존
원본 스키마 schema 1 32건 · schema 2 1건 · legacy 1건
민감값 독립 감사 후보 111개 공개 재사용 0건
내장 JSON 원본에서 파싱 가능한 7개 모두 공개본에서도 파싱, 구조 손실·bare marker 0건
의미 보존 앱 잠금 PIN 라벨 6/6 및 문장부호 placeholder 보존, 실제 인증값 6종 잔존 0건

기존 리뷰 반영

  • 3차 QA는 미착수가 아니라 2026-08-25에 예비·핵심 8개 패스를 수행한 진행 중 상태로 바로잡았습니다. findings 50건과 not_covered 6건이 있어 전 기능 순회 완료로 보지는 않습니다.
  • 관리자 승인·수신자 API 응답은 확인했지만 받은 기록함이 서버 목록 API 를 쓰지 않고 로컬 stub 으로 동작 — record-boxes 미연동 #607 때문에 승인 이후 FE 화면의 종단 간 검증은 남았다고 명시했습니다.
  • assumptions.md, 증거 대장, 기기 baseline을 README·status에서 연결했습니다.
  • 최신 develop의 빌드 셋업과 개발 규칙을 보존하면서, 기존 release keystore 인계·WIF 권한 경계·origin/main 검증·Play runbook 및 스크린샷 validate/generate/apply 절차를 전용 문서로 복원했습니다.

검증

  • node --test .github/scripts/*.test.mjs — 295/295 통과
  • node .github/scripts/qa-evidence.mjs verify <원본 34건> docs/qa/evidence — 34/34 통과
  • 문서 분류·release·WIF·QA evidence 정책 테스트 — 18/18 통과
  • scripts/repository-quality.sh — 통과
  • scripts/test-qa-device-profile.sh + ShellCheck — 통과
  • ./gradlew :build-logic:test — 통과
  • Gitleaks(공개 증거 및 staged diff) — 탐지 0건
  • Markdown 내부 링크와 git diff --check — 통과

QA Metadata

{
  "scope": "covered-by-ci",
  "exclusionReason": "Compose 화면과 앱 사용자 흐름은 바꾸지 않고 QA 증거 변환기, 문서, 공개용 기기 JSON 출력만 변경한다.",
  "androidTest": {
    "required": false,
    "reason": "Android 런타임 경계를 변경하지 않으며 동일 입력과 출력 경계를 Node 및 셸 회귀 테스트로 직접 검증한다. 모든 동일 저장소 PR에 적용되는 기기 회귀 실행은 별도로 유지한다."
  },
  "evidence": [
    {
      "kind": "test",
      "ref": ".github/scripts/qa-evidence.test.mjs",
      "assertion": "비식별화, 1:1 manifest, 덮어쓰기 방지, 내장 JSON 구조와 공개 corpus 34건을 검증한다.",
      "input": "민감정보와 JSON-like 문장을 포함한 fixture 및 공개 QA 증거 34건",
      "boundary": "원본 정규화부터 redaction, 파일 생성, manifest 해시, 공개 스키마 검증까지",
      "observation": "QA evidence 테스트와 전체 Node 테스트가 통과했다."
    },
    {
      "kind": "test",
      "ref": "scripts/test-qa-device-profile.sh",
      "assertion": "공개 JSON에는 serial과 AVD 이름이 없고 화면 재현 정보는 유지된다.",
      "input": "단일·복수 에뮬레이터와 화면 override를 모사한 adb fixture",
      "boundary": "기기 선택과 status --json 직렬화 출력",
      "observation": "셸 회귀 테스트와 ShellCheck가 통과했다."
    }
  ]
}

병합 뒤 정리

  • 이관 전 기록되지 않은 과거 QA는 사후 복원하지 않습니다.
  • 로컬 민감 원본은 이 PR이 실제로 병합된 것을 확인한 뒤 .codex/qa-evidence만 삭제합니다.

Closes #1242

1차(7/19)·2차(7/28) 회차 문서를 노션 QA DB 에서 옮기고, 현재 QA 상태를
한자리에 정리한 status.md 를 신설한다. 노션 원본에는 이 문서를 가리키는
링크만 남긴다.

status.md 는 QA 를 네 층(자동 검증·PR 리뷰·런타임 실측·회차)으로 나눠
각 워터마크를 적고, 기능별 커버리지와 3차 QA 우선순위를 담았다.

증거 대장(.codex/qa-evidence)은 기록기가 8/20 에 생겨 그 이전 3주치가
남지 않았고 .gitignore 대상이라 로컬에만 있다. 총량 근거로 쓰지 말 것을
문서에 명시했다. 실제 QA 는 7/28~8/24 내내 있었고, 실측 흔적이 담긴
이슈만 180건이다.

2차 QA 발견 42건은 이슈 #560~#639 로 등재돼 있고 현재 33건 해결됐다.
304줄 중 절반이 절차 문서였고, 뒤쪽 83줄은 앱잼 시절 템플릿이 그대로
남아 현재 관행과 어긋나 있었다.

분리 — 비개발자 APK 배포 125줄을 docs/release/distribution.md 로,
스크린샷 baseline 37줄을 docs/testing/screenshot.md 로 옮긴다.

교체 — 삭제한 컨벤션은 전부 실측과 달랐다. XML 네이밍 예시
(@+id/tvPostNovelTitle)는 Compose 프로젝트에 해당 없고, 브랜치 언더바
규칙(feat/post_novel)은 실제 fix/910 형식과 다르며, 커밋 타입
([FEAT] 이모지)은 Conventional Commits 로 바뀐 지 오래다. '리뷰 2명
승인'도 실제 ruleset 은 승인 1건 + 필수 체크 8종이다. 이슈·PR 템플릿
본문은 .github/ 에 파일로 있어 중복이었다.

추가 — 상단에 모듈 구조와 docs/ 문서 지도를 둔다. 모듈은
settings.gradle.kts 기준이며 삭제된 core:di·core:startup 은 뺐다.
노션 팀 홈 캘린더를 8/29 마감으로 적었으나 실측하니 틀렸다. "QA마무리?"
Task 의 날짜 속성은 2026-08-23 이고, 담당자·본문 없이 "시작 전" 상태로
남아 있는 미정 메모다. 캘린더 셀 순서를 잘못 읽어 23일 칸 항목을 29일
것으로 본 오독이었다.

3차 QA 에 정해진 기한이 없음을 명시하고, 착수 시점은 결함 진척과
커버리지 갭으로 판단하도록 적는다.
2026-08-25 04:20~04:40 KST, dev 서버 폐쇄 시간대를 조건으로 활용해
실패 경로에 집중한 오프라인 순회를 돌렸다. develop 4e0a648 를
Pixel_7_Claude_QA 에 클린 설치하고 만료 access + 유효 refresh 를 주입해
'세션은 있으나 서버가 죽은' 상태로 검증했다.

수정 확인 5건 — 2차 QA #21·#25·#26, 1차 QA #3·#9.
재현 4건 — #708 설정, #714 타임레터, #716 마음의 기록(서버·내부 IP
노출 포함), 첫 진입 요청 중복.
신규 등재 1건 — #1100 추억 플레이리스트 빈 목록 안내 부재.

가장 큰 발견은 같은 서버 무응답 조건에서 실패 처리가 기능마다 네 갈래로
갈린다는 것이다. 개별 PR 리뷰로는 드러나지 않고 기능 간 대조에서만
보이므로, 회차 QA 를 따로 두는 근거가 된다.

@Sadturtleman Sadturtleman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

지적

  1. [blocking] 옮긴 docs/testing/screenshot.md 가 존재하지 않는 태스크를 그대로 들고 갑니다 — #1082 이 지금 고치는 바로 그 줄입니다.

    $ git show origin/docs/1088-qa-records:docs/testing/screenshot.md | sed -n '14,17p'
      ./gradlew :core:ui:updateScreenshotTest \
                :app:updateScreenshotTest \          ← app 모듈엔 screenshotTest 소스가 없다
                :feature:onboarding:presentation:updateScreenshotTest \
                :feature:afternote:presentation:updateScreenshotTest
    

    :feature:home:presentation · :feature:receiver:presentation 두 모듈이 빠져 있는 것도 그대로입니다 (screenshot.yml 은 5개 모듈을 검증). 문서를 옮기는 PR 이 낡은 내용을 새 파일로 이관하면, #1082 이 머지된 뒤 이 PR 이 들어갈 때 고쳐진 README 는 삭제되고 낡은 사본만 남습니다.

    두 PR 이 같은 내용을 서로 다른 파일에서 다루니, 이 PR 에서 옮긴 문서 쪽에 #1082 의 수정(죽은 :app 2건 제거 + 누락 2모듈 추가 + 「정본은 screenshot.yml」 명시)을 반영해 주세요. 저는 #1082 를 방금 승인했습니다.

    제가 오늘 이 문서대로 실행해 본 결과이기도 합니다 — :feature:receiver:presentation · :feature:home:presentation baseline 을 갱신해야 했는데 문서의 명령 목록에는 둘 다 없었습니다.

  2. [normal] docs/qa/assumptions.md(#897) 와의 관계가 문서 지도에 없습니다.

    docs/qa/ 에 status.md·round-1.md·round-2.md 가 들어오면서 기존 assumptions.md 와 같은 디렉터리를 쓰게 됩니다. 파일은 그대로 두신 걸 확인했지만, README 의 문서 지도와 status.md 어디에도 언급이 없어 «QA 기록은 여기» 를 읽은 사람이 그 파일을 못 찾습니다. 한 줄 링크면 됩니다 — 그 파일은 «명세가 침묵해 추측으로 진행한 항목» 을 모으는 곳이라 QA 현황과 같이 읽혀야 합니다.

나머지는 이견 없습니다

  • 노션 원본을 지우지 않고 링크만 남긴 판단, README 를 304→111줄로 줄이고 절차 문서를 docs/ 로 뺀 구성 모두 좋습니다.
  • 1·2차 회차를 결함 건수까지 옮겨 «어디까지 했는지» 를 셀 수 있게 만든 것이 이 PR 의 핵심 값이라 봅니다.

@github-actions github-actions Bot added the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Aug 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

이 PR 은 develop 와 충돌 상태이고, 그래서 CI 가 돌지 않는다.

pull_request 워크플로는 base 와 head 를 합친 가상 머지 커밋(refs/pull/<N>/merge)에서
실행되는데, 충돌이면 GitHub 이 그 ref 를 만들지 못해 워크플로가 트리거조차 되지 않는다.
체크가 실패하는 것이 아니라 아예 생성되지 않으므로, 새 커밋을 올려도 no checks reported
인 채 최신 커밋이 한 번도 검증되지 않은 상태로 남는다 (#1028).

develop 를 병합해 충돌을 풀면 검증이 다시 돈다. 해소되면 이 라벨은 자동으로 떨어진다.

- README 는 이관 후 축약본(이 PR)을 유지
- docs/release/distribution.md: develop 수동 배포 제거(#1029)와 릴리스 PR 범위 자동 산출(release-scope.yml)을 반영,
  develop 에 없는 deployment-decision.yml 참조 제거
- docs/testing/screenshot.md: 스크린샷 대상 모듈 목록(home·receiver 추가, :app: 제거)과 정본 안내 반영
- 두 문서의 워크플로 링크는 docs 하위 기준 상대경로로 보정
@github-actions github-actions Bot removed the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Aug 25, 2026
같은 리비전(develop 4e0a648)으로 15:09~15:15 KST 에 이어서 실측했다.

수정 확인 — refresh 무효(1107)를 인증 거절로 분류해 세션 정리. 새벽의
통신 실패 시 세션 유지와 합쳐 만료·거절·일시실패 3분류가 의도대로
갈린다. 받은 기록함 문구·빈 값 안내(2차 QA #32, 1차 QA O6)도 해소.

재현 — #599 발신자 카드 재시작 소실, #607 등록에 HTTP 요청 0건. 서버가
정상 응답하는 상태에서 재현해 네트워크 실패가 원인이 아님을 확인했다.

신규 등재 — #1126 동시 재발급 경합.
#701 에는 프로세스 백그라운드 복귀 축을 코멘트로 덧붙였다.
QA823 재로그인 뒤 설정 전 구간을 돌려 2차 QA 잔여 설정 4건이 모두
남아 있음을 확인했다.

#572 는 본문 진단이 오진임을 확인했다 — PIN 이 저장되지 않는 게 아니라
저장은 되고(패스키 인증에서 같은 PIN 통과) 앱 시작 시 잠금 게이트가
적용되지 않는 것이다. #574 의 '비밀번호로 인증하기' 가 요구하는 값도
계정 비밀번호가 아니라 그 앱 잠금 PIN 이었다.

새벽에 미확정으로 남긴 홈 인사말 '…님' 은 결함이 아니었다. 클린 설치와
서버 무응답이 겹쳐 이름을 받을 경로가 없던 정상 폴백이다.
에뮬레이터에 화면잠금·지문을 등록해 애프터노트 조회 인증 게이트를
통과한 뒤 성공 경로를 돌렸다. 목록·상세·수정·저장 왕복이 전부 정상이고
1차 QA #1(등록 500)·#2(실패 무음)는 재현되지 않는다.

해소 확인 — 2차 QA #22/#679 수정 진입 수신자 prefill, 2차 QA #33 서버
항목(수신자 이름·관계), #690 카드 아이콘.

#706 은 CLOSED 인데 재발했다. 같은 검증 에러가 연속되면 안내가 발행되지
않고, 에러 값이 바뀌어야 다시 뜬다. 후속 #1127 로 등록했다.

3차 순회 총계는 증거 39건 · 수정 확인 13건 · 재현 11건 · 신규 3건이다.
admin 계정 승인 API 로 2차 QA 이래 못 보던 '승인 이후 화면' 구간을 열어
검증했다. curl 로 서류 제출·승인까지 무대를 세우고 그 뒤를 앱으로 보는
방식(무대는 우회, 검증 대상은 앱).

- #915 는 FE 버그가 아니라 서버 계약 미반영 — contentLength 필수화가
  BE 27fa442(8/9)에서 들어왔고 FE DTO 가 안 따라갔다.
- 승인해도 수신자가 기록을 못 보는 건 #607(record-boxes 미사용) 탓 —
  서버 APPROVED 를 읽는 경로가 없어 카드가 '열람 불가' 에 고정되고
  열람 신청이 다시 서류 화면으로 되돌아간다. #599·#612 와 한 뿌리.

세 결함이 겹쳐 admin 승인이 수신자에게 도달하지 못한다.
발신자 토큰으로 전달 조건까지 설정해(무대) 수신자 애프터노트 열람을
열고 작성자 원본과 대조했다.

수신자가 받는 SOCIAL 애프터노트 상세에 credentials(계정 ID·비번)가
없다. 작성자는 저장했는데 수신자 응답에서 빠진다. actions 는 오지만
대상 계정이 없어 사후 계정 인계가 성립하지 않는다. BE #98(7/30 완료로
닫힘)과 동일 증상이라 회귀로 판단, BE 레포에 재현 코멘트로 재오픈
요청했다(담당 sooooa16). FE 결함 아님.

전달 조건(RECEIVER_REQUEST)+admin 승인 경로는 정상 동작을 확인했다.
@OnlyReadOneBook

Copy link
Copy Markdown
Collaborator Author

두 건 다 이미 닫혀 있습니다 — 근거만 적습니다

1. [blocking] docs/testing/screenshot.md 의 죽은 태스크

리뷰 시점(efe5c625c)에는 지적하신 그대로였습니다.

$ git show efe5c625c:docs/testing/screenshot.md
  ./gradlew :core:ui:updateScreenshotTest \
            :app:updateScreenshotTest \
            :feature:onboarding:presentation:updateScreenshotTest \
            :feature:afternote:presentation:updateScreenshotTest

그 뒤 #1082 가 develop 에 들어왔고, 이 브랜치가 develop 을 물리면서(76677f912) 이관처 문서에 그 수정이 반영됐습니다. 지금은 이렇습니다.

  ./gradlew :core:ui:updateScreenshotTest \
            :feature:home:presentation:updateScreenshotTest \
            :feature:receiver:presentation:updateScreenshotTest \
            :feature:onboarding:presentation:updateScreenshotTest \
            :feature:afternote:presentation:updateScreenshotTest

죽은 :app 2건이 빠지고 home · receiver 가 들어왔습니다. 「정본은 screenshot.yml」 도 함께 있습니다.

대상 모듈 목록의 정본은 .github/workflows/screenshot.yml 이다. 모듈을 추가·이전했다면 워크플로와 이 문서를 함께 갱신한다.

말씀하신 「고쳐진 README 는 삭제되고 낡은 사본만 남는」 순서 문제는 이걸로 사라졌습니다.

2. [normal] assumptions.md 와의 관계

이건 리뷰 시점에도 이미 있었습니다. 보신 브랜치가 origin/docs/1088-qa-records 라 하셨는데 이 PR 의 head 는 docs/qa-status-and-readme 라, 그쪽에는 아직 없던 게 아닐까 싶습니다.

efe5c625c 기준 README 문서 지도:

| [docs/qa/assumptions.md](docs/qa/assumptions.md) | 시안 · 명세에 없어 판단으로 정한 것 |

docs/qa/status.md 는 두 곳입니다 — 머리말과 문서 지도 표.

> [assumptions.md](assumptions.md), 런타임 증거는 `.codex/qa-evidence/emulator/<sha>.json`(로컬 전용).
| 시안·명세에 없어 판단으로 정한 것 | `docs/qa/assumptions.md` |

혹시 다른 자리를 뜻하신 것이면 알려주세요.

@github-actions github-actions Bot added the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Aug 26, 2026
@github-actions github-actions Bot removed the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Aug 26, 2026

@koongmai koongmai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

인라인 지적 사항을 확인해 주세요.

Comment thread docs/qa/status.md Outdated
@github-actions github-actions Bot added the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Aug 26, 2026
@github-actions github-actions Bot removed the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Aug 27, 2026
@github-actions github-actions Bot added the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Aug 27, 2026
@github-actions github-actions Bot removed the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Aug 27, 2026
@github-actions github-actions Bot added the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Aug 27, 2026
@OnlyReadOneBook OnlyReadOneBook added android-test-dispatch-pending android-test 자동 dispatch 재시도 필요 android-test PR head에서 Android Managed Device 계측 테스트 실행 and removed android-test-dispatch-pending android-test 자동 dispatch 재시도 필요 labels Aug 27, 2026
@OnlyReadOneBook OnlyReadOneBook changed the title docs: QA 회차 기록을 레포로 이관하고 README 를 진입점으로 정리 [base: develop] docs: QA 회차와 런타임 증거를 저장소 정본으로 이관 [base: develop] Aug 27, 2026
@OnlyReadOneBook

OnlyReadOneBook commented Aug 27, 2026 •

Copy link
Copy Markdown
Collaborator Author

/review-response

두 변경 요청을 최신 develop 기준으로 반영했습니다.

  • docs/testing/screenshot.md에서 존재하지 않는 :app 태스크를 제거하고 core:ui·home·receiver·onboarding·afternote·mindrecord 6개 모듈을 모두 넣었습니다. 검증·생성·적용 3개 workflow가 대상 목록의 정본임도 명시했습니다.
  • 최신 README의 빌드 셋업과 개발 규칙은 유지하고, 배포·스크린샷 절차만 docs/release/distribution.md와 docs/testing/screenshot.md로 분리했습니다. 배포 문서의 자동 산출 범위는 Closes·Fixes·Resolves 이슈로 한정하고, 공용 앱 설정 secret과 보호 Environment 자격의 보관 범위도 실제 workflow에 맞췄습니다.
  • README.md와 docs/qa/status.md 문서 지도에서 docs/qa/assumptions.md를 연결했습니다.
  • 3차 QA는 2026-08-25 착수·8개 패스·findings 50건·not_covered 6건으로 문서 전체 표현을 통일했습니다. 받은 기록함이 서버 목록 API 를 쓰지 않고 로컬 stub 으로 동작 — record-boxes 미연동 #607 때문에 승인 이후 FE 화면 E2E가 미검증이라는 경계도 명시했습니다.
  • 로컬 런타임 기록 34개는 민감정보를 제거한 공개 스키마와 manifest로 34/34 이관했고, 원본 SHA·결과·시나리오·미검증 범위를 대조 검증했습니다.

현재 HEAD 31201803d에서 전체 Node 테스트 296/296, 증거 대조 34/34와 저장소 품질 검사를 다시 통과했습니다. 재검토 부탁드립니다.

@OnlyReadOneBook OnlyReadOneBook removed the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Aug 27, 2026
@github-actions
github-actions Bot dismissed koongmai’s stale review August 27, 2026 12:31

@Sadturtleman의 더 늦은 승인(review #5040325166)을 최종 판정으로 사용합니다. 저장소 정책은 PR 전체에서 가장 최근의 APPROVED/CHANGES_REQUESTED 판정을 우선합니다.

@OnlyReadOneBook
OnlyReadOneBook merged commit 478ae7b into develop Aug 27, 2026
16 checks passed
@OnlyReadOneBook
OnlyReadOneBook deleted the docs/qa-status-and-readme branch August 27, 2026 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

android-test PR head에서 Android Managed Device 계측 테스트 실행

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[추적] PR #1098 docs: QA 회차 기록을 레포로 이관하고 README 를 진입점으로 정리 [base: develop]

3 participants