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

bash tool

Interactive session, default agent

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

grep tool

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

read_file tool

Any session

File content is returned truncated, with was_truncated set

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 auto_compact_threshold; a warning is injected at 50 % of that threshold [vibe/core/middleware.py:81-126] — Reliability.

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 CancelledError; no partial message is persisted [vibe/core/agent_loop.py:1244-1259] — Reliability.

Hook author

Configures a slow hook

Hooks manager

POST_AGENT_TURN event

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.