Repository navigation
fix(ai): write the FR regressor registry as strict JSON - #2257
Merged
Merged
Conversation
…acOS LTO keeps libc's close() (#2234) * fix(feature): name the CPU extractors' close callbacks close_fex so macOS LTO keeps libc's close() test_adm_coverage crashed with SIGSEGV on every macOS leg since #2208 gave a case a stderr capture that calls close(). Under lldb on the hosted runner the faulting function is an extractor's static close(VmafFeatureExtractor *) called with the file descriptor; the debug build without LTO passes. macOS's <unistd.h> declares close() with an assembler label, so in a full-LTO link (the release default) the IR linker keeps the declaration and a static close of another module apart without renaming the static, and both emit as _close: every C-library close() in the merged module branches into an extractor. The fdopen() failure paths of libvmaf.c, cambi.c and svm.cpp make that call too. glibc has no label, so Linux never showed it. The 17 callbacks are close_fex, the GPU twins' naming; nothing else changes. test_libc_named_internal_functions refuses a static C function named after a C library or POSIX function and reports the 17 on master. * test(ci): stub node in test-dedupe-gate.sh to isolate governance sequence test-dedupe-gate.sh verifies the standardsctl governance sequence and that dedupe scan failure is propagated by make verify-all. When verify-all gained the praetor documentation gates (docs-lint, docs-figures), make started executing node to lint all markdown files, causing timeouts and failures under host load. Stub node in the temporary directory alongside standardsctl so the unit contract test evaluates only the dedupe sequence.
* chore(tidy): make cert-err33-c a hard stop in .clang-tidy ADR-0694 asked for cert-err33-c in WarningsAsErrors once its violations were swept. The ADR-1142 cleanups did that sweep: a full run of the cpu, cuda, hip and sycl lanes in the dev container (clang-tidy 22.1.8) reports no cert-err33-c diagnostic, and the last arm64 report has none. The check is promoted now, so a new unchecked fclose() or fputs() fails Tidy Changed instead of joining a baseline. A planted fclose(f); gives exit 0 as a warning and exit 1 with the promotion. Closes T-CERT-ERR33-SWEEP.
* fix(ai): write the FR regressor registry as strict JSON The four train_fr_regressor scripts wrote model/tiny/registry.json with a raw json.dumps, which prints NaN and Infinity for a non-finite value and leaves a file no strict JSON reader accepts. vmaf_train.registry.write_registry_json() existed for this and had no production caller; the scripts use it now. A registry of finite values is byte-identical to before. Also moves T-BUG048-PERF-RESTORATIONS-2026-09-26 to Recently closed: all four restorations (#1678, #1683, #1687, #1688) are on master, and the row stayed open.
lusoris
force-pushed
the
fix/ai-training-registry-nonfinite
branch
from
October 6, 2026 11:23
0cb1451 to
0f0d8cc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes
T-BUG048-PERF-RESTORATIONS-2026-09-26(all four restorations were on master, the row stayed open) and fixes the registry half ofT-BUG048-AI-SCRIPT-HELPERS-2026-09-26.train_fr_regressor.py,_v2.py,_v2_ensemble.pyand_v3.pywrotemodel/tiny/registry.jsonwith a rawjson.dumps, which printsNaN/Infinityfor a non-finite value and leaves a file no strict JSON reader accepts. They callvmaf_train.registry.write_registry_json()now (it existed and had no production caller). A registry of finite values is byte-identical to before.ai/tests/test_training_scripts_registry_nonfinite.py: a registry row that already holdsNaN,Infinityor-Infinitycomes back asnull(positive), no such token survives (negative), and a finite registry keeps the oldindent=2, sort_keysbytes (boundary). 12 of 16 cases fail on the oldjson.dumps.T-BUG048-AI-SCRIPT-HELPERS-2026-09-26stays open (RC9) for the dataset-prep and train scripts that are not onbootstrap_ai_script.T-BUG048-PERF-RESTORATIONS-2026-09-26moves to Recently closed with the four PRs (perf(adm): split adm_p_norm==3.0 fast-path (ADR-0463) #1678, perf(vif): reuse caller tmpbuf in scalar fallbacks (ADR-0463) #1683, perf(vmaf-tune): batch cache index writes via dirty-flag and explicit flush #1687, perf(ai): auto-select /dev/shm for YUV scratch to eliminate NVMe I/O (Win 3) #1688) and their files; no measurement was redone (performance claims are RC8).Reproducer
Deliverables (ADR-0108)
AGENTS.mdinvariant note — no rebase-sensitive invariants.changelog.d/fixed/ai-training-registry-strict-json.md.docs/state.md.