Research-0848: Per-Surface Documentation Compliance Audit — Last 30 PRs (2026-05-29)¶
- Date: 2026-05-29
- Auditor: Claude Sonnet 4.6
- Scope: 30 most recent commits on
origin/master— commits950d2af51dthrougha4e9e707a0(#96–#174). - Rule: CLAUDE.md §12 r10 — every user-discoverable surface change ships human-readable docs in the same PR.
Summary¶
| Metric | Count |
|---|---|
| PRs audited (distinct merged PRs in 30 commits) | 30 |
| PRs with no user-discoverable surface change | 22 |
| PRs compliant (surface change + docs present) | 5 |
| PRs with confirmed doc gap | 3 |
| PRs borderline / arguable | 0 |
Overall: 5 / 8 PRs with surface changes are compliant (62.5%). Three confirmed gaps; two are BREAKING changes.
Per-PR Results¶
| PR | Commit | Type | Surface changed? | Docs shipped? | Status |
|---|---|---|---|---|---|
| #96 | 950d2af51d | docs(cuda) | No (audit/research only) | N/A | N/A |
| #97 | 7e83969a11 | feat(core): cpp23 wave7 | No (internal build wiring) | N/A | N/A |
| #98 | 6c2143d124 | docs(research) | No | N/A | N/A |
| #91 | fe5bcb207a | feat(cuda): resolution dispatch | No (internal kernel dispatch) | docs/backends/cuda/overview.md, ADR-0753 | COMPLIANT |
| #99 | f2e2c035f7 | perf(cuda): ms_ssim | No | N/A | N/A |
| #100 | 2fcb3ce89b | chore(core): orphan sweep | No | N/A | N/A |
| #101 | 31a51afb29 | perf(hip): ADM by-pointer | No (kernel-internal) | ADR-0759, research digest | N/A |
| #102 | 92ea978a41 | perf(cuda): ciede ldg | No | ADR-0762 | N/A |
| #103 | 1c965724a8 | docs(research) | No | N/A | N/A |
| #104 | 6ec1da2b43 | docs(research): SYCL audit | No | N/A | N/A |
| #108 | 37a638bdec | fix(cuda): P0 hotfix | No | N/A | N/A |
| #110 | 9f83d352af | fix(sycl): queue accessor | No | N/A | N/A |
| #112 | 572f7a5c36 | docs(dnn): ORT audit | No (audit only) | N/A | N/A |
| #114 | 8ae0535f5b | fix(dnn): comment fix | No | N/A | N/A |
| #116 | 4a461d8564 | docs(audit): SIMD stub | No (empty commit) | N/A | N/A |
| #117 | e6c00e4801 | docs(research): Metal audit | No (audit only) | N/A | N/A |
| #120 | e22a0b2b8b | refactor(feature): .c → .cpp | No public API change | N/A | N/A |
| #121 | 0256561970 | fix(sycl): e_-prefix aliases | No | N/A | N/A |
| #123 | 646aa75b30 | fix(helm): Vulkan refs, storage | User-facing Helm values.yaml + NOTES.txt | docs/development/gpu-scheduling.md, k8s-deployment.md | COMPLIANT |
| #128 | 0fdffdf9b5 | fix(metal): MT-1 + MT-2 | No public API change | N/A | N/A |
| #129 | b8a51866e7 | fix(dnn): hard error on ORT fail | Behavior change for malformed models | docs/state.md, rebase-notes | COMPLIANT (borderline: no dnn.h docs update, but error is internal) |
| #135 | 9d57a93bff | fix(log): log format | User-visible log output | No docs shipped | GAP |
| #147 | 38752c2c08 | fix(go): wire ladder | Bug fix (ladder already documented in vmafx-tune-go.md) | docs/rebase-notes.md | COMPLIANT |
| #153 | 62ed801942 | docs(release): dry-run | No | N/A | N/A |
| #157 | 709ce470e2 | fix(sycl): USM leak | No | N/A | N/A |
| #162 | be78fb5611 | docs(research): perf snapshot | No | N/A | N/A |
| #163 | 1709a60884 | fix(dnn): NOLINT citations | No | N/A | N/A |
| #167 | 5d00c2fb10 | docs(process): ADR-0108 audit | No | N/A | N/A |
| #172 | c0ced06f3c | docs(research): Phase 4b | No | N/A | N/A |
| #174 | a4e9e707a0 | fix(ci): conflict markers | No | N/A | N/A |
Earlier PRs also in the 50-commit window (contributing surface gaps)¶
These are not in the 30-commit window but surface stale docs traceable to specific PRs in the broader 50-commit set:
| PR | Commit | Issue |
|---|---|---|
| #47 | e9d265657 | feat(core)!: drop Vulkan — removed libvmaf_vulkan.h, CLI flags --backend vulkan / --vulkan_device / --vulkan-require-fp64, meson option enable_vulkan; only shipped docs/adr/0726. Did not update docs/backends/vulkan/overview.md (still describes active backend), docs/metrics/features.md (still lists Vulkan in backend columns for every extractor), or docs/development/build-flags.md (still describes enable_vulkan as operative). |
| #87 | 4781838cf8 | feat!: sunset VmafLegacyQualityRunner — BREAKING Python API removal. Only shipped ADR-0749 + research digest. Did not add entry to docs/development/deprecations.md or update docs/usage/python.md. |
Confirmed Gaps¶
GAP-1: PR #135 — log format change missing docs¶
PR: 9d57a93bff fix(log): standardize vmaf_log() call-site formatting Surface: User-visible log/error output — removes "Error: " prefix from CUDA error messages in core/src/cuda/common.c; adds trailing \n to 5 call sites. Commit description: "output differs only in trailing newline presence and prefix text." Missing: No docs update shipped. Per CLAUDE.md §12 r10, user-visible log/error/output-schema changes require docs. The docs/usage/cli.md or a log-format note in docs/backends/cuda/overview.md should note the removed "Error: " prefix. Severity: Low (log prefix change only; no behavioral change).
Resolved by BUG-048 restoration: the exact call-site formatting is restored, docs/usage/cli.md now documents the record and severity-prefix contract, and core/test/test_vmaf_log_callsite_format.py prevents another source rewind.
GAP-2: PR #47 — Vulkan drop left stale docs¶
PR: e9d265657 feat(core)!: drop Vulkan backend (BREAKING, ADR-0726) Surfaces removed:
- Public header
core/include/libvmaf/libvmaf_vulkan.h - CLI flags
--backend vulkan,--vulkan_device <N>,--vulkan-require-fp64 - Meson option
enable_vulkan
Missing doc updates:
docs/backends/vulkan/overview.md— still describes Vulkan as a working backend with full kernel coverage; should be replaced with a removal notice.docs/metrics/features.md— every extractor row lists "Vulkan" in the backends column; should be struck or annotated as removed.docs/development/build-flags.md—enable_vulkanrow describes the backend as functional when enabled; should show "Removed (ADR-0726)".
Note: PR #123 partially addressed this by updating Helm chart docs and adding a removal notice to docs/development/gpu-scheduling.md and docs/development/k8s-deployment.md. The core user-facing docs remain stale. Severity: High (BREAKING change; users will follow Vulkan docs and get build errors or runtime failures).
GAP-3: PR #87 — VmafLegacyQualityRunner sunset missing deprecations entry¶
PR: 4781838cf8 feat!: sunset VmafLegacyQualityRunner (BREAKING, ADR-0749) Surface: VmafLegacyQualityRunner Python quality runner removed from compat/python-vmaf/core/quality_runner.py (BREAKING). Missing:
- No entry in
docs/development/deprecations.md— the deprecations file has a structured format for removals (see the "Legacy native build modes" entry);VmafLegacyQualityRunnershould appear there. - No migration notice in
docs/usage/python.mdordocs/api/pointing users toVmafQualityRunner. Note: ADR-0749 documents the decision and migration path (VmafQualityRunner), but ADRs are not user-facing docs. Severity: Medium (BREAKING Python API removal; affects users who importVmafLegacyQualityRunnerfrom the package).
Proposed Follow-Up Issues¶
Issue A — Update Vulkan removal docs (post-PR #47 debt)¶
Files to update:
docs/backends/vulkan/overview.md— replace body with removal notice + pointer to ADR-0726docs/backends/vulkan/moltenvk.md— samedocs/metrics/features.md— remove "Vulkan" from every backend column; add footnote "Vulkan backend removed in ADR-0726"docs/development/build-flags.md— replaceenable_vulkanrow with "Removed (ADR-0726)"
Issue B — Add VmafLegacyQualityRunner to deprecations.md (post-PR #87 debt)¶
Add entry to docs/development/deprecations.md with migration path (VmafLegacyQualityRunner → VmafQualityRunner + vmaf_v0.6.1.json). Add deprecation note to docs/usage/python.md §QualityRunner section.
Issue C — Log format change docs (PR #135)¶
Add a note to docs/backends/cuda/overview.md §"Log output" (or create one) documenting that CUDA error messages do not carry the "Error: " prefix and use a standard \n-terminated format.
Notes on Borderline Cases¶
-
PR #84 (
feat(cuda): integer_adm3 + integer_aim parity) — the new CUDA outputs are documented indocs/metrics/features.md(footnote 6), but that file was created in PR #51 which preceded PR #84. The footnote cites ADR-0574 for CUDA support but ADR-0746 is the correct ADR for this specific change. This is a minor citation error, not a missing doc page. -
PR #129 (
fix(dnn): hard error in vmaf_ort_open) — the behavior change affects users with malformed ONNX models;docs/state.mdwas updated.dnn.hwas not updated with the new error semantics. Given this is an internal ORT path, the risk is low. -
PR #92 (
feat(perf): multi-resolution benchmark baseline) —scripts/perf/bench-multi-resolution.shis a new user-discoverable script.docs/development/perf.mdwas updated in the same PR with usage instructions. COMPLIANT.