Skip to content

fix(audit): say how much of the table the reader is actually seeing - #360

Merged
ictechgy merged 6 commits into
mainfrom
fix/byte-profiler-followup
Sep 2, 2026
Merged

fix(audit): say how much of the table the reader is actually seeing#360
ictechgy merged 6 commits into
mainfrom
fix/byte-profiler-followup

Conversation

@ictechgy

@ictechgy ictechgy commented Sep 2, 2026

Copy link
Copy Markdown
Owner

0.12.0 릴리스 전체를 세 번째 적대적 리뷰에 보낸 결과다. 지적을 직접 검증했고 사실인 것만 고친다.

리뷰 지적 대부분은 이미 닫혀 있었다 — #355(0.12.1)와 #356(0.12.3)이 확장자 라벨 목록화, README 문구, 분류 docstring, (other) 충돌, 가드 배선 검증, 블록 단위 귀속을 모두 처리했다. 현재 main 에서 하나씩 실측해 확인했다. 남은 것은 아래 셋이다.

1. 표가 잘린 사실을 말하지 않았다

라벨 71개 중 5행만 렌더하면서 비중 합이 100%에 못 미치는데, 독자는 원인이 절단인지 미귀속인지 알 방법이 없었다. 실측:

전체 라벨 수: 30  렌더된 행: 5
렌더된 행의 byte_share 합: 16.7%
절단 사실을 알리는 필드: 없음

by_tool_coverage / by_file_extension_coverage 를 낸다 — 몇 개 중 몇 개가 나왔고 그것이 전체 바이트의 얼마를 덮는지. 텍스트 출력에도 같은 줄을 넣는다. 실제 코퍼스에서는 이렇게 나온다:

... 5 of 71 labels shown, covering 99.4% of bytes

상위 몇 개가 사실상 전부라는 판단 근거가 된다. 이 정보가 없으면 16.7% 짜리 표와 99.4% 짜리 표가 구별되지 않는다.

2. 확장자 행이 total_bytes 를 분할하지 않는다

그 행들은 읽을 파일을 지목한 tool_use 가 있는 결과에만 존재하므로, 다른 도구가 나른 바이트는 처음부터 표 밖이다. by_tool 의 unattributed 버킷과 by_content_class 의 안내가 "비중 열은 total_bytes 를 분할한다"고 독자를 훈련시켜 놓아서, 이 표만 유독 안 맞는 것처럼 보인다. 기존 안내는 경로 미노출만 말하고 있었다.

3. 파일 경계를 추론하고 있었다

start_file 이 레코드마다 불리면서 경로가 직전과 같으면 건너뛰는 방식으로 경계를 추론했고, 같은 파일을 두 번 넘기면 초기화를 건너뛰어 없는 중복을 만들었다. 호출자가 경계를 아는데 추론할 이유가 없으므로, scan() 이 파일마다 정확히 한 번 알려주게 바꾼다.

리뷰는 그 가드를 그냥 지우라고 했지만 그건 틀렸다. start_file 은 파일당이 아니라 레코드당 호출되고 있어서, 가드가 per-file 의미를 만드는 유일한 장치였다. 지우자 상관 관계가 전부 깨졌고 기존 테스트 4개가 그것을 잡았다. 호출부를 확인하지 않고 권고를 적용한 것은 내 잘못이고, 테스트가 막아줬다.

Gate-B gen20

다시 B2 의 claude_transcript_cost_audit.py 와 미러를 바꾸므로 gen17 이후와 같은 절차를 따른다. 경로 집합은 좁히지 않는다 — Gate-B 마커 transcript_usage_reducer 의 소유 경로가 이 파일이다. 네 커밋의 왕복 후 최종 트리가 원래 트리와 동일함을 확인했고, 지문은 생산 canonicalizer 로 계산했다.

증거

tests.test_gate_b_rollback_proof + tests.test_tool_result_bytes_profile 117건 통과. 신규 테스트 6건 — 같은 경로 반복 시 초기화, 반복 None 시 초기화, 절단 공개, 비절단 시 공개값, 확장자 안내의 분할 아님 설명, 텍스트 출력의 절단 표기.

🤖 Generated with Claude Code

https://claude.ai/code/session_01YZWGDQsVTLjsBogUSrmnzH

ictechgy and others added 6 commits September 2, 2026 22:49
세 번째 적대적 리뷰가 짚은 것 중 검증된 것만 고친다.

- 표가 --top 으로 잘린 사실을 알리지 않았다. 라벨 71개 중 5행만 렌더하면서 비중
  합이 100%에 못 미치는데, 독자는 원인이 절단인지 미귀속인지 알 방법이 없었다.
  by_tool_coverage / by_file_extension_coverage 로 몇 개 중 몇 개가 나왔고 그것이
  전체 바이트의 얼마를 덮는지 낸다. 텍스트 출력에도 같은 줄을 넣는다. 실제
  코퍼스에서는 "5 of 71 labels shown, covering 99.4% of bytes" 로 나와, 상위
  몇 개가 사실상 전부라는 판단 근거가 된다.
- 확장자 행이 total_bytes 를 분할하지 않는다는 사실을 안내에 적는다. 그 행들은
  읽을 파일을 지목한 tool_use 가 있는 결과에만 존재하므로, 다른 도구가 나른
  바이트는 처음부터 표 밖이다. 기존 안내는 경로 미노출만 말하고 있었다.
- 파일 경계를 추론하지 않고 scan() 이 파일마다 한 번 알려주게 한다. start_file 이
  레코드마다 불리면서 경로가 직전과 같으면 건너뛰는 방식이었고, 같은 파일을 두 번
  넘기면 초기화를 건너뛰어 없는 중복을 만들었다. 호출자가 경계를 아는데 추론할
  이유가 없다.

리뷰는 그 가드를 그냥 지우라고 했지만 그건 틀렸다. start_file 은 파일당이 아니라
레코드당 호출되고 있어서, 가드가 per-file 의미를 만드는 유일한 장치였다. 지우자
상관 관계가 전부 깨졌고 기존 테스트 4개가 그것을 잡았다. 호출부를 확인하지 않고
권고를 적용한 내 잘못이다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YZWGDQsVTLjsBogUSrmnzH
표 절단 공개와 파일 경계 신호 이동이 다시 B2 의 claude_transcript_cost_audit.py 와
그 미러를 바꾼다. gen17 이후와 같은 이유로 freeze 가 실제 blocker 이고, 같은 이유로
경로 집합을 좁히지 않는다 - Gate-B 마커 transcript_usage_reducer 의 소유 경로가
이 파일이다.

지문은 생산 canonicalizer 로 계산했다. 기존 레코드와 지문은 건드리지 않았다.
세대 목록 핀과 narrowed_paths_report 기대값을 gen20 까지 늘린다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YZWGDQsVTLjsBogUSrmnzH
@coderabbitai

coderabbitai Bot commented Sep 2, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: df3da70a-4cab-4ec4-bf00-e27be5ad9ac8


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ictechgy
ictechgy merged commit 45be7a6 into main Sep 2, 2026
6 checks passed
@ictechgy ictechgy mentioned this pull request Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant