feat(hip): T7-10 — HIP (AMD) backend scaffold (audit-first)#200
Merged
feat(hip): T7-10 — HIP (AMD) backend scaffold (audit-first)#200
Conversation
lusoris
pushed a commit
that referenced
this pull request
Apr 29, 2026
PRs #195 (T5-2 MCP scaffold), #199 (this PR), #200 (T7-10 HIP), #201 (T7-38 SVE2) all independently picked ADR-0209. #195 opened first and keeps it; this PR (T6-9 model registry + Sigstore) rebases onto current master and renames to ADR-0211. References updated across CHANGELOG, AGENTS, security.md, model-registry.md, README, schema, vmaf.c, cli_parse.h, test_tiny_model_verify.c, model_loader.{c,h}, dnn.h, rebase-notes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
lusoris
pushed a commit
that referenced
this pull request
Apr 29, 2026
PRs #195 (T5-2 MCP scaffold), #199 (this PR), #200 (T7-10 HIP), first and keeps it; this PR (T6-9 model registry + Sigstore) rebases onto current master and renames to ADR-0211. References updated across CHANGELOG, AGENTS, security.md, model-registry.md, README, schema, vmaf.c, cli_parse.h, test_tiny_model_verify.c, model_loader.{c,h}, dnn.h, rebase-notes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6 tasks
lusoris
added a commit
that referenced
this pull request
Apr 29, 2026
…#199) * feat(ai): T6-9 — model registry schema + Sigstore --tiny-model-verify Formalize model/tiny/registry.json with a JSON Schema (Draft 2020-12) extended with license + Sigstore-bundle metadata, and wire the previously-stubbed --tiny-model-verify CLI flag through to `cosign verify-blob` via posix_spawnp(3p). Both halves operate on the same registry surface; landing them together avoids a schema flip-flop. Implements ADR-0209. - model/tiny/registry.schema.json: schema_version bumps to 1; new optional license, license_url, sigstore_bundle, description fields. - model/tiny/registry.json: every entry gains license metadata (BSD-3-Clause-Plus-Patent for fork-trained, BSD-2-Clause for the upstream LPIPS-Sq export) and a sigstore_bundle path; bundles themselves are populated at release time. - ai/scripts/validate_model_registry.py: jsonschema-backed validator with structural-fallback for distros without python-jsonschema; cross-file consistency (sha256 match, sidecar presence, bundle path shape). New CI lane in .github/workflows/lint-and-format.yml. - libvmaf/src/dnn/model_loader.{c,h}: new vmaf_dnn_verify_signature(); parses the registry inline (no JSON dep), spawns cosign via posix_spawnp (system(3) is and stays banned). Public declaration in libvmaf/include/libvmaf/dnn.h. - libvmaf/tools/cli_parse.{c,h}, vmaf.c: --tiny-model-verify flag + tiny_model_verify settings field; CLI calls the verifier before model load and exits non-zero on any failure. - Tests: python/test/model_registry_schema_test.py (10 cases) + libvmaf/test/dnn/test_tiny_model_verify.c (5 failure-mode cases on Unix; ENOSYS smoke on Windows). - Docs: new docs/ai/model-registry.md; docs/ai/inference.md gains a --tiny-model-verify row; docs/ai/security.md Layer 4 updated. - CHANGELOG, AGENTS invariant, rebase-notes 0074, ADR index row. Closes T6-9. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(docs): renumber ADR-0209 → ADR-0211 to avoid 4-way collision PRs #195 (T5-2 MCP scaffold), #199 (this PR), #200 (T7-10 HIP), first and keeps it; this PR (T6-9 model registry + Sigstore) rebases onto current master and renames to ADR-0211. References updated across CHANGELOG, AGENTS, security.md, model-registry.md, README, schema, vmaf.c, cli_parse.h, test_tiny_model_verify.c, model_loader.{c,h}, dnn.h, rebase-notes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(dnn): move arg-validation before platform probe + tighten test fixture mode Two CI fixes for PR #199 (T6-9 model registry + Sigstore verify): 1. Windows MinGW64 build (`test_verify_null_path`): the `_WIN32` branch of `vmaf_dnn_verify_signature()` was returning `-ENOSYS` unconditionally without honouring the public-API contract that a `NULL onnx_path` returns `-EINVAL`. The non-Windows branch already had the NULL check at the function head; mirror it in the Windows branch so the contract is platform-independent. 2. CodeQL `cpp/world-writable-file-creation` at `test_tiny_model_verify.c:41`: the test scratch helper used `fopen("wb")`, which inherits the umask (commonly 0644 — and 0666 in some containerised CI environments) and was flagged as a real issue. Switch to `open(O_CREAT|O_WRONLY|O_TRUNC, 0600)` + `fdopen()` so the fixture creates owner-only files regardless of the runner's umask. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(cli): document --tiny-model-verify (T6-9 / ADR-0211) Adds a Sigstore-bundle verification subsection under the Tiny-AI flags section of docs/usage/cli.md so the --tiny-model-verify flag introduced in T6-9 satisfies the per-surface doc-substance bar from ADR-0100. The new copy covers the verify-blob shell-out, the supply-chain use case, and the three failure modes that exit non-zero before inference. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(dnn): expand --tiny-model-verify branch coverage + snprintf truncation Two issues raised on PR #199 (T6-9 model registry / Sigstore): 1. Coverage Gate FAIL — `libvmaf/src/dnn/model_loader.c` is on the security-critical list (libvmaf/src/dnn/*) which requires ≥85% line coverage. Baseline was 71% because `vmaf_dnn_verify_signature()` only had NULL-arg + missing-file smoke tests; the cosign-locate, posix_spawnp/waitpid, default- registry-derivation, and find_bundle_for_onnx malformed-JSON branches all sat dark. Added 14 fixture-driven tests covering: - default registry path derivation (NULL registry_path) - onnx_path with no '/' (model/tiny/registry.json fallback) - registry path with no '/' (relative bundle resolve branch) - bundle is a directory rather than a regular file - cosign-not-on-PATH (-EACCES) and empty-PATH short-circuit - cosign success via a fake `cosign` shell stub on PATH - cosign non-zero exit (-EPROTO) via the same stub - six malformed-JSON cases driving find_bundle_for_onnx() to -ENOENT / -EBADMSG on missing colon / quote / closing quote in the onnx and sigstore_bundle keys. model_loader.c coverage now sits at 86.0% line / 68.8% branch per gcovr against the dnn meson suite (verified locally with `scripts/ci/coverage-check.sh`). 2. -Wformat-truncation defect at model_loader.c:589. The snprintf("%s", bundle_rel) feeding bundle_abs's tail-buffer couldn't be proved bounded by gcc — bundle_rel is a PATH_MAX-sized buffer, the destination tail is up to `sizeof(bundle_abs) - 1`, and the runtime length precondition is opaque to -Wformat-truncation. Switched both branches to memcpy + explicit NUL using the already-validated lengths, keeping the bounds check load-bearing without the false positive. The no-slash fallback is rewritten symmetrically so neither branch uses snprintf for the rel-component copy. New test fixtures use mode 0600 for files and 0700 for scratch directories (CodeQL fix from the previous round, preserved). PATH overrides save and restore the original env so the test never leaks state on early failure. Touched files leave the lint pass clean to PR-baseline (no new clang-tidy errors, no new -Wformat warnings; pre-existing analyzer false-positive on slurp_registry stays untouched). --------- Co-authored-by: Lusoris <lusoris@pm.me> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Mirrors the Vulkan T5-1 scaffold (ADR-0175) for the HIP / AMD ROCm
backend. Lands the static surfaces (header, build wiring, kernel
stubs, smoke test, CI matrix row, docs) so the runtime + first-kernel
PRs that follow have a stable base to land on.
Public C-API surface (libvmaf/include/libvmaf/libvmaf_hip.h)
+ VmafHipState (opaque)
+ VmafHipConfiguration { device_index, flags }
+ vmaf_hip_state_init / _import_state / _state_free
+ vmaf_hip_list_devices / vmaf_hip_available
Header purity: HIP runtime types cross the ABI as uintptr_t.
Backend tree (libvmaf/src/hip/)
+ common.{c,h} — context_new/destroy/device_count + public C-API stubs.
+ picture_hip.{c,h} — alloc/free stubs (-ENOSYS).
+ dispatch_strategy.{c,h} — feature-name → kernel routing stub.
+ meson.build — paths relative to libvmaf/src/hip/, with `..`
walks to the feature stubs at libvmaf/src/feature/hip/.
Feature kernel stubs (libvmaf/src/feature/hip/)
+ adm_hip.c, vif_hip.c, motion_hip.c — _init / _run return -ENOSYS
pending real implementations.
+ feature_hip.h — forward declarations so the stubs aren't flagged
by clang-tidy's misc-use-internal-linkage checker.
Build wiring
+ new `enable_hip` boolean option in libvmaf/meson_options.txt
(default false — matches enable_cuda / enable_sycl convention;
Vulkan's `feature` form is intentionally not mirrored, see
ADR-0209 § "Decision").
+ conditional `subdir('hip')` in libvmaf/src/meson.build, with
`hip_sources` threaded into libvmaf_feature_static_lib and
`hip_deps` into the top-level library() dependencies list.
+ cdata.set10('HAVE_HIP', true) when enabled.
+ dependency('hip-lang', required: false) optional probe — no hard
SDK requirement for the scaffold.
Smoke test
+ libvmaf/test/test_hip_smoke.c — 9 sub-tests pinning the contract
(4 internal-context lifecycle + 5 public C-API entry-point
-ENOSYS / -EINVAL / NULL-safe assertions). Wired in
libvmaf/test/meson.build under `if get_option('enable_hip')`.
+ verified locally: meson setup -Denable_hip=true + ninja +
test_hip_smoke → 9/9 pass. Default no-HIP build still 37/37.
CI matrix
+ new "Build — Ubuntu HIP (T7-10 scaffold)" row in
.github/workflows/libvmaf-build-matrix.yml. Compiles with
-Denable_hip=true. No ROCm SDK install step needed.
Docs
+ new docs/backends/hip/overview.md — "scaffold only" warning,
build instructions, "what lands next" sequence.
+ ADR-0209 captures the audit-first decision + alternatives
(separate libvmaf_hip.so vs in-tree, AMD-only vs hipify
auto-translation, ROCm vs HIP runtime, boolean vs feature
option type).
+ Research-0032 covers AMD market share + ROCm 6.x Linux
maturity check.
+ ADR README index updated; docs/backends/index.md flipped from
"planned" to "scaffold"; docs/development/build-flags.md row
added; docs/rebase-notes.md entry 0074 added; libvmaf/AGENTS.md
rebase-sensitive invariant entry added.
+ CHANGELOG entry under [Unreleased] § Added.
Zero hard runtime dependencies — `dependency('hip-lang')` probe
stays optional. Adding the real linkage is the responsibility of
the runtime PR (T7-10b).
ADRs: 0209.
Research: 0032.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3b67f14 to
7704790
Compare
lusoris
pushed a commit
that referenced
this pull request
Apr 29, 2026
lusoris
added a commit
that referenced
this pull request
Apr 29, 2026
* feat(simd): T7-38 — SSIMULACRA 2 PTLR + IIR-blur SVE2 ports Mirror the NEON SSIMULACRA 2 ports lane-for-lane in a new SVE2 sister TU under a fixed 4-lane `svwhilelt_b32(0, 4)` predicate so the SVE2 path is byte-identical to NEON regardless of the runtime vector length, satisfying the ADR-0138 / ADR-0139 / ADR-0140 byte-exact contract. Runtime gate via getauxval(AT_HWCAP2) & HWCAP2_SVE2; NEON stays the fallback. Build-time probe `cc.compiles(... -march=armv9-a+sve2)` leaves HAVE_SVE2 unset on toolchains without SVE2 intrinsics so the legacy NEON-only build path is unchanged. Validated under qemu-aarch64-static -cpu max via the new cross-file build-aux/aarch64-linux-gnu-sve2.ini: dispatch surfaces "NEON=1 SVE2=1" and all 11 test_ssimulacra2_simd bit-exactness subtests pass byte-for-byte against the scalar reference. Closes Research-0016 / Research-0017 "SVE2 deferred pending CI hardware" footnote and backlog row T7-38. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(docs): renumber ADR-0209 → ADR-0213 to avoid collision PRs #195/#199/#200/#201 all picked ADR-0209 simultaneously. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(metrics): add SSIMULACRA 2 SVE2 SIMD note (T7-38 / ADR-0213) Note SVE2 ports for IIR-blur and PTLR alongside the existing AVX2 / AVX-512 / NEON paths in the SSIMULACRA 2 backends paragraph, citing ADR-0213 and the Research-0016 / Research-0017 deferral flips. Closes the doc-substance gate gap on PR #201 — the SVE2 sources under libvmaf/src/feature/arm64/ are user-discoverable SIMD paths and need a docs/metrics/ entry per CLAUDE.md §12 r10 / ADR-0100. --------- Co-authored-by: Lusoris <lusoris@pm.me> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
lusoris
pushed a commit
that referenced
this pull request
May 1, 2026
Refresh docs that drifted from recent merged surfaces: - docs/metrics/features.md — de-duplicate the extractor overview table (3 dupe rows from past merge conflicts removed); reflect CAMBI Vulkan (T7-36 / ADR-0210), integer-SSIM Vulkan (T7-24), SSIMULACRA 2 CUDA / SYCL twins (ADR-0206), and the in-flight PSNR Vulkan chroma path (T3-15(b) / PR #204) via footnotes; rewrite the per-section Backends lines for CAMBI, SSIM, and PSNR to match. - docs/api/gpu.md — flip the Vulkan section from "scaffold only as of v3.0" to "T5-1c full default-model coverage". List the live extractors, point at T7-29 image-import zero-copy API (vmaf_vulkan_state_init_external + import_image), and at the T7-10 HIP scaffold (PR #200, libvmaf_hip.h follow-up). - CHANGELOG.md — Unreleased § Changed entry for the doc-only refresh. Doc-only — no code changes.
lusoris
added a commit
that referenced
this pull request
May 1, 2026
Refresh docs that drifted from recent merged surfaces: - docs/metrics/features.md — de-duplicate the extractor overview table (3 dupe rows from past merge conflicts removed); reflect CAMBI Vulkan (T7-36 / ADR-0210), integer-SSIM Vulkan (T7-24), SSIMULACRA 2 CUDA / SYCL twins (ADR-0206), and the in-flight PSNR Vulkan chroma path (T3-15(b) / PR #204) via footnotes; rewrite the per-section Backends lines for CAMBI, SSIM, and PSNR to match. - docs/api/gpu.md — flip the Vulkan section from "scaffold only as of v3.0" to "T5-1c full default-model coverage". List the live extractors, point at T7-29 image-import zero-copy API (vmaf_vulkan_state_init_external + import_image), and at the T7-10 HIP scaffold (PR #200, libvmaf_hip.h follow-up). - CHANGELOG.md — Unreleased § Changed entry for the doc-only refresh. Doc-only — no code changes. Co-authored-by: Lusoris <lusoris@pm.me>
lusoris
pushed a commit
that referenced
this pull request
May 1, 2026
…-1a Netflix Public dataset row) Update docs/state.md `_Updated:` stamp to 2026-04-29 and rewrite the "Tiny-AI C1 baseline `fr_regressor_v1.onnx`" deferral row's reopen-trigger to TRIGGERED — the Netflix Public training corpus that gated C1 is now locally available at `.workingdir2/netflix/` (9 ref + 70 dis YUVs, ~37 GB, gitignored; provided by lawrence 2026-04-27), unblocking BACKLOG T6-1a. Verified the rest of state.md against the 2026-04-29-session merged PR set (#193–#205, #209). Every merged PR was feature / chore / docs / perf with no bug-status delta to record per CLAUDE §12 rule 13: - #193 chore(dnn) T7-12 env override removal — chore. - #194 docs(research) T7-9 NPU digest — research. - #195 feat(mcp) T5-2 embedded scaffold — feature. - #196 feat(vulkan) T7-36 cambi integration — feature. - #197 feat(motion) Netflix b949ceb port — upstream port. - #198 chore(backlog) T7-32 micro-investigations — verify-only. - #199 feat(ai) T6-9 model registry — feature. - #200 feat(hip) T7-10 HIP scaffold — feature. - #201 feat(simd) T7-38 SVE2 ports — feature. - #202 feat(ci) T6-8 parity matrix — feature. - #203 feat(ai) T6-7 FastDVDnet — feature. - #205 docs(audit) T7-4 quarterly audit — explicitly notes "no state.md changes (no upstream commit ruled in/out a fork bug)". - #209 perf(sycl) T7-17 fp64-less device — perf. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
lusoris
pushed a commit
that referenced
this pull request
May 1, 2026
The CI audit claimed `libvmaf/src/hip/` was empty and recommended either deleting it or scaffolding a CI build lane. Verified post-audit: PR #200 (T7-10) already shipped the full HIP scaffold on master — 7 files at `libvmaf/src/hip/` (common, picture, dispatch_strategy, meson.build) plus 4 kernel stubs at `libvmaf/src/feature/hip/`, all wired into the `Build — Ubuntu HIP (T7-10 scaffold)` CI matrix row with `-Denable_hip=true`. The audit agent's worktree was on `feat/ai-fr-regressor-v1`, branched off master before #200 landed. Strike T7-HIP-STATUS from the backlog candidates. This is the second correction to 0034 in two commits — registry validate (already lands via lint-and-format.yml::registry-validate) was the first. The audit was useful but its grep base was wrong on ~25% of the urgent-tier rows; trust the CI audit's findings only after grep-confirming on `origin/master`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
lusoris
pushed a commit
that referenced
this pull request
May 1, 2026
…-1a Netflix Public dataset row) Update docs/state.md `_Updated:` stamp to 2026-04-29 and rewrite the "Tiny-AI C1 baseline `fr_regressor_v1.onnx`" deferral row's reopen-trigger to TRIGGERED — the Netflix Public training corpus that gated C1 is now locally available at `.workingdir2/netflix/` (9 ref + 70 dis YUVs, ~37 GB, gitignored; provided by lawrence 2026-04-27), unblocking BACKLOG T6-1a. Verified the rest of state.md against the 2026-04-29-session merged PR set (#193–#205, #209). Every merged PR was feature / chore / docs / perf with no bug-status delta to record per CLAUDE §12 rule 13: - #193 chore(dnn) T7-12 env override removal — chore. - #194 docs(research) T7-9 NPU digest — research. - #195 feat(mcp) T5-2 embedded scaffold — feature. - #196 feat(vulkan) T7-36 cambi integration — feature. - #197 feat(motion) Netflix b949ceb port — upstream port. - #198 chore(backlog) T7-32 micro-investigations — verify-only. - #199 feat(ai) T6-9 model registry — feature. - #200 feat(hip) T7-10 HIP scaffold — feature. - #201 feat(simd) T7-38 SVE2 ports — feature. - #202 feat(ci) T6-8 parity matrix — feature. - #203 feat(ai) T6-7 FastDVDnet — feature. - #205 docs(audit) T7-4 quarterly audit — explicitly notes "no state.md changes (no upstream commit ruled in/out a fork bug)". - #209 perf(sycl) T7-17 fp64-less device — perf. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
lusoris
pushed a commit
that referenced
this pull request
May 1, 2026
The CI audit claimed `libvmaf/src/hip/` was empty and recommended either deleting it or scaffolding a CI build lane. Verified post-audit: PR #200 (T7-10) already shipped the full HIP scaffold on master — 7 files at `libvmaf/src/hip/` (common, picture, dispatch_strategy, meson.build) plus 4 kernel stubs at `libvmaf/src/feature/hip/`, all wired into the `Build — Ubuntu HIP (T7-10 scaffold)` CI matrix row with `-Denable_hip=true`. The audit agent's worktree was on `feat/ai-fr-regressor-v1`, branched off master before #200 landed. Strike T7-HIP-STATUS from the backlog candidates. This is the second correction to 0034 in two commits — registry validate (already lands via lint-and-format.yml::registry-validate) was the first. The audit was useful but its grep base was wrong on ~25% of the urgent-tier rows; trust the CI audit's findings only after grep-confirming on `origin/master`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
May 1, 2026
) * docs(research): add Bristol NVC review + 2026-05 CI audit digests Two research digests landing as in-tree audit artifacts: - Research-0033: Bristol VI-Lab NVC review (preprints202604.0035.v1) — 40-page literature audit, 258-source classification (14 already-cited, 5 directly-relevant + new, ~14 tangential, ~225 not-relevant). Surfaces 5 actionable items mapped to specific fork surfaces (BVI-AOM ingest, NEG-VMAF caveat, ST-VMAF prior art, NVC-style BD-rate recipe, DISTS extractor) and 2 backlog candidates (T7-NEG-VMAF short, T7-BVI-AOM-INGEST long). - Research-0034: 2026-05-01 CI pipeline audit. Top 3 findings — FFmpeg + Vulkan integration had zero CI coverage (closed by PR #235 lavapipe lane), pre-commit ↔ CI parity gap of 4 cheap checks (closed by PR #236), HIP backend status ambiguous (open). Catalogues CI dedup opportunities (~25-35 min/PR saving) and a gap scan covering MCP smoke, registry validate, ffmpeg-patches apply-check, and HIP build. ADR-0186 v2 async pending-fence follow-up filed as issue #239 (profiling gate met by 2026-04-30 lawrence Discord report). These are tracked, in-tree audit artifacts so future sessions can find them — `.workingdir2/` is gitignored and not durable. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(research): correct registry-validate false positive in 0034 The CI audit claimed `Tiny-Model Registry validation` had zero coverage. Verified post-audit that `lint-and-format.yml::registry-validate` already exists and calls `ai/scripts/validate_model_registry.py`, which performs both schema validation and sha256 cross-check (lines 100-103 of that script). The audit's grep missed the job because the workflow job name is `registry-validate`, not the user-facing `Tiny-Model Registry Validate` label. Strike T7-REGISTRY-CI from the backlog candidates; it's not-affecting- the-fork. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(research): correct HIP false positive in 0034 The CI audit claimed `libvmaf/src/hip/` was empty and recommended either deleting it or scaffolding a CI build lane. Verified post-audit: PR #200 (T7-10) already shipped the full HIP scaffold on master — 7 files at `libvmaf/src/hip/` (common, picture, dispatch_strategy, meson.build) plus 4 kernel stubs at `libvmaf/src/feature/hip/`, all wired into the `Build — Ubuntu HIP (T7-10 scaffold)` CI matrix row with `-Denable_hip=true`. The audit agent's worktree was on `feat/ai-fr-regressor-v1`, branched off master before #200 landed. Strike T7-HIP-STATUS from the backlog candidates. This is the second correction to 0034 in two commits — registry validate (already lands via lint-and-format.yml::registry-validate) was the first. The audit was useful but its grep base was wrong on ~25% of the urgent-tier rows; trust the CI audit's findings only after grep-confirming on `origin/master`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Lusoris <lusoris@pm.me> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
lusoris
pushed a commit
that referenced
this pull request
May 1, 2026
…-1a Netflix Public dataset row) Update docs/state.md `_Updated:` stamp to 2026-04-29 and rewrite the "Tiny-AI C1 baseline `fr_regressor_v1.onnx`" deferral row's reopen-trigger to TRIGGERED — the Netflix Public training corpus that gated C1 is now locally available at `.workingdir2/netflix/` (9 ref + 70 dis YUVs, ~37 GB, gitignored; provided by lawrence 2026-04-27), unblocking BACKLOG T6-1a. Verified the rest of state.md against the 2026-04-29-session merged PR set (#193–#205, #209). Every merged PR was feature / chore / docs / perf with no bug-status delta to record per CLAUDE §12 rule 13: - #193 chore(dnn) T7-12 env override removal — chore. - #194 docs(research) T7-9 NPU digest — research. - #195 feat(mcp) T5-2 embedded scaffold — feature. - #196 feat(vulkan) T7-36 cambi integration — feature. - #197 feat(motion) Netflix b949ceb port — upstream port. - #198 chore(backlog) T7-32 micro-investigations — verify-only. - #199 feat(ai) T6-9 model registry — feature. - #200 feat(hip) T7-10 HIP scaffold — feature. - #201 feat(simd) T7-38 SVE2 ports — feature. - #202 feat(ci) T6-8 parity matrix — feature. - #203 feat(ai) T6-7 FastDVDnet — feature. - #205 docs(audit) T7-4 quarterly audit — explicitly notes "no state.md changes (no upstream commit ruled in/out a fork bug)". - #209 perf(sycl) T7-17 fp64-less device — perf. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
lusoris
added a commit
that referenced
this pull request
May 1, 2026
…-1a Netflix Public dataset row) (#245) Update docs/state.md `_Updated:` stamp to 2026-04-29 and rewrite the "Tiny-AI C1 baseline `fr_regressor_v1.onnx`" deferral row's reopen-trigger to TRIGGERED — the Netflix Public training corpus that gated C1 is now locally available at `.workingdir2/netflix/` (9 ref + 70 dis YUVs, ~37 GB, gitignored; provided by lawrence 2026-04-27), unblocking BACKLOG T6-1a. Verified the rest of state.md against the 2026-04-29-session merged PR set (#193–#205, #209). Every merged PR was feature / chore / docs / perf with no bug-status delta to record per CLAUDE §12 rule 13: - #193 chore(dnn) T7-12 env override removal — chore. - #194 docs(research) T7-9 NPU digest — research. - #195 feat(mcp) T5-2 embedded scaffold — feature. - #196 feat(vulkan) T7-36 cambi integration — feature. - #197 feat(motion) Netflix b949ceb port — upstream port. - #198 chore(backlog) T7-32 micro-investigations — verify-only. - #199 feat(ai) T6-9 model registry — feature. - #200 feat(hip) T7-10 HIP scaffold — feature. - #201 feat(simd) T7-38 SVE2 ports — feature. - #202 feat(ci) T6-8 parity matrix — feature. - #203 feat(ai) T6-7 FastDVDnet — feature. - #205 docs(audit) T7-4 quarterly audit — explicitly notes "no state.md changes (no upstream commit ruled in/out a fork bug)". - #209 perf(sycl) T7-17 fp64-less device — perf. Co-authored-by: Lusoris <lusoris@pm.me> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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
Mirrors the Vulkan T5-1 scaffold (ADR-0175)
for the HIP / AMD ROCm backend. Lands the static surfaces (header,
build wiring, kernel stubs, smoke test, CI matrix row, docs) so the
runtime + first-kernel PRs that follow have a stable base to land on.
libvmaf/include/libvmaf/libvmaf_hip.hdeclaringVmafHipState/VmafHipConfiguration/vmaf_hip_state_init/_import_state/_state_free/vmaf_hip_list_devices/vmaf_hip_available. All entry points return-ENOSYSuntil theruntime PR (T7-10b) lands.
libvmaf/src/hip/(common.{c,h},picture_hip.{c,h},dispatch_strategy.{c,h},meson.build) +libvmaf/src/feature/hip/(3 kernel stubs: adm / vif / motion +
feature_hip.h).enable_hipboolean option (default false) wired throughlibvmaf/src/meson.buildand the public-header install rule.libvmaf/test/test_hip_smoke.cexercisingevery public C-API entry point.
Build — Ubuntu HIP (T7-10 scaffold).docs/backends/hip/overview.md, ADR-0209,Research-0032; index + build-flags + rebase-notes + AGENTS.md +
CHANGELOG updated.
Zero hard runtime dependencies —
dependency('hip-lang', required: false)is silently absent on stock Ubuntu runners; ROCm SDK arrives with the
runtime PR.
Deep-dive deliverables (ADR-0108)
docs/research/0032-hip-applicability.md(AMD market share + ROCm 6.x Linux maturity check; ADR-0175 Vulkan precedent does not generalize to the AMD-specific runtime cost question).libvmaf/AGENTS.md§ "Rebase-sensitive invariants" gains the HIP scaffold contract row (5 sub-invariants pinning option type, ENOSYS contract, build-wiring placement, header purity).docs/rebase-notes.mdnew entry 0074 pinning the HIP-scaffold-vs-Netflix-upstream divergence.Test plan
Build — Ubuntu HIP (T7-10 scaffold)will exercise the scaffold against bit-rot every PR.What lands next
hipInit/hipGetDeviceCount/ stream creation;vmaf_hip_state_initreturns0on a real device.🤖 Generated with Claude Code