OSS-first docs
These docs teach the open system first: contracts, generated surfaces, runtimes, governance, and incremental adoption. Studio shows up as the operating layer on top, not as the source of truth.
Delete a project (soft delete).
Goal
Allow project owners to remove projects.
Context
Project settings page.
Emitted Events
•
`project.deleted` (v1.0.0)
Source Definition
import {
defineCommand,
defineQuery,
} from '@lssm-tech/lib.contracts-spec/operations';
import {
CreateProjectInputModel,
DeleteProjectInputModel,
DeleteProjectOutputModel,
GetProjectInputModel,
ListProjectsInputModel,
ListProjectsOutputModel,
ProjectDeletedPayloadModel,
ProjectModel,
UpdateProjectInputModel,
} from './project.schema';
export const DeleteProjectContract = defineCommand({
meta: {
key: 'saas.project.delete',
version: '1.0.0',
stability: 'stable',
owners: ['example.saas-boilerplate'],
tags: ['saas', 'project', 'delete'],
description: 'Delete a project (soft delete).',
goal: 'Allow project owners to remove projects.',
context: 'Project settings page.',
},
io: {
input: DeleteProjectInputModel,
output: DeleteProjectOutputModel,
},
policy: {
auth: 'user',
},
sideEffects: {
emits: [
{
key: 'project.deleted',
version: '1.0.0',
when: 'Project is deleted',
payload: ProjectDeletedPayloadModel,
},
],
audit: ['project.deleted'],
},
acceptance: {
scenarios: [
{
key: 'delete-project-happy-path',
given: ['Project exists'],
when: ['User deletes project'],
then: ['Project is deleted', 'ProjectDeleted event is emitted'],
},
],
examples: [
{
key: 'delete-existing',
input: { projectId: 'proj-123' },
output: { success: true },
},
],
},
});