SDLC Status Dashboard

2026-06-24 07:21:56 +00:00

Current Phase
specification
Phases Done
0 / 8
Completion
0%
Re-enter At
requirements
0 completed8 remaining

Pipeline Progress ?
⚪ not started not yet begun
✏️ draft initial version
🔍 in review under review
🚧 in progress actively worked on
⛔ blocked waiting on dependency
✅ done completed
⏭️ skipped not applicable

Foundation
✏️Draft: initial version requirementsNot Started: not yet begun existing-solutionsNot Started: not yet begun feasibility✏️Draft: initial version specificationNot Started: not yet begun plan
Build
Not Started: not yet begun implementationNot Started: not yet begun testing
Ship
Not Started: not yet begun documentation
❓ Open Questions📖 Vocabulary

Requirements: CompanyFirst-order business entity; all business records are company-scoped. One deployment can run many companies with full data isolation. Management & Multi-Tenancy

Overview

The company is the first-order business entity in Paperclip. Every other business record (agents, goals, projects, issues, costs, activity) is scoped to exactly one company, and a single deployment can run many companies with complete data isolation. This feature covers the company lifecycle, per-company configuration, multi-company data boundaries, and company portability (export/import of entire organizations).

Stakeholders

Stakeholder Interest
BoardThe human operator(s) with full control across all companies in a deployment. In `local_trusted` mode this is implicit; in authenticated mode it is session-based. operator Create/list/get/update/archive companies; switch between them; import/export orgs
AgentAn AI employee registered in the org tree with a role, title, reporting line, budget, and adapter configuration. Operates strictly within its own company; must never see another company's data

Functional Requirements

Order rows by priority: Must first, then Should, then May.

ID Priority Requirement
FR-01MustThe system shall support creating a company with a name, description, status, and issue prefix/counter. Must The system shall support creating a company with a name, description, status, and issue prefix/counter.
FR-02MustThe system shall enforce that every business record belongs to exactly one company and that company boundaries are checked on every fetch/mutation. Must The system shall enforce that every business record belongs to exactly one company and that company boundaries are checked on every fetch/mutation.
FR-03MustThe system shall support listing, getting, updating, and archiving companies. Must The system shall support listing, getting, updating, and archiving companies.
FR-04Mustpaused \ Must The system shall maintain company status as active \ | paused \ | archived with pause reason and paused-at tracking.
FR-05ShouldThe system shall support per-company branding (brand color, logo) and feedback-sharing consent fields. Should The system shall support per-company branding (brand color, logo) and feedback-sharing consent fields.
FR-06ShouldThe system shall support exporting and importing entire companies (agents, skills, projects, routines, issues) with secret scrubbing and collision handling. Should The system shall support exporting and importing entire companies (agents, skills, projects, routines, issues) with secret scrubbing and collision handling.
FR-07ShouldThe system shall support per-company attachment size limits (`attachment_max_bytes`). Should The system shall support per-company attachment size limits (attachment_max_bytes).
FR-08MayThe system shall support per-company board-approval requirement flag for new agents (`require_board_approval_for_new_agents`). May The system shall support per-company board-approval requirement flag for new agents (require_board_approval_for_new_agents).

Non-Functional Requirements

Order rows by priority: Must first, then Should, then May.

ID Priority Category Requirement
NFR-01MustAgentAn AI employee registered in the org tree with a role, title, reporting line, budget, and adapter configuration. API keys must not access other companies' data; cross-company reads/writes must be rejected. Must Security AgentAn AI employee registered in the org tree with a role, title, reporting line, budget, and adapter configuration. API keys must not access other companies' data; cross-company reads/writes must be rejected.
NFR-02MustEvery company mutation must write an `activity_log` entry attributed to an actor. Must Auditability Every company mutation must write an activity_log entry attributed to an actor.
NFR-03ShouldCompanyFirst-order business entity; all business records are company-scoped. One deployment can run many companies with full data isolation. CRUD must meet the p95 < 250 ms latency target at 1k tasks/company. Should Performance CompanyFirst-order business entity; all business records are company-scoped. One deployment can run many companies with full data isolation. CRUD must meet the p95 < 250 ms latency target at 1k tasks/company.

Constraints

  • Single-tenant deployment with a multi-company data model (one deployment, many isolated companies).
  • BoardThe human operator(s) with full control across all companies in a deployment. In `local_trusted` mode this is implicit; in authenticated mode it is session-based. has full read/write across all companies in the deployment.

Acceptance Criteria

Every FR and NFR shall have at least one acceptance criterion.

  • FR-01MustThe system shall support creating a company with a name, description, status, and issue prefix/counter.
    • Given a board operator
    • When they create a company with required fields
    • Then a company row exists with status active, a generated issue prefix, and a zeroed issue counter
  • FR-02MustThe system shall enforce that every business record belongs to exactly one company and that company boundaries are checked on every fetch/mutation.
    • Given two companies A and B and an agent key scoped to A
    • When the agent attempts to read or mutate a B-scoped entity
    • Then the request is rejected with 403/404 and no B data is returned
  • FR-04Mustpaused \
    • Given an active company
    • When it is paused
    • Then status=paused, paused_at is set, and a pause reason is recorded
  • FR-06ShouldThe system shall support exporting and importing entire companies (agents, skills, projects, routines, issues) with secret scrubbing and collision handling.
    • Given an exported company package
    • When it is imported into a fresh deployment
    • Then agents, skills, projects, routines, and issues are recreated with secrets scrubbed and id collisions handled
  • NFR-01MustAgentAn AI employee registered in the org tree with a role, title, reporting line, budget, and adapter configuration. API keys must not access other companies' data; cross-company reads/writes must be rejected.
    • Given an agent API key for company A
    • When it calls any endpoint scoped to company B
    • Then the request is denied before any company B data is exposed

Conflicts

None identified yet.

Open Questions

  1. What is the exact set of entities included in company export/import, and how are secret references resolved on import?