Skip to main content

AI/ML

The current AI/ML area contains three related machine-learning lifecycle surfaces: AutoML trains a candidate model, MLflow Experiments records runs and artifacts, and MLflow Models displays registered model versions. They are related by lineage, but the product does not yet provide a complete transition from an AutoML workflow to a visible experiment, registered model, and served endpoint.

AI Gateway is separate. AutoML calls it for GenAI planning and reasoning; AI Gateway routes external chat-model requests and does not deploy AutoML or MLflow-trained models.

Start with Use AI/ML. See Architecture, evidence and reproduction, and AI/ML components.

Assessment scope​

FieldValue
ActorsData scientist, ML engineer, platform administrator, security reviewer, and platform operator
Components assessedOqullus, BFF API, AutoML backend, MLflow, Trino/Ranger, object storage, PostgreSQL, platform stacks, and the AutoML-to-AI-Gateway dependency
Assessed environmentRealm gj76anadpsc; workspace w-t5e2kcxjd; Kubernetes context dev-north-alicloud
Deployed baselinesAutoML 6b3fa2a; AI Gateway 0b9c3d2; MLflow 3.14.0
Source baselinesOqullus f76e57db; BFF API 93ea18e7; AutoML 3112ee9f; AI Gateway 94236c69; platform stacks 5f3f0f0e
ExclusionsFull AI Gateway provider, budget, guardrail, and routing review; production model serving; model-quality benchmarking
Last verified8 September 2026
Review statusEngineering assessment recorded; product, ML, security, data-governance, and operations validation not recorded

Current lifecycle​

  1. A user selects a CSV or Trino table and starts an AutoML workflow in Oqullus. BFF forwards the request to the AutoML backend.
  2. The AutoML backend creates its own short workflow ID, persists workflow and agent state, and runs training in the API pod that accepted the request.
  3. The backend uses AI Gateway for LLM-assisted planning, a shared Trino service identity for table access, local Spark or Python for compute, object storage for data and generated artifacts, and MLflow for run tracking.
  4. Synthetic Data separately accepts a CSV, trains a CTGAN or TVAE synthesizer, and writes a shuffled augmentation containing original and generated rows.
  5. Oqullus polls AutoML status and stores the active workflow ID in that browser. Terminal history is retrieved separately by email.
  6. Experiments and Models read MLflow through BFF. AutoML's workflow identity, ownership metadata, experiment visibility, and registration behavior do not consistently match those pages.
  7. Models is currently a read-only registry browser. Oqullus does not expose a trained-model deployment or serving journey.

Capability boundary​

CapabilityCurrent stateBoundary
CSV AutoMLAvailableUpload and end-to-end size limits are not declared; execution is tied to one API pod
Trino AutoMLAvailable through a service identityIt does not preserve the signed-in user's Trino/Ranger identity
Task suggestionsAvailable for an uploaded CSVSuggestions profile the upload; they do not reserve compute or prove the suggested workflow will complete
Data-engine selectionAutomatic internal algorithm tiersUsers cannot select a compute profile; default Spark is local to the API pod, including tiers labelled large or massive
Synthetic DataCSV generation, polling, quality summary, and history are visibleOutput includes original rows; low or unavailable quality is warning-only; UI does not provide an authorized download action
Workflow statusPolling and terminal history are availableActive recovery is browser-local; direct backend reads are unauthenticated in the assessed deployment
CancellationBackend marks cancellation and stops between agentsNo Oqullus control; the active step is not interrupted immediately
Retry and pod recoveryNo durable queue or run leasePod loss can leave persisted work in a non-terminal state
ExperimentsRead-only browsing and run detailsAutoML ownership conventions do not match the page's filtering; result completeness is not signalled
ModelsRead-only registered-model and version browsingSupervised AutoML does not register a model; no lifecycle action is exposed
ServingNot exposedA disabled UI route and backend prototypes do not constitute a supported journey
AI GatewayExternal GenAI routingIt is an AutoML dependency, not the destination for trained models
Compute capacityTwo fixed AutoML API replicas, each requesting 1 CPU and 8 GiBNo durable worker pool, admission control, queue depth, or workload-based scaling
MLflow capacityOne live application pod was observedKCL declares 1–2 autoscaling, but no HPA was present during the live check
Persistence and recoveryPostgreSQL plus object storageAutoML and MLflow databases each have one replica, no database-native backup policy, and destructive termination policy; no coordinated restore is evidenced

Critical journeys​

