Files
headquarter/openspec/changes/archive/2026-05-17-project-management/specs/project-management/spec.md
T

2.4 KiB

MODIFIED Requirements

Requirement: Project Creation

The system SHALL allow authenticated users to create new projects and SHALL assign the creator as project owner.

Scenario: Create project

  • GIVEN an authenticated user
  • WHEN they create a project with name and description
  • THEN a project record is created
  • AND the user is set as owner

Scenario: Reject unauthenticated creation

  • GIVEN a request without a valid authenticated session
  • WHEN it attempts to create a project
  • THEN the system responds with unauthorized status

Requirement: Project Listing

The system SHALL list projects owned by the authenticated user, including related repositories and default SSH key metadata.

Scenario: List projects

  • GIVEN an authenticated user
  • WHEN they view the projects page
  • THEN all their projects are listed with associated repositories

Scenario: Ownership-scoped listing

  • GIVEN multiple users with separate projects
  • WHEN one user requests their project list
  • THEN only that user's projects are returned

Requirement: Project Updates

The system SHALL support updating project details for project owners only.

Scenario: Update project

  • GIVEN a project owner
  • WHEN they update the name or description
  • THEN the changes are persisted

Scenario: Non-owner update denied

  • GIVEN a user who is not the project owner
  • WHEN they attempt to update project details
  • THEN the system responds with forbidden status

Requirement: Project Deletion

The system SHALL support cascading project deletion for project owners.

Scenario: Delete project

  • GIVEN a project owner
  • WHEN they delete a project
  • THEN all associated repositories are deleted
  • AND all associated SSH keys are removed
  • AND the project record is deleted

Scenario: Non-owner deletion denied

  • GIVEN a user who is not the project owner
  • WHEN they attempt to delete the project
  • THEN the system responds with forbidden status

Requirement: Default SSH Key

The system SHALL allow project owners to set a default SSH key per project and SHALL validate ownership for selected keys.

Scenario: Set default key

  • GIVEN a project with SSH keys
  • WHEN the owner selects a default key
  • THEN it's used for git operations in that project

Scenario: Reject foreign key assignment

  • GIVEN a project owner
  • WHEN they try setting a default SSH key that does not belong to their allowed scope
  • THEN the system rejects the request with validation error