Files

62 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# v0.2.5 독립 리뷰 수정 증거
**릴리스 차단.** ebur128/pyloudnorm loudness 조건은 통과했지만 동일 faster-whisper VAD gate가
새 market WAV에서 1개 segment를 반환했다. `requiredEmptyPassed=false`이며 이를 `true`로 요구하는
단위 테스트는 실패 상태다. 승인/commit/push/merge/tag/deploy는 하지 않았다.
기존 상위 `.agent/evidence-v0.2.5`의 150개 파일은 [history-sha256.json](history-sha256.json)으로 고정했다.
수정 전 bundle과 RESULT/정규화 계획은 `rejected-*` 사본으로 보존한다. 기존 loudnorm input_i의
0.01 LU spread 주장은 전용 ebur128 2.0 LU / 독립 리뷰의 pyloudnorm 0.2.0 1.925 LU와 모순되어
**거부된 역사 증거**다. 상위 GREEN 표시는 당시 테스트 결과이며 현재 릴리스 통과가 아니다.
## TDD와 결과
| 검사 | 증거 | 결과 |
| --- | --- | --- |
| 복원한 전용 ebur128 목표/동등성 | [01 RED](01-ebur128-RED.log), [06 GREEN](06-ebur128-GREEN.log) | 2.0 LU 실패 → 0.0 LU 통과 |
| 순수 scalar/사전 peak/보정/비수렴 | [02 RED](02-linear-RED.log), [04 GREEN](04-linear-GREEN.log) | 7개 통과 |
| exact 새 WAV ASR gate | [03 RED](03-asr-gate-RED.log), [08 실제 실행](08-asr.log), [결과](final-asr.json) | 실패 보존 |
| 새 manifest의 빌드 계약 | [07 RED](07-build-contract-RED.log), [15 unit](15-unit.log) | 해당 39개 통과 |
| 새 원자 생성 | [05](05-regenerate.log) | 8개 전체 교환 |
| 전용 ebur128 독립 측정 | [스크립트](measure-ebur128.py), [결과](ebur128-results.json) | 전수 −32.5 LUFS, spread 0.0 LU, 최대 −6.2 dBTP |
| 별도 pyloudnorm 독립 측정 | [스크립트](measure-pyloudnorm.py), [결과](pyloudnorm-results.json) | −32.6062~−32.5291 LUFS, spread 0.0771547792 LU |
| Python 전체 | [11](11-python.log) | 47개 통과 |
| lint/typecheck | [14](14-lint.log) | 통과 |
| npm test | [15](15-unit.log) | 143 통과 / 1 실패 (ASR) |
| build | [16](16-build.log) | 통과 |
| audit | [JSON](npm-audit.json) | 취약점 0개 |
| Chrome desktop/mobile | [17](17-browser.log), [summary](browser-summary.json) | 36 PASS, skipped/flaky/unexpected=0 |
| 같은 원본에서 두 번 재생성 | [18](18-reproducibility.log), [JSON](reproducibility.json) | PCM/통계/notice 동일, generatedAtUtc만 제외 |
| 역사/원본/음성/dist 보존 | [20](20-preservation.log), [JSON](preservation.json) | 통과 |
현재 manifest의 hash는 ASR와 pyloudnorm 결과에 연결되어 있고 각 WAV hash도 기록되어 있다.
ASR 모델 revision/모델 파일 hash/VAD hash/전체 기본 옵션/seed/의존성/스크립트 hash는
[final-asr.json](final-asr.json)에 있다. 기존 실패·no-VAD는 수정하지 않았다.
market의 exact SHA-256은 `7178307c48c192ac396dcd3c880c377bf56b45e829b459b1feca9f986437e632`이며,
반환 구간 10.45–12.45초, 후보 텍스트 ` Let's go, let's go, let's go.`를 그대로 남겼다.
이 텍스트는 검증된 전사가 아니다. humanListeningAcceptance/legalPrivacyClearance는 모두 false다.
## 독립 pyloudnorm 재현
일반 npm test는 이 가상 환경이나 네트워크를 사용하지 않는다. 아래 절차는 별도의 독립 증거 재현용이다.
Python 3.11/Linux x86_64 wheel을 고정했다. [의존성 lock](pyloudnorm-requirements.lock)의 모든 버전과
SHA-256을 사용한다. [wheel inventory](pyloudnorm-wheels.json), [설치 로그](09-pyloudnorm-install.log),
[freeze](pyloudnorm-requirements.txt)를 함께 보존했다. pyloudnorm=0.2.0, soundfile=0.13.1,
libsndfile=1.2.2; 나머지 패키지 버전과 Python 버전은 결과 JSON에 있다.
기존 증거를 덮어쓰지 않도록 새 임시 디렉터리에 같은 상대 경로를 구성한다. 설치에는 네트워크가
필요할 수 있지만 WAV 측정은 로컬 파일만 읽는다. `open('x')`가 기존 결과 덮어쓰기를 거부한다.
```bash
review_run=$(mktemp -d /tmp/findword-independent-XXXXXX)
python3 -m venv "$review_run/venv"
"$review_run/venv/bin/pip" install --require-hashes -r .agent/evidence-v0.2.5/review-fixes/pyloudnorm-requirements.lock
mkdir -p "$review_run/public" "$review_run/.agent/evidence-v0.2.5/review-fixes"
cp -a public/ambience "$review_run/public/ambience"
cp .agent/evidence-v0.2.5/review-fixes/measure-pyloudnorm.py "$review_run/.agent/evidence-v0.2.5/review-fixes/"
"$review_run/venv/bin/python" "$review_run/.agent/evidence-v0.2.5/review-fixes/measure-pyloudnorm.py"
```
동일한 임시 경로에 `measure-ebur128.py`도 복사해 `python3`로 실행하면 전용 FFmpeg 계기를 별도 재현할 수 있다.
FFmpeg 6.1.1-3ubuntu5와 정확한 input bytes 범위에서 재현성을 검증했으며 다른 빌드의 byte 동일성을 보장하지 않는다.