JourneyRequired result
Start from CSV or TrinoValidate input and authorization before accepting durable work; state size and compute limits
Observe and reload a runRecover authoritative queued/running/terminal state across reload, browser, and pod changes
CancelPropagate cancellation to active work and report the confirmed terminal outcome
AutoML backend or pod failureReconcile, retry safely, or fail the run visibly without leaving it indefinitely running
Partial outputMark each artifact complete, failed, or quarantined and never present an earlier/partial artifact as the terminal result
AI Gateway failureAttribute the planning failure to the dependency and preserve a safe retry point
Trino/Ranger denialApply the intended user policy and return a non-leaking authorization error
Concurrent usersPreserve run-scoped user identity, enforce admission limits, and avoid capacity interference
Invalid data or configurationReject before durable execution with field-specific limits and no orphaned upload
Generate synthetic dataState whether output is synthetic-only or augmented, enforce quality/privacy policy, and provide an authorized download
Cancel synthetic generationStop fitting and output publication without later overwriting cancelled state as completed
Reproduce a resultRetain immutable data, configuration, code, environment, dependency, seed, and attempt lineage
Review an AutoML experimentNavigate from workflow to the correct authorized MLflow parent and training run
Register a candidateCreate an owner/workspace-scoped model identity and version with complete run lineage
Browse many resourcesPage and filter the complete authorized experiment, run, model, and version collections
Serve a modelRemain explicitly unavailable until deployment identity, runtime, rollout, monitoring, and rollback exist
Database or artifact lossRestore consistent workflow, tracking, registry, and artifact state to a tested recovery point

Findings​

IDFindingComponentsEvidenceImpactIssue
SEC-ML-001Authenticate the AutoML ingress and authorize every run and artifactAutoML backend, BFF API, platform stacks, OqullusSource + live unauthenticated GETsCriticalNot opened
SEC-ML-002Apply one MLflow resource-authorization policy across all BFF routesBFF API, MLflow, OqullusSource-verified; cross-user live test pendingCriticalNot opened
SEC-ML-003Preserve an explicit user-scoped training-data authorization policyAutoML backend, BFF API, Trino, Ranger, platform stacksSource + deployment configurationCritical policy gapNot opened
DATA-ML-001Give notebook and AutoML artifacts a supported path into MLflow ModelsJupyterHub, AutoML backend, MLflow, BFF API, OqullusSource-verifiedHighNot opened
DATA-ML-002Define synthetic-data output, quality, privacy, and retrieval semanticsAutoML backend, BFF API, Oqullus, object storageSource-verified; live generation pendingHighNot opened
REL-ML-001Make AutoML execution, cancellation, and recovery durableAutoML backend, Oqullus, platform stacks, PostgreSQLSource + deployed topologyCriticalNot opened
REL-ML-002Preserve and explain failed AutoML runsAutoML backend, BFF API, OqullusLive + source-verifiedHighNot opened
ARCH-ML-001Define the AutoML engine and compute boundaryAutoML backend, Spark, Trino, MLflow, platform stacks, OqullusSource + deployed configuration; option benchmarks pendingHigh; critical for large-data claimsNot opened
PERF-ML-001Separate API and training capacity and expose an admission envelopeAutoML backend, platform stacks, Spark, OqullusSource + deployed resourcesHigh and costNot opened
PERF-ML-002Page and filter complete MLflow collectionsOqullus, BFF API, MLflowSource-verifiedHigh at scaleNot opened
OPS-ML-001Define retention, backup, and recovery across ML statePlatform stacks, AutoML backend, MLflow, PostgreSQL, object storageSource + deployed topologyCriticalNot opened
UX-ML-001Present the actual ML lifecycle and keep AI Gateway distinctOqullus, platform documentation, AutoML backend, MLflow, AI GatewaySource-verifiedMediumNot opened
UX-ML-002Expand the EDA pipeline-stage acronymOqullusSource-verifiedLowNot opened
UX-ML-003Make target and clustering modes explicitOqullus, AutoML backendSource-verifiedMediumNot opened
UX-ML-004Use an AI/ML umbrella without conflating its capabilitiesOqullus, platform documentationSource-verifiedLowNot opened

Findings describe observed behavior and expected outcomes, not accepted implementation commitments. Issues remain unfiled until finding review.

Assessment maturity​

Scale: 0 absent, 1 ad hoc, 2 partly documented or automated, 3 routinely verified, 4 measured and improving.

LensScoreEvidence-backed assessment
Product and UX1AutoML and read-only MLflow browsing exist, but their transitions, active recovery, cancellation, registration, and serving boundary are incomplete.
Architecture and data1Lifecycle identity is fragmented; synthetic output semantics and local-versus-distributed engine boundaries are not governed coherently.
Security and governance0The deployed AutoML backend permits unauthenticated reads, training uses a shared Trino identity, and MLflow resource checks are inconsistent.
Reliability and operations1Fixed replicas are healthy, but work runs in API processes and backup, reconciliation, retention, and restoration are not established.
Performance and cost1Fixed high-memory API pods exist without queue/admission signals; discovery APIs truncate collections without complete pagination.
Delivery and lifecycle1Exact deployed revisions are known, but the runtime architecture differs from stale worker documentation and capability claims exceed the implemented product.

Current evidence limitation​

The AutoML backend claims were reverified against sparqd/agent-based-ml-platform@3112ee9f7e721a5ad730073bca26bbb755218dd3; see the commit-pinned backend evidence map. That current-main baseline differs from deployed image 6b3fa2a; only scenarios with live or deployment evidence establish deployed behavior. Source and deployment evidence establish the current boundaries and the unauthenticated-read condition. Controlled user-owned training, cross-user authorization, pod-loss, cancellation, large-collection, quality, cost, and restore exercises have not been completed. They remain Unverified only for those specific outcomes; this label does not deny that the deployed features exist.