T-HUB/docs/reports/rfp-judgment-final.md

61 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Editor v2 RFP — FINAL judgment (3 of 4; deepseek a no-show)
deepseek: 5 launch attempts, all died to infra (latest: lease expired at seq 17, no output). Excluded.
In hand: nemotron (19/25 preliminary), glm53 (24/25 preliminary), qwen38 (scored below).
## qwen38 (qwen3.8-27b) — assessment
Strengths:
- Landscape-native schema from v1 (`aspect: '16:9' 720p | '9:16' 1080×1920`, `fit: cover|contain`) —
satisfies the mandatory amendment glm53 needed, natively.
- Captions are schema-first: Speaches faster-whisper large-v3-turbo (correct model per research),
words JSON as source of truth, SRT/VTT/ASS derived, ASS burn-in re-timed through the EDL.
- Container generalization is disciplined: the in-flight produce payload becomes a degenerate
EdlProject → ONE validator, ONE render path; version discriminator + version-bump policy as the
explicit anti-NLE-creep defense.
- Job model reuses the in-flight producer lease pattern (`kind='assemble'`, SKIP LOCKED).
- Render: one process / one filter_complex / one encode, measured 1.2× RT; stream-copy honestly
rejected inside assemblies; cards as loop-PNG from the existing overlay renderer — no drawtext
at all; pre-spawn trim validation against probe durationMs; retry/timeout/scratch-cleanup policy.
- AI: Speaches + SigLIP + job runner on gpu-01 over Tailscale, worker stays pure FFmpeg; VRAM budget
table; license register incl. BLOCKED list (XTTS-v2 CPML, F5-TTS CC-BY-NC, RVM GPL-3, Ultralytics AGPL-3);
auto-editor as SUGGESTED cuts with human confirm.
- UI: only new files, primitives named as reused, mobile single-column with chevron reorder, ≥44 px
targets, one-thumb flow, 8 documented shortcuts, exact brand tokens.
- Risk honesty: 5 risks with mitigations; "preview ≈ final"; measured-vs-EST labeling.
Weaknesses: stale migration number (036 vs actual next); no explicit schema-drift guard; no
render-CPU-contention semaphore; thinner canvas/revision formalism than glm53.
## Final scoring (1–5 per criterion)
| Criterion | nemotron | glm53 | qwen38 |
|---|---|---|---|
| Correctness vs real constraints | 3.5 | 4.5 | 4.5 |
| Concreteness (files/jobs/models) | 4 | 5 | 5 |
| Speed-to-value for crews | 4 | 4.5 | 4.5 |
| Look-and-feel respect | 4 | 5 | 5 |
| Risk honesty | 3.5 | 5 | 5 |
| **Total** | **19/25** | **24/25** | **24/25** |
## Verdict
glm53 and qwen38 tie at 24/25. Tie-break on the deltas: glm53's only mandatory amendment was a SCHEMA
change (portrait-only canvas); qwen38's gaps are ADDITIVE process guards.
**Decision: adopt qwen38 as the editor-v2 plan base, with two glm53 amendments folded in:**
1. glm53's mirror-file + mirror-assert convention for the EDL schema (API↔worker drift guard).
2. glm53's render semaphore (≤2 concurrent niced renders) so batch renders never starve the live compositor.
nemotron: not adopted (wrong transcription stack, captions missing, matting confusion).
deepseek: no-show; may be re-run later for a second opinion but is not blocking.
## Implementation status
- S1 EDL schema + /video/edl API + 043 store: SHIPPED (media-control/edl.ts, EdlController, 043)
- L1 assemble lane: SHIPPED (044 claim widening, runner probe+assemble lanes, assemble-builder,
overlay-png cards, ffprobe port) — e2e verified (2 clips + card + overlay → derived asset)
- M1 editor UI: queued
- M2 transcription lane: sidecar deployed (Speaches-compatible faster-whisper on moxexleyhp1-1 GPU,
http://100.70.240.7:9000) — hub wiring pending
- v1.5 search (SigLIP): sidecar deferred — TEI 1.8 cannot parse google SigLIP configs; needs a newer
TEI or the planned FastAPI wrapper