From 31620257cd0ff5e588677cfd11683cd16a02a4c5 Mon Sep 17 00:00:00 2001 From: Hare Date: Sat, 30 May 2026 03:16:02 +0900 Subject: [PATCH] ticket: remove profile aliases --- .../artifacts/.gitkeep | 0 .../item.md | 68 +++++++++++++++++++ .../thread.md | 7 ++ 3 files changed, 75 insertions(+) create mode 100644 work-items/open/20260529-181528-remove-profile-aliases/artifacts/.gitkeep create mode 100644 work-items/open/20260529-181528-remove-profile-aliases/item.md create mode 100644 work-items/open/20260529-181528-remove-profile-aliases/thread.md diff --git a/work-items/open/20260529-181528-remove-profile-aliases/artifacts/.gitkeep b/work-items/open/20260529-181528-remove-profile-aliases/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/work-items/open/20260529-181528-remove-profile-aliases/item.md b/work-items/open/20260529-181528-remove-profile-aliases/item.md new file mode 100644 index 00000000..24e600aa --- /dev/null +++ b/work-items/open/20260529-181528-remove-profile-aliases/item.md @@ -0,0 +1,68 @@ +--- +id: 20260529-181528-remove-profile-aliases +slug: remove-profile-aliases +title: Remove profile aliases from profile registry +status: open +kind: bug +priority: P1 +labels: [profiles, config, simplification] +created_at: 2026-05-29T18:15:28Z +updated_at: 2026-05-29T18:15:28Z +assignee: null +legacy_ticket: null +--- + +## Background + +The initial profile registry added `[alias]` as a convenience layer for redirecting one profile name to another. In practice this adds name-resolution complexity without a clear use case. It already caused bugs around source-local alias resolution and defaults pointing at aliases. + +Profile selection should stay simple: a registry contains profile entries and an optional default that points directly at one profile entry. If users want a short or stable name, they can choose that name as the profile registry key. + +There is no compatibility requirement for aliases because the feature has just landed and has not become a stable user-facing contract. + +## Requirements + +- Remove profile alias support from registry parsing and selection. + - Delete `ProfileAlias` and alias maps/resolution paths. + - Remove `[alias]` from the `profiles.toml` schema. + - Do not support alias-to-alias or alias-to-profile indirection. +- Keep profile registry semantics simple. + - Supported schema: + ```toml + default = "coder" + + [profile] + coder = "profiles/coder.nix" + researcher = "profiles/researcher.nix" + ``` + - Table form may remain: + ```toml + [profile.coder] + path = "profiles/coder.nix" + description = "Coding profile" + ``` + - `default` must name a profile entry directly. + - Unqualified defaults resolve within the declaring source. + - Source-qualified defaults such as `user:coder` may remain if already implemented and useful. +- Keep existing selector behavior for real profiles. + - explicit path / `path:` + - discovered unqualified names + - `default` + - source-qualified names such as `project:coder` + - ambiguity fail-closed + - TUI manifest-cascade opt-out +- Update docs and tests. + - Remove alias examples and alias-specific tests. + - Add/keep coverage proving default points directly at a profile entry. + - Diagnostics for a missing default target should mention the missing profile, not alias behavior. + +## Acceptance criteria + +- `profiles.toml` no longer accepts or documents `[alias]` as a supported feature. +- `ProfileRegistry` has no alias state or alias resolution path. +- Existing CLI/TUI profile selection works with direct profile entries and defaults. +- Ambiguous unqualified real profile names still fail closed. +- Docs describe only entries + default. +- Focused manifest/tui/pod/client profile tests pass. +- `cargo fmt --check` +- Relevant checks pass. diff --git a/work-items/open/20260529-181528-remove-profile-aliases/thread.md b/work-items/open/20260529-181528-remove-profile-aliases/thread.md new file mode 100644 index 00000000..b3f03143 --- /dev/null +++ b/work-items/open/20260529-181528-remove-profile-aliases/thread.md @@ -0,0 +1,7 @@ + + +## Created + +Created by tickets.sh create. + +---