120 lines
12 KiB
Markdown
120 lines
12 KiB
Markdown
# Find-Word 변경 이력
|
||
|
||
## 0.2.5 — 2026-10-14 (exact 자산 소유자 승인, 배포 미실행)
|
||
|
||
- 독립 리뷰에서 loudnorm input_i의 0.01 LU spread 주장을 거부했다. 같은 WAV의 전용 ebur128은
|
||
2.0 LU, 독립 pyloudnorm 0.2.0은 1.925 LU로 릴리스 기준을 위반했다. 기존 증거를 모두 보존한다.
|
||
- 먼저 실패하는 ebur128 동등성 테스트를 복원했다. 최종 WAV 전수 목표 **−32.5 LUFS ±0.2**,
|
||
spread **≤0.4 LU**, true peak **≤−6 dBTP**를 강제한다. acceptance meter는 `ebur128=peak=true`다.
|
||
- hash-pinned 원본 8개·선택 구간·creator·license·attribution·50ms fade를 유지하고 fresh ebur128 실측에서
|
||
`gain_db=target−measured_i`를 구한다. 예측 peak가 내부 **−6.2 dBTP**를 넘으면 변환 전에 실패한다.
|
||
`volume=<gain_db>dB:precision=double`만 적용해 PCM16으로 인코딩하고 staged WAV를 새 프로세스로 측정한다.
|
||
필요할 때만 같은 원본에서 최대 3회 스칼라 보정하며 비수렴·측정 실패는 원자 공개를 차단한다.
|
||
- 8개 모두 ebur128 **−32.5 LUFS, spread 0.0 LU**, 최대 true peak **−6.2 dBTP**.
|
||
별도 disposable pyloudnorm 0.2.0/soundfile 0.13.1은 **−32.6062~−32.5291 LUFS, spread 0.0772 LU**로 통과했다.
|
||
입력/최종 통계·faded PCM hash·gain/filter·iterations·계약·FFmpeg 버전을 manifest/provenance에 기록한다.
|
||
일반 npm test는 네트워크·전역 pyloudnorm에 의존하지 않는다. 독립 스크립트/버전/wheel hash는 별도 보존한다.
|
||
- 8 WAV·manifest·고지를 staging에서 검증한 뒤 원자 교환했다. 12초/24kHz/mono/PCM16과 모든 출처를 보존했다.
|
||
- 환경/SNR/intro와 무관한 **고정 배경 gain 0.4198884518664126**을 유지했다. voice/intro RMS .03,
|
||
`B=.55,V=.25,I=.20,SNR_MAX=12,intro=1.8,ceiling=.8`과 20,200개 조합의 보수적 peak 검사를 유지한다.
|
||
JS에 고정한 109 WAV hash/bytes 검사, 3문항·SNR·중도 종료 등 게임 흐름은 유지한다.
|
||
- 새 WAV의 동일 faster-whisper tiny/VAD 검사는 **market 1 segment, requiredEmptyPassed=false**로 실패했다.
|
||
mall/cafe는 0개다. 원래 `true` 요구 테스트의 소스·실패 로그와 ASR 원문 바이트를 역사 진단으로 보존한다.
|
||
ASR 모델/설정/원본 구간/segment를 변경하지 않았다.
|
||
- Oz는 현재 8 WAV·manifest·notice 검수 ZIP을 받은 후 **“승인합니다. 이대로 진행하세요”**라고
|
||
**2026-10-14T11:29:51Z / 20:29:51 KST**에 회신했다. `.agent/RELEASE-APPROVAL-v0.2.5.json`에
|
||
정확한 문구/시각/범위/소유자, 전달 ZIP SHA-256
|
||
`bb2e974b652df43db4a1f2a59716836e2c521839c724b34d4b71c1b40c3322e5`, 현재 manifest 및 8 WAV 해시를 고정했다.
|
||
`productOwnerReleaseApproval=true`, `humanListeningAcceptance=true`, **`legalPrivacyClearance=false`**다.
|
||
- 승인 기록이 없어 실패하는 테스트를 먼저 실행한 뒤 릴리스 gate를 **자동 empty-ASR OR exact-byte 소유자
|
||
청취 승인**으로 변경했다. 현재는 승인 경로만 통과한다. 보존 ZIP과 현재 파일의 전수 바이트 비교 및
|
||
변조 테스트가 stale 자산/manifest, 다른 ZIP, 문구/범위/시각 누락, 법적 clearance 과장을 거부한다.
|
||
- lint/unit/전체 Python/build/audit 및 sandboxed Chrome desktop/mobile 검증 결과는
|
||
`.agent/RESULT-v0.2.5.md`에 기록한다. 릴리스 계약 통과를 ASR 성공이나 법적 clearance로 해석하지 않는다.
|
||
- 제품/manifest/query 버전 **0.2.5**, `Designed by OZ at Heat-T Medical Inc.`, 101 voice WAV 바이트,
|
||
제3자 notice와 market CC BY-SA 4.0을 유지한다. README/설계/provenance/배포 문서와 한국어 주석을 수정했다.
|
||
- 기존 `.agent/evidence-v0.2.5`와 `review-fixes/`는 불변 역사다. 이번 승인 증거는 `release-approval/`에 추가했다.
|
||
commit/push/merge/tag/deploy는 실행하지 않았다.
|
||
|
||
## 0.2.3 — 2026-10-14 (로컬 구현, 배포 미실행)
|
||
|
||
- 라운드를 정확히 3문항으로 변경하고 한 단계의 난이도를 유지한다. 시작 단계 1~5 선택,
|
||
정상 완료 후 다음 단계 새 라운드, 5단계 재도전을 제공한다. 혼합 모드는 선택/입력을 모두 포함한다.
|
||
- SNR 직접 제어: −12~+12 dB, 1 dB 간격, 범위/NaN 정규화. 재생 중 변경은 다음 청취부터 적용,
|
||
이후 문항/라운드에 유지하고 홈 복귀 시 단계 기본값으로 초기화한다. 양/0/음수의 의미를 설명한다.
|
||
- 중도 종료는 fetch·Web Audio·타이머를 즉시 취소하고 응답/정답 수를 보여 준 뒤 홈으로 연결한다.
|
||
무응답을 오답으로 세지 않고 지연 콜백·중복 답변을 차단한다.
|
||
- 절차적 배경 합성을 제거하고 실제 현장 녹음 8개를 same-origin WAV로 번들한다.
|
||
각 12초·24kHz mono PCM16·50ms fade·안전 선형 정규화·고유 SHA-256, 원본은 번들하지 않는다.
|
||
- PD/CC0/CC BY 4.0/CC BY-SA 4.0 원본을 추적하는 machine-readable manifest와 브라우저 배포 고지.
|
||
시장 파생본의 ShareAlike와 지하철 credit/변경 고지 유지. 원본/다운로드 URL·저작자·변환·해시·실측값 기록.
|
||
- 녹음을 fetch/decode/loop하며 RMS .03 정규화 후 상대 gain을 적용한다. 공통 peak 감쇠로 SNR을
|
||
유지하면서 clipping headroom을 확보한다. 404/decode/timeout/abort는 재시도 가능한 한국어 안내를 제공한다.
|
||
- 회귀 수정: 세 문항 표본에 맞게 전체 콘텐츠 도달성 검사 확대; 콘텐츠의 Node 직접 import 경로 보존;
|
||
재생 중 SNR 변경이 실제 청취 이력을 덮어쓰지 않도록 결과에 청취 시작값 기록.
|
||
- 추가 회귀 수정: 3문항에서도 순환 환경이 여덟 장소에 도달하도록 섞고, 결과의 잘못된 플레이 방법 앵커를 제거한다.
|
||
세 문항의 문항별 보너스 상한(20점)과 라운드 합계 상한(30점)을 안내하고 새 단계/SNR 컨트롤의 44px 터치 영역을 보장한다.
|
||
개발/preview에서 HTML Accept가 있는 누락 WAV도 SPA fallback 대신 404로 응답한다.
|
||
모바일 시작 단계 선택값의 잘림을 막도록 중복 SNR을 별도 제어에 모았다.
|
||
내장 SVG favicon으로 Chrome의 기본 favicon.ico 404 콘솔 오류를 제거한다.
|
||
- 기존 10 mechanic·100문장·101 neural WAV, 채점·점수·IME·재청취·음량·접근성·개인정보 미수집을 보존한다.
|
||
- package/lock/HTML/UI/manifest/문서를 0.2.3으로 정렬하고 음원 query 버전을 갱신한다.
|
||
`Designed by OZ at Heat-T Medical Inc.`와 v0.1/v0.1.1 역사 evidence는 보존한다.
|
||
- strict vertical-slice TDD RED/GREEN, Python 변환 계약, 빌드 자산/notice 검증,
|
||
sandboxed system Chrome desktop/mobile의 실제 WAV decode/playback·스크린샷·axe·네트워크 검사를 수행한다.
|
||
정확한 실행 결과와 추가 회귀는 `.agent/RESULT-v0.2.3.md`에 기록한다.
|
||
- Nginx 현장음 404와 원자 배포/rollback 인계 문서를 갱신한다. commit/push/merge/tag/배포는 Neo 인수 이후 별도 작업이다.
|
||
|
||
### v0.2.3 독립 리뷰 수정
|
||
|
||
- 진행 막대를 현재 문항 1/3·2/3·3/3으로 정정하고 접근성 값 및 Chrome 실제 채움 픽셀을 검사한다.
|
||
- 보너스 문구를 문항별 최대 20점 / 라운드 합계 0+10+20=30점으로 정정한다. 1단계 만점 330점과 함께 검증한다.
|
||
- 무응답 정답률은 `— / 응답 없음`, 응답 없는 단계는 `미진행`; 중도 종료와 현재 단계 완료 제목을 구분한다.
|
||
- 320px·360px에서 모드 설명과 결과의 한국어 어절 분리·넘침을 방지한다. README 현재 증거 경로를 고치고 일본어 테스트 제목을 한국어로 바꾼다.
|
||
- 음성 manifest/폴더를 함께 축약해도 실패하도록 콘텐츠 기반 정확한 101개 목록, 개수 및 dist 추가/누락 파일을 검사한다.
|
||
- 현장음 승인 계획/manifest의 임시 경로를 불변 원본 해시·bytes·검증 상태 및 정확한 직접 미디어 길이로 교체한다.
|
||
- 현장음 생성 전 여덟 원본의 승인 해시·bytes를 전수 확인한다. 잘못된 원본은 첫 변환 전에 실패한다.
|
||
- 같은 파일시스템 staging에서 8 WAV·manifest·notice 전부 검증 후 Linux 원자 디렉터리 교환. stale 파일 제거,
|
||
symlink 출력 거부, 변환·쓰기·검증·교환 실패/중단 시 이전 디렉터리 보존을 테스트한다.
|
||
- 고지를 `/ambience/AMBIENCE_NOTICES.md`로 옮겨 함께 발행하고 각 항목의 creator/primary URL/direct URL/
|
||
license URL/outputLicense/변경 설명을 빌드에서도 강제한다. UI 링크와 권리·배포·재현 문서를 갱신한다.
|
||
- 101 voice + 8 ambience WAV 바이트와 모든 이전 evidence를 보존한다. 이번 리뷰의 RED/GREEN과 전체 실행 결과는
|
||
`.agent/evidence-v0.2.3/review-fixes/` 및 `.agent/RESULT-v0.2.3.md`를 참조한다. 사람의 청취 인수는 미실행이다.
|
||
|
||
### v0.2.3 최종 privacy excerpt refinement
|
||
|
||
- `selectedSegmentStartSeconds`를 생성기의 불변 입력으로 유지하며 현재 선택을
|
||
**mall 36–48초, market 24–36초, cafe 0–12초**로 고정한다.
|
||
원본 해시·bytes·길이를 확인한 뒤 하드닝된 생성기로 8 WAV·manifest·notice를 원자 재생성했다.
|
||
101 voice와 다섯 unaffected ambience 및 mall WAV는 바이트 동일하며 market/cafe만 변경했다.
|
||
- release test를 먼저 실패시켜 정확한 세 시작점, `requiredEmptyPassed=true`, VAD 설정,
|
||
`humanListeningAcceptance=false`와 `legalPrivacyClearance=false`를 강제한 뒤 새 WAV를 검사했다.
|
||
- 정확한 최종 WAV의 faster-whisper 1.2.1 tiny multilingual CPU int8, beam_size=5, best_of=5,
|
||
기본 VAD, condition_on_previous_text=true 결과는 세 환경 모두 segment 0개,
|
||
duration_after_vad=0.0으로 지정된 VAD gate를 통과했다. 설정 조절이나 segment 삭제는 없다.
|
||
- 이전 market 60초/cafe 180초 실행은 segment 3개/1개로 실패했다. 당시 `requiredEmptyPassed=false`
|
||
보고서와 모든 screening 파일을 `privacy-screening/prior-attempt-market60-cafe180/`에
|
||
읽기 전용·해시 고정 사본으로 보존한다. 이전 실패를 성공으로 다시 기록하지 않는다.
|
||
- no-VAD 환각 가능 text 증거도 그대로 보존한다. 이는 이전 파생본의 결과이고 지정 VAD gate를
|
||
대체하거나 뒤집지 않으며 말소리/음악의 부재도 증명하지 않는다. 독립적인 사람 청취 인증과
|
||
법적/privacy clearance는 미실행이지만, 제품 소유자 Oz가 2026-10-14 제공된 최종 WAV 8개
|
||
검수 묶음을 기준으로 **현재 자산 그대로 릴리스 진행을 승인**했다.
|
||
- 기존 Ogg sample-trim fallback·원자 교환·출처/고지 검증을 유지한다.
|
||
새 RED/GREEN·전체 검증은 `.agent/evidence-v0.2.3/privacy-screening/retry-market24-cafe0/`,
|
||
현재 결과는 `.agent/RESULT-v0.2.3.md` 마지막 절에 있다. Git commit/push/merge/tag/deploy는 하지 않았다.
|
||
|
||
## 0.1.1 — 2026-10-14
|
||
|
||
- Microsoft Edge online TTS `ko-KR-HyunsuMultilingualNeural`, edge-tts 7.3.1,
|
||
rate −6%, pitch −4Hz로 안내 1개·목표 100개를 새로 생성하고 24kHz mono PCM16으로 변환했다.
|
||
- pinned venv, bounded retry/timeout, 원자 자산 교환, provider/도구/출력물의 권리 구분과 provenance를 추가했다.
|
||
- query cache-busting, 시스템 Chrome sandbox 기본 활성화, 화면·음량·한국어 제목과 SNR 설명의 검증을 보강했다.
|
||
- 원본 기록: [.agent/RESULT-v0.1.1.md](.agent/RESULT-v0.1.1.md), `.agent/evidence-v0.1.1/`.
|
||
|
||
## 0.1.0 — 2026-10-14 (당시 UI 표기 v0.1)
|
||
|
||
- 반응형 시작/게임/결과, 열 문항·다섯 단계, 객관식/주관식/혼합, 10 mechanic·100문장.
|
||
- 점수·연속 정답·재청취·IME 보호·접근성·동시 재생/취소/실패 복구, 여덟 합성 배경.
|
||
- 정적 SPA, 개인정보 저장·외부 런타임 요청 없음, 정확한 credit 및 private 프로젝트 권리 고지.
|
||
- 원본 기록: [.agent/RESULT.md](.agent/RESULT.md), `.agent/evidence/`.
|