From 37b3f9b0b52a776467db9e4f517ea9d854fd35c0 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 22 Sep 2026 23:21:04 +0800 Subject: [PATCH] Check preset names against the conventions during profile review --- .../skills/orca-profiles/references/naming.md | 31 +++++++++++++++++-- .../references/review-checklist.md | 10 ++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/.claude/skills/orca-profiles/references/naming.md b/.claude/skills/orca-profiles/references/naming.md index 2e56416179..cad82ebb6b 100644 --- a/.claude/skills/orca-profiles/references/naming.md +++ b/.claude/skills/orca-profiles/references/naming.md @@ -35,9 +35,10 @@ toolhead, a multi-material build) may drop the suffix — still an exact referen ## `process` `mm @` — [process-profiles.md](process-profiles.md#naming) has the -quality ladder and the `fdm_process_*` base names. The `@` 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. +quality ladder and the `fdm_process_*` base names. The quality label stays before `@` and the printer +target after it: a printer model in the quality slot leaves the tier undescribed. The `@` 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` @@ -58,6 +59,30 @@ to the first `@`; the target half is a label except for reserved forms: chosen at runtime ([color is a runtime property](filament-profiles.md#color-is-a-runtime-property)). +## Checking names + +Check every newly added profile's `name` against its type and role: model, selectable preset or base. +Apply the same checks to an intentional name change. The human-readable naming shapes are not enforced +by `check`: inspect the added or renamed profiles in the diff, using neighbouring names as context and +following the bundle's established style where the type-specific conventions allow variation. + +For bases (`instantiation: "false"`), use the type-specific conventions: + +| Type | Base names | +| --- | --- | +| `machine` | `fdm_machine_common`, `fdm__common`, or an established machine-family base name | +| `process` | `fdm_process_*`, including shared roots and per-layer-height / per-nozzle bases such as `fdm_process_single_0.20` | +| `filament` | `fdm_filament_*` material roots or ` @base` product roots | + +Shared base names across bundles are intentional, including product roots such as `Fiberon PA6-CF @base`. +Investigate a newly authored base that retains an unrelated selectable preset's name from a copy. + +**Name uniqueness is checked by CI.** `check_preset_name_uniqueness` checks type + name within each +bundle. `check_machine_model_name_uniqueness` checks model names across the entire tree, even with +`--vendor`: `Preset::get_printer_type` matches `printer_model` against all vendors' models and returns +the first match, so a duplicate makes lookup depend on vendor order. Both run as part of +`python3 scripts/orca_profile_tool.py check`. + ## Not the same as the filename The loader keys off `name`, and a filename that disagrees usually still loads. Index `name` must equal the diff --git a/.claude/skills/orca-profiles/references/review-checklist.md b/.claude/skills/orca-profiles/references/review-checklist.md index 4862ebb428..1d49cf2524 100644 --- a/.claude/skills/orca-profiles/references/review-checklist.md +++ b/.claude/skills/orca-profiles/references/review-checklist.md @@ -17,6 +17,7 @@ The table highlights gaps that need human review. What CI *does* run: | 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 | +| A name that ignores its type's convention — a model in a `process` quality slot, or an unrelated target label left in a copied preset | The selector misrepresents the preset's quality or intended printer | ## 1. Was the vendor `version` bumped? @@ -169,6 +170,15 @@ vendor, and a filename that disagrees with the preset's `name` (common; the load Check for Windows-invalid characters, reserved device names, trailing path-component spaces/dots, and case mismatches in `sub_path` or asset paths. See [cross-platform paths](validation.md#cross-platform-paths). +## 16. Do the preset names follow the conventions? + +Check **every newly added profile and intentional name change**, including models and bases, +against [the naming conventions](naming.md#checking-names). Preserve shipped names during +ordinary tuning; renaming a shipped selectable preset requires the migration in item 4. + +*Why:* CI checks name uniqueness, but does not enforce the naming conventions. Catch naming +mistakes before the names ship and existing projects depend on them. + --- ## Reporting the review