22c035984e
- Add ConfigProfile model with user ownership, name, description - Add ConfigInclude model for ordered profile self-references - Add ConfigMount model for mount/file definitions - Add selected_profile_id to ToolInstance for per-instance profile selection - Add default profile properties to UserConfig JSONB config - Create Alembic migration 0013 for new tables and columns - Register new models in models/__init__.py - Mark config_folders.is_active as deprecated - Add migration metadata test Quality gates: syntax check passed (all files parse successfully) OpenSpec: add-config-profiles task 1.1
30 lines
1.3 KiB
Markdown
30 lines
1.3 KiB
Markdown
## ADDED Requirements
|
|
|
|
### Requirement: User can create config profiles
|
|
The system SHALL allow users to create named config profiles containing mounts and includes.
|
|
|
|
#### Scenario: Successful profile creation
|
|
- **WHEN** user creates a profile with name, description, and mount list
|
|
- **THEN** the profile is stored with a unique ID and associated mounts
|
|
|
|
### Requirement: Profile includes are ordered
|
|
The system SHALL support ordered includes where profiles can reference other profiles with a defined application sequence.
|
|
|
|
#### Scenario: Include with order
|
|
- **WHEN** user adds an include to a profile with order_index 1
|
|
- **THEN** the included profile's mounts are applied after order_index 0 includes
|
|
|
|
### Requirement: Config mounts define files and paths
|
|
The system SHALL store individual mount entries with mount_path, optional content, and optional source profile reference.
|
|
|
|
#### Scenario: Add mount to profile
|
|
- **WHEN** user adds a mount with mount_path "/app/config.json" and content "{}"
|
|
- **THEN** the mount is stored and linked to the profile
|
|
|
|
### Requirement: Cycle detection in includes
|
|
The system SHALL prevent creation of include cycles.
|
|
|
|
#### Scenario: Attempt cyclic include
|
|
- **WHEN** user tries to include profile B in profile A where A is already included in B
|
|
- **THEN** the system rejects the request with an error
|