Skip to content

Commit 13d4332

Browse files
committed
feat: reconcile deepfake detection surface
1 parent 185c6f5 commit 13d4332

13 files changed

Lines changed: 212 additions & 37 deletions

.ai/research/2026-05-17/CONTINUE_FROM_HERE.md

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
# OpenCut Research — CONTINUE FROM HERE (for Pass 77)
1+
# OpenCut Research — CONTINUE FROM HERE (for Pass 78)
22

33
**This file's purpose:** if a future autonomous research session starts up, **read this first** before re-doing any of the work already on disk.
44

5-
**Last update:** 2026-05-18 (after Pass 76; Passes 1-34 all ran on 2026-05-17)
6-
**Session state:** all mandated artefacts exist; Passes 4-75 are summarized in ROADMAP.md and PROJECT_CONTEXT.md. Pass 76 closed F220-F222 (RVC backend execution, natural-language AI auto-color grading, and cut-point pacing/genre-template analysis). This file documents deferred research/product work for a future Pass 77+, not a broken or incomplete research run.
5+
**Last update:** 2026-05-18 (after Pass 77; Passes 1-34 all ran on 2026-05-17)
6+
**Session state:** all mandated artefacts exist; Passes 4-75 are summarized in ROADMAP.md and PROJECT_CONTEXT.md. Pass 76 closed F220-F222 (RVC backend execution, natural-language AI auto-color grading, and cut-point pacing/genre-template analysis). Pass 77 closed F224 (AI-facing deepfake detector alias plus evidence/report metadata). This file documents deferred research/product work for a future Pass 78+, not a broken or incomplete research run.
77

88
---
99

1010
## 1. State at hand-off
1111

1212
- **Repo branch:** `main`; the Pass 35 dependency-floor commit pushed to `origin/main` successfully from this machine. Continue to verify `git status --short --branch` at session start before assuming the working tree is clean.
1313
- **Last shipped version:** v1.32.0 (light theme + appearance toggle, 2026-05-09).
14-
- **Live counts:** 1,378 routes / 101 blueprints / 537 core modules / 189 Python test files / 2 Vitest panel test files / 47 model cards / 118 public `check_*` probes (86 `check_*_available`) / 100 `FeatureRecord` entries / 39 curated MCP tools / 1,321 opt-in extended MCP tools / 110 OpenAPI-typed endpoints / 18 CEP host functions (2 CEP-only).
14+
- **Live counts:** 1,379 routes / 101 blueprints / 537 core modules / 189 Python test files / 2 Vitest panel test files / 47 model cards / 118 public `check_*` probes (86 `check_*_available`) / 100 `FeatureRecord` entries / 39 curated MCP tools / 1,322 opt-in extended MCP tools / 110 OpenAPI-typed endpoints / 18 CEP host functions (2 CEP-only).
1515
- **F-numbers in ledger:** F001-F272 (Pass 1 added F121-F190, Pass 2 added F191-F260, Pass 3 added F261-F272).
1616
- **Wave letters in ledger:** A-M shipped; N-T planned in ROADMAP.md and now F-number-tiered by `.ai/research/2026-05-18/WAVE_N_T_F_NUMBER_LEDGER.md` (F180).
1717

18-
### Pass 77 entry point
18+
### Pass 78 entry point
1919

