188 lines
7.9 KiB
Markdown
188 lines
7.9 KiB
Markdown
# 01 — Product requirements
|
|
|
|
## Scope definition
|
|
|
|
The MVP provides a complete path from curated playbook discovery to repository-aware prompt export. Direct Codex execution, team approvals and public community distribution are later phases.
|
|
|
|
## Functional requirements
|
|
|
|
### Library and discovery
|
|
|
|
- **FR-LIB-001:** Index all valid built-in and private playbook versions.
|
|
- **FR-LIB-002:** Search title, summary, tags, category, problem statement and supported stacks.
|
|
- **FR-LIB-003:** Filter by category, lifecycle, risk tier, autonomy support, playbook type, stack and quality status.
|
|
- **FR-LIB-004:** Sort by relevance, recently updated, title and quality status.
|
|
- **FR-LIB-005:** Persist search and filter state in the URL.
|
|
- **FR-LIB-006:** Allow personal favorites and collections.
|
|
- **FR-LIB-007:** Show why a playbook matches a repository or query.
|
|
- **FR-LIB-008:** Prevent deprecated playbooks from appearing as default recommendations.
|
|
|
|
### Playbook detail
|
|
|
|
- **FR-DET-001:** Show purpose, expected outcome and explicit non-goals.
|
|
- **FR-DET-002:** Show required and optional inputs.
|
|
- **FR-DET-003:** Show supported modes and autonomy levels.
|
|
- **FR-DET-004:** Show risk tier, guardrails, validation and completion contract.
|
|
- **FR-DET-005:** Show compatible stacks and known limitations.
|
|
- **FR-DET-006:** Show version, lifecycle, changelog and quality evidence.
|
|
- **FR-DET-007:** Allow a user to start composition with or without a repository profile.
|
|
|
|
### Repository profiles
|
|
|
|
- **FR-REP-001:** Create profiles manually without connecting a forge.
|
|
- **FR-REP-002:** Store languages, frameworks, package managers, services, databases and deployment types.
|
|
- **FR-REP-003:** Store setup, lint, typecheck, test, build and smoke-test commands.
|
|
- **FR-REP-004:** Store protected paths, excluded paths and policy constraints.
|
|
- **FR-REP-005:** Store source metadata and evidence timestamp.
|
|
- **FR-REP-006:** Version profile snapshots for generated runs.
|
|
- **FR-REP-007:** Import and export a schema-validated profile.
|
|
- **FR-REP-008:** Allow manual overrides without destroying source observations.
|
|
|
|
### Composer
|
|
|
|
- **FR-COM-001:** Resolve playbook inputs through a guided form.
|
|
- **FR-COM-002:** Select a repository profile or operate profile-free.
|
|
- **FR-COM-003:** Select work mode and autonomy level.
|
|
- **FR-COM-004:** Select or confirm scope and protected paths.
|
|
- **FR-COM-005:** Preview generated output continuously.
|
|
- **FR-COM-006:** Explain the provenance of each generated block.
|
|
- **FR-COM-007:** Validate required inputs and compatibility before export.
|
|
- **FR-COM-008:** Run prompt lint and distinguish errors from warnings.
|
|
- **FR-COM-009:** Autosave a draft locally or server-side.
|
|
- **FR-COM-010:** Produce deterministic output from normalized inputs.
|
|
|
|
### Prompt and Run Pack output
|
|
|
|
- **FR-OUT-001:** Copy plain prompt text.
|
|
- **FR-OUT-002:** Download Markdown.
|
|
- **FR-OUT-003:** Generate a ZIP Run Pack with manifest and digests.
|
|
- **FR-OUT-004:** Optionally generate AGENTS.md recommendations without overwriting an existing file.
|
|
- **FR-OUT-005:** Store an immutable run snapshot.
|
|
- **FR-OUT-006:** Re-render a historical run without silently using a newer playbook version.
|
|
- **FR-OUT-007:** Re-import a Run Pack and verify its manifest.
|
|
- **FR-OUT-008:** Ensure safe filenames and prevent archive traversal.
|
|
|
|
### Content authoring
|
|
|
|
- **FR-AUT-001:** Import a Playbook Package from a directory or ZIP.
|
|
- **FR-AUT-002:** Validate structural and semantic rules.
|
|
- **FR-AUT-003:** Edit private drafts in a schema-aware editor.
|
|
- **FR-AUT-004:** Render examples with test input sets.
|
|
- **FR-AUT-005:** Publish by creating an immutable semantic version.
|
|
- **FR-AUT-006:** Compare versions and require a changelog.
|
|
- **FR-AUT-007:** Deprecate without deleting historical versions.
|
|
- **FR-AUT-008:** Export a complete package for Git review.
|
|
|
|
### Gitea integration
|
|
|
|
- **FR-GIT-001:** Configure a Gitea base URL and token.
|
|
- **FR-GIT-002:** Test connectivity and discover server version/capabilities.
|
|
- **FR-GIT-003:** List accessible repositories with pagination.
|
|
- **FR-GIT-004:** Import repository metadata and selected governance evidence.
|
|
- **FR-GIT-005:** Read relevant files through a bounded allowlist and size limits.
|
|
- **FR-GIT-006:** Create a timestamped repository snapshot.
|
|
- **FR-GIT-007:** Recommend playbooks based on observable gaps.
|
|
- **FR-GIT-008:** Remain strictly read-only in the first implementation.
|
|
|
|
### Quality and evaluations
|
|
|
|
- **FR-QUA-001:** Lint playbooks and rendered prompts.
|
|
- **FR-QUA-002:** Store evaluation cases tied to exact versions.
|
|
- **FR-QUA-003:** Show quality dimensions separately rather than one unexplained percentage.
|
|
- **FR-QUA-004:** Distinguish authored claims from executed evidence.
|
|
- **FR-QUA-005:** Mark stale evidence when its environment or fixture changes.
|
|
- **FR-QUA-006:** Block “Validated” status without required evidence.
|
|
|
|
### Administration and audit
|
|
|
|
- **FR-ADM-001:** Show integration health and background-job failures.
|
|
- **FR-ADM-002:** Record security-relevant audit events.
|
|
- **FR-ADM-003:** Allow export and deletion of user-owned data.
|
|
- **FR-ADM-004:** Configure retention for generated artifacts and logs.
|
|
- **FR-ADM-005:** Expose backup and restore guidance.
|
|
|
|
## Non-functional requirements
|
|
|
|
### Reliability
|
|
|
|
- Generated runs must reference immutable playbook and profile snapshots.
|
|
- Import operations must be idempotent.
|
|
- A failed background import must not leave a partially published version.
|
|
- The app must remain usable when Gitea is unavailable.
|
|
|
|
### Performance targets
|
|
|
|
Reference targets on a modest self-hosted system:
|
|
|
|
- library search P95 below 500 ms with 10,000 indexed playbook versions;
|
|
- playbook detail P95 below 400 ms excluding first cold start;
|
|
- prompt composition below 250 ms for ordinary packages;
|
|
- first meaningful page content below 2.5 seconds on a typical local network;
|
|
- ZIP generation below 3 seconds for a standard Run Pack under 5 MB.
|
|
|
|
These are engineering targets, not user-facing guarantees. Performance tests must record hardware and data shape.
|
|
|
|
### Security
|
|
|
|
- integration secrets encrypted at rest;
|
|
- secret values never returned after initial storage;
|
|
- strict server-side authorization for every workspace resource;
|
|
- imported archives and paths treated as hostile;
|
|
- no arbitrary command execution in the MVP;
|
|
- external URLs validated against SSRF controls;
|
|
- sensitive values redacted from logs and generated prompts;
|
|
- content security policy and secure cookie defaults.
|
|
|
|
### Privacy
|
|
|
|
- no repository content sent to third parties by the reference implementation unless the operator explicitly configures such a service later;
|
|
- configurable data retention;
|
|
- clear evidence of what Gitea data was imported;
|
|
- delete and export workflows for personal data;
|
|
- no telemetry by default in self-hosted mode.
|
|
|
|
### Accessibility and UX
|
|
|
|
- target WCAG 2.2 AA behavior;
|
|
- full keyboard operation for core flows;
|
|
- visible focus states;
|
|
- reduced-motion support;
|
|
- no color-only meaning;
|
|
- responsive behavior from laptop to ultrawide screens;
|
|
- all destructive actions require explicit confirmation and explain consequences.
|
|
|
|
### Maintainability
|
|
|
|
- strict TypeScript and schema validation;
|
|
- domain logic outside UI and transport layers;
|
|
- documented migrations;
|
|
- no circular package dependencies;
|
|
- stable adapter interfaces for forge and agent integrations;
|
|
- tests at domain, persistence, API and browser-flow levels.
|
|
|
|
## MVP release boundary
|
|
|
|
Included:
|
|
|
|
- single installation with personal workspace support;
|
|
- built-in and private playbooks;
|
|
- repository profiles;
|
|
- composer and exports;
|
|
- Run Pack history;
|
|
- local authentication;
|
|
- optional read-only Gitea integration;
|
|
- quality/lint basics;
|
|
- Docker/Unraid deployment.
|
|
|
|
Deferred:
|
|
|
|
- organization billing;
|
|
- public community marketplace;
|
|
- direct write operations to Gitea;
|
|
- direct Codex code execution;
|
|
- multi-agent orchestration;
|
|
- scheduled audits;
|
|
- public SaaS multitenancy;
|
|
- GitHub and GitLab connectors;
|
|
- vector search.
|