OpenWebUI fork pin and refresh strategy
Recorded design decisions
Every architecture decision record in docs/adr/, with the status each file
carries today. The table below is read from the directory at build time, not
hand-maintained, so it can’t fall behind whatever files actually exist there.
An accepted record describes an agreed direction — not necessarily what’s built yet. Read a decision alongside the actual code and tests to see which parts of it are available now; “Accepted” means the project has committed to that direction, not that every part of it has shipped.
A status can lag behind the code, and this index doesn’t correct for that. The Status column is rendered exactly as the file states it, including a record that still reads “Proposed” on a decision everyone already treats as settled, or that mentions work as deferred after the deferred part has since landed. When the status word and what you observe in the running system disagree, the code is the more current answer; a stale status is worth fixing in the ADR file itself, not worked around here.
Backend (FastAPI) owns authentication
Error handling: parallel lq_ai.errors packages with an OpenAPI-defined contract
Skill loader lives in the backend (api/), not the gateway
Skill prompt assembly: gateway↔backend auth, templating, and request surface
Embedding model selection and OpenAI provider adapter
LQ.AI web shell co-exists alongside the OpenWebUI shell (does not replace it)
DB-backed user skills (amends ADR 0004)
Gateway egress boundary for tool / data-source providers
Governed tool-calling model (closed-intent posture extended, not abandoned)
Transparency and governance invariants (the engineering posture, made enforceable)
DOCX ingest via Pandoc (canonical text) with an OOXML comment fallback
The Citation Ledger & fiduciary-grade output
Transparent validity/treatment layer (WS-G)
Governed agentic legal-matter sessions (WS-D)
Content-source registry & free-source expansion (WS-E)
gateway/** egress boundary, the api/app/autonomous/** governance chokepoint, and a new external-egress surface).Committee governance document and public meeting records
uv-managed lockfiles for gateway/ and api/
Routing expansion contributions (new jurisdictions and practice areas)
Release versioning policy and release-pipeline ordering
Document-ingestion parsing: remove the dead Docling integration; defer pluggable ingestion (DE-387)
Request budgets and timeouts: sane defaults, per-request tuning, operator escape hatches
Documentation-site generator and hosting: Astro Starlight on GitHub Pages
Pacing 1.0: date preconditions, the January checkpoint, and named trains
Headless / API-only use: acknowledged, not supported
The Word add-in 1.0 slice: scope, the DE-287 collision, and document-representation sequencing
Document-pipeline honesty, the OCR un-deferral, and a local embedding path
Governed orchestration on the autonomous executor
Bundled object store: replace archived MinIO with RustFS; keep the api S3-generic
Deployment migrations: a journal for stack state, first used by the object-store swap
Governed runs in chat: an orchestrator model
Tabular bulk operations (redline report + column memo)
Community skill catalog served from the local submodule
Matter access and central policy administration
lq design-system primitives for the LQ.AI shell
Workspace events, Today View, and read-only email triage
Each row links the ADR file at the commit this page was checked against, so the status you read here is the status that file carried at that commit. Statuses are rendered exactly as the file states them — an ADR that says “Proposed” is listed as Proposed even where the decision is being followed, because the file is the record.
- Reference — the rest of the generated material.
- Release versioning — ADR 0025 in full.
- Governance — who decides, and how a decision is recorded.