Architecture Decisions
The decisions below are recovered from code. The rationale — why each
was chosen over alternatives — could not be recovered, so each ADR has
status Accepted (inferred) and its Pugh Matrix marks team-judgment
cells with ?. The full ADRs are in the register at ../../adrs/.
ADR Index
| ADR | Title | Status |
|---|---|---|
Hexagonal Ports and Adapters |
Accepted (inferred) |
|
Pluggable LLM Backend Abstraction |
Accepted (inferred) |
|
Conversation Middleware Pipeline |
Accepted (inferred) |
|
File-based Session Persistence |
Accepted (inferred) |
Summary
ADR-001 — Hexagonal Ports and Adapters. The engine isolates the domain
behind *_port.py interfaces with adapters at the edges
[AGENTS.md:13-23]. Concretised in [section-concepts] (Configuration,
Observability).
ADR-002 — Pluggable LLM Backend Abstraction. BACKEND_FACTORY maps a
provider enum to a backend, and API-style adapters cover OpenAI,
Anthropic and Vertex shapes
[vibe/core/llm/backend/factory.py:7, vibe/core/llm/format.py:58-185].
Concretised by the Compatibility goal in [section-solution-strategy].
ADR-003 — Conversation Middleware Pipeline. A before_turn pipeline
enforces turn/price limits, auto-compaction and read-only agent modes
[vibe/core/middleware.py:218-247]. Concretised by the Security and
Reliability mechanisms in [section-concepts].
ADR-004 — File-based Session Persistence. Sessions persist as a folder
of meta.json + messages.jsonl, with a v1→v2 migration in code
[vibe/core/session/session_logger.py:62-97, vibe/core/session/session_migration.py:16-41].
|
Note
|
The "why" behind all four decisions is deferred to the Architect
(see |
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.