⚙️ Architecture Control Plane¶
The Architecture Control Plane provides deterministic review, comparison, and promotion workflows for metadata-defined architecture.
It turns architecture state into explicit artifacts:
- Architecture State
- Architecture Change Report
- Architecture Promotion Report
- Architecture Approval Artifact
- Architecture Execution Record
- deterministic report fingerprints
These artifacts make structural architecture changes reviewable, policy-aware, approvable, verifiable, executable through controlled scopes, visible in the UI, and suitable for CI pipelines.
Architecture Catalog complements the control plane as a read-only discovery surface. It shows how datasets are defined, connected, controlled and linked to execution evidence without creating approvals or executing loads.
🔧 1. Purpose¶
elevata treats architecture as executable metadata.
The Architecture Control Plane defines the review and comparison layer around that metadata:
Architecture State
↓
Architecture Diff
↓
MigrationPlan
↓
Policy Decisions
↓
Architecture Change Report
↓
Architecture Review Briefing
↓
Architecture Approval Artifact
↓
Controlled Execution
↓
Architecture Execution Record
This makes schema evolution intent explicit before load execution applies any DDL or DML.
🔧 2. Architecture State¶
Architecture State is a deterministic snapshot of the metadata-defined platform architecture.
It contains:
- datasets
- columns
- materialization semantics
- incremental strategy
- historization metadata
- lineage-safe rename metadata
- stable fingerprints
The command:
python manage.py elevata_state
renders the architecture state as deterministic JSON.
To write a state artifact:
python manage.py elevata_state --output .artifacts/dev_architecture_state.json
To print only the fingerprint:
python manage.py elevata_state --fingerprint-only
The persisted runtime baseline directory is configured via:
ELEVATA_ARCH_STATE_DIR=.elevata/state
The load runner builds the current Architecture State during execution planning and uses it for architecture diffing, MigrationPlan derivation, and guard checks.
The persisted runtime baseline represents the applied architecture state. It is written after successful load execution. Dry-run persistence is controlled via:
ELEVATA_PERSIST_ARCH_STATE_ON_DRY_RUN=false
🔧 3. Architecture Change Report¶
An Architecture Change Report describes the difference between a baseline state and the metadata-defined architecture state.
The report includes:
- state fingerprints
- affected dataset scope
- dataset changes
- column changes
- MigrationPlan actions
- policy decisions
- deterministic report fingerprint
Report scope is part of the report contract.
| Invocation | Scope mode | Scope meaning |
|---|---|---|
elevata_plan --all |
all |
all active target datasets |
elevata_plan --all --schema rawcore |
scoped |
all active target datasets in the selected schema |
elevata_plan rc_aw_customer |
scoped |
the selected dataset and related architecture scope |
For scoped reports, the report payload contains only changes, migration actions, policy decisions and summary counts that belong to the selected scope. The report fingerprint therefore represents the selected architecture scope.
When a target dataset name is unique, --schema can be omitted. Use --schema when the same dataset name exists in multiple schemas or when CI scripts should declare the intended schema explicitly.
Render a report for one dataset:
python manage.py elevata_plan rc_aw_customer
Render a report for one dataset with an explicit schema:
python manage.py elevata_plan rc_aw_customer --schema rawcore
Render a report for all datasets in a schema:
python manage.py elevata_plan --all --schema rawcore
Render JSON for CI:
python manage.py elevata_plan --all --format json
Use an explicit baseline state file:
python manage.py elevata_plan rc_aw_customer \
--previous-state .artifacts/prod_architecture_state.json
🔧 4. Architecture Approval Artifact¶
An Architecture Approval Artifact records a review decision for one exact Architecture Change Report fingerprint.
It answers:
Has this exact architecture change report been reviewed and approved?
Approval artifacts are deterministic JSON artifacts. They bind a review decision to the report fingerprint, report scope, report state, summary counts, and policy status of the approved Architecture Change Report.
An approval does not override policy decisions. If a report contains blocking policy decisions, execution remains blocked by the load runner and materialization policy.
Approval artifacts are created from Architecture Change Report JSON:
python manage.py elevata_plan rc_aw_customer \
--format json \
--output .artifacts/architecture_plan_rc_aw_customer.json
python manage.py elevata_approve .artifacts/architecture_plan_rc_aw_customer.json \
--approved-by "Reviewer Name" \
--note "Reviewed for deployment." \
--output .artifacts/architecture_approval_rc_aw_customer.json
To store the approval artifact in the configured approval directory:
python manage.py elevata_approve .artifacts/architecture_plan_rc_aw_customer.json \
--approved-by "Reviewer Name" \
--note "Reviewed for deployment." \
--store
The approval artifact directory is configured via:
ELEVATA_ARCH_APPROVAL_DIR=.elevata/approvals
The stored file name is derived from the approved report fingerprint:
<report_fingerprint>.approval.json
To verify that an approval artifact matches an Architecture Change Report:
python manage.py elevata_approval_check \
.artifacts/architecture_plan_rc_aw_customer.json \
.elevata/approvals/<report_fingerprint>.approval.json
The approval check fails when:
- the approval artifact fingerprint does not match its payload
- the approval identifier does not match the artifact fingerprint
- the approval references another Architecture Change Report
- the review decision is not
approved
🔧 5. Architecture Review Status UI¶
The Architecture Review Status UI shows the review state for a selected TargetDataset architecture scope.
It displays:
- review status
- report fingerprint
- approval identifier and artifact fingerprint
- reviewer and decision timestamp
- policy status
- architecture scope
- change summary
- state fingerprints
Review states include approved, pending review, approval drift, blocked by policy, no architecture changes, and invalid approval artifact.
🔧 6. Architecture Control UI¶
The Architecture Control UI makes Architecture Control Plane workflows operable across controlled architecture scopes.
It supports:
- all-dataset scopes
- schema scopes
- TargetDataset scopes
- TargetDataset scopes with target-only execution
🧩 6.1 Architecture Review Briefing¶
Architecture Review Briefing is a compact, deterministic decision aid inside Architecture Control.
It summarizes what a reviewer should understand before approving or executing the selected scope:
- selected scope and scope size
- review state
- architecture change counts
- policy attention
- destructive or blocking migration signals
- execution readiness
- suggested reviewer focus
The briefing is derived from existing Architecture Control signals: the current scoped Architecture Change Report, the Architecture Review Status and the Execution Preview. It is read-only and does not create approvals, run approval checks, xecute loads or mutate metadata.
The UI keeps the briefing compact by showing the main reviewer signals first. Detailed sections are available on demand through an expandable detail area.
The Architecture Control UI provides controlled actions for architecture artifacts and execution:
- show the scoped Architecture Change Report
- download the scoped Architecture Change Report as JSON
- create an Architecture Approval Artifact
- check the stored Approval Artifact against the report
- refresh the Architecture Review Status
- inspect the Architecture Review Briefing
- inspect the Execution Preview
- run controlled load execution
- inspect captured execution output
- inspect the Architecture Execution Record
- browse stored Architecture Execution Records
- filter execution history by scope, status, date range and dependency mode
- download stored execution record JSON
- apply retention cleanup for older execution records
Approval Artifact creation records the logged-in reviewer, the decision timestamp, and an optional review note. The artifact is stored in the configured approval artifact directory and is bound to the report fingerprint.
Approval checks compare the stored Approval Artifact with the current scoped Architecture Change Report and surface the result in the UI.
Controlled execution runs through the load runner. It does not bypass preflight validation, materialization policy checks, Architecture Guard enforcement, or approval matching.
Execution uses the selected Architecture Control scope:
| Scope | Execution behavior |
|---|---|
| All datasets | Executes all active target datasets with dependency ordering |
| Schema | Executes selected schema roots with dependency ordering |
| TargetDataset | Executes the selected TargetDataset with dependency ordering |
| TargetDataset, target-only | Executes only the selected TargetDataset |
Target-only execution is available only for TargetDataset scopes. It is intended for focused iteration when upstream data is already available.
Controlled execution produces an Architecture Execution Record.
🔧 7. Artifact Storage for Shared Deployments¶
Architecture Control Plane artifacts are stored on the server-side filesystem.
The Architecture State Store uses ELEVATA_ARCH_STATE_DIR and stores the persisted architecture state as JSON. The Approval Artifact Store uses ELEVATA_ARCH_APPROVAL_DIR and stores deterministic approval artifacts as JSON files. The Architecture Execution Record Store uses ELEVATA_ARCH_EXECUTION_DIR and stores controlled execution records as JSON files.
Default artifact directories:
ELEVATA_ARCH_STATE_DIR=.elevata/state
ELEVATA_ARCH_APPROVAL_DIR=.elevata/approvals
ELEVATA_ARCH_EXECUTION_DIR=.elevata/executions
For single-instance environments, the default .elevata paths provide a compact artifact layout inside the elevata runtime directory. For shared deployments, these directories must point to persistent server-side storage that is available to every application instance serving the same metadata database.
Recommended deployment pattern:
ELEVATA_ARCH_STATE_DIR=/var/lib/elevata/state
ELEVATA_ARCH_APPROVAL_DIR=/var/lib/elevata/approvals
ELEVATA_ARCH_EXECUTION_DIR=/var/lib/elevata/executions
In containerized or multi-instance deployments, these paths are backed by a shared persistent volume. This ensures that Architecture State, Approval Artifacts, Review Status, Approval Checks, and Architecture Execution Records are resolved consistently for all users of the shared metadata application.
The metadata database stores metadata definitions. Architecture Control Plane artifacts are stored in the configured artifact directories.
Architecture Execution Records use a table-shaped JSON contract. This keeps the file-backed store compact while preserving a stable record structure for operational audit processing.
Architecture Execution Record history is resolved from the configured execution record directory. Retention cleanup removes stored execution record artifacts older than the selected retention window. The cleanup operates on audit artifacts only and does not alter metadata definitions, approval artifacts, Architecture State artifacts, load run logs or load run snapshots.
🔧 8. Architecture Promotion Report¶
An Architecture Promotion Report compares two Architecture State artifacts.
It answers:
What would change when this target architecture state is compared to that source state?
Example:
python manage.py elevata_promote \
.artifacts/dev_architecture_state.json \
.artifacts/prod_architecture_state.json \
--source-label dev \
--target-label prod
For schema-scoped comparison:
python manage.py elevata_promote \
.artifacts/dev_architecture_state.json \
.artifacts/prod_architecture_state.json \
--schema rawcore
For dataset-scoped comparison:
python manage.py elevata_promote \
.artifacts/dev_architecture_state.json \
.artifacts/prod_architecture_state.json \
--target-dataset rc_aw_customer
For dataset-scoped comparison with an explicit schema:
python manage.py elevata_promote \
.artifacts/dev_architecture_state.json \
.artifacts/prod_architecture_state.json \
--target-dataset rc_aw_customer \
--schema rawcore
Promotion reports use the same scope semantics as change reports. The embedded Architecture Change Report exposes the effective scope in JSON and text output.
🔧 9. CI Exit Policies¶
Architecture reports and promotion reports support explicit exit policies:
| Option | Behavior |
|---|---|
--fail-on-changes |
Fails when architecture changes are present |
--fail-on-blocked |
Fails when policy decisions block execution |
--fail-on-destructive |
Fails when destructive actions are present |
Example:
python manage.py elevata_plan --all \
--format json \
--fail-on-blocked
Example:
python manage.py elevata_promote \
.artifacts/dev_architecture_state.json \
.artifacts/prod_architecture_state.json \
--format json \
--fail-on-blocked \
--fail-on-destructive
🔧 10. Execution Guardrails¶
The Architecture Control Plane separates architecture review, approval, execution control, and load-run enforcement.
Load execution remains protected by the load runner. elevata_load performs its own preflight checks before DDL or DML can be executed.
This preserves a strict separation:
| Command | Responsibility |
|---|---|
elevata_state |
Render architecture state |
elevata_plan |
Render architecture change report |
elevata_promote |
Compare architecture state artifacts |
elevata_approve |
Create architecture approval artifact |
elevata_approval_check |
Verify approval artifact against a change report |
elevata_load |
Execute loads with preflight and guard checks |
The Architecture Control UI invokes the same load runner through a constrained execution path. The UI does not expose arbitrary load runner flags. It exposes controlled scope selection, approval status, execution preview, target-only execution for TargetDataset scopes, captured output, and execution records.
🔧 11. Architecture Execution Record¶
An Architecture Execution Record describes one controlled Architecture Control execution.
It captures:
- execution identifier
- reviewer or operator
- timestamps and duration
- execution status
- Architecture Control scope
- dependency mode
- report fingerprint
- approval identifier
- preview fingerprint
- command invocation metadata
- output and error tails
- output and error line counts
- deterministic record fingerprint
Execution records answer:
Who executed which approved architecture scope, with which dependency mode, and what happened?
The record is stored as deterministic JSON:
<execution_id>.execution.json
Stored records can be listed in Architecture Control, filtered by scope, status, date range and dependency mode, opened as detail views, and downloaded as JSON audit artifacts. Retention cleanup removes older stored records from the execution record store.
Architecture Execution Records are audit artifacts. They complement load-run logs and snapshots:
| Artifact | Purpose |
|---|---|
| Load Run Log | Dataset- and attempt-level operational events |
| Load Run Snapshot | Batch-level execution state and outcomes |
| Architecture Execution Record | Architecture Control execution decision and result |
🔧 12. Deterministic Fingerprints¶
Architecture State, Architecture Change Report, Architecture Promotion Report, Architecture Approval Artifact, and Architecture Execution Record each expose deterministic fingerprints.
Fingerprints are derived from canonical JSON representations and allow CI, review processes, approval decisions, promotion workflows, and audit processes to reference exact architecture artifacts.
🔧 13. Operational Smoke Checks¶
The following commands provide a compact validation set for architecture artifacts.
Export the current architecture state:
python manage.py elevata_state --output .artifacts/current_architecture_state.json
Render a platform-wide report:
python manage.py elevata_plan --all \
--format json \
--output .artifacts/architecture_plan_all.json
Render a schema-scoped report:
python manage.py elevata_plan --all \
--schema rawcore \
--format json \
--output .artifacts/architecture_plan_rawcore.json
Render a dataset-scoped report:
python manage.py elevata_plan rc_aw_customer \
--format json \
--output .artifacts/architecture_plan_rc_aw_customer.json
Compare two state artifacts:
python manage.py elevata_promote \
.artifacts/current_architecture_state.json \
.artifacts/current_architecture_state.json \
--format json \
--output .artifacts/architecture_promotion_self_check.json
Create and store an approval artifact:
python manage.py elevata_approve .artifacts/architecture_plan_rc_aw_customer.json \
--approved-by "Reviewer Name" \
--note "Reviewed for deployment." \
--store
Verify the stored approval artifact:
python manage.py elevata_approval_check \
.artifacts/architecture_plan_rc_aw_customer.json \
.elevata/approvals/<report_fingerprint>.approval.json
Validate no-change exit behavior against an explicit baseline:
python manage.py elevata_plan --all \
--previous-state .artifacts/current_architecture_state.json \
--format json \
--fail-on-changes
© 2025-2026 elevata - Technical Documentation