Skip to content

feat(webv2): MiniMax H3 Ref2VA reference mode - #163

Open
lstein wants to merge 4 commits into
feat/minimax-h3-ref2va-backendfrom
feat/minimax-h3-ref2va-webv2
Open

feat(webv2): MiniMax H3 Ref2VA reference mode#163
lstein wants to merge 4 commits into
feat/minimax-h3-ref2va-backendfrom
feat/minimax-h3-ref2va-webv2

Conversation

@lstein

@lstein lstein commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Summary

Third of three stacked PRs (on #162): the webv2 reference mode. The transformer decides the task — selecting a Ref2VA single-file transformer switches the Video panel to an ordered reference list.

  • Effective variant: resolveEffectiveVideoModel — for MiniMax H3 the task variant lives on the selected transformer checkpoint; every policy lookup resolves through it. MINIMAX_H3_REF2VA config (modes ['reference'], 4-step Ref2V Turbo accelerator, caps 3 videos / 9 images) is registered, so a known ref2va transformer never falls back to fl2va's modes.
  • State: VideoSettings.references — one ordered array of video (clip + conditioning selector video+audio / video only / audio only) and image (detail max/match) references; mutually exclusive with first/last frames and the source video across setters, normalization, healing, recall, gallery-delete sweep and its optimistic rollback, and Send-to-Video/Extend actions.
  • Transitions: the transformer slot is a mode-changing control — getVideoTransformerSelectionResult runs the full media/accelerator reconciliation (with a toast for what was cleared); widget sync drops references orphaned by an uninstalled ref2va transformer; reset-to-defaults clears them explicitly.
  • Graph: per-reference descriptor nodes → chained collect nodes (order is contractual; verified against the Collect invocation's append semantics) fanned to Reference Conditioning and the Prompt node; trim bounds in the estimate's tail window compile as negative indices (the extend path's rule) so VFR estimate overshoot cannot fail the run; minimax_h3_ref2v generation mode; ordered reference metadata.
  • Recall: components recalled before accelerator derivation (the recorded transformer decides which Turbo qualifies); ordered reference re-hydration drops deleted media order-preserving; post-hydration reconciliation against the recalled transformer's policy.
  • UI: VideoReferenceListField — numbered cards (thumbnail, per-video conditioning + trim, per-image detail, reorder/remove), gallery drag + file upload, cap counters.
  • Shared backend bits owned here: core_metadata 2.5.0 (minimax_h3_references + the minimax_h3_ref2v mode), bundled workflows re-stamped, new Reference to Video - MiniMax H3 template (registry count 17→18), docs, openapi.json/schema.ts, browser perf baseline re-captured.

Testing

  • 6652 webv2 node tests + 894 browser tests green (incl. new policy/settings/graph/recall suites); full lint + check:architecture perf gate green.
  • Workflow-registry tests validate the new template's node versions and inputs.
  • Adversarial fresh-context review (state lifecycle, effective-variant leaks, collect ordering, recall fuzzing, i18n): all confirmed findings fixed in this PR.

Deferred follow-ups: live GPU smoke with the real ~21 GB starter; standalone audio-file references (the packing path already ships — ingestion only); drag-reorder for the reference list.

Stack

  1. feat(mm): recognize MiniMax H3 Ref2VA models #161 — recognition
  2. feat(backend): MiniMax H3 Ref2VA generation — packing, conditioning, invocations #162 — backend generation
  3. → this PR — webv2 reference mode

🤖 Generated with Claude Code

https://claude.ai/code/session_01S4B5exWsbC2z2Uu2tA167A

The webv2 half of Ref2VA support: the transformer decides the task, and a
Ref2VA transformer switches the Video panel to an ordered reference list.

Core:
- resolveEffectiveVideoModel: for MiniMax H3 the task variant lives on the
  selected single-file transformer; every policy lookup resolves through
  it. MINIMAX_H3_REF2VA config (modes: ['reference'], 4-step Ref2V Turbo
  accelerator, reference caps 3 videos / 9 images) registered under
  variants - a known ref2va transformer never falls back to fl2va's modes.
- VideoSettings.references: one ordered array of video (VideoSourceClip +
  conditioning selector video_audio/video/audio) and image (detail
  max/match) references; mutually exclusive with first/last frames and the
  source video; normalization/caps/deep-clone/deleted-media sweep wired.
- resolveVideoMode: references win; new 'reference' generation mode.
- getVideoTransformerSelectionResult: the transformer slot is a
  mode-changing control, so its setter runs the full media/accelerator
  reconciliation. Widget sync drops references orphaned by an uninstalled
  ref2va transformer. Turbo auto-pick is task-aware (ref2v-token repack
  required for ref2va, excluded for fl2va).
- Graph builder: per-reference descriptor nodes into CHAINED collect nodes
  (order is contractual), fanned to Reference Conditioning AND the Prompt
  node; no frame conditioning; minimax_h3_ref2v generation mode; ordered
  reference metadata for recall.

UI: VideoReferenceListField (numbered cards, thumbnails, per-video
conditioning + trim, per-image detail, reorder/remove, gallery drag +
file upload), transformer picker gate removed.

Recall: minimax_h3_ref2v recognized; ordered reference re-hydration with
missing media dropped order-preserving; post-hydration reconciliation
against the recalled transformer's policy.

Backend (shared): core_metadata 2.5.0 gains minimax_h3_references +
the minimax_h3_ref2v generation mode; bundled H3 workflows re-stamped;
new 'Reference to Video - MiniMax H3' template (registry count 17 -> 18);
docs updated; openapi/schema.ts regenerated; browser perf baseline
re-captured.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S4B5exWsbC2z2Uu2tA167A
@lstein
lstein force-pushed the feat/minimax-h3-ref2va-backend branch from 66d3950 to 7709468 Compare August 27, 2026 13:50
@lstein
lstein force-pushed the feat/minimax-h3-ref2va-webv2 branch from 392804b to f05d1e1 Compare August 27, 2026 13:50
lstein and others added 3 commits August 29, 2026 20:23
…f2va-webv2

# Conflicts:
#	invokeai/frontend/webv2/performance/browser-baseline.json
#	invokeai/frontend/webv2/src/features/video/core/videoPolicies.ts
#	invokeai/frontend/webv2/src/workbench/image-actions/videoRecall.ts
The minimax_h3_denoise node counts sigma grid points (terminal zero
included), so N node steps run N-1 model evaluations. The panel's steps
setting — and the accelerator configs' distilled step counts — mean model
evaluations, so the 4-step turbo LoRAs were silently running 3 evaluations.
Add the terminal grid point in the graph builder; metadata keeps the panel
value so recall round-trips.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S4B5exWsbC2z2Uu2tA167A
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant