Add the one-all-printer-preset-per-product rule to the orca-profiles skill: color is chosen at runtime, a material family is a new product and a color is not, and CI does not catch per-color presets so it stays a review call. Note that @System is the all-printer convention rather than an enforced check.
4.1 KiB
Preset naming
A preset's name is the loader's key, not decoration. The index registers it; inherits,
compatible_printers and the default_* keys reference it by the exact string; renamed_from depends
on it; and setting_id / filament_id hash it (see ids.md). Two presets of one type in a
bundle may not share a name (check_preset_name_uniqueness). Treat a name change as an identity change,
not a relabel.
Naming is convention only where the loader does not parse it. What the loader actually acts on:
| Type | Shape | Acted on |
|---|---|---|
machine_model |
<Model> |
the exact string, named by a variant's printer_model |
machine |
<Model> <nozzle> nozzle |
the exact string, named by compatible_printers; printer_variant must equal a nozzle diameter |
process |
<lh>mm <Quality> @<target> |
the exact string when referenced or selected; the @<target> half is a label |
filament |
<Product> @<target> |
text before the first @ is the alias, used for shadowing; the rest is a label |
machine_model
<Model> — the vendor-prefixed model name (Bambu Lab X1 Carbon, Creality K1, Prusa CORE One). A
variant names it verbatim in printer_model; a mismatch makes the variant invalid. check_name_consistency
forces the index entry to equal the file's name, and the variant's printer_model targets this string
(A machine_model is not a config preset).
It is also the <Model>_cover.png and bed-asset stem.
machine (variant)
<Model> <nozzle> nozzle is near-universal (Bambu Lab X1 Carbon 0.4 nozzle). printer_variant holds
the bare nozzle (0.4) and must be an exact member of the model's nozzle_diameter list — the hard
rules are in The machine variant. Casing varies
(nozzle / Nozzle): match the bundle, not this page. A variant that is not nozzle-specific (a special
toolhead, a multi-material build) may drop the suffix — still an exact reference. Bases are named
fdm_machine_common / fdm_<vendor>_common.
process
<layer height>mm <quality> @<target> — process-profiles.md has the
quality ladder and the fdm_process_* base names. The @<target> is a human label, not a reference: it
usually does not equal a real variant, and compatibility comes from the resolved compatible_printers
list or condition.
filament
<Product> @<target>. The product half is what filament_id hashes and what survives as the alias up
to the first @; the target half is a label except for reserved forms:
@base— a non-instantiated product root.@baseis convention; a base is really identified byinstantiation: "false"and nosetting_id(the three-part shape).@System— the OrcaFilamentLibrary selectable shim, and the convention for an all-printer product (<Product> @System, emptycompatible_printers); not enforced, so a deviation is worth a review comment. The literalGeneric <mat> @Systemis load-bearing for 3MF/project recovery, beyond the alias rule (alias shadowing).@<Vendor>,@<Vendor> <Model>,@<Vendor> <Model> <nozzle> nozzle— printer tunes, BBL's shape. Other vendors differ (a bare model, a printer serial, Creality's@<Model>-all). Specificity is judged fromcompatible_printers, not the name (one variant, one profile).- Color is not part of the product name:
<Product> <Color>presets are not authored; the color is chosen at runtime (color is a runtime property).
Not the same as the filename
The loader keys off name, and a filename that disagrees usually still loads. Index name must equal the
file's name, and the filename should match sub_path; a mismatch that differs only in case breaks
another platform (cross-platform paths).