hub-core/hub_core/runtime/tables.py
tegwick ab936a1e98
Some checks failed
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / pytest-smoke (push) Failing after 2s
feat: transport authoritative workload projections
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a0230c-b06c-7641-808a-e191b6d1da49
2026-08-23 10:54:40 +02:00

237 lines
11 KiB
Python

from __future__ import annotations
import sqlalchemy as sa
runtime_metadata = sa.MetaData()
runtime_registrations = sa.Table(
"runtime_registrations",
runtime_metadata,
sa.Column("hub_slug", sa.String(120), primary_key=True),
sa.Column("package", sa.JSON(), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False),
)
runtime_messages = sa.Table(
"runtime_messages",
runtime_metadata,
sa.Column("id", sa.String(36), primary_key=True),
sa.Column("schema_version", sa.String(40), nullable=False),
sa.Column("correlation_id", sa.String(36), nullable=False, index=True),
sa.Column("conversation_id", sa.String(36), nullable=True, index=True),
sa.Column("from_address", sa.String(240), nullable=False),
sa.Column("to_addresses", sa.JSON(), nullable=False),
sa.Column("body", sa.Text(), nullable=False),
sa.Column("subject_refs", sa.JSON(), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, index=True),
)
def _event_table(name: str) -> sa.Table:
return sa.Table(
name,
runtime_metadata,
sa.Column("id", sa.String(36), primary_key=True),
sa.Column("schema_version", sa.String(40), nullable=False),
sa.Column("correlation_id", sa.String(36), nullable=False, index=True),
sa.Column("event_type", sa.String(160), nullable=False, index=True),
sa.Column("occurred_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("subject_refs", sa.JSON(), nullable=False),
sa.Column("payload", sa.JSON(), nullable=False),
sa.Column("recorded_at", sa.DateTime(timezone=True), nullable=False, index=True),
)
runtime_progress_events = _event_table("runtime_progress_events")
runtime_interaction_events = _event_table("runtime_interaction_events")
runtime_audit_ledger = sa.Table(
"runtime_audit_ledger",
runtime_metadata,
sa.Column("id", sa.String(36), primary_key=True),
sa.Column("action", sa.String(120), nullable=False, index=True),
sa.Column("subject_type", sa.String(80), nullable=False),
sa.Column("subject_id", sa.String(240), nullable=False, index=True),
sa.Column("correlation_id", sa.String(36), nullable=True, index=True),
sa.Column("payload_hash", sa.String(64), nullable=False),
sa.Column("detail", sa.JSON(), nullable=False),
sa.Column("recorded_at", sa.DateTime(timezone=True), nullable=False, index=True),
)
runtime_repository_navigation_state = sa.Table(
"runtime_repository_navigation_state",
runtime_metadata,
sa.Column("projection_id", sa.String(80), primary_key=True),
sa.Column("projection_status", sa.String(20), nullable=False),
sa.Column("snapshot_id", sa.String(64), nullable=False, unique=True),
sa.Column("source_snapshot", sa.JSON(), nullable=False),
sa.Column("source_checked_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("rebuilt_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("content_hash", sa.String(64), nullable=False),
sa.Column("repository_count", sa.Integer(), nullable=False),
sa.Column("diagnostics", sa.JSON(), nullable=False),
)
runtime_repository_navigation_repositories = sa.Table(
"runtime_repository_navigation_repositories",
runtime_metadata,
sa.Column("repository_id", sa.String(36), primary_key=True),
sa.Column("slug", sa.String(120), nullable=False, unique=True, index=True),
sa.Column("lifecycle", sa.String(20), nullable=False, index=True),
sa.Column("primary_domain", sa.String(40), nullable=False, index=True),
sa.Column("secondary_domains", sa.JSON(), nullable=False),
sa.Column("category", sa.String(40), nullable=False, index=True),
sa.Column("capability_tags", sa.JSON(), nullable=False),
sa.Column("business_stake", sa.JSON(), nullable=False),
sa.Column("business_mechanics", sa.JSON(), nullable=False),
sa.Column("provenance", sa.JSON(), nullable=False),
)
runtime_repository_navigation_facets = sa.Table(
"runtime_repository_navigation_facets",
runtime_metadata,
sa.Column("kind", sa.String(40), primary_key=True),
sa.Column("value", sa.String(120), primary_key=True),
sa.Column("repository_count", sa.Integer(), nullable=False),
sa.Column("repository_ids", sa.JSON(), nullable=False),
)
runtime_workload_projection_state = sa.Table(
"runtime_workload_projection_state",
runtime_metadata,
sa.Column("projection_id", sa.String(80), primary_key=True),
sa.Column("projection_status", sa.String(20), nullable=False),
sa.Column("snapshot_id", sa.String(64), nullable=False, unique=True),
sa.Column("source_snapshot", sa.JSON(), nullable=False),
sa.Column("source_checked_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("rebuilt_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("content_hash", sa.String(64), nullable=False),
sa.Column("workload_count", sa.Integer(), nullable=False),
sa.Column("diagnostics", sa.JSON(), nullable=False),
)
runtime_workload_projection_records = sa.Table(
"runtime_workload_projection_records",
runtime_metadata,
sa.Column("rapp_id", sa.String(120), primary_key=True),
sa.Column("name", sa.String(120), primary_key=True),
sa.Column("declaration_repo", sa.String(120), nullable=False, index=True),
sa.Column("declaration_path", sa.String(260), nullable=False),
sa.Column("source_git_revision", sa.String(64), nullable=False),
sa.Column("observed_at", sa.String(40), nullable=False),
sa.Column("ownership_repo", sa.String(120), nullable=True),
sa.Column("readiness_state", sa.String(80), nullable=True),
sa.Column("data_classification", sa.String(80), nullable=True),
sa.Column("criticality", sa.String(80), nullable=True),
sa.Column("deployables", sa.JSON(), nullable=False),
)
compat_hubs = sa.Table(
"compat_hubs",
runtime_metadata,
sa.Column("id", sa.String(36), primary_key=True),
sa.Column("slug", sa.String(120), nullable=False, unique=True, index=True),
sa.Column("name", sa.String(240), nullable=False),
sa.Column("domain", sa.String(240), nullable=True),
sa.Column("hub_kind", sa.String(80), nullable=True),
sa.Column("hub_family", sa.String(80), nullable=True),
sa.Column("vsm_function", sa.String(80), nullable=True),
sa.Column("vsm_system", sa.String(80), nullable=True),
sa.Column("status", sa.String(40), nullable=False),
sa.Column("description", sa.Text(), nullable=True),
sa.Column("body", sa.JSON(), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False),
)
compat_manifests = sa.Table(
"compat_manifests",
runtime_metadata,
sa.Column("id", sa.String(36), primary_key=True),
sa.Column("hub_id", sa.String(36), sa.ForeignKey("compat_hubs.id"), nullable=True, index=True),
sa.Column("hub_slug", sa.String(120), nullable=True, index=True),
sa.Column("manifest_version", sa.String(40), nullable=False),
sa.Column("status", sa.String(40), nullable=False),
sa.Column("body", sa.JSON(), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False),
)
compat_api_consumers = sa.Table(
"compat_api_consumers",
runtime_metadata,
sa.Column("id", sa.String(36), primary_key=True),
sa.Column("slug", sa.String(120), nullable=True, unique=True, index=True),
sa.Column("name", sa.String(240), nullable=False, index=True),
sa.Column("description", sa.Text(), nullable=True),
sa.Column("hub_capability_manifest_id", sa.String(36), nullable=True, index=True),
sa.Column("rate_limit_per_minute", sa.Integer(), nullable=True),
sa.Column("quota_per_day", sa.Integer(), nullable=True),
sa.Column("key_prefix", sa.String(32), nullable=True),
sa.Column("status", sa.String(40), nullable=False),
sa.Column("body", sa.JSON(), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
)
compat_api_keys = sa.Table(
"compat_api_keys",
runtime_metadata,
sa.Column("id", sa.String(36), primary_key=True),
sa.Column(
"api_consumer_id",
sa.String(36),
sa.ForeignKey("compat_api_consumers.id"),
nullable=False,
index=True,
),
sa.Column("key_prefix", sa.String(32), nullable=False, index=True),
sa.Column("key_hash", sa.String(64), nullable=False, unique=True),
sa.Column("scopes", sa.Text(), nullable=True),
sa.Column("status", sa.String(40), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
)
compat_widgets = sa.Table(
"compat_widgets",
runtime_metadata,
sa.Column("id", sa.String(36), primary_key=True),
sa.Column("hub_id", sa.String(36), sa.ForeignKey("compat_hubs.id"), nullable=False, index=True),
sa.Column("name", sa.String(240), nullable=False),
sa.Column("widget_type", sa.String(120), nullable=True, index=True),
sa.Column("capability_ref", sa.String(240), nullable=True, index=True),
sa.Column("view_context", sa.String(500), nullable=True),
sa.Column("policy_scope", sa.String(120), nullable=True),
sa.Column("status", sa.String(40), nullable=False),
sa.Column("body", sa.JSON(), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
)
compat_migration_runs = sa.Table(
"compat_migration_runs",
runtime_metadata,
sa.Column("id", sa.String(36), primary_key=True),
sa.Column("source", sa.String(120), nullable=False, index=True),
sa.Column("schema_version", sa.String(80), nullable=False),
sa.Column("bundle_sha256", sa.String(64), nullable=False, index=True),
sa.Column("dry_run", sa.Boolean(), nullable=False),
sa.Column("status", sa.String(40), nullable=False),
sa.Column("counts", sa.JSON(), nullable=False),
sa.Column("diagnostics", sa.JSON(), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
)
runtime_import_runs = sa.Table(
"runtime_import_runs",
runtime_metadata,
sa.Column("id", sa.String(36), primary_key=True),
sa.Column("source", sa.String(120), nullable=False, index=True),
sa.Column("schema_version", sa.String(80), nullable=False),
sa.Column("bundle_sha256", sa.String(64), nullable=False, unique=True, index=True),
sa.Column("high_water_mark", sa.String(200), nullable=True),
sa.Column("counts", sa.JSON(), nullable=False),
sa.Column("content_hashes", sa.JSON(), nullable=False),
sa.Column("status", sa.String(40), nullable=False),
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
)