ADR-components-005
Rename ToolSet to NodeSet
Context
The BaseToolSet abstraction was named as if it only grouped "tools," but in practice it also contains environment nodes (EnvHabitatNodeSet with observe, step, etc.) and will contain skill nodes in the future. The name "ToolSet" was misleading — it implied a narrower scope than the abstraction actually has. The project is pre-release (W3) with no external consumers, making this the lowest-cost moment for a rename.
Decision
(1) Rename BaseToolSet → BaseNodeSet, ServerToolSet → ServerNodeSet across all backend, frontend, docs, and user workspace files (~72 files). (2) Clean break — no backward-compat aliases or shims. (3) Rename directory workspace/toolsets/ → workspace/nodesets/. (4) Rename API routes /api/components/toolsets/ → /api/components/nodesets/. (5) Update convention description from toolset__tool to nodeset__node. (6) Node type strings (e.g., env_habitat__observe) are NOT changed — they use set names, not the word "toolset," so saved graph JSON remains valid.
Alternatives
(a) Keep "ToolSet" — rejected because the name becomes increasingly misleading as environments and skills are added. (b) "NodePack" — rejected because "pack" implies distribution/download semantics not present. (c) "NodeKit" — rejected because it conflicts with UI toolkit terminology. (d) Rename with backward-compat aliases — rejected because pre-release project has no external consumers.
Rationale
"NodeSet" is the most accurate name for "a loadable group of domain-specific canvas nodes (tools, environments, skills) with shared initialization and shutdown lifecycle." The BaseCanvasNode → BaseNodeSet naming pattern is natural. The key insight that node type strings don't contain "toolset" made the rename safe for all saved graph artifacts.
Affected docs
All doc-site pages (already updated in-place as part of the rename), glossary.md, architecture.md, blueprint.md, roadmap.md, nodesets.md, habitat-nodeset.md