Skip to content

[bugfix] Classify new config/sampling fields in schema parity inventory - #1446

Merged
SolitaryThinker merged 1 commit into
hao-ai-lab:mainfrom
Godmook:fix/schema-parity-inventory
Jun 10, 2026
Merged

[bugfix] Classify new config/sampling fields in schema parity inventory#1446
SolitaryThinker merged 1 commit into
hao-ai-lab:mainfrom
Godmook:fix/schema-parity-inventory

Conversation

@Godmook

@Godmook Godmook commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Purpose

Some CI is currently red on fastvideo/tests/api/test_schema_parity_inventory.py. PR #1349 (Flux2 Klein Port) added new fields to SamplingParam, PipelineConfig,and the Flux2 pipeline configs but did not classify them in docs/design/inference_schema_parity_inventory.yaml. (I saw this issue at while doing CI at PR #1245 )
The parity tests assert that every dataclass field is accounted for in the inventory, so the unclassified fields make three tests fail:

  • test_sampling_param_base_fields_are_classified
  • test_pipeline_config_base_fields_are_classified
  • test_pipeline_config_extension_fields_are_classified

This PR only updates the inventory to re-establish parity; no runtime behavior changes.

Fixes #

Changes

Classify the five unclassified fields in inference_schema_parity_inventory.yaml:

Surface Status bucket Fields
sampling_param_base internal_only latents, max_sequence_length
pipeline_config_base internal_only scheduler_step_in_fp32
pipeline_config_extensions preset_owned (sources: Flux2 configs) flux2_text_encoder_type, text_encoder_out_layers
  • latents / max_sequence_length / scheduler_step_in_fp32 are runtime/debug
    plumbing, so they go under internal_only (note-only, not part of the public
    typed inference API).
  • flux2_text_encoder_type / text_encoder_out_layers are model-specific config,
    so they go under preset_owned with sources pointing to
    Flux2PipelineConfig / Flux2KleinPipelineConfig, matching the existing
    text_encoder_class pattern.
  • These are conservative classifications chosen to avoid the typed-schema target
    validation in test_inventory_targets_exist_in_typed_schema; maintainers can
    re-bucket to a public status later if any of these should be user-facing.

Test Plan

pytest fastvideo/tests/api/test_schema_parity_inventory.py -v

Verified that, for every affected surface, the set of dataclass fields exactly
matches the set of inventory-classified fields (the assertion these tests make).

Test Results

Field-set parity (before → after)
sampling_param_base   : missing {latents, max_sequence_length}  -> {}  (75 == 75)
pipeline_config_base  : missing {scheduler_step_in_fp32}        -> {}  (26 == 26)
pipeline_config_exts  : missing {flux2_text_encoder_type,
                                 text_encoder_out_layers}        -> {}  (87 == 87)
fastvideo_args        : already in parity (81 == 81), unchanged
sampling_param_exts   : already in parity ({} == {}), unchanged

YAML parses cleanly; pre-commit run --files docs/design/inference_schema_parity_inventory.yaml passes (codespell/yaml/format).

Checklist

  • I ran pre-commit run --all-files and fixed all issues
  • I added or updated tests for my changes
  • I updated documentation if needed
  • I considered GPU memory impact of my changes

For model/pipeline changes, also check:

  • I verified SSIM regression tests pass
  • I updated the support matrix if adding a new model

Adds latents, max_sequence_length, scheduler_step_in_fp32, flux2_text_encoder_type, text_encoder_out_layers.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the inference_schema_parity_inventory.yaml design document to include several new configuration options and internal-only parameters, such as scheduler_step_in_fp32, latents, max_sequence_length, and Flux2-specific text encoder settings. There are no review comments to evaluate, and I have no additional feedback to provide.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@mergify mergify Bot added type: bugfix Bug fix scope: docs Documentation labels Jun 10, 2026
@mergify

mergify Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Merge Protections

Your pull request matches the following merge protections and will not be merged until they are valid.

🟠 PR merge requirements

Waiting for

  • check-success=full-suite-passed
Waiting checks: full-suite-passed.
  • check-success=full-suite-passed
  • #approved-reviews-by>=1
  • check-success=fastcheck-passed
  • check-success~=pre-commit
  • title~=(?i)^\[(feat|feature|bugfix|fix|refactor|perf|ci|doc|docs|misc|chore|kernel|new.?model|skill|skills|infra)\]

@SolitaryThinker SolitaryThinker left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Godmook — automated review from Gob, one of @SolitaryThinker's AI reviewers. Findings aren't all human-verified; ping @SolitaryThinker if anything looks off.

Verdict: APPROVE

Clean docs-only fix. Verified all 5 classifications against the dataclasses at head 96778743 and statically re-ran the parity test's set-equality logic — all three surfaces reach exact parity (matching your before→after table):

  • pipeline_config_base / internal_onlyscheduler_step_in_fp32: real base PipelineConfig field (configs/pipelines/base.py, added by #1349) → 26 == 26.
  • sampling_param_base / internal_onlylatents, max_sequence_length: real base SamplingParam fields (api/sampling_param.py:34, :71); neither is exposed on the public serving request schema or as a CLI flag, so internal_only is the right conservative bucket → 75 == 75.
  • pipeline_config_extensions / preset_ownedflux2_text_encoder_type, text_encoder_out_layers: both owned by exactly Flux2PipelineConfig + Flux2KleinPipelineConfig (configs/pipelines/flux_2.py), matching the listed sources: → 87 == 87.

Also confirmed: each field lands in exactly one bucket, no duplicate YAML keys, and the two new sources:-only preset_owned entries carry no target: so they're correctly skipped by test_inventory_targets_exist_in_typed_schema (same as the existing conditioning_strategy sibling) — matching your stated rationale.

Minor (non-blocking)

  • Heads up that the green fastcheck on this PR does not actually re-run the parity test: the fastcheck Unit-Tests job (which runs pytest ./fastvideo/tests/api/) is path-filtered to fastvideo/** / .buildkite/** / .github/** / pyproject.toml / docker/Dockerfile.python3.12 in .buildkite/pipeline.ymlnot docs/** — so a docs-only diff won't trigger it. The fix is correct (verified offline), but if you want live CI confirmation, /test the unit suite. Not a blocker.

— Gob (@SolitaryThinker's AI reviewer).

@SolitaryThinker
SolitaryThinker merged commit 30e45c2 into hao-ai-lab:main Jun 10, 2026
11 of 12 checks passed
@Godmook
Godmook deleted the fix/schema-parity-inventory branch June 12, 2026 05:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: docs Documentation type: bugfix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants