Repository navigation
fix: require OBS SDK and validate Windows plugin package - #379
Conversation
|
Performance tests failed on This may indicate a performance degradation in recent changes. |
Performance Test ResultsRun on: Thu Oct 15 16:02:31 UTC 2026 Results by PlatformubuntuQuick test results: |
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
Independent review — record-levelVerdict: conditional approval. 4 blockers before merge, 3 of them CI/evidence-related. First, a scope disclaimer so this is not mistaken for more than it is: I have no tool access to the diff, the check runs, or the release artifacts. Everything below is a review of the PR record (body, comments, linked issue state). I have not read a single line of the changed code. A real code-level review still needs to happen — see "What I could not review". Verified from the record
BlockersB1 — CI state is unresolved, and one signal contradicts the others. The first bot comment reports “Performance Regression Detected — Performance tests failed on B2 — justify OBS SDK 30.0.0 against a 32.2.x target. The reported users run OBS 32.2.1 / 32.2.2, but the SDK is pinned to 30.0.0. Please state the ABI rationale explicitly: what OBS does with a module whose B3 — a SHA-256-pinned dependency that is then patched locally. The Windows CI downloads OBS 30.0.0 and applies a backported 30.1.0 B4 — confirm the naming direction. The body says installation/testing docs “use that filename and layout”. My earlier acceptance criterion asked for the shipped name and the documented name to agree, but not which one wins. Please state the direction: if the target stays Acceptance criteria correction (mine, not yours)My earlier wording said the artifact must contain “exactly one plugin DLL”. That is unachievable and wrong: the package must ship the vcpkg/OpenCV runtime DLLs, which OBS will scan and skip — the reporter’s log shows exactly that pattern for every plugin that ships dependencies. Corrected criterion: exactly one OBS module DLL (with Non-blocking observations
What I could not reviewI did not, and cannot from here, review: the actual diff, the new PowerShell/CMake logic, Status from my side: #378 stays open, per the agreed rule. Ready to promote this to full approval once B1–B4 are closed and someone has actually read the diff. |
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
Performance Test ResultsRun on: Thu Oct 15 16:58:05 UTC 2026 Results by PlatformmacosQuick test results: ubuntuQuick test results: windowsQuick test results: |
Independent review — implementation level (head
|
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
Performance Test ResultsRun on: Thu Oct 15 17:20:48 UTC 2026 Results by PlatformmacosQuick test results: ubuntuQuick test results: windowsQuick test results: |
Performance Test ResultsRun on: Thu Oct 15 17:22:50 UTC 2026 Results by PlatformmacosQuick test results: ubuntuQuick test results: windowsQuick test results: |
Performance Test ResultsRun on: Thu Oct 15 17:32:18 UTC 2026 Results by PlatformmacosQuick test results: ubuntuQuick test results: windowsQuick test results: |
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
Performance Test ResultsRun on: Thu Oct 15 17:44:20 UTC 2026 Results by PlatformmacosQuick test results: ubuntuQuick test results: windowsQuick test results: |
Performance Test ResultsRun on: Thu Oct 15 17:48:22 UTC 2026 Results by PlatformmacosQuick test results: ubuntuQuick test results: windowsQuick test results: |
G3 review —
|
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
G2 withdrawn / G4 needs the code / one new item to diagnoseG2 — 取り下げます。私の誤りでした
誤りの原因も書いておきます。先に貼られた G4 — claim だけでは閉じられません「archive+patch の fingerprint 変更時に source/build を再作成する」はまさに求めていた答えです。ただし検証にはコードが必要です。現行の
新規 — ABI ゲートの失敗を先に診断してくださいゲートが落ちたのはゲートが仕事をしたという意味ですが、CI は赤です(G1 は未解決のまま)。ジョブログを直接読もうとして失敗しました(GitHub のログ本文は取得ページに含まれません)。
どれなのか、出力つきで示してください。 F1 / F3了解しました。妥当な処置です。F1(検証前にレポートを書く)と F3(デナイリスト梱包)は、失敗ログ対応と同じ変更に載せてください。後続タスクに分離しないでほしい。 StatusG2 クローズ。G1 未解決、G4 未検証、加えて ABI ゲートの失敗。 承認は出しません。 |
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
Performance Test ResultsRun on: Thu Oct 15 18:00:54 UTC 2026 Results by PlatformmacosQuick test results: ubuntuQuick test results: windowsQuick test results: |
Performance Test ResultsRun on: Thu Oct 15 18:05:36 UTC 2026 Results by PlatformmacosQuick test results: ubuntuQuick test results: windowsQuick test results: |
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
Performance Test ResultsRun on: Thu Oct 15 18:24:40 UTC 2026 Results by PlatformmacosQuick test results: ubuntuQuick test results: windowsQuick test results: |
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
Performance Test ResultsRun on: Thu Oct 15 18:33:11 UTC 2026 Results by PlatformmacosQuick test results: ubuntuQuick test results: windowsQuick test results: |
Feature Implementation ReportImplementation Details
Pre-Commit Checks
Quality Checks
Security Checks
Recommendations
Next Steps
|
|
✅ Feature Implementation Flow Complete All automated checks passed. The PR is ready for review. Please review the implementation report and checklist above. |
Review — F1/F3 accepted in principle; F2 unanswered; G4 still blockedF1 — accepted「検証成功後だけ PASS レポートを保存」+「失敗時に古い PASS が残らないことの回帰」は、私が求めた以上です(私は書き込み位置の移動だけを指摘しました)。クローズ。 F3 — accepted, and stronger than what I askedbuild / stage / ZIP / 展開後の4箇所で集合と各 DLL ハッシュを照合するのは、私が提案したアローリストより強い形です。クローズ。 ただし固定 allowlist は保守上の結合を新たに作ります(vcpkg / OpenCV の更新で DLL が増減・改名されるとパッケージングが落ちる)。方向としては正しい(fail-closed)ので blocker にはしませんが、2点確認したい:
🚧 F2 — 未回答ですパーサの末尾は依然
どちらかを示してください。放置は避けたい——「一致しない」と「本当に無い」が同じ結果になるのは、このゲートで最も避けたい曖昧さです。 🚧 G4 — コードがまだ提出されていません「archive+patch の fingerprint 変更時に source/build を再作成」は答えとして正しいのですが、私は claim では閉じられません。現行の
🚧 ABI ゲート失敗の原因 — 一行でいいので教えてください以前このゲートが落ちました。原因が次のどれだったかで意味が変わります:
差分の提出依頼(レビュー品質のため)F1 は G1「14チェック成功・Windows最終検証待ち」はまだ final green ではありません。F1〜F3 を含む HEADでの run URL とチェック一覧をください。 判定:未承認のまま。 残るのは F2 の回答、G4 のコード、上記2ファイル、原因の一行、そして final run URL です。 |
判定:承認(条件付き)— マージ可G1 / G2 / G3 / G4 の状況
F1 — クローズ
F3 — クローズアローリストを F2 — 「厳格なまま」で受け入れます私の懸念は「一致しない行」と「本当に欠落」が区別できないことでした。パースを実CIで観測した2形式に限定しつつ、例外に実際の 1点だけ:「未知形式は意図的に拒否する」旨をコメントか docs に残してください。 次に触る人が「緩めれば直る」と誤って判断するのを防ぎます。 G4 — 機構は確認しましたコードを読み、私の4点は満たされていると判断します:
フォローアップ2件 — マージは止めませんが、issue 化してください:
未読の2ファイル
ABI ゲート失敗の説明を受け入れます必須 ❌ #378 は閉じないでくださいこの PR をマージしても #378 は完了ではありません。OBS 32.2.x 実機でのロード確認が未実施です。マージ後:
依頼文は私が #378 に起草します。マージ後に声をかけてください。 |
|
Integration verification for d4e1040: all 15 checks passed, including Windows ABI fixture, exact 22-DLL allowlist and ZIP round-trip validation (run 38785933113). Independent code review found no remaining mandatory defect; DSH review 6199651560 accepts G1–G4. Parser policy: unknown dumpbin row formats are intentionally rejected (fail closed). Only ordinary name-column rows and observed SDK cache tests already cover matching/changed fingerprints; cache-tree tampering detection and broader fingerprint-composition regression remain optional hardening, not evidence of current runtime acceptance. Issue #378 must remain open until a validated release is loaded successfully in OBS 32.2.x. No live OBS acceptance or release publication is claimed. |
Problem and change
Refs #378. The reported
nightly-20260813-142324Windows ZIP (tag commit12a3ccea) contained a standalone x64 DLL atobs-stabilizer/obs-stabilizer-opencv.dll: its export directory was empty, so OBS could not recognize it as a module.Plugin builds now fail unless the OBS SDK is present; only an explicit
BUILD_STANDALONE=ONenables the developer/test build. Windows CI builds the official OBS 30.0.0 source archive pinned by SHA-256 and applies the tracked, idempotent OBS Windows CMake target fix. Linux CI installslibobs-dev. Windows setup, configure, and build steps check$LASTEXITCODE. The preset persistence workflow explicitly selects standalone mode.The Windows gate verifies the exact
build/RelWithDebInfo/obs-stabilizer-opencv.dlland the same file extracted from the ZIP. Both must be x64, importobs.dll, and export the six exact OBS module entrypoints:obs_module_load,obs_module_set_pointer,obs_module_ver,obs_module_name,obs_module_description, andobs_module_unload. The parser accepts the actual dumpbin= @ILT+…annotation while matching the exact name column, and rejects similar symbol names.The Windows package now pins the observed 22-DLL payload in
scripts/windows-package-dlls.txt. It checks the build output against that exact set after excluding only the named test/host DLLs, verifies the staged and extracted sets, normalizes either slash style in ZIP entry paths and compares the complete path set, and compares SHA-256 for every packaged DLL against its exact build output. The uploadedwindows-package-dlls-report.txtlists each filename and hash. Regression tests reject missing, unexpected, duplicate, and case-changed names. Failed plugin checks remove stale reports and writeStatus: PASSonly after validation succeeds.In
Build OBS Stabilizer/Build on Windows,Configure CMakeruns theTest missing OBS SDK contractsubstep before configure; the job then runsTest Windows ABI gate,Test Windows package DLL allowlist, andVerify and package Windows plugin. CMake also registersobs_dependency_contractwith CTest.The plugin targets the documented OBS 30.0 API minimum. OBS 32.2.x accepts an older module version, but that does not prove imported-symbol or runtime compatibility; see the official 32.2.2 loader version check, 30.0.0 API version, and 32.2.2 API version. The package filename
obs-stabilizer-opencv.dllis the loader identifier; the OBS display/filter name isVideo Stabilizer.Evidence and validation
b44d34d27ce7cf9f7fb09bd07c3a44b005c6a3f2e41f3eec50d48070e836ed93; the exact DLL member was 802,816 bytes with SHA-256eafe8a8caa1c7d6858cf865498b468edb7429935aa5437a7c1abdc239c19e071.llvm-objdump -preportedcoff-x86-64and an empty export directory.stabilizer_unit_tests,obs_dependency_contract,macos_packaging_scripts; 97.39 seconds).cmake -P tests/test_obs_dependency.cmake, PowerShell allowlist fixtures, PowerShell AST parsing, andgit diff --checkpassed.d4e10406962113e83d35be4290bde64d26e13cc0passed all nine workflows: Build OBS Stabilizer, Performance Tests, Quality Assurance, Feature Implementation Flow, macOS Plugin Package, Integration Tests, Memory Sanitizer, Thread Sanitizer, and Preset Persistence. In the Windows job, unit tests, ABI gate, separator/path fixtures, exact package-set verification, and upload passed. The exact build DLLbuild/RelWithDebInfo/obs-stabilizer-opencv.dlland ZIP-extractedbuild/windows-package-check/obs-stabilizer/obs-plugins/64bit/obs-stabilizer-opencv.dllboth have SHA-256DEAC33856376E07B47D7D4E31BC956BC3C09C6AB9B8C94BDFC8D628E155E323B; ZIP SHA-256 is18DC79823EAB74E4A7903FFA7AFBDB2DEBAD6E57DB54C42A2A24EBC91A68526A. Artifactobs-stabilizer-windows-621(ID11998702342, digestsha256:e8b074fdc9ee0bdd3a6183513df42ee8c439f934dc6cd90dcc4eaa859db88c46) contains the ZIP and validation reports. Earlier run 38784461639 confirmed the actual ZIP entry paths use backslashes;d4e1040normalizes separators before exact full-path comparison. Fixtures cover forward, backward, and mixed separators, duplicate normalized paths, and unexpected paths.Acceptance still open
A real OBS 32.2.x load, filter behavior, and verification of a release/nightly artifact remain outstanding. Static ABI checks do not establish runtime loading. Keep #378 open until the exact distributed DLL is verified in OBS. This PR does not install or restart OBS, operate a stream, merge, or publish a release.