20-
1. **Continue the remaining queue.** F121/F122/F127a/F130/F133/F135, F123, F126, F128, F137, F139, F140, F147, F176 (+follow-up), F177, F178, F180, F181, F184, F185, F192, F193, F194, F196, F198, F200, F201, F203, F206, F210, F211, F212, F213, F214, F215, F216, F217, F220, F221, F222, F223, F225, F226, F227, F229, F231, F233, F234, F238, F239, F242, F249, F250, F251, F254, F255, F256, F257, F258, F259, F260, F263, F267, F271, F272 are closed. F205 still needs a runner where coverage can finish. F182 (issue seeder) may still depend on a working `gh` auth context. F252.1 and the F252.2 dispatcher slice are complete but F252 remains open for live WebView/in-Premiere UDT result capture. The next local-verifiable Later candidate is F224 (deepfake detector) unless a model-integration item needs fresh external research first. F268 requires an Adobe developer account/storefront process. Larger Pass-1 Now items still requiring model integration: F149/F162/F163/F167/F169.
20+
1. **Continue the remaining queue.** F121/F122/F127a/F130/F133/F135, F123, F126, F128, F137, F139, F140, F147, F176 (+follow-up), F177, F178, F180, F181, F184, F185, F192, F193, F194, F196, F198, F200, F201, F203, F206, F210, F211, F212, F213, F214, F215, F216, F217, F220, F221, F222, F223, F224, F225, F226, F227, F229, F231, F233, F234, F238, F239, F242, F249, F250, F251, F254, F255, F256, F257, F258, F259, F260, F263, F267, F271, F272 are closed. F205 still needs a runner where coverage can finish. F182 (issue seeder) may still depend on a working `gh` auth context. F252.1 and the F252.2 dispatcher slice are complete but F252 remains open for live WebView/in-Premiere UDT result capture. The next local-verifiable Later candidates are F228/F230 (review-bundle voice notes and HLS rendition) unless a model-integration item needs fresh external research first. F268 requires an Adobe developer account/storefront process. Larger Pass-1 Now items still requiring model integration: F149/F162/F163/F167/F169.
2121
2. **F198 is now enforced, not only documented.** `CEP_UXP_PARITY_MATRIX.md` maps all 18 `ocXxx` JSX functions and identifies only two truly CEP-only calls; `opencut/_generated/cep_uxp_parity.json` plus `tests/test_cep_uxp_parity_catalogue.py` keep that claim in sync with `host/index.jsx`.
2222
3. **Complete F179** full `features.md` reconciliation; this remains the largest knowledge debt.
2323
4. **Run a Python 3.11/3.12/3.13 install matrix** for `[all]`; this cannot be fully proven from this VM's single Python 3.12 runtime.
@@ -236,6 +236,18 @@
236236
| Validation | PASS — `py_compile` for touched modules/tests and focused AI editing/content tests (`32 passed`). |
237237
| Files to review | `opencut/core/voice_conversion.py`, `opencut/core/voice_convert.py`, `opencut/core/auto_color.py`, `opencut/core/pacing_analysis.py`, `opencut/routes/ai_content_routes.py`, `opencut/_generated/route_manifest.json`, `tests/test_ai_editing.py`, `tests/test_ai_content.py`, and roadmap/state docs. |
238238

239+
### Pass 77 checkpoint
240+
241+
| Item | Status |
242+
|---|---|
243+
| F224 | **DONE** — deepfake detection is now reconciled with the AI command surface and authenticity-report contract. |
244+
| AI route | `/ai/deepfake-detect` aliases the existing `/video/detect-deepfake` route, matching the command-palette route. |
245+
| Detection metadata | Segment output now includes `faces_detected` and evidence tags; top-level output includes detector version, methods, threshold, segment duration, flagged-segment count, and review guidance. |
246+
| Report metadata | Authenticity reports now persist detector version, methods, flagged count, and review recommendation. |
247+
| Generated artifacts | Route manifest regenerated to 1,379 routes / 101 blueprints; opt-in extended MCP catalogue regenerated to 1,322 tools. |
248+
| Validation | PASS — `py_compile`, focused deepfake tests (`12 passed`), focused Ruff, and route/MCP generated checks. |
249+
| Files to review | `opencut/core/deepfake_detect.py`, `opencut/routes/video_vfx_routes.py`, `opencut/_generated/route_manifest.json`, `opencut/_generated/mcp_extended_tools.json`, `tests/test_video_vfx.py`, and roadmap/state docs. |
250+
239251
### Pass 75 checkpoint
240252

