feat(video-validation): add lightweight semantic pre-validator contract - #42
feat(video-validation): add lightweight semantic pre-validator contract#42zedarvates wants to merge 13 commits into
Conversation
|
Diagnostic SonarQube Cloud — 2026-08-30 The previous bot comment reporting “The last analysis has failed” is stale relative to the exact current PR head GitHub check
No functional code or Sonar configuration change is required from this incident. Keep the PR draft until its separate targeted/self-hosted validation gate is completed. No merge is authorized by this note. |
Targeted semantic-prevalidator gate — passedA dedicated public GitHub Actions gate now validates this PR without using the personal/self-hosted runner. Evidence:
During setup, The one-shot proof workflow used during diagnosis has been removed. Keep PR #42 draft; this records the targeted Python validation only and does not authorize merge. |
|
zedarvates
left a comment
There was a problem hiding this comment.
Validation ciblée exécutée sur le head exact 1a01b01dd0f4c4c7fafd1440fe3eb86fc48bf109.
Preuves :
- GitHub Actions
Semantic Prevalidator CIrun33540403086:python -m pytest -q tests/test_semantic_prevalidator.py→10 passed in 0.06s. - Exécution locale indépendante, reconstruite à partir des fichiers exacts de la PR sans accès réseau :
python3 -m pytest -q tests/test_semantic_prevalidator.py→10 passed in 0.09s. - Compilation ciblée également verte dans le run CI (
python -m compileall -q src/video_validation tests/test_semantic_prevalidator.py).
Aucun défaut fonctionnel n'a été révélé par le test ciblé ; aucune correction de code n'est donc justifiée. La frontière reste inchangée : un PASS sémantique n'est pas une approbation finale du rendu et n'écrase pas les validateurs structurels, identité, temporels ou sécurité.



Summary
Implements the provider-agnostic semantic gate tracked in #41, without bundling ViCLIP weights or adding a hard dependency:
VideoTextScorerprotocol for ViCLIP-like backends;SemanticPrevalidatorwith PASS / ESCALATE / UNCERTAIN;force_refresh=Trueexplicitly bypasses the semantic cache;Safety/quality boundary
A semantic PASS is not a final render approval. Structural, identity, temporal and safety validators can still reject/escalate the clip. This module only decides whether a heavy semantic VLM call can potentially be skipped.
Validation status
StoryCore has no general Python PR workflow; its only GitHub workflow is scoped to
apps/storycore-harbour/**. Keep this PR draft until targeted local/self-hosted tests are run. No hosted workflow is added here.Targeted command:
pytest -q tests/test_semantic_prevalidator.pyNext step
Add an optional ViCLIP-L/14 provider in an environment where the model/runtime is available, then benchmark heavy-VLM calls avoided vs false-PASS rate on the fixed StoryCore clip set.
Tracks #41.