Skip to content

Feature map

Use this page to choose a workflow. The CLI option inventory lists every built-in command and flag. The Python API inventory lists declared exports, signatures, fields, and methods, including contributor interfaces. An exported descriptor does not imply that core manages its server object; plugin boundaries are listed below.

Configuration and models

Capability Guide Boundary
Declarative DbwardenDatabase, function database_config, project DbwardenConfig Configuration API One default database; plugin keys require registration
URLs, credentials, optional databases, environments, config discovery Configuration Imported project code can execute; redacted output does not encrypt stored artifacts
Multiple databases and model ownership Multiple databases Separate targets and migration directories; overlap requires explicit configuration
SQLAlchemy models, table/column Meta, backend specs Models Accepted fields and emitted operations vary by backend
Model discovery and selective tables Discovery Importable mapped classes; avoid application startup side effects
Declarative managed rows, derivations, validations, historical transitions, frozen artifacts, and data journal Declarative data migrations Versioned bundles use transactional or checkpointed execution; backend conformance evidence is separate from SQL generation
Reverse engineering with generate-models Schema inspection Review inferred types, defaults, and unsupported objects
Pydantic schema generation with auto_schema Auto schemas Runtime validation schemas are separate from migration state

Migration authoring and state

Capability Guide Boundary
Model-based SQL generation, rename detection, explicit new migrations First migration Generated SQL requires review; name similarity does not prove a rename
Versioned SQL, upgrade/rollback sections, RA/ROC repeatables Migration files Repeatables use execution/checksum rules; versioned migrations run in order
Offline export, diff, generation, and state recovery Offline workflow Saved state must correspond to migration history
Expand-contract type changes and severity splits Safety-scoped migrations SAFE/INFO/WARN/CRITICAL are safety levels; categories are named groups
Pending-plan composition, base/deferred state, strict pending checks Safety-scoped migrations Checksums and recorded before/after states must agree
Manual SQL classification with check --write-plan CLI guide Static analysis can return UNKNOWN; it cannot establish live data safety
Merge detection, SQL/plan renumbering, reconcile, and rebase Merge handling Persistent environments need reconciliation; plans and JSON state remain paired
Snapshots, checksums, history, status, recover-model-state Checksum integrity Checksums detect changes; they do not prove the SQL is correct

Execution and inspection

Capability Guide Boundary
Apply, rollback, downgrade, and make-rollback Apply and inspect An inverse schema change cannot recover deleted data
Execution severity ceilings and repeatables Safety-scoped migrations A ceiling stops at a version prefix; --force does not raise it
Read-only diff, check-db, check-impact Safety and impact Reports use available schema/code evidence, not application correctness proofs
Data probes, convergence, journal reconciliation, and explicit reapply Declarative data migrations --data adds live data checks; rolled-back data needs explicit reapply; uncertain durable effects require proof before retry
Lock-status, unlock, native locks, ClickHouse leases Locking ClickHouse lease checks have weaker guarantees than native mutual exclusion
Sandboxed migration replay Workflows Core includes SQLite; external database providers require plugins
SQLite dev mode and SQL translation SQL translation SQLite execution does not verify another server's behavior
JSON output, debugging, performance tracing, metrics, and logs Observability Dependencies and enabled hooks determine available telemetry
Skipped databases, partial success, and exit codes CLI guide Exit code 3 needs result inspection; unresolved static plans use exit code 4

Extensions and backend-specific operations

Capability Guide Boundary
Plugin install, consent, trust, provenance, discovery, and removal Using plugins Plugins execute in-process; trust labels are not a sandbox
Plugin configuration, value hooks, object handlers, ordering anchors Developing plugins Follow the core/plugin API version contract
Base/deferred statements and custom named migration groups Plugin CLI Registered group names do not change safety levels
Plugin CLI commands and category introspection Hook catalog Installed plugins determine extra commands and groups
Seed descriptors, SQL/Python seed files, export/apply/rollback Seeds Seed extensions may require dbwarden-seeds; inspect installed support
FastAPI sessions, lifespan, health, and management routes FastAPI External dbwarden-fastapi package; not implemented in this repository
PostgreSQL types, functions, extensions, RBAC, and object metadata PostgreSQL Several config-owned objects require their corresponding plugins
MySQL metadata and MariaDB-specific fields MySQL and MariaDB MariaDB-specific emission is partial; review MODIFY preservation limits
SQLite rebuilds, generated columns, constraints, and table options SQLite Rebuilds copy rows and can fail on changed constraints
ClickHouse engines, views, aggregation, dictionaries, projections, and indexes ClickHouse Server acceptance and convergence depend on version and schema
ClickHouse DataOp descriptors and populate helpers Data operations Descriptors do not execute or automatically register SQL
ClickHouse RBAC and named collections RBAC Core exports specs; external plugin owns DDL and policy

Maintaining coverage

Run python scripts/check-docs.py after API, command, or documentation changes. It checks declared exports, generated inventories, snippet syntax and supported call signatures, CLI flags, links, anchors, and navigation. It does not execute documentation snippets against external services. Use the relevant runtime tests and a target-server integration run for behavior claims.