241253
| Item | Status |
@@ -402,7 +414,7 @@
402414
| Item | Status |
403415
|---|---|
404416
| F194 | **DONE** — opt-in generated MCP route tools now extend the curated MCP surface without changing the default tool list. |
405-
| Generated catalogue | `opencut/_generated/mcp_extended_tools.json` contains 1,321 `opencut_route_*` tools generated from `opencut/_generated/route_manifest.json`, `opencut/_generated/api_aliases.json`, and the OpenAPI response-schema map. |
417+
| Generated catalogue | `opencut/_generated/mcp_extended_tools.json` contains 1,322 `opencut_route_*` tools generated from `opencut/_generated/route_manifest.json`, `opencut/_generated/api_aliases.json`, and the OpenAPI response-schema map. |
406418
| Runtime opt-in | `opencut-mcp-server --extended-tools` or `OPENCUT_MCP_EXTENDED_TOOLS=1` exposes generated tools; default `tools/list` remains the 39 curated tools. |
407419
| Dispatch | Generated tools route through `mcp_extended_tools.invoke_extended_tool()`: path params are top-level arguments, GET query params use `query`, mutating JSON payloads use `body`, and generated metadata is tagged lower-priority. |
408420
| Guard tests | `tests/test_mcp_extended_tools.py` pins committed-vs-live generation, opt-in behavior, generated metadata, disabled-call errors, and generated dispatch for query/body/path-param routes. |
@@ -671,7 +683,7 @@ This section is preserved because Pass 3/4 used it as the checklist. See §7 and
671683

672684
### 3.1 Quick wins (S effort)
673685

674-
1. **Run `python -m opencut.tools.dump_route_manifest --check`** to verify the cached 1,378-route figure against live `url_map`. Possible drift after future route commits.
686+
1. **Run `python -m opencut.tools.dump_route_manifest --check`** to verify the cached 1,379-route figure against live `url_map`. Possible drift after future route commits.
675687
2. **Run `python scripts/release_smoke.py --json`** end-to-end and capture which steps actually fail. The v4.3 audit listed several failing steps that may have been fixed by the F099/F098/F112 commits.
676688
3. **Verify cross-platform launcher files exist**: `OpenCut-Server.command` (macOS), `OpenCut-Server.sh` (Linux). Pass 2 inferred from Wave I but did not list them. Run `ls Z:/repos/OpenCut | grep Server` and `chmod +x` if needed.
677689
4. **Read `extension/com.opencut.uxp/uxp-api-notes.md`** — internal CEP-vs-UXP comparison the team maintains. Cross-reference against Pass 2 UXP subagent §1-§10 findings.
@@ -962,7 +974,7 @@ Pass 8 closed the route/check readiness generation item and the registry-owned a
962974

963975
### Live correction
964976

965-
`/system/feature-state` now exposes 100 feature records. The generated F191 manifest covers direct route functions that visibly call public `checks.py` probes, and F196 adds curated registry rows plus contract tests for the model-card/check surfaces the scanner cannot infer. It is still not a full per-route readiness matrix for all 1,378 routes.
977+
`/system/feature-state` now exposes 100 feature records. The generated F191 manifest covers direct route functions that visibly call public `checks.py` probes, and F196 adds curated registry rows plus contract tests for the model-card/check surfaces the scanner cannot infer. It is still not a full per-route readiness matrix for all 1,379 routes.
966978

967979
### Remaining immediate work
968980

.ai/research/2026-05-17/FEATURES_RECONCILIATION.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ Sampled 21.x items — most map directly to **Wave R/S/T** in ROADMAP.md (lip-sy
8181
|---|---|---|
8282
| 27.1 | C2PA / Content Credentials sidecar | ✅ SHIPPED (F110, upgrade to 2.3 is F140) |
8383
| 27.2 | AI watermarking on generated audio | ✅ SHIPPED (K1.1 AudioSeal) |
84-
| 27.3 | Deepfake / fake-video detector | ❓ UNCLEARwould be a J2.6 SafeVision-adjacent feature. → **F224** |
84+
| 27.3 | Deepfake / fake-video detector | ✅ SHIPPEDPass 77 closed **F224** with `/ai/deepfake-detect`, evidence tags, and authenticity-report metadata. |
8585

8686
### Category 74: Timeline Operations (sampled in raw read earlier)
8787

@@ -166,7 +166,7 @@ The high SHIPPED rate validates that OpenCut has executed against its 2026-04 pl
166166
| [x] F221 | 1.6 | AI Auto-Color Grading (LLM-driven mood map → LUT + adjustments) (closed Pass 76) |
167167
| [x] F222 | 1.12 | AI Pacing & Rhythm Analysis (genre-template comparison) (closed Pass 76) |
168168
| F223 | 20.6 | RTL / CJK / Bidi caption rendering validation suite |
169-
| F224 | 27.3 | Deepfake / fake-video detector (adjacent to J2.6 SafeVision) |
169+
| [x] F224 | 27.3 | Deepfake / fake-video detector (adjacent to J2.6 SafeVision) (closed Pass 77) |
170170

171171
---
172172

.ai/research/2026-05-17/FEATURE_BACKLOG_ADDENDUM.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Format: ID — title — what — source(s) — effort (S/M/L/XL) — fit (yes/c
6868
| [x] F221 | AI Auto-Color Grading (LLM-driven mood→LUT) | Closed in Pass 76 — `/ai/auto-grade` now accepts natural-language `intent` + `intensity` through `ai_color_intent.py` and exposes `/ai/color-intents` | FEATURES_RECONCILIATION §3 | M | Later |
6969
| [x] F222 | AI Pacing & Rhythm Analysis (genre templates) | Closed in Pass 76 — `/ai/pacing-analysis` now accepts cut points + duration, preserves file-scene analysis, and exposes `/ai/pacing-genres` | FEATURES_RECONCILIATION §3 | M | Later |
7070
| [x] F223 | RTL / CJK / Bidi caption rendering validation suite | Closed in Pass 46 and extended by Pass 47 — `opencut.tools.caption_unicode_validation --json --check` validates RTL, mixed bidi, Indic, and no-space CJK fixtures across SRT, ASS, and burn-in ASS export paths; F242 now supplies no-space CJK wrapping | FEATURES_RECONCILIATION §3 + niche AI §3 | M | Next |
71-
| F224 | Deepfake / fake-video detector | features.md #27.3; adjacent to J2.6 SafeVision | FEATURES_RECONCILIATION §3 | L | Later |
71+
| [x] F224 | Deepfake / fake-video detector | Closed in Pass 77 — `/ai/deepfake-detect` aliases the shipped detector and report output now carries evidence, detector metadata, flagged segments, and review guidance | FEATURES_RECONCILIATION §3 | L | Later |
7272

7373
## E. Collaboration / review-bundle extensions (Frame.io subagent)
7474

@@ -130,7 +130,7 @@ Format: ID — title — what — source(s) — effort (S/M/L/XL) — fit (yes/c
130130
| **Now** | F205, F251, F259 | 3 |
131131
| **Done locally after Pass 23 wrap-up** | F191, F195, F197, F199, F202, F204, F207, F208, F209, F218, F219, F236, F237, F240, F241, F243, F244 | 17 |
132132
| **Next** | [x] F192, [x] F194, [x] F198, [x] F200, [x] F201, [x] F203, [x] F211, [x] F213, [x] F214, [x] F215, [x] F216, [x] F217, [x] F223, [x] F225, [x] F226, [x] F227, [x] F229, [x] F231, [x] F233, [x] F234, [x] F238, [x] F239, [x] F242, [x] F249, [x] F250, F252 (F252.1/F252.2 dispatcher done), [x] F254, [x] F255, [x] F256, [x] F257, [x] F258, [x] F260 | 32 |
133-
| **Later** | [x] F193, [x] F196, [x] F206, [x] F210, [x] F212, [x] F220, [x] F221, [x] F222, F224, F228, F230, F232, F235, F245, F246, F247, F248, F253 | 10 open + F193/F196/F206/F210/F212/F220/F221/F222 closed |
133+
| **Later** | [x] F193, [x] F196, [x] F206, [x] F210, [x] F212, [x] F220, [x] F221, [x] F222, [x] F224, F228, F230, F232, F235, F245, F246, F247, F248, F253 | 9 open + F193/F196/F206/F210/F212/F220/F221/F222/F224 closed |
134134

135135
**Total Pass-2 F-numbers: 70** (F191-F260).
136136
**Total project F-numbers: 140** (F121-F260 from Pass 1 + Pass 2; plus the pre-existing F001-F120 from v4.3).

.ai/research/2026-05-17/PRIORITIZATION_MATRIX.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ The second autonomous research pass on 2026-05-17 added 70 more F-numbers across
183183

184184
**Next (32 items):** [x] F192, [x] F194, [x] F198, [x] F200, [x] F201, [x] F203, [x] F211, [x] F213, [x] F214, [x] F215, [x] F216, [x] F217, [x] F223, [x] F225, [x] F226, [x] F227, [x] F229, [x] F231, [x] F233, [x] F234, [x] F238, [x] F239, [x] F242, [x] F249, [x] F250, F252 (F252.1 scaffold and F252.2 dispatcher done; UDT/live WebView cutover remains), [x] F254, [x] F255, [x] F256, [x] F257, [x] F258, [x] F260. Includes the **F143 conductor + F252 UXP/WebView migration + F225-F229/F231/F233/F234 collaboration extensions** as parallel flagship tracks.
185185

186-
**Later (10 open items + F193/F196/F206/F210/F212/F220/F221/F222 closed):** [x] F193, [x] F196, [x] F206, [x] F210, [x] F212, [x] F220, [x] F221, [x] F222, F224, F228, F230, F232, F235, F245, F246, F247, F248, F253. Includes deferred OSS-quality items (Dolby Vision pipeline, ADM BWF Atmos, IMF builders) that wait on F215 fuzz + F218 import-order regression coverage.
186+
**Later (9 open items + F193/F196/F206/F210/F212/F220/F221/F222/F224 closed):** [x] F193, [x] F196, [x] F206, [x] F210, [x] F212, [x] F220, [x] F221, [x] F222, [x] F224, F228, F230, F232, F235, F245, F246, F247, F248, F253. Includes deferred OSS-quality items (Dolby Vision pipeline, ADM BWF Atmos, IMF builders) that wait on F215 fuzz + F218 import-order regression coverage.
187187

188188
**Two regulatory deadlines bumped to Now:**
189189
- F202 Apple notarisation (Homebrew Cask mandatory Sept 1, 2026)

.ai/research/2026-05-17/TEST_COVERAGE_GAPS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ Pass 75 closed **F212 — WPF installer test suite**. `installer/tests/OpenCut.I
7575

7676
Pass 76 closed **F220-F222** with focused unit and route coverage for the previously unclear voice/color/pacing features. `tests/test_ai_editing.py` now pins RVC command construction and external backend invocation; `tests/test_ai_content.py` now pins natural-language auto-color intent grading, pacing genre template exposure, and cut-point pacing route acceptance.
7777

78+
Pass 77 closed **F224** with focused deepfake detector coverage. `tests/test_video_vfx.py` now pins segment evidence metadata, authenticity-report metadata, and the `/ai/deepfake-detect` alias used by the command palette.
79+
7880
### 3.7 Performance / regression benchmarks
7981

8082
The F128 FFmpeg filter regression suite is *Now* tier but not yet shipped. Once it lands, it should also cover:

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
## [Unreleased]
44

5+
### Added — Deepfake Detection Reconciliation
6+
7+
- Closed F224 by registering `/ai/deepfake-detect` as the AI-facing route for the existing deepfake detector.
8+
- Added detector/report metadata for evidence tags, face counts, detector version, analysis methods, flagged segments, and review guidance.
9+
510
### Added — AI Feature Reconciliation
611

712
- Closed F220-F222 by wiring the previously unclear AI voice/color/pacing features into primary APIs.

0 commit comments

Comments
 (0)