Vibe Documentation — Fagan Inspection Report
Inspection Scope and Method
This report is a Fagan Inspection of the documentation under src/docs/:
the arc42 architecture document (arc42/), the four ADRs (adrs/) and
the specification set (spec/prd-vibe.adoc, spec/use-cases-vibe.adoc).
The inspection records defects only — it does not fix them. A defect here is one of:
-
a contradiction between two chapters or documents;
-
a vague or unfalsifiable claim — a statement no reader could test;
-
a statement with no (or questionable)
file:lineevidence in a document whose stated method is code-theory recovery with cited evidence; -
a broken cross-reference — a path that does not resolve.
Severity is Major (a reader is misled, or a contract requirement is violated) or Minor (a localised error or imprecision).
| Category | Count |
|---|---|
Contradictions between chapters |
7 |
Vague or unfalsifiable claims |
5 |
Missing or questionable evidence |
3 |
Broken or dangling cross-references |
3 |
Clarity and consistency |
3 |
Total |
21 |
Contradictions Between Chapters
F-01 (Major) — Chapter 3 and Chapter 5 do not name the same external systems
05_building_block_view.adoc lines 63-65 state: "The external systems
are the same set named in [section-context-and-scope]." They are not.
-
Chapter 3 Technical Context (
03_context_and_scope.adoclines 52-108) names seven external systems: LLM Provider API, Mistral Datalake, GrowthBook, MCP Servers, Vibe Code / Nuage, GitHub, PyPI. -
The Chapter 5 Level-1 diagram (
05_building_block_view.adoclines 36-38) shows only three: LLM Provider API, MCP Servers, Vibe Code / Nuage. Datalake, GrowthBook, GitHub and PyPI are absent.
The documentation contract requires "one system boundary in both". The two chapters disagree, and Chapter 5 asserts an equality that is false.
F-02 (Major) — Chapter 1 claims Chapter 10 has scenarios for all eight characteristics
01_introduction_and_goals.adoc lines 87-89: "Chapter 10 elaborates all
eight ISO/IEC 25010 characteristics with measurable scenarios."
Chapter 10 (10_quality_requirements.adoc) provides six-part quality
scenarios for only five characteristics — Security, Performance
Efficiency, Reliability, Compatibility, Maintainability. The other three
— Usability, Functional Suitability, Portability — appear only as
one-line rows in the quality-tree table (lines 44-54) with no scenario
and no measure. Chapter 1’s claim overstates Chapter 10’s content.
F-03 (Major) — Threat T-007 is given two inconsistent mitigations
08_concepts.adoc Security table (lines 73-77) maps threat T-007 — "A
malicious hook command runs as a shell subprocess" — to the mitigation
"Tiered tool permissions". But a hook is not a tool: the Glossary
(12_glossary.adoc lines 56-58) defines a Hook as a TOML-declared shell
command run on a lifecycle event, distinct from a Tool. Tiered tool
permissions gate tool calls and do not gate hooks.
Chapter 11 (11_technical_risks.adoc lines 66-70) gives the same threat
(via R-006) a different mitigation: hooks are "gated by
`enable_experimental_hooks`" plus a 30 s timeout and 3 retries. The two
chapters describe different controls for one threat, and the Chapter 8
mapping is incorrect.
F-04 (Minor) — Chapter 10 claims every response measure is a literal figure, but two are not
10_quality_requirements.adoc lines 66-67: "Every response measure
carries a literal figure recovered from code."
-
The User Interruption row (lines 123-128) has the response measure "All running tasks receive
CancelledError; no partial message is persisted" — qualitative, with no figure. -
The Auto-Compaction row (lines 97-104) gives the trigger as "the model’s `auto_compact_threshold`" — a symbolic, model-dependent value, not a literal figure (only the "50 %" warning point is literal).
The blanket claim contradicts the table it introduces.
F-05 (Minor) — ACP session class is named two different ways
05_building_block_view.adoc line 129 names the ACP Bridge interface
VibeAcpAgentLoop. 06_runtime_view.adoc line 150 says new_session
"creates a fresh AcpSessionLoop`". The two names are used for the ACP
session abstraction without stating their relationship, and
`AcpSessionLoop carries no file:line evidence of its own.
F-06 (Minor) — The Agent Profile state machine omits profiles the same document discusses
The spec State Machine diagram (spec/use-cases-vibe.adoc lines
399-411) models four states — Default, Plan, AcceptEdits, AutoApprove.
The Glossary lists seven built-in profiles (12_glossary.adoc lines
18-21: adds chat, explore, lean), and the prose immediately below
the diagram (lines 413-415) discusses the read-only chat profile,
which the diagram does not contain.
F-07 (Minor) — Actor granularity differs between diagrams
Chapter 3 Business Context (03_context_and_scope.adoc lines 26-28) and
the spec Actors table (spec/use-cases-vibe.adoc lines 22-23) treat
Developer and Scripter / CI as two separate actors. The Chapter 5
Level-1 diagram (05_building_block_view.adoc line 21) merges them into
one Person(dev, "Developer / Scripter"). The actor set is not stable
across the document.
Vague or Unfalsifiable Claims
F-08 (Minor) — TD-004 rests on a subjective phrase and a coarse evidence link
11_technical_risks.adoc lines 122-126 (TD-004) describes the TUI
widget layer as "the least diffable part of a recovery run" — a
subjective judgement no reader can test — and quantifies it as "~70
widget modules". The figure is approximate and the only evidence is a
directory link (vibe/cli/textual_ui/widgets/); the recovery method
itself rates a directory as too coarse to anchor a leaf claim.
F-09 (Minor) — R-008 cites an unverifiable approximate dependency count
11_technical_risks.adoc lines 73-75 (R-008) states "~80 direct
dependencies". The cited evidence pyproject.toml:30-141 is a line
range, not a count; the figure cannot be checked against it and is
hedged with "~".
F-10 (Minor) — Risk priorities are not reproducible from the stated rule
11_technical_risks.adoc lines 16-17 says priority is "derived from
probability × impact", but the derivation rule is never given and is not
applied consistently:
-
R-009 — Medium × Low → Low
-
R-003, R-005, R-006 — Low × High → Medium
The two combinations weigh probability and impact differently. With no stated rule the priority column is not reproducible.
F-11 (Minor) — ADR-002’s Pugh Matrix does not support its own decision
adrs/adr-002-llm-backend-abstraction.adoc lines 45-55: the chosen
option, "Backend factory + adapters", scores a total of 0 — identical
to the baseline "Single-provider". The matrix therefore does not
discriminate in favour of the decision, and the ADR text does not
acknowledge that the matrix is non-conclusive.
F-12 (Minor) — Chapter 10’s "derived" quality-tree rows are untestable one-liners
10_quality_requirements.adoc lines 44-54: the three derived
characteristics carry only qualitative notes — e.g. Functional
Suitability: "Tool suite + agent loop deliver the stated function";
Performance Efficiency: "Concurrent tools, streaming, bounded I/O".
These are claims, not measurable requirements, and unlike the five
top-goal characteristics they receive no scenario.
Missing or Questionable Evidence
F-13 (Major) — The enable_experimental_hooks gate has no evidence anywhere
11_technical_risks.adoc lines 68-70 (R-006 mitigation) asserts "Hooks
are gated by enable_experimental_hooks`" — a claim about code behaviour.
No `file:line evidence is given for this flag, here or anywhere else in
the documentation set (it appears in neither Chapter 8, the Glossary
Hook entry, nor the system use cases). In a document whose method is
evidence-cited code recovery, an uncited behaviour claim is a defect.
F-14 (Minor) — Two unrelated facts cite the identical evidence range
08_concepts.adoc cites AGENTS.md:71-79 twice for unrelated topics:
the logging configuration ("level and rotation size are env-configurable",
Observability, line 137) and the raise … from e exception-chaining
discipline ("Exception discipline", Error Handling, line 160). One range
cannot back both facts; at least one citation is wrong.
F-15 (Minor) — The Entity Model references ToolCall but never defines it
The spec Entity Model PlantUML (spec/use-cases-vibe.adoc lines
344-389) draws the relationship LLMMessage "1" o-- "many" ToolCall and
lists tool_calls : ToolCall[] as an attribute, but ToolCall is never
declared as a class with attributes, unlike the six entities that are.
The Evidence list (lines 391-395) cites no source for ToolCall.
Broken or Dangling Cross-References
F-16 (Major) — Cross-references to the specification resolve to non-existent paths
The specification files live in src/docs/spec/. The prose references
to them omit the spec/ segment:
-
01_introduction_and_goals.adocline 42 —../../use-cases-vibe.adocand../../prd-vibe.adocresolve tosrc/docs/, notsrc/docs/spec/. -
05_building_block_view.adoclines 183-184 —../../use-cases-vibe.adoc, same error. -
08_concepts.adocline 127 —../use-cases-vibe.adocresolves tosrc/docs/arc42/, a different (also wrong) location, and is inconsistent with the../../depth used in Chapters 1 and 5.
None of the three paths resolve to the actual file.
F-17 (Minor) — References point outside src/docs/ to OPEN_QUESTIONS.adoc and QUESTION_TREE.adoc
08_concepts.adoc (line 22), 09_architecture_decisions.adoc (line
67), 11_technical_risks.adoc (line 19), spec/prd-vibe.adoc (lines
129) and spec/use-cases-vibe.adoc (line 488) refer the reader to
OPEN_QUESTIONS.adoc; arc42/arc42.adoc (line 17), spec/prd-vibe.adoc
(line 13) and spec/use-cases-vibe.adoc (line 12) refer to
QUESTION_TREE.adoc. Both files exist only at the repository root,
outside src/docs/. The documentation contract requires
cross-references to resolve inside src/docs/ and explicitly forbids
pointing at the Question Tree.
F-18 (Minor) — ADR-to-Chapter-8 traceability is one-directional
09_architecture_decisions.adoc line 46 and
adrs/adr-001-hexagonal-ports.adoc state ADR-001 is "concretised in
Chapter 8 (Configuration, Observability)", but neither the Chapter 8
Configuration nor Observability section back-references ADR-001.
Likewise adrs/adr-003-middleware-pipeline.adoc claims it "realises the
Reliability … mechanisms in Chapter 8", yet no Chapter 8 section
back-references ADR-003 for reliability (only the Security table row
does). The contract requires Chapter 8 concepts to back-reference the
ADR that decided them.
Clarity and Consistency
F-19 (Minor) — The command vibe is rendered as the directory vibe/
Throughout the specification the CLI command vibe is hyperlinked to
the vibe/ source directory and labelled "vibe/", conflating the
command with the package directory. Examples: SUC-1 heading "The vibe/
command-line interface" (spec/use-cases-vibe.adoc line 248); UC-2
Trigger "vibe/ -p" (line 112); UC-1 Trigger "Developer runs vibe/" (line
69); Chapter 7 "the single vibe/ … process"
(07_deployment_view.adoc line 60).
F-20 (Minor) — Typo "onbarding"
spec/use-cases-vibe.adoc line 77 (UC-1 Preconditions): "or onbarding
(UC-7) runs first" should read "onboarding".
F-21 (Minor) — Acceptance criterion tagged with an unrelated business rule
spec/use-cases-vibe.adoc lines 509-515: the Gherkin "Feature:
Programmatic price ceiling" is tagged "(UC-2, BR-5)". BR-5 states
"Programmatic mode forces the auto-approve agent" (line 476) — it has
nothing to do with the --max-price ceiling the scenario exercises. No
business rule in the catalogue actually covers the price ceiling, so the
traceability tag is misleading.
Defect Summary
End of report. Findings are recorded for disposition; no fixes were applied.
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.