diff --git a/.claude/skills/orca-profiles/SKILL.md b/.claude/skills/orca-profiles/SKILL.md index 259564e063..3b2130660f 100644 --- a/.claude/skills/orca-profiles/SKILL.md +++ b/.claude/skills/orca-profiles/SKILL.md @@ -58,6 +58,9 @@ Paths below are relative to this skill. Commands run from the repository root. 9. **Run the full profile checks before reporting completion.** A vendor-scoped pass is only a development loop. Review also covers version bumps, assets, non-default processes and hardware tuning that CI cannot establish. +10. **One all-printer preset per product; color is a runtime property, never a preset.** Never ship + presets that differ only by color — CI accepts them, so this is a review call. See + [color is a runtime property](references/filament-profiles.md#color-is-a-runtime-property). ## Creating or modifying a profile @@ -107,6 +110,7 @@ Paths below are relative to this skill. Commands run from the repository root. | A setting has no effect | Key spelling/type, `handle_legacy`, or a config key placed on a `machine_model` | | A preset exists but is not selectable | Index registration, `instantiation`, installation and compatibility | | A filament is missing, duplicated, or matches the wrong spool | [Compatibility and alias shadowing](references/filament-profiles.md#compatible_printers); [ids](references/ids.md) | +| Presets differ only by color, or an all-printer library preset lacks `@System` | [Color is a runtime property](references/filament-profiles.md#color-is-a-runtime-property) | | A bed temperature is ignored | [Plate-specific temperature keys](references/filament-profiles.md#bed-temperature-is-twelve-keys-not-one) | | A change is absent from the running app | Version bump and [installed profile location](references/validation.md#testing-in-the-app) | | A check fails | [Error → remedy](references/validation.md#error--remedy) | diff --git a/.claude/skills/orca-profiles/references/filament-profiles.md b/.claude/skills/orca-profiles/references/filament-profiles.md index d6679d9122..873e2a6510 100644 --- a/.claude/skills/orca-profiles/references/filament-profiles.md +++ b/.claude/skills/orca-profiles/references/filament-profiles.md @@ -52,6 +52,15 @@ a brand means adding a folder here; the folder name is a directory label only collection, so there is no duplicate-name error. - You may inherit from an instantiated preset as well as from a base; it is common. +## Color is a runtime property + +`filament_id` identifies a product, not a color; filament sync/AMS reads the color from the spool at +runtime. A product ships one all-printer preset and the color is chosen at runtime — never a sibling +preset that differs only by color. A material family (PLA vs PLA Matte vs PLA Silk) is a new product; a +color is not. A printer tune keeps the product alias and does not multiply per color either. + +CI does not catch this — per-color presets pass `check` — so it is a review call. + ## The two most common contributions **A printer vendor tuning a generic.** Keep the `Generic X` base name so the alias shadows the library diff --git a/.claude/skills/orca-profiles/references/naming.md b/.claude/skills/orca-profiles/references/naming.md index 502863f0c4..2e56416179 100644 --- a/.claude/skills/orca-profiles/references/naming.md +++ b/.claude/skills/orca-profiles/references/naming.md @@ -46,12 +46,17 @@ to the first `@`; the target half is a label except for reserved forms: - `@base` — a non-instantiated product root. `@base` is convention; a base is really identified by `instantiation: "false"` and no `setting_id` ([the three-part shape](filament-profiles.md#the-three-part-shape)). -- `@System` — the OrcaFilamentLibrary selectable shim. The literal `Generic @System` is - load-bearing for 3MF/project recovery, beyond the alias rule ([alias shadowing](filament-profiles.md#alias-shadowing)). +- `@System` — the OrcaFilamentLibrary selectable shim, and the convention for an all-printer product + (` @System`, empty `compatible_printers`); not enforced, so a deviation is worth a review + comment. The literal `Generic @System` is load-bearing for 3MF/project recovery, beyond the + alias rule ([alias shadowing](filament-profiles.md#alias-shadowing)). - `@`, `@ `, `@ nozzle` — printer tunes, BBL's shape. Other vendors differ (a bare model, a printer serial, Creality's `@-all`). Specificity is judged from `compatible_printers`, not the name ([one variant, one profile](filament-profiles.md#overlapping-coverage-one-variant-one-profile-per-product)). +- Color is not part of the product name: ` ` presets are not authored; the color is + chosen at runtime + ([color is a runtime property](filament-profiles.md#color-is-a-runtime-property)). ## Not the same as the filename diff --git a/.claude/skills/orca-profiles/references/review-checklist.md b/.claude/skills/orca-profiles/references/review-checklist.md index 43dc5091f8..4862ebb428 100644 --- a/.claude/skills/orca-profiles/references/review-checklist.md +++ b/.claude/skills/orca-profiles/references/review-checklist.md @@ -15,6 +15,7 @@ The table highlights gaps that need human review. What CI *does* run: | Whether the intended default survived compatibility selection | The sweep can select a different compatible preset | | A dangling `compatible_printers` inside an `instantiation: "false"` base | A base never becomes a `Preset`, so the reference check never sees it (a bad `inherits` in a base *is* caught) | | A `renamed_from` whose old name is still a live preset | The redirect is inert while a live preset carries that name | +| A preset differentiated only by color, or an all-printer library preset without `@System` | Per-color presets split one product across ids and the selector fills with near-duplicates; CI stays green | | Per-extruder vector length on a multi-nozzle printer | Silently padded (with the **first** value) or truncated | ## 1. Was the vendor `version` bumped?