fix: normalize ambience loudness for v0.2.5
This commit is contained in:
@@ -0,0 +1,625 @@
|
||||
|
||||
> find-word@0.2.5 lint
|
||||
> eslint . && tsc --noEmit
|
||||
|
||||
|
||||
> find-word@0.2.5 test
|
||||
> vitest run
|
||||
|
||||
|
||||
RUN v5.0.4 /home/hermes/worktrees/find-word-v0.2.5
|
||||
|
||||
|
||||
Test Files 16 passed (16)
|
||||
Tests 146 passed (146)
|
||||
Start at 12:05:51
|
||||
Duration 34.00s (tests 91%, environment 5%, setup 2%)
|
||||
|
||||
Isolate 16 workers spawned · ~471ms startup each (spawn + environment, per file)
|
||||
at least ~2.04s faster with isolate: false — reuses workers across files instead of one per file
|
||||
|
||||
test_convert_format_fade_normalization_and_reproducibility (test_ambience_audio.AmbienceConversion.test_convert_format_fade_normalization_and_reproducibility)
|
||||
스테레오 48kHz 입력을 실제로 내려 섞고 길이·양끝·안전 피크를 확인한다. ... ok
|
||||
test_short_input_seek_retries_full_decode_without_padding_or_truncating (test_ambience_audio.AmbienceConversion.test_short_input_seek_retries_full_decode_without_padding_or_truncating) ... ok
|
||||
test_silence_fails_before_publishing (test_ambience_audio.AmbienceConversion.test_silence_fails_before_publishing)
|
||||
무음을 정상 현장 녹음으로 포장하지 않는다. ... ok
|
||||
test_actual_target_or_true_peak_violation_preserves_prior_directory (test_ambience_audio.AtomicPublication.test_actual_target_or_true_peak_violation_preserves_prior_directory)
|
||||
manifest가 정상이라고 주장해도 별도 실측 위반은 공개하지 않는다. ... ok
|
||||
test_all_eight_assets_validated_before_publication (test_ambience_audio.AtomicPublication.test_all_eight_assets_validated_before_publication) ... ok
|
||||
test_atomic_success_removes_stale_files_and_stages_notice_on_same_filesystem (test_ambience_audio.AtomicPublication.test_atomic_success_removes_stale_files_and_stages_notice_on_same_filesystem) ... ok
|
||||
test_conversion_cannot_override_approved_segment (test_ambience_audio.AtomicPublication.test_conversion_cannot_override_approved_segment) ... ok
|
||||
test_conversion_failure_and_keyboard_interrupt_preserve_prior_directory (test_ambience_audio.AtomicPublication.test_conversion_failure_and_keyboard_interrupt_preserve_prior_directory) ... ok
|
||||
test_exchange_failure_preserves_prior_directory (test_ambience_audio.AtomicPublication.test_exchange_failure_preserves_prior_directory) ... ok
|
||||
test_first_publication_and_real_exchange (test_ambience_audio.AtomicPublication.test_first_publication_and_real_exchange) ... ok
|
||||
test_manifest_and_notice_write_failures_preserve_prior_directory (test_ambience_audio.AtomicPublication.test_manifest_and_notice_write_failures_preserve_prior_directory) ... ok
|
||||
test_plan_alone_controls_selection_and_is_preserved_in_manifest_and_notice (test_ambience_audio.AtomicPublication.test_plan_alone_controls_selection_and_is_preserved_in_manifest_and_notice) ... ok
|
||||
test_readers_observe_whole_directory_during_real_exchange (test_ambience_audio.AtomicPublication.test_readers_observe_whole_directory_during_real_exchange) ... ok
|
||||
test_real_loudness_measurement_failure_preserves_prior_directory (test_ambience_audio.AtomicPublication.test_real_loudness_measurement_failure_preserves_prior_directory)
|
||||
최종 실측 FFmpeg만 실패시켜 원자 교환 전 실패 전파를 확인한다. ... ok
|
||||
test_sigterm_before_commit_preserves_prior_directory (test_ambience_audio.AtomicPublication.test_sigterm_before_commit_preserves_prior_directory) ... ok
|
||||
test_staged_manifest_notice_and_inventory_tampering_are_rejected (test_ambience_audio.AtomicPublication.test_staged_manifest_notice_and_inventory_tampering_are_rejected) ... ok
|
||||
test_symlink_output_is_rejected_before_conversion (test_ambience_audio.AtomicPublication.test_symlink_output_is_rejected_before_conversion) ... ok
|
||||
test_unsupported_atomic_exchange_preserves_prior_directory (test_ambience_audio.AtomicPublication.test_unsupported_atomic_exchange_preserves_prior_directory) ... ok
|
||||
test_all_sources_checked_before_first_conversion (test_ambience_audio.SourceGuard.test_all_sources_checked_before_first_conversion) ... ok
|
||||
test_invalid_segment_plan_fails_before_any_conversion_without_mutation (test_ambience_audio.SourceGuard.test_invalid_segment_plan_fails_before_any_conversion_without_mutation) ... ok
|
||||
test_correction_restarts_from_identical_source_and_records_both_passes (test_linear_normalization.LinearNormalization.test_correction_restarts_from_identical_source_and_records_both_passes) ... ok
|
||||
test_each_corrective_gain_is_peak_checked_before_conversion (test_linear_normalization.LinearNormalization.test_each_corrective_gain_is_peak_checked_before_conversion) ... ok
|
||||
test_final_peak_and_nonfinite_measurement_are_rejected (test_linear_normalization.LinearNormalization.test_final_peak_and_nonfinite_measurement_are_rejected) ... ok
|
||||
test_nonconvergence_is_bounded_and_fails (test_linear_normalization.LinearNormalization.test_nonconvergence_is_bounded_and_fails) ... ok
|
||||
test_parser_rejects_missing_nonfinite_or_partial_summary (test_linear_normalization.LinearNormalization.test_parser_rejects_missing_nonfinite_or_partial_summary) ... ok
|
||||
test_real_output_is_only_scalar_gain_with_pcm16_rounding (test_linear_normalization.LinearNormalization.test_real_output_is_only_scalar_gain_with_pcm16_rounding) ... ok
|
||||
test_unsafe_predicted_peak_is_rejected_before_volume_conversion (test_linear_normalization.LinearNormalization.test_unsafe_predicted_peak_is_rejected_before_volume_conversion) ... ok
|
||||
test_final_wavs_meet_fixed_loudness_and_true_peak (test_loudness_audio.FinalLoudness.test_final_wavs_meet_fixed_loudness_and_true_peak) ... {
|
||||
"measurementFilter": "ebur128=peak=true",
|
||||
"targetLUFS": -32.5,
|
||||
"truePeakCeilingDBTP": -6.0,
|
||||
"spreadLU": 0.0,
|
||||
"files": {
|
||||
"cafe": {
|
||||
"integratedLUFS": -32.5,
|
||||
"truePeakDBTP": -18.2,
|
||||
"loudnessRangeLU": 0.5,
|
||||
"thresholdLUFS": -42.5
|
||||
},
|
||||
"department": {
|
||||
"integratedLUFS": -32.5,
|
||||
"truePeakDBTP": -16.6,
|
||||
"loudnessRangeLU": 4.2,
|
||||
"thresholdLUFS": -42.5
|
||||
},
|
||||
"mall": {
|
||||
"integratedLUFS": -32.5,
|
||||
"truePeakDBTP": -12.2,
|
||||
"loudnessRangeLU": 1.4,
|
||||
"thresholdLUFS": -42.5
|
||||
},
|
||||
"market": {
|
||||
"integratedLUFS": -32.5,
|
||||
"truePeakDBTP": -6.2,
|
||||
"loudnessRangeLU": 6.5,
|
||||
"thresholdLUFS": -42.4
|
||||
},
|
||||
"rain": {
|
||||
"integratedLUFS": -32.5,
|
||||
"truePeakDBTP": -12.1,
|
||||
"loudnessRangeLU": 8.4,
|
||||
"thresholdLUFS": -42.5
|
||||
},
|
||||
"street": {
|
||||
"integratedLUFS": -32.5,
|
||||
"truePeakDBTP": -10.2,
|
||||
"loudnessRangeLU": 4.6,
|
||||
"thresholdLUFS": -42.5
|
||||
},
|
||||
"subway": {
|
||||
"integratedLUFS": -32.5,
|
||||
"truePeakDBTP": -16.2,
|
||||
"loudnessRangeLU": 4.9,
|
||||
"thresholdLUFS": -42.5
|
||||
},
|
||||
"theater": {
|
||||
"integratedLUFS": -32.5,
|
||||
"truePeakDBTP": -16.1,
|
||||
"loudnessRangeLU": 1.0,
|
||||
"thresholdLUFS": -42.5
|
||||
}
|
||||
}
|
||||
}
|
||||
ok
|
||||
test_manifest_records_linear_gain_and_exact_ebur128_measurements (test_loudness_audio.FinalLoudness.test_manifest_records_linear_gain_and_exact_ebur128_measurements) ... ok
|
||||
test_all_101_are_validated_before_single_atomic_publication (test_neural_audio.GeneratorContract.test_all_101_are_validated_before_single_atomic_publication) ... [001/101] intro.wav 1.000s
|
||||
[002/101] target-0.wav 1.000s
|
||||
[003/101] target-1.wav 1.000s
|
||||
[004/101] target-2.wav 1.000s
|
||||
[005/101] target-3.wav 1.000s
|
||||
[006/101] target-4.wav 1.000s
|
||||
[007/101] target-5.wav 1.000s
|
||||
[008/101] target-6.wav 1.000s
|
||||
[009/101] target-7.wav 1.000s
|
||||
[010/101] target-8.wav 1.000s
|
||||
[011/101] target-9.wav 1.000s
|
||||
[012/101] target-10.wav 1.000s
|
||||
[013/101] target-11.wav 1.000s
|
||||
[014/101] target-12.wav 1.000s
|
||||
[015/101] target-13.wav 1.000s
|
||||
[016/101] target-14.wav 1.000s
|
||||
[017/101] target-15.wav 1.000s
|
||||
[018/101] target-16.wav 1.000s
|
||||
[019/101] target-17.wav 1.000s
|
||||
[020/101] target-18.wav 1.000s
|
||||
[021/101] target-19.wav 1.000s
|
||||
[022/101] target-20.wav 1.000s
|
||||
[023/101] target-21.wav 1.000s
|
||||
[024/101] target-22.wav 1.000s
|
||||
[025/101] target-23.wav 1.000s
|
||||
[026/101] target-24.wav 1.000s
|
||||
[027/101] target-25.wav 1.000s
|
||||
[028/101] target-26.wav 1.000s
|
||||
[029/101] target-27.wav 1.000s
|
||||
[030/101] target-28.wav 1.000s
|
||||
[031/101] target-29.wav 1.000s
|
||||
[032/101] target-30.wav 1.000s
|
||||
[033/101] target-31.wav 1.000s
|
||||
[034/101] target-32.wav 1.000s
|
||||
[035/101] target-33.wav 1.000s
|
||||
[036/101] target-34.wav 1.000s
|
||||
[037/101] target-35.wav 1.000s
|
||||
[038/101] target-36.wav 1.000s
|
||||
[039/101] target-37.wav 1.000s
|
||||
[040/101] target-38.wav 1.000s
|
||||
[041/101] target-39.wav 1.000s
|
||||
[042/101] target-40.wav 1.000s
|
||||
[043/101] target-41.wav 1.000s
|
||||
[044/101] target-42.wav 1.000s
|
||||
[045/101] target-43.wav 1.000s
|
||||
[046/101] target-44.wav 1.000s
|
||||
[047/101] target-45.wav 1.000s
|
||||
[048/101] target-46.wav 1.000s
|
||||
[049/101] target-47.wav 1.000s
|
||||
[050/101] target-48.wav 1.000s
|
||||
[051/101] target-49.wav 1.000s
|
||||
[052/101] target-50.wav 1.000s
|
||||
[053/101] target-51.wav 1.000s
|
||||
[054/101] target-52.wav 1.000s
|
||||
[055/101] target-53.wav 1.000s
|
||||
[056/101] target-54.wav 1.000s
|
||||
[057/101] target-55.wav 1.000s
|
||||
[058/101] target-56.wav 1.000s
|
||||
[059/101] target-57.wav 1.000s
|
||||
[060/101] target-58.wav 1.000s
|
||||
[061/101] target-59.wav 1.000s
|
||||
[062/101] target-60.wav 1.000s
|
||||
[063/101] target-61.wav 1.000s
|
||||
[064/101] target-62.wav 1.000s
|
||||
[065/101] target-63.wav 1.000s
|
||||
[066/101] target-64.wav 1.000s
|
||||
[067/101] target-65.wav 1.000s
|
||||
[068/101] target-66.wav 1.000s
|
||||
[069/101] target-67.wav 1.000s
|
||||
[070/101] target-68.wav 1.000s
|
||||
[071/101] target-69.wav 1.000s
|
||||
[072/101] target-70.wav 1.000s
|
||||
[073/101] target-71.wav 1.000s
|
||||
[074/101] target-72.wav 1.000s
|
||||
[075/101] target-73.wav 1.000s
|
||||
[076/101] target-74.wav 1.000s
|
||||
[077/101] target-75.wav 1.000s
|
||||
[078/101] target-76.wav 1.000s
|
||||
[079/101] target-77.wav 1.000s
|
||||
[080/101] target-78.wav 1.000s
|
||||
[081/101] target-79.wav 1.000s
|
||||
[082/101] target-80.wav 1.000s
|
||||
[083/101] target-81.wav 1.000s
|
||||
[084/101] target-82.wav 1.000s
|
||||
[085/101] target-83.wav 1.000s
|
||||
[086/101] target-84.wav 1.000s
|
||||
[087/101] target-85.wav 1.000s
|
||||
[088/101] target-86.wav 1.000s
|
||||
[089/101] target-87.wav 1.000s
|
||||
[090/101] target-88.wav 1.000s
|
||||
[091/101] target-89.wav 1.000s
|
||||
[092/101] target-90.wav 1.000s
|
||||
[093/101] target-91.wav 1.000s
|
||||
[094/101] target-92.wav 1.000s
|
||||
[095/101] target-93.wav 1.000s
|
||||
[096/101] target-94.wav 1.000s
|
||||
[097/101] target-95.wav 1.000s
|
||||
[098/101] target-96.wav 1.000s
|
||||
[099/101] target-97.wav 1.000s
|
||||
[100/101] target-98.wav 1.000s
|
||||
[101/101] target-99.wav 1.000s
|
||||
ok
|
||||
test_atomic_exchange_keeps_old_tree_at_staging_path (test_neural_audio.GeneratorContract.test_atomic_exchange_keeps_old_tree_at_staging_path) ... ok
|
||||
test_atomic_first_publication (test_neural_audio.GeneratorContract.test_atomic_first_publication) ... ok
|
||||
test_cli_import_has_no_generation_or_filesystem_side_effects (test_neural_audio.GeneratorContract.test_cli_import_has_no_generation_or_filesystem_side_effects) ... ok
|
||||
test_edge_adapter_uses_pinned_python_prosody_timeout_and_no_shell (test_neural_audio.GeneratorContract.test_edge_adapter_uses_pinned_python_prosody_timeout_and_no_shell) ... ok
|
||||
test_exhausted_provider_failure_preserves_existing_files_and_redacts_secrets (test_neural_audio.GeneratorContract.test_exhausted_provider_failure_preserves_existing_files_and_redacts_secrets) ... ok
|
||||
test_ffmpeg_adapter_actually_decodes_mp3_to_normalized_pcm24 (test_neural_audio.GeneratorContract.test_ffmpeg_adapter_actually_decodes_mp3_to_normalized_pcm24) ... ok
|
||||
test_ffmpeg_failure_is_not_retried_and_preserves_existing_files (test_neural_audio.GeneratorContract.test_ffmpeg_failure_is_not_retried_and_preserves_existing_files) ... ok
|
||||
test_full_validation_detects_changed_earlier_file_before_publication (test_neural_audio.GeneratorContract.test_full_validation_detects_changed_earlier_file_before_publication) ... [001/101] intro.wav 1.000s
|
||||
[002/101] target-0.wav 1.000s
|
||||
[003/101] target-1.wav 1.000s
|
||||
[004/101] target-2.wav 1.000s
|
||||
[005/101] target-3.wav 1.000s
|
||||
[006/101] target-4.wav 1.000s
|
||||
[007/101] target-5.wav 1.000s
|
||||
[008/101] target-6.wav 1.000s
|
||||
[009/101] target-7.wav 1.000s
|
||||
[010/101] target-8.wav 1.000s
|
||||
[011/101] target-9.wav 1.000s
|
||||
[012/101] target-10.wav 1.000s
|
||||
[013/101] target-11.wav 1.000s
|
||||
[014/101] target-12.wav 1.000s
|
||||
[015/101] target-13.wav 1.000s
|
||||
[016/101] target-14.wav 1.000s
|
||||
[017/101] target-15.wav 1.000s
|
||||
[018/101] target-16.wav 1.000s
|
||||
[019/101] target-17.wav 1.000s
|
||||
[020/101] target-18.wav 1.000s
|
||||
[021/101] target-19.wav 1.000s
|
||||
[022/101] target-20.wav 1.000s
|
||||
[023/101] target-21.wav 1.000s
|
||||
[024/101] target-22.wav 1.000s
|
||||
[025/101] target-23.wav 1.000s
|
||||
[026/101] target-24.wav 1.000s
|
||||
[027/101] target-25.wav 1.000s
|
||||
[028/101] target-26.wav 1.000s
|
||||
[029/101] target-27.wav 1.000s
|
||||
[030/101] target-28.wav 1.000s
|
||||
[031/101] target-29.wav 1.000s
|
||||
[032/101] target-30.wav 1.000s
|
||||
[033/101] target-31.wav 1.000s
|
||||
[034/101] target-32.wav 1.000s
|
||||
[035/101] target-33.wav 1.000s
|
||||
[036/101] target-34.wav 1.000s
|
||||
[037/101] target-35.wav 1.000s
|
||||
[038/101] target-36.wav 1.000s
|
||||
[039/101] target-37.wav 1.000s
|
||||
[040/101] target-38.wav 1.000s
|
||||
[041/101] target-39.wav 1.000s
|
||||
[042/101] target-40.wav 1.000s
|
||||
[043/101] target-41.wav 1.000s
|
||||
[044/101] target-42.wav 1.000s
|
||||
[045/101] target-43.wav 1.000s
|
||||
[046/101] target-44.wav 1.000s
|
||||
[047/101] target-45.wav 1.000s
|
||||
[048/101] target-46.wav 1.000s
|
||||
[049/101] target-47.wav 1.000s
|
||||
[050/101] target-48.wav 1.000s
|
||||
[051/101] target-49.wav 1.000s
|
||||
[052/101] target-50.wav 1.000s
|
||||
[053/101] target-51.wav 1.000s
|
||||
[054/101] target-52.wav 1.000s
|
||||
[055/101] target-53.wav 1.000s
|
||||
[056/101] target-54.wav 1.000s
|
||||
[057/101] target-55.wav 1.000s
|
||||
[058/101] target-56.wav 1.000s
|
||||
[059/101] target-57.wav 1.000s
|
||||
[060/101] target-58.wav 1.000s
|
||||
[061/101] target-59.wav 1.000s
|
||||
[062/101] target-60.wav 1.000s
|
||||
[063/101] target-61.wav 1.000s
|
||||
[064/101] target-62.wav 1.000s
|
||||
[065/101] target-63.wav 1.000s
|
||||
[066/101] target-64.wav 1.000s
|
||||
[067/101] target-65.wav 1.000s
|
||||
[068/101] target-66.wav 1.000s
|
||||
[069/101] target-67.wav 1.000s
|
||||
[070/101] target-68.wav 1.000s
|
||||
[071/101] target-69.wav 1.000s
|
||||
[072/101] target-70.wav 1.000s
|
||||
[073/101] target-71.wav 1.000s
|
||||
[074/101] target-72.wav 1.000s
|
||||
[075/101] target-73.wav 1.000s
|
||||
[076/101] target-74.wav 1.000s
|
||||
[077/101] target-75.wav 1.000s
|
||||
[078/101] target-76.wav 1.000s
|
||||
[079/101] target-77.wav 1.000s
|
||||
[080/101] target-78.wav 1.000s
|
||||
[081/101] target-79.wav 1.000s
|
||||
[082/101] target-80.wav 1.000s
|
||||
[083/101] target-81.wav 1.000s
|
||||
[084/101] target-82.wav 1.000s
|
||||
[085/101] target-83.wav 1.000s
|
||||
[086/101] target-84.wav 1.000s
|
||||
[087/101] target-85.wav 1.000s
|
||||
[088/101] target-86.wav 1.000s
|
||||
[089/101] target-87.wav 1.000s
|
||||
[090/101] target-88.wav 1.000s
|
||||
[091/101] target-89.wav 1.000s
|
||||
[092/101] target-90.wav 1.000s
|
||||
[093/101] target-91.wav 1.000s
|
||||
[094/101] target-92.wav 1.000s
|
||||
[095/101] target-93.wav 1.000s
|
||||
[096/101] target-94.wav 1.000s
|
||||
[097/101] target-95.wav 1.000s
|
||||
[098/101] target-96.wav 1.000s
|
||||
[099/101] target-97.wav 1.000s
|
||||
[100/101] target-98.wav 1.000s
|
||||
[101/101] target-99.wav 1.000s
|
||||
ok
|
||||
test_interruption_preserves_existing_files_and_cleans_temporary_data (test_neural_audio.GeneratorContract.test_interruption_preserves_existing_files_and_cleans_temporary_data) ... ok
|
||||
test_invalid_pcm_never_reaches_publication (test_neural_audio.GeneratorContract.test_invalid_pcm_never_reaches_publication) ... ok
|
||||
test_publication_failure_preserves_existing_files (test_neural_audio.GeneratorContract.test_publication_failure_preserves_existing_files) ... [001/101] intro.wav 1.000s
|
||||
[002/101] target-0.wav 1.000s
|
||||
[003/101] target-1.wav 1.000s
|
||||
[004/101] target-2.wav 1.000s
|
||||
[005/101] target-3.wav 1.000s
|
||||
[006/101] target-4.wav 1.000s
|
||||
[007/101] target-5.wav 1.000s
|
||||
[008/101] target-6.wav 1.000s
|
||||
[009/101] target-7.wav 1.000s
|
||||
[010/101] target-8.wav 1.000s
|
||||
[011/101] target-9.wav 1.000s
|
||||
[012/101] target-10.wav 1.000s
|
||||
[013/101] target-11.wav 1.000s
|
||||
[014/101] target-12.wav 1.000s
|
||||
[015/101] target-13.wav 1.000s
|
||||
[016/101] target-14.wav 1.000s
|
||||
[017/101] target-15.wav 1.000s
|
||||
[018/101] target-16.wav 1.000s
|
||||
[019/101] target-17.wav 1.000s
|
||||
[020/101] target-18.wav 1.000s
|
||||
[021/101] target-19.wav 1.000s
|
||||
[022/101] target-20.wav 1.000s
|
||||
[023/101] target-21.wav 1.000s
|
||||
[024/101] target-22.wav 1.000s
|
||||
[025/101] target-23.wav 1.000s
|
||||
[026/101] target-24.wav 1.000s
|
||||
[027/101] target-25.wav 1.000s
|
||||
[028/101] target-26.wav 1.000s
|
||||
[029/101] target-27.wav 1.000s
|
||||
[030/101] target-28.wav 1.000s
|
||||
[031/101] target-29.wav 1.000s
|
||||
[032/101] target-30.wav 1.000s
|
||||
[033/101] target-31.wav 1.000s
|
||||
[034/101] target-32.wav 1.000s
|
||||
[035/101] target-33.wav 1.000s
|
||||
[036/101] target-34.wav 1.000s
|
||||
[037/101] target-35.wav 1.000s
|
||||
[038/101] target-36.wav 1.000s
|
||||
[039/101] target-37.wav 1.000s
|
||||
[040/101] target-38.wav 1.000s
|
||||
[041/101] target-39.wav 1.000s
|
||||
[042/101] target-40.wav 1.000s
|
||||
[043/101] target-41.wav 1.000s
|
||||
[044/101] target-42.wav 1.000s
|
||||
[045/101] target-43.wav 1.000s
|
||||
[046/101] target-44.wav 1.000s
|
||||
[047/101] target-45.wav 1.000s
|
||||
[048/101] target-46.wav 1.000s
|
||||
[049/101] target-47.wav 1.000s
|
||||
[050/101] target-48.wav 1.000s
|
||||
[051/101] target-49.wav 1.000s
|
||||
[052/101] target-50.wav 1.000s
|
||||
[053/101] target-51.wav 1.000s
|
||||
[054/101] target-52.wav 1.000s
|
||||
[055/101] target-53.wav 1.000s
|
||||
[056/101] target-54.wav 1.000s
|
||||
[057/101] target-55.wav 1.000s
|
||||
[058/101] target-56.wav 1.000s
|
||||
[059/101] target-57.wav 1.000s
|
||||
[060/101] target-58.wav 1.000s
|
||||
[061/101] target-59.wav 1.000s
|
||||
[062/101] target-60.wav 1.000s
|
||||
[063/101] target-61.wav 1.000s
|
||||
[064/101] target-62.wav 1.000s
|
||||
[065/101] target-63.wav 1.000s
|
||||
[066/101] target-64.wav 1.000s
|
||||
[067/101] target-65.wav 1.000s
|
||||
[068/101] target-66.wav 1.000s
|
||||
[069/101] target-67.wav 1.000s
|
||||
[070/101] target-68.wav 1.000s
|
||||
[071/101] target-69.wav 1.000s
|
||||
[072/101] target-70.wav 1.000s
|
||||
[073/101] target-71.wav 1.000s
|
||||
[074/101] target-72.wav 1.000s
|
||||
[075/101] target-73.wav 1.000s
|
||||
[076/101] target-74.wav 1.000s
|
||||
[077/101] target-75.wav 1.000s
|
||||
[078/101] target-76.wav 1.000s
|
||||
[079/101] target-77.wav 1.000s
|
||||
[080/101] target-78.wav 1.000s
|
||||
[081/101] target-79.wav 1.000s
|
||||
[082/101] target-80.wav 1.000s
|
||||
[083/101] target-81.wav 1.000s
|
||||
[084/101] target-82.wav 1.000s
|
||||
[085/101] target-83.wav 1.000s
|
||||
[086/101] target-84.wav 1.000s
|
||||
[087/101] target-85.wav 1.000s
|
||||
[088/101] target-86.wav 1.000s
|
||||
[089/101] target-87.wav 1.000s
|
||||
[090/101] target-88.wav 1.000s
|
||||
[091/101] target-89.wav 1.000s
|
||||
[092/101] target-90.wav 1.000s
|
||||
[093/101] target-91.wav 1.000s
|
||||
[094/101] target-92.wav 1.000s
|
||||
[095/101] target-93.wav 1.000s
|
||||
[096/101] target-94.wav 1.000s
|
||||
[097/101] target-95.wav 1.000s
|
||||
[098/101] target-96.wav 1.000s
|
||||
[099/101] target-97.wav 1.000s
|
||||
[100/101] target-98.wav 1.000s
|
||||
[101/101] target-99.wav 1.000s
|
||||
ok
|
||||
test_rejects_incomplete_or_duplicate_or_unsafe_inventory_before_requests (test_neural_audio.GeneratorContract.test_rejects_incomplete_or_duplicate_or_unsafe_inventory_before_requests) ... ok
|
||||
test_timeout_is_bounded_and_preserves_existing_files (test_neural_audio.GeneratorContract.test_timeout_is_bounded_and_preserves_existing_files) ... intro.wav: provider 시도 1/3 실패
|
||||
intro.wav: provider 시도 2/3 실패
|
||||
intro.wav: provider 시도 3/3 실패
|
||||
ok
|
||||
test_transient_provider_failures_retry_cleanly_with_bounded_backoff (test_neural_audio.GeneratorContract.test_transient_provider_failures_retry_cleanly_with_bounded_backoff) ... intro.wav: provider 시도 1/3 실패
|
||||
intro.wav: provider 시도 2/3 실패
|
||||
[001/101] intro.wav 1.000s
|
||||
[002/101] target-0.wav 1.000s
|
||||
[003/101] target-1.wav 1.000s
|
||||
[004/101] target-2.wav 1.000s
|
||||
[005/101] target-3.wav 1.000s
|
||||
[006/101] target-4.wav 1.000s
|
||||
[007/101] target-5.wav 1.000s
|
||||
[008/101] target-6.wav 1.000s
|
||||
[009/101] target-7.wav 1.000s
|
||||
[010/101] target-8.wav 1.000s
|
||||
[011/101] target-9.wav 1.000s
|
||||
[012/101] target-10.wav 1.000s
|
||||
[013/101] target-11.wav 1.000s
|
||||
[014/101] target-12.wav 1.000s
|
||||
[015/101] target-13.wav 1.000s
|
||||
[016/101] target-14.wav 1.000s
|
||||
[017/101] target-15.wav 1.000s
|
||||
[018/101] target-16.wav 1.000s
|
||||
[019/101] target-17.wav 1.000s
|
||||
[020/101] target-18.wav 1.000s
|
||||
[021/101] target-19.wav 1.000s
|
||||
[022/101] target-20.wav 1.000s
|
||||
[023/101] target-21.wav 1.000s
|
||||
[024/101] target-22.wav 1.000s
|
||||
[025/101] target-23.wav 1.000s
|
||||
[026/101] target-24.wav 1.000s
|
||||
[027/101] target-25.wav 1.000s
|
||||
[028/101] target-26.wav 1.000s
|
||||
[029/101] target-27.wav 1.000s
|
||||
[030/101] target-28.wav 1.000s
|
||||
[031/101] target-29.wav 1.000s
|
||||
[032/101] target-30.wav 1.000s
|
||||
[033/101] target-31.wav 1.000s
|
||||
[034/101] target-32.wav 1.000s
|
||||
[035/101] target-33.wav 1.000s
|
||||
[036/101] target-34.wav 1.000s
|
||||
[037/101] target-35.wav 1.000s
|
||||
[038/101] target-36.wav 1.000s
|
||||
[039/101] target-37.wav 1.000s
|
||||
[040/101] target-38.wav 1.000s
|
||||
[041/101] target-39.wav 1.000s
|
||||
[042/101] target-40.wav 1.000s
|
||||
[043/101] target-41.wav 1.000s
|
||||
[044/101] target-42.wav 1.000s
|
||||
[045/101] target-43.wav 1.000s
|
||||
[046/101] target-44.wav 1.000s
|
||||
[047/101] target-45.wav 1.000s
|
||||
[048/101] target-46.wav 1.000s
|
||||
[049/101] target-47.wav 1.000s
|
||||
[050/101] target-48.wav 1.000s
|
||||
[051/101] target-49.wav 1.000s
|
||||
[052/101] target-50.wav 1.000s
|
||||
[053/101] target-51.wav 1.000s
|
||||
[054/101] target-52.wav 1.000s
|
||||
[055/101] target-53.wav 1.000s
|
||||
[056/101] target-54.wav 1.000s
|
||||
[057/101] target-55.wav 1.000s
|
||||
[058/101] target-56.wav 1.000s
|
||||
[059/101] target-57.wav 1.000s
|
||||
[060/101] target-58.wav 1.000s
|
||||
[061/101] target-59.wav 1.000s
|
||||
[062/101] target-60.wav 1.000s
|
||||
[063/101] target-61.wav 1.000s
|
||||
[064/101] target-62.wav 1.000s
|
||||
[065/101] target-63.wav 1.000s
|
||||
[066/101] target-64.wav 1.000s
|
||||
[067/101] target-65.wav 1.000s
|
||||
[068/101] target-66.wav 1.000s
|
||||
[069/101] target-67.wav 1.000s
|
||||
[070/101] target-68.wav 1.000s
|
||||
[071/101] target-69.wav 1.000s
|
||||
[072/101] target-70.wav 1.000s
|
||||
[073/101] target-71.wav 1.000s
|
||||
[074/101] target-72.wav 1.000s
|
||||
[075/101] target-73.wav 1.000s
|
||||
[076/101] target-74.wav 1.000s
|
||||
[077/101] target-75.wav 1.000s
|
||||
[078/101] target-76.wav 1.000s
|
||||
[079/101] target-77.wav 1.000s
|
||||
[080/101] target-78.wav 1.000s
|
||||
[081/101] target-79.wav 1.000s
|
||||
[082/101] target-80.wav 1.000s
|
||||
[083/101] target-81.wav 1.000s
|
||||
[084/101] target-82.wav 1.000s
|
||||
[085/101] target-83.wav 1.000s
|
||||
[086/101] target-84.wav 1.000s
|
||||
[087/101] target-85.wav 1.000s
|
||||
[088/101] target-86.wav 1.000s
|
||||
[089/101] target-87.wav 1.000s
|
||||
[090/101] target-88.wav 1.000s
|
||||
[091/101] target-89.wav 1.000s
|
||||
[092/101] target-90.wav 1.000s
|
||||
[093/101] target-91.wav 1.000s
|
||||
[094/101] target-92.wav 1.000s
|
||||
[095/101] target-93.wav 1.000s
|
||||
[096/101] target-94.wav 1.000s
|
||||
[097/101] target-95.wav 1.000s
|
||||
[098/101] target-96.wav 1.000s
|
||||
[099/101] target-97.wav 1.000s
|
||||
[100/101] target-98.wav 1.000s
|
||||
[101/101] target-99.wav 1.000s
|
||||
ok
|
||||
test_wrong_edge_version_fails_before_network_or_asset_changes (test_neural_audio.GeneratorContract.test_wrong_edge_version_fails_before_network_or_asset_changes) ... ok
|
||||
test_rejects_silence_clipping_bad_format_and_abnormal_duration (test_neural_audio.PCMContract.test_rejects_silence_clipping_bad_format_and_abnormal_duration) ... ok
|
||||
test_valid_pcm_returns_measured_hash_bytes_duration_and_levels (test_neural_audio.PCMContract.test_valid_pcm_returns_measured_hash_bytes_duration_and_levels) ... ok
|
||||
test_approval_hash_mismatches_and_incomplete_asset_scope_fail (test_release_approval.ReleaseApprovalTests.test_approval_hash_mismatches_and_incomplete_asset_scope_fail) ... ok
|
||||
test_automated_empty_criteria_can_pass_without_owner_approval (test_release_approval.ReleaseApprovalTests.test_automated_empty_criteria_can_pass_without_owner_approval) ... ok
|
||||
test_current_asr_failure_passes_only_through_exact_owner_approval (test_release_approval.ReleaseApprovalTests.test_current_asr_failure_passes_only_through_exact_owner_approval) ... ok
|
||||
test_current_wavs_manifest_notice_and_bundle_are_bound_to_reviewed_bytes (test_release_approval.ReleaseApprovalTests.test_current_wavs_manifest_notice_and_bundle_are_bound_to_reviewed_bytes) ... ok
|
||||
test_different_bundle_hash_cannot_be_self_approved (test_release_approval.ReleaseApprovalTests.test_different_bundle_hash_cannot_be_self_approved) ... ok
|
||||
test_every_missing_approval_field_fails (test_release_approval.ReleaseApprovalTests.test_every_missing_approval_field_fails) ... ok
|
||||
test_invalid_approval_is_not_ignored_even_when_automated_criteria_pass (test_release_approval.ReleaseApprovalTests.test_invalid_approval_is_not_ignored_even_when_automated_criteria_pass) ... ok
|
||||
test_manifest_reformat_cannot_be_self_approved_by_updating_all_recorded_hashes (test_release_approval.ReleaseApprovalTests.test_manifest_reformat_cannot_be_self_approved_by_updating_all_recorded_hashes) ... ok
|
||||
test_nonempty_asr_cannot_be_relabeled_pass (test_release_approval.ReleaseApprovalTests.test_nonempty_asr_cannot_be_relabeled_pass) ... ok
|
||||
test_stale_asr_settings_and_clearance_overclaims_fail_with_valid_owner_approval (test_release_approval.ReleaseApprovalTests.test_stale_asr_settings_and_clearance_overclaims_fail_with_valid_owner_approval) ... ok
|
||||
test_statement_owner_scope_timestamp_and_clearance_cannot_be_reinterpreted (test_release_approval.ReleaseApprovalTests.test_statement_owner_scope_timestamp_and_clearance_cannot_be_reinterpreted) ... ok
|
||||
test_unknown_clearance_claim_and_duplicate_json_keys_fail (test_release_approval.ReleaseApprovalTests.test_unknown_clearance_claim_and_duplicate_json_keys_fail) ... ok
|
||||
test_wav_change_cannot_be_self_approved_by_updating_manifest_asr_and_approval (test_release_approval.ReleaseApprovalTests.test_wav_change_cannot_be_self_approved_by_updating_manifest_asr_and_approval) ... ok
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Ran 60 tests in 23.299s
|
||||
|
||||
OK
|
||||
{
|
||||
"passed": true,
|
||||
"acceptancePath": "exact-byte-owner-listening-approval",
|
||||
"automatedEmptyAsrPassed": false,
|
||||
"productOwnerReleaseApproval": true,
|
||||
"humanListeningAcceptance": true,
|
||||
"legalPrivacyClearance": false,
|
||||
"manifestSha256": "6433bf23af35f24031c6bbe784dd0abf9330f276da6b8705e47c7a1144a285b7",
|
||||
"reviewBundleSha256": "bb2e974b652df43db4a1f2a59716836e2c521839c724b34d4b71c1b40c3322e5"
|
||||
}
|
||||
|
||||
> find-word@0.2.5 build
|
||||
> tsc --noEmit && vite build && node scripts/check-build.mjs
|
||||
|
||||
vite v8.3.4 building client environment for production...
|
||||
transforming...
|
||||
✓ 24 modules transformed.
|
||||
rendering chunks...
|
||||
computing gzip size...
|
||||
dist/index.html 1.31 kB │ gzip: 0.91 kB
|
||||
dist/assets/index-CgXbHuMU.css 16.11 kB │ gzip: 4.53 kB
|
||||
dist/assets/index-Cz3LYZX-.js 293.21 kB │ gzip: 91.89 kB
|
||||
|
||||
✓ built in 208ms
|
||||
빌드 음성 자산 101개 + 현장음 8개 및 런타임/현장음 notice 확인
|
||||
found 0 vulnerabilities
|
||||
|
||||
> find-word@0.2.5 test:browser
|
||||
> playwright test
|
||||
|
||||
|
||||
Running 36 tests using 2 workers
|
||||
|
||||
✓ 1 [desktop] › tests/browser/audio.spec.ts:7:1 › 음성·현장음 109개 versioned WAV를 실제 Chrome에서 해시·디코드 검증한다 (22.3s)
|
||||
✓ 2 [desktop] › tests/browser/gains.spec.ts:87:1 › 실제 GainNode의 배경 배율은 8환경 × SNR 경계·0에서 동일하다 (26.0s)
|
||||
✓ 3 [desktop] › tests/browser/gains.spec.ts:185:1 › 실제 WAV 변조는 소스 시작 전에 거부하고 원본 재시도로 회복한다 (20.2s)
|
||||
✓ 5 [desktop] › tests/browser/game.spec.ts:130:3 › intro WAV query URL의 404를 표시하고 같은 URL로 재시도·정답 mapping한다 (19.5s)
|
||||
✓ 4 [desktop] › tests/browser/game.spec.ts:8:1 › 실제 오디오로 혼합 모드 완주·레이아웃·접근성·외부 요청 없음 (45.3s)
|
||||
✓ 7 [desktop] › tests/browser/release.spec.ts:6:1 › 릴리스는 사용자 크레딧과 런타임 MIT notice 전문을 제공한다 (394ms)
|
||||
✓ 8 [desktop] › tests/browser/release.spec.ts:24:1 › 누락 음성·환경음은 query와 HTML accept에도 404이고 출처 고지는 번들된다 (42ms)
|
||||
✓ 6 [desktop] › tests/browser/game.spec.ts:130:3 › target WAV query URL의 404를 표시하고 같은 URL로 재시도·정답 mapping한다 (13.4s)
|
||||
✓ 10 [desktop] › tests/browser/review-fixes.spec.ts:27:1 › 리뷰: 한국어 모드·결과 어절은 320px와 360px에서도 갈라지거나 넘치지 않는다 (1.6s)
|
||||
✓ 9 [desktop] › tests/browser/resampling.spec.ts:7:1 › 109 WAV의 24·44.1·48·96kHz 디코드는 고정 peak 상한 안에 있다 (16.8s)
|
||||
✓ 11 [desktop] › tests/browser/review-fixes.spec.ts:62:1 › 리뷰: 실제 진행 막대는 현재 문항의 1/3·2/3·3/3을 채운다 (30.8s)
|
||||
✓ 13 [desktop] › tests/browser/rounds.spec.ts:135:1 › 여덟 환경의 실제 WAV를 각각 디코드하고 루프 재생한 뒤 즉시 정지한다 (7.4s)
|
||||
✓ 14 [desktop] › tests/browser/rounds.spec.ts:178:1 › 환경음 404는 한국어 오류와 재시도 후 정상 답변으로 복구한다 (16.2s)
|
||||
✓ 15 [desktop] › tests/browser/ui.spec.ts:4:1 › 전체 음량은 설정 흐름 안에 들어가며 키보드로 조절된다 (1.3s)
|
||||
✓ 16 [desktop] › tests/browser/ui.spec.ts:52:1 › 난이도 설명은 모바일에서도 보인다 (885ms)
|
||||
✓ 12 [desktop] › tests/browser/rounds.spec.ts:35:1 › 시작 단계·SNR·3문항 완료→다음 단계·재생 중 종료·응답 후 종료·홈 초기화 (59.1s)
|
||||
✓ 18 [desktop] › tests/browser/ui.spec.ts:121:1 › 시작 단계와 SNR 설정은 카드 안에 들어가고 터치 영역을 확보한다 (449ms)
|
||||
✓ 17 [desktop] › tests/browser/ui.spec.ts:68:1 › 한국어 제목은 단어 중간에서 줄바꿈하지 않는다 (17.5s)
|
||||
✓ 19 [mobile] › tests/browser/audio.spec.ts:7:1 › 음성·현장음 109개 versioned WAV를 실제 Chrome에서 해시·디코드 검증한다 (19.4s)
|
||||
✓ 20 [mobile] › tests/browser/gains.spec.ts:87:1 › 실제 GainNode의 배경 배율은 8환경 × SNR 경계·0에서 동일하다 (18.3s)
|
||||
✓ 21 [mobile] › tests/browser/gains.spec.ts:185:1 › 실제 WAV 변조는 소스 시작 전에 거부하고 원본 재시도로 회복한다 (12.4s)
|
||||
✓ 23 [mobile] › tests/browser/game.spec.ts:130:3 › intro WAV query URL의 404를 표시하고 같은 URL로 재시도·정답 mapping한다 (13.5s)
|
||||
✓ 24 [mobile] › tests/browser/game.spec.ts:130:3 › target WAV query URL의 404를 표시하고 같은 URL로 재시도·정답 mapping한다 (16.6s)
|
||||
✓ 25 [mobile] › tests/browser/release.spec.ts:6:1 › 릴리스는 사용자 크레딧과 런타임 MIT notice 전문을 제공한다 (254ms)
|
||||
✓ 26 [mobile] › tests/browser/release.spec.ts:24:1 › 누락 음성·환경음은 query와 HTML accept에도 404이고 출처 고지는 번들된다 (19ms)
|
||||
✓ 22 [mobile] › tests/browser/game.spec.ts:8:1 › 실제 오디오로 혼합 모드 완주·레이아웃·접근성·외부 요청 없음 (50.8s)
|
||||
✓ 28 [mobile] › tests/browser/review-fixes.spec.ts:27:1 › 리뷰: 한국어 모드·결과 어절은 320px와 360px에서도 갈라지거나 넘치지 않는다 (1.5s)
|
||||
✓ 27 [mobile] › tests/browser/resampling.spec.ts:7:1 › 109 WAV의 24·44.1·48·96kHz 디코드는 고정 peak 상한 안에 있다 (12.7s)
|
||||
✓ 29 [mobile] › tests/browser/review-fixes.spec.ts:62:1 › 리뷰: 실제 진행 막대는 현재 문항의 1/3·2/3·3/3을 채운다 (33.0s)
|
||||
✓ 31 [mobile] › tests/browser/rounds.spec.ts:135:1 › 여덟 환경의 실제 WAV를 각각 디코드하고 루프 재생한 뒤 즉시 정지한다 (6.1s)
|
||||
✓ 30 [mobile] › tests/browser/rounds.spec.ts:35:1 › 시작 단계·SNR·3문항 완료→다음 단계·재생 중 종료·응답 후 종료·홈 초기화 (47.0s)
|
||||
✓ 33 [mobile] › tests/browser/ui.spec.ts:4:1 › 전체 음량은 설정 흐름 안에 들어가며 키보드로 조절된다 (746ms)
|
||||
✓ 34 [mobile] › tests/browser/ui.spec.ts:52:1 › 난이도 설명은 모바일에서도 보인다 (495ms)
|
||||
✓ 32 [mobile] › tests/browser/rounds.spec.ts:178:1 › 환경음 404는 한국어 오류와 재시도 후 정상 답변으로 복구한다 (16.4s)
|
||||
✓ 36 [mobile] › tests/browser/ui.spec.ts:121:1 › 시작 단계와 SNR 설정은 카드 안에 들어가고 터치 영역을 확보한다 (311ms)
|
||||
✓ 35 [mobile] › tests/browser/ui.spec.ts:68:1 › 한국어 제목은 단어 중간에서 줄바꿈하지 않는다 (17.0s)
|
||||
|
||||
36 passed (4.9m)
|
||||
Reference in New Issue
Block a user