chore: PR #236 회차 2 리뷰 반영 — sweep 취소 협조 + 바 복구 회귀 가드
2회차 리뷰가 1회차 지적 6건 모두 실질 해결됐음을 확인하고 머지 가능으로 결론냈다. 새로 나온 것 중 값이 있는 것을 반영한다. 1) sweep 이 취소 플래그를 보지 않았다 (MEDIUM) CLI 의 첫 Ctrl-C 는 "aborting after current asset" 을 찍고 AtomicBool 을 세운다. 그런데 `sweep_deleted_files` 는 그걸 인자로 받지도 검사하지도 않았다. 즉 긴 sweep 중에는 그 안내가 사실이 아니었고, 사용자에게 남은 수단은 두 번째 Ctrl-C 뿐인데 그건 `exit(130)` 이라 버퍼에 쌓인 벡터 삭제(최대 5,000)가 고아로 남는다. 이슈 #228 자체가 "sweep 중 Ctrl-C 를 세 번 눌러 죽였다" 는 보고다. 눌렀을 때의 동작을 그대로 둔 채 표시만 고치는 건 절반만 고친 것이다. 루프 상단에서 검사하고 break 한다. `sweep_completed.checked` 는 예고한 `total` 이 아니라 실제 검사한 수로 나간다 — total 을 그대로 쓰면 하지 않은 일을 했다고 보고하는 셈이다. `a_cancelled_sweep_stops_and_reports_ only_what_it_examined` 로 고정. 2) 1회차 HIGH 가 테스트로 고정되지 않았다 (MEDIUM) 바 상태 오염은 "phase 를 하나 더 추가하면 또 밟는" 유형인데 회귀 가드가 없었다. 실제로 한 번 배포될 뻔했다. `sweep_hands_the_bar_back_to_the_ asset_loop` 이 sweep 중에는 후보 수를, 끝난 뒤에는 asset 수를 세는지 본다. `ProgressMode::Human { tty: false, quiet: true }` 면 바가 hidden draw target 으로 살아 있어 터미널 없이도 상태를 볼 수 있다. 3) 잔가지 (LOW) - `SweepProgress` 독 주석이 `removed` 를 두 경우로만 설명했다. 이번 PR 이 만든 세 번째 경우(purge 실패)가 빠져 있었다. 스키마 쪽은 이미 맞게 적혀 있었다. - `sweep_deleted_files` 의 기존 독 주석이 "purge 실패가 per-file 레벨 에서 error 로 집계된다" 고 적었는데 사실이 아니다. 어떤 카운터에도 안 들어가고 `IngestReport.errors` 에도 반영되지 않는다. 실패 경로를 손댄 김에 고쳤다. - HOTFIXES 와 DOGFOOD 가 `purge_failed` 와 취소 동작을 언급하지 않았다. HOTFIXES 가 live SoT 인데 실제 표면보다 좁게 적힌 상태였다. 미반영: `SweepCompleted` 가 TTY 에서 `bar.println` 대신 stderr 로 직접 쓰는 것(기존 `AssetTimings`/`PdfOcr*` 과 같은 패턴이라 신규 회귀가 아니고, 바꾸려면 셋을 같이 옮겨야 한다). `ScanCompleted` 에서 스타일을 길이보다 먼저 세팅하는 순서가 이론상 `0/u64::MAX` 프레임을 허용한다는 지적 — 창이 마이크로초이고 `SweepCompleted` 쪽에서는 새 순서가 더 낫다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017c9JwQq8ZkGvYjpKXMiDhF
This commit is contained in:
@@ -276,7 +276,8 @@ echo "# stdin content" | "$RELEASE_BIN" ingest-stdin --title "from stdin" --conf
|
||||
- aggregate `counts` on `completed` / `aborted`.
|
||||
- sweep 구간: `sweep_started.total` 이 후보 수와 맞고, `sweep_progress.idx` 가 1..=total 로 연속이며, `sweep_completed.checked == total`.
|
||||
- sweep 이 끝난 뒤 진행바가 asset 분모·라벨로 돌아오는가 (TTY). sweep 이 같은 바를 빌려 쓰므로 복구가 빠지면 색인 구간 내내 `sweep [..] 4213/21` 로 그려진다.
|
||||
- ndjson 로그에 `purge` 줄과 `sweep_summary` 가 남는가 (이슈 #228 이전에는 이 구간이 0바이트였다).
|
||||
- ndjson 로그에 `purge` 줄과 `sweep_summary` 가 남는가 (이슈 #228 이전에는 이 구간이 0바이트였다). purge 실패 시 `purge_failed`.
|
||||
- sweep 중 Ctrl-C 한 번에 실제로 멈추는가. `sweep_completed.checked` 가 예고한 `total` 이 아니라 실제 검사한 수로 나와야 한다.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user