Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/workflows/libvmaf-build-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1105,14 +1105,22 @@ jobs:
if: matrix.backend == 'cuda'
shell: cmd
run: |
<<<<<<< HEAD
ninja -v -C core\build install
=======
ninja -v -C libvmaf\build install
>>>>>>> 24bb5daf89 (docs: post-merge-train sweep — VMAFx + core/ path refs, ADR index, state.md)

- name: Build libvmaf (SYCL)
if: matrix.backend == 'sycl'
shell: cmd
run: |
call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
<<<<<<< HEAD
ninja -v -C core\build install
=======
ninja -v -C libvmaf\build install
>>>>>>> 24bb5daf89 (docs: post-merge-train sweep — VMAFx + core/ path refs, ADR index, state.md)

# No test step — windows-2025 has no GPU. The whole point of
# this job is exercising the MSVC + CUDA / MSVC + oneAPI link
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/security-scans.yml
Original file line number Diff line number Diff line change
Expand Up @@ -133,11 +133,14 @@ jobs:
languages: python
queries: security-and-quality
config-file: ./.github/codeql-config.yml
<<<<<<< HEAD
# Python analysis does not require a build step; the explicit no-op
# below suppresses CodeQL's C++-oriented autobuild.sh which would
# fail trying to build the old libvmaf/ path (post-rename to core/).
- name: No-op build (Python analysis only)
run: echo "Python-only CodeQL scan — no C++ build required"
=======
>>>>>>> 24bb5daf89 (docs: post-merge-train sweep — VMAFx + core/ path refs, ADR index, state.md)
- uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4
with:
category: "/language:python"
Expand Down
28 changes: 28 additions & 0 deletions ai/sidecar/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# ai/sidecar — Agent invariants

This package implements the vmafx-node online training sidecar (ADR-0781).

## Load-bearing invariants for rebase / port agents

1. **Unix socket path constant** — `VMAFX_SIDECAR_SOCKET` / default
`/tmp/vmafx-sidecar.sock` must stay in sync between `online_trainer.py`
and `cmd/vmafx-node/online_feedback.go` (`feedbackSocketDefault`). If
either side drifts the sidecar silently stops receiving samples.

2. **Wire protocol** — the JSON envelope `{"job_id", "features", "true_score"}`
(Python server) and `FeedbackMessage{JobID, Features, TrueScore}` (Go client)
are a matched pair. Adding a field requires updating both sides
atomically in the same PR.

3. **ONNX opset** — `SGDEMATrainer.export_onnx()` uses `opset_version=17`
(ADR-0249 constraint). Do not bump without also updating the op-allowlist
audit and all downstream `onnxruntime-go` consumers.

4. **Replay buffer capacity default** — 10 000 samples is the ADR-0781
design point. Changing it requires updating the ADR, the Helm default
(`sidecar.trainer.replayBufferSize`), and the docs table in
`docs/ai/sidecar-online-training.md`.

5. **No NFL golden-data path** — this package has no connection to the
Netflix golden-data test fixtures or the `python/test/` assertion values.
Changes here cannot affect those tests.
19 changes: 19 additions & 0 deletions ai/sidecar/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# SPDX-License-Identifier: BSD-3-Clause-Plus-Patent
# Copyright 2026 Lusoris
#
# ai/sidecar — vmafx-node online training sidecar package.
#
# ADR-0781: sidecar online training — SGD + EMA + replay buffer.

from .online_trainer import OnlineTrainer, run_server
from .replay_buffer import ReplayBuffer, Sample
from .sgd_ema import SGDEMAConfig, SGDEMATrainer

__all__ = [
"OnlineTrainer",
"ReplayBuffer",
"SGDEMAConfig",
"SGDEMATrainer",
"Sample",
"run_server",
]
Loading
Loading