Quality Requirements
Quality Requirements Overview
The quality tree covers all eight ISO/IEC 25010 characteristics. Each is marked either as concretising a Chapter 1.2 top goal or as derived (a quality requirement visible in code but not among the top goals).
| Characteristic | Relation to Chapter 1.2 | Note |
|---|---|---|
Security |
Concretises Security / Safety |
Permission tiers, trust gate, secret storage. |
Usability |
Concretises Usability |
TUI, onboarding, autocompletion. |
Maintainability |
Concretises Maintainability |
Hexagonal ports, strict static analysis. |
Compatibility |
Concretises Compatibility |
Multi-provider, MCP, ACP. |
Reliability |
Concretises Reliability |
Retry, limits, recovery. |
Functional Suitability |
Derived |
Tool suite + agent loop deliver the stated function. |
Performance Efficiency |
Derived |
Concurrent tools, streaming, bounded I/O. |
Portability |
Derived |
Cross-platform; UNIX is the supported target. |
|
Warning
|
Both the selection of the Chapter 1.2 top goals — and therefore the concretises / derived split in the table above — and the priority ranking of the quality goals are deferred to the Product Owner and Architect: the code cannot rank the eight ISO/IEC 25010 characteristics (Question Tree Q4.9). The scenarios below are testable on their own, but which to favour when they conflict is an unresolved decision. |
Quality Scenarios
Each scenario is in the six-part form. Every response measure is recovered from code — a literal figure where the code defines one, otherwise the observable outcome (a clean cancellation, the model-supplied compaction threshold) — so the requirement is testable.
| Source | Stimulus | Artifact | Environment | Response | Response Measure |
|---|---|---|---|---|---|
LLM |
Emits a shell command |
|
Interactive session, |
Tool prompts for approval, then runs the command with a timeout |
Default timeout 300 s (overridable); stdout+stderr captured to a 16 000-byte cap [vibe/core/tools/builtins/bash.py:222-226] — Security. |
LLM |
Requests a code search |
|
Large repository |
Search returns within the timeout, capped |
Timeout 60 s; at most 100 matches and 64 000 output bytes [vibe/core/tools/builtins/grep.py:43-51] — Performance Efficiency. |
LLM |
Reads a large file |
|
Any session |
File content is returned truncated, with |
Read cap 64 000 bytes per call [vibe/core/tools/builtins/read_file.py:65-66] — Performance Efficiency. |
Conversation |
Context tokens approach the model limit |
Agent Loop + compaction |
Long interactive session |
History is summarised and the session forks |
Triggered at the model’s |
LLM Provider |
Returns a transient error |
Mistral backend |
Network instability |
The request is retried with exponential backoff |
500 ms initial delay, 1.5x exponent, 300 s cap [vibe/core/llm/backend/mistral.py:212-222] — Reliability. |
MCP Server |
Is slow to start or respond |
MCP registry |
External tool provider configured |
Startup and per-call are bounded by timeouts |
Startup 10 s, tool call 60 s (defaults) [vibe/core/config/_settings.py:231-237] — Compatibility. |
Developer |
Presses Escape mid-turn |
Agent Loop |
Tool tasks running |
In-flight tool tasks are cancelled and the turn ends cleanly |
All running tasks receive |
Hook author |
Configures a slow hook |
Hooks manager |
|
The hook is killed on timeout and retried a bounded number of times |
Default timeout 30 s; at most 3 retries [vibe/core/hooks/models.py:30, vibe/core/hooks/manager.py:28] — Reliability. |
Maintainer |
Submits a code change |
CI pipeline |
Pull request |
Pyright (strict) and ruff must pass before merge |
Zero type errors, zero lint errors [AGENTS.md:24-46] — Maintainability. |
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.