docs(state): audit cleanup — close Y4M-OOB + #239, dedup draft rows#403
Merged
docs(state): audit cleanup — close Y4M-OOB + #239, dedup draft rows#403
Conversation
10 tasks
lusoris
added a commit
that referenced
this pull request
May 5, 2026
…(ADR-0313) (#410) * ci(policy): Required Checks Aggregator — unblock doc/Python-only PRs (ADR-0313) The 23-named-required-check posture (ADR-0037) deadlocks doc/Python-only PRs: the C-build matrix path-filter-skips on their diffs, but branch protection counts a path-filter-skip + a never-ran-at-all as not satisfying the required-check. PR #400 hit this concretely (10/23 succeeded; 13/23 either skipped or never reported; gh pr merge returned "the base branch policy prohibits the merge"). Aggregator is one workflow with no path filter. It polls up to 8 minutes for sibling workflows to register, then verifies each named check on the head SHA reported success/skipped/neutral (or didn't appear at all, which is the documented path-filter rejection semantics). Aggregator becomes the single branch-protection required check; the 23 individual workflows continue to run unchanged. Manual operator step at adoption (after this PR merges): gh api -X PUT "repos/lusoris/vmaf/branches/master/protection/required_status_checks" \ -F 'strict=true' -F 'contexts=["Required Checks Aggregator"]' Unblocks #400, #403, #404, #405, #406, #407 currently stuck on the deadlock. Per user popup direction 2026-05-05. Files: .github/workflows/required-aggregator.yml (new), docs/adr/0313-*.md (new), changelog.d/added/*.md (new), docs/adr/README.md (+1 row), docs/adr/_index_fragments/_order.txt (+1 line + new fragment), docs/rebase-notes.md §0313. * ci: retrigger after PR body cleanup * ci: retrigger after deliverables opt-out polarity fix --------- Co-authored-by: Lusoris <lusoris@pm.me>
Moves Y4M-411-OOB heap-buffer-overflow row from Open to Recently closed (PR #357 / commit 05ba29a landed 2026-05-04); removes the duplicate Y4M-OOB row + orphaned |---|---|---|---|---| separator; removes the duplicate #239 Vulkan-fence row from Open (already in Recently closed under PR #241); clears seven duplicate (draft, ...) rows whose merged-commit twins lived directly below them. No semantic state changes — every closed bug stayed closed; every open bug stayed open. Triggered by /loop merge-train auditing the state.md surface flagged by ADR-0165 / CLAUDE §12 r13.
18add08 to
0466b09
Compare
There was a problem hiding this comment.
Pull request overview
This PR performs a documentation hygiene pass on the fork-local bug tracker (docs/state.md) per ADR-0165/CLAUDE rule 13: it bumps the header update date, removes stale/duplicate entries, and consolidates already-closed bugs into the “Recently closed” section. It also adds a changelog fragment describing the cleanup.
Changes:
- Update
docs/state.mdheader date and remove duplicate/stale rows (including duplicate Open entries for #239 and Y4M-411-OOB). - Consolidate the Y4M-411-OOB fix into a single “Recently closed” row referencing PR #357.
- Add a
changelog.d/changed/fragment documenting the audit cleanup.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| docs/state.md | Bumps update date; removes duplicate Open entries; consolidates Y4M-411-OOB and leaves canonical “Recently closed” entries. |
| changelog.d/changed/state-md-audit-y4m-oob-239-cleanup.md | Adds a changelog entry summarizing the state.md audit cleanup. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| | **CLAUDE.md §12 r14 ffmpeg-patches reviewer command was wrong** — `for p in ffmpeg-patches/000*-*.patch; do git apply --check "$p"; done` only succeeds for patch 0001 because patches 0002–0006 build on each other; correct gate is `git am --3way` series replay against pristine `n8.1` | PR #297 (draft, 2026-05-02) | — (rule wording fix, no ADR) | 2026-05-02 `/refresh-ffmpeg-patches` skill run: per-patch `apply --check` failed on 4/6 patches; `git am --3way` series replay succeeded for all 6 | | ||
| | **`docs/state.md` + `CHANGELOG.md` carried 15 stale ADR slug refs** (slug renames where NNNN stayed but filename evolved, e.g. `0152-monotonic-index-rejection.md` → `0152-vmaf-read-pictures-monotonic-index.md`) | PR #304 (draft, 2026-05-02) | — (doc cleanup, no ADR) | mkdocs `--strict` build clean; spot-check verifies each rewritten ref points at the actual on-disk filename for that NNNN. 11 wrong-NNNN refs (different concept under same NNNN, e.g. `0246-gpu-kernel-template.md` while disk-0221 is `vmaf-roi-tool.md`) split into a separate per-ADR-review PR | | ||
| | **1.07e-3 CPU `vmaf_v0.6.1` score drift between `/usr/local/bin/vmaf` v3.0.0 and master tip** — surfaced by 2026-05-02 `/run-netflix-bench` subagent run; well within Netflix golden's `places=2` tolerance, so the gate did NOT fire, but the drift was stable + reproducible | PR #305 (draft, 2026-05-02) — bisect identifies upstream Netflix `a44e5e61` (motion edge-mirror bugfix, Kyle Swanson 2026-04-17) inherited at fork root. Per-feature isolation: drift is entirely `integer_motion` (-1.005e-3) + `integer_motion2` (-0.985e-3); ADM and VIF are bit-identical. Snapshot regen via separate PR aligns `testdata/netflix_benchmark_results.json` with the fork's actual behavior. | — (bisect triage, no ADR) | `/bisect-regression` predicate against `vmaf_v0.6.1.json` brackets fork root `41301496` ↔ master `4cd3a8d8`; "first bad" = fork root means drift was inherited, not introduced. Doc at `docs/development/cpu-score-drift-bisect-2026-05-02.md` | | ||
| | **`y4m_convert_411_422jpeg` 1-byte heap-buffer-overflow on 4:1:1 streams with `dst_c_w == 1`** — the chroma-upsample routine's first two sub-loops unconditionally wrote `_dst[(x << 1) | 1]`; the third sub-loop already carried the correct `(x << 1 \| 1) < dst_c_w` guard. Triggered by any 4:1:1 Y4M whose width (after Daala chroma decimation) reduces to a 1-pixel destination chroma row — minimal repro: `YUV4MPEG2 W2 H4 F30:1 Ip C411`. Surfaced by the libFuzzer harness staged in PR #348. | PR #357 / commit `05ba29a6` (merged 2026-05-04), report PR #348 (merged 2026-05-04) | — (one-line guard fix, no ADR per CLAUDE §12 r8) | `libvmaf/test/test_y4m_411_oob.c` exercises the W=2 H=4 4:1:1 stream end-to-end through `video_input_open` + `video_input_fetch_frame`; ASan-clean after the fix, faults at `y4m_input.c:507` with `WRITE of size 1` before. The 3 canonical Netflix CPU golden tests (`src01_hrc00_576x324`, both `checkerboard_1920_1080` shifts) are unaffected — none use 4:1:1 with `dst_c_w == 1`. | |
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
Audits
docs/state.mdper ADR-0165 / CLAUDE §12 r13. Three semantic-equivalent edits:05ba29a6(merged 2026-05-04) ported the third sub-loop's(x << 1 | 1) < dst_c_wguard to the first and second sub-loops; ASan-clean post-fix on the parkedy4m_411_w2_h4_oob_dst.y4mreproducer. Old Open-section row had the bug flagged(open)and the duplicate Recently-closed entry below it carriedPR #TBD-fix (this PR, 2026-05-03)placeholder text — both now consolidated into a single Recently-closed row pointing at PR fix(y4m): heap-buffer-overflow in 411→422jpeg conversion (dst_c_w==1) #357.PR #241 / commit e266bf8e; the Open-section copy was left behind when the v2 ring measurement gate flipped ADR-0251 from Proposed to Accepted on 2026-05-03.(draft, ...)rows in Recently closed removed (vmaf_tiny_v1.onnx,kernel_template.h8-SSBO cap,deliverables-check.sh, draft-CI-skip,ffmpeg-patchesreviewer command, stale ADR slug refs, CPU score-drift bisect). Each had a merged-commit twin sitting directly below it; the duplicates were stale snapshots from the in-flight period before those PRs squashed onto master.Net diff: 16 lines removed, 2 added (header date bump + closed-section consolidation). No semantic state changes — every closed bug stayed closed; every open bug stayed open.
Six deep-dive deliverables (ADR-0108)
no digest needed: trivial doc cleanup, no architectural decisionno alternatives: only-one-way fix— duplicates are duplicates; one canonical row per closed bug per ADR-0165no rebase-sensitive invariantsgrep -c '|---|---|---|---|---|' docs/state.mdreturns 0 (was 1 from the orphaned separator);grep -cE '\\| \\*\\*Y4M-411-OOB\\*\\*' docs/state.mdreturns 0 in the Open section.changelog.d/changed/state-md-audit-y4m-oob-239-cleanup.mdno rebase impact: doc-only change to fork-local docs/state.md and changelog.d/; no upstream Netflix/vmaf interactionOther PR-template invariants
mkdocs buildexercises the file via the docs site.Test plan
grep -nE '\\| \\*\\*Y4M-411-OOB\\*\\*' docs/state.mdreturns only the Recently-closed row (line ~46)grep -c '|---|---|---|---|---|' docs/state.mdreturns 0grep -cE 'PR #(296|288|292|300|297|304|305) \\(draft' docs/state.mdreturns 0docs/state.mdwithout errors🤖 Generated with Claude Code