Repository navigation
Conversation
Launch-day audit of the vendor and diffusers sources, and the design for the distilled core: probes P1/P2 on lem (bf16 fits 24 GB at 1024^2 with every component placed; the pup runs through text_generation but needs enable_thinking off), and the from_hub system-prompt reference. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mages A Qwen3.5 upsampler must run with enable_thinking off, an edit sends every reference, and a pinned prompt wants pinned weights. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… commit Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…template_kwargs Workflows are untrusted and the settings are splatted into the pipeline and apply_chat_template calls, so images/tools/etc. would reach transformers unvalidated. Also pins that image list elements get the URL check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…only, size cap Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… file anonymously A full commit is answered from the local cache without an auth check, so token=False alone left cached gated files readable. Ask the Hub first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The skill picks among the five FLUX 3 Klein templates by request shape, states the 16-step no-guidance schedule, the 16-pixel grid, the 4096 ceiling as stated rather than checked, and the 10-reference training limit the pipeline does not enforce. Prompts go through the upsampler builtins, or BFL's prompting guide for hand-written captions; the box format is in references/layout-boxes.md. Named in the plugin README and CLAUDE.md; the tests read the step default off the distilled denoise block. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The edit templates always re-upsample and take no caption, so a corrected caption is reused through a one-step workflow built from the edit template's Klein step, not by passing prompt= or falling back to text-to-image. dw's reference sizing for the upsampler is not BFL's, so BFL's budget is no longer quoted. One memory figure for Apple Silicon, the guidance rule as BFL's reference code states it, and CLAUDE.md rewrapped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… unsized from_hub generate_kwargs reached model.generate() unfiltered, so an untrusted workflow could set custom_generate (transformers downloads and runs the repo's custom_generate/generate.py) with trust_remote_code, or pass tokenizer_encode_kwargs around the chat_template_kwargs checks. - dw/trust.py: require_trusted_generate_arguments refuses custom_generate and trust_remote_code unless workflows are trusted - generate_kwargs: the call's structural keys are refused on both paths, and values must be scalars or lists of scalars; all checked before any load - _RESERVED_CHAT_TEMPLATE_KEYS gains the calls' remaining named parameters - system_prompt.from_hub refuses a file the Hub reports no size for Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…age need - text-to-image, upsample-then-generate and the README declare only the multiple-of-16 rule; BFL's 64 to 4096 range is stated as not checked - flux3_klein_upsample_edit says at least one image is required, and what an empty list produces - tests: flux3 step-cache rows in alphabetical order; the upsample step's result is asserted to be an intermediate Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… built - TASKS.md: chat_template_kwargs and generate_kwargs filtering, the custom_generate/trust_remote_code trust rule, and that an image list is one prompt with one answer (also for judge and image_to_text) - SECURITY.md and ARCHITECTURE.md: the generate_kwargs gate and the anonymous, pinned, fail-closed from_hub fetch - Klein design spec: from_hub asks the Hub before every use and fails closed offline; the 10-reference cap is stated, not enforced; follow-ups for the other tasks' generate_kwargs and revision validation parity Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… 3 Klein (#930) Approved by Don 2026-10-15: measured 11_256 with the five Klein templates, about 85 tokens held for the Task 9 cost blocks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…xtures Brings test_dw_patch_targets back under the ratchet for #930. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
FLUX 3 Image Klein onboarding (distilled core)
…low-ups The text_generation fixture refactor in #930 removed 44 patch sites. The plan lists what develop still owes: the remaining generate()/detector kwargs splats, Klein Tasks 9 and 11 on lem, the downloads_required and update_diffusers gaps, #928, and the 0.14.0 release body. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ype it ports Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
SparseH3AttnProcessor ports the prototype's sol_call onto the H3 block processors only, swapped per instance; the refiner keeps the stock one. The per-call decision runs in forward pre/post hooks, never a forward wrapper, because the H3 denoiser reads the layout kwargs it passes off inspect.signature(transformer.forward). sparse_call resets the decision, reports it, and warns once when a call ran dense. The layout helper moves to tests/sparse_layouts.py with a dense stand-in for sol_attn, so the permutation test checks the tile gather is exact. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
) A tile map is reused only for the same position_ids and token_tags, compared exactly: a transposed grid has the same row count, tag sum and position sum, so any summary key reuses a stale map there. Any exception while deciding now runs the call dense with its type and message as the reason; after the decision, errors still raise. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… level (#931) A component-level 'sparse' installs dw's H3 processor in configure_components instead of calling set_attention_backend, and any other backend (or none) uninstalls it first, so a model the worker kept loaded does not carry sparse into a later job. A pipeline-level 'sparse' never reaches diffusers' attention_backend(): it installs on the H3 components that have no install yet for the one call and takes off only what it put on. Every call runs inside sparse_call. A non-H3 target warns and runs dense. sparse_tau, at either level, is a runtime setting: weights_identity drops it and apply_runtime_settings re-applies a component-level one on a cache hit. sparse_attention gains a public pipeline_components, the one way both the install and sparse_call enumerate a pipeline's components. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…kend (#931) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The nineteen MiniMax-H3 templates default attention_backend to sparse and wire sparse_tau beside it. The schema's sparse_tau accepts a 'variable:' reference (sub-workflow validation checks the child before substitution). Docs gain a sparse section with the measured table; the ramp keeps sage_hub explicit until stage 3. Step-cache pipeline keys regenerated for the H3 steps; attention_backend may now be a text cost driver. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… read (#931) - A kernel error on the call's first invocation runs the whole call dense and is reported; one after a success still raises (Ruling 12) - install_sparse and set_sparse_tau refuse a tau that is not a number >= 0 (bool included); every call site lets it propagate (Ruling 13) - pipeline_components falls back to the attributes when a pipeline's components property raises, so sparse_call never fails a run - _kernels_importable is cached, so health polls stop importing comfy-kitchen - Tests: a raising pipeline call still uninstalls a pipeline-level install; the tiny H3 CONFIG moves to tests/sparse_layouts.py Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pre-1.0 kernel API; bump deliberately after a GPU smoke (Ruling 14). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…931) - WORKFLOW_GUIDE: the H3 default is sparse (tau 0.5); sparse_tau listed beside attention_backend at pipeline and component level - ACCELERATION: sparse is the one bundled backend and needs no kernels install; the fallback warns once per pipeline call (so per segment or shot); tau 1.0 against 0.5 stated as the one observation it is; the first-invocation kernel fallback and the bad-tau error - ARCHITECTURE: an H3 sparse attention row Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gain depends on what it replaces Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…L5s); sparse shifts details, so tiers share a backend Don's verdicts on seeds 42/7/1234: sparse skin equal to sage_hub, B3s -> L5s staging carried 3 of 3. Sparse is 6-12% faster than sage_hub on the rungs, but the sage B3 -> P1 pair (first_block cache) is still the fastest cinema final. TV rows stay on sage_hub pending the L1/L7 sage comparison. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e on the ramp rungs Don's verdicts, seeds 42/7/1234: L1/L7 sage vs sparse differ at most slightly; the TV face smear is the turbo LoRA's, under either backend. Sparse is 6-12% faster than sage_hub on L1, L7, B3 and L5. The prototype script is removed (plan's final task). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… sparse; log when sparse installs origami-sage (job 04ffbe510ff0) set attention_backend 'sparse' at pipeline level while its transformer component pinned 'sage_hub'. The pipeline-level install overrode the pin silently: the run went sparse (41.6 s/step at 960x544x345, against sage_hub's measured 54.7) while its only log line said sage_hub. Now the pin wins, as it does for every other backend, with a warning naming the skipped component; and a pipeline-level install logs 'Using attention backend: sparse (tau <t>) on <components>'. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sparse_tau Opt-in at pipeline and component level (strictly between 0 and 1); when set the kernel gets topk_ratio with tail=False and tau is ignored. A runtime setting like sparse_tau: excluded from the pipeline cache key and re-applied on a hit. Measured 11% faster than tau 0.5 on video-with-audio-768p with no visible difference (Don); the default stays tau 0.5 until a face shot is checked. The Turbo-SLA LoRA is not adopted: top-k gives the same on v1.2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ng (tau or topk) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nel_probe_imports_once
Don's verdicts on the quality ramp's 4-reference shot, seeds 42/7/1234: on L7 tau 0.5 showed blue ghosting (s7) and slight smearing; top-k 0.15 equal or better, 6.1/6.2/5.8 min against 6.5. On L5 (base model, 30 steps) skin holds at 23.9/25.5/23.9 min against 26.8/26.6/26.4. Every H3 template gains a sparse_topk variable (0.15) wired beside sparse_tau; sparse_topk=null routes by tau as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both reach model.generate() for a generative text-to-audio model, where custom_generate / trust_remote_code download and run Hub code. Untrusted workflows now get the same refusal text_generation does (#930), before the model loads; each block must be an object. Open in every release through 0.14.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- pipeline.py was 1,139 lines (ceiling 1,100): the pipeline-level sparse install and the cache-hit tau/topk re-apply move into dw/sparse_attention.py (install_sparse_for_call, apply_sparse_settings); pipeline.py is 1,060. - sparse_attention <-> acceleration_warnings was an import cycle (a lazy import still counts): available_attention_backends moves to acceleration_warnings, so the edge runs one way. - generate_speech reached 152 lines with the trust gate: its messages check is now _check_messages. CI's backend job has failed on this ratchet since the #931 merge (2d1ea00); tests passed throughout. Left: modules 219 -> 220 for dw/sparse_attention.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…speech_generation trust gate Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Approved by Don for the 0.15.0 release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ote keys Compact entries have carried `note` (and `note_truncated` when clipped) since a648338, and detail asset entries carry `writable` (plus `absolute_url`/`used_by` when set), but the tool descriptions, the compact reply's hint and docs/MCP.md still listed the old key sets as "only". The tool-surface budget holds at 15_052 by trimming list_assets' wording. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…w fixes Pipeline-level sparse warned it skipped any pinned component and counted the pin as found, so a pinned text encoder drew a false warning and a non-H3 pipeline lost its 'runs dense' warning. Only an H3 transformer's pin is a skip now. Also from the 0.15.0 review: the release notes say validate warns only on mps/cpu and drop a test-only fix; the UI fallback backend list offers sparse; the component path reads tau/topk once; the H3 defaults test selects templates by the H3 transformer and closes its files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 0.15.0. Notes: the
### 0.15.0section of docs/RELEASING.md.sol_attn, default on the 19 H3 templates with top-k 0.15 routing; dense fallback off CUDA; UI backend dropdown from/api/health.speech_generationgatesforward_params/generate_kwargson trust (open through 0.14.0; advisory draft pending).comfy-kitchen>=0.2.38,<0.3.Pre-release review (Fable): ship; C1 and the notes corrections are fixed in 5d52d85, the low items left for 0.16.
After merge:
scripts/release.sh 0.15.0 --next 0.16.0-alpha.1.🤖 Generated with Claude Code