6.4 KiB
Platform architecture (summary)
This module aggregates cross-cutting contracts and guardrails that every StellaOps service must follow.
Anchors
- High-level system view:
../../ARCHITECTURE_REFERENCE.md - Architecture overview:
../../ARCHITECTURE_OVERVIEW.md - Platform overview:
architecture-overview.md - Platform service definition:
platform-service.md - Aggregation-Only Contract:
../../aoc/aggregation-only-contract.md(referenced across ingestion/observability docs)
Scope
- Identity & tenancy: Authority-issued OpToks, tenant scoping, RBAC, short TTLs; see Authority module docs.
- AOC & provenance: services ingest evidence without mutating/merging; provenance preserved; determinism required.
- Offline posture: Offline Kit parity, sealed-mode defaults, deterministic bundles.
- Platform Service: aggregation endpoints for health, quotas, onboarding, preferences, and global search.
- Observability baseline: metrics/logging/tracing patterns reused across modules; collectors documented under Telemetry module.
- Determinism: stable ordering, UTC timestamps, content-addressed artifacts, reproducible exports.
Coordination
Platform docs are the starting point for new contributors; keep this summary in sync with module-specific dossiers and sprint references.
Shared Storage Driver Contract (Sprint 312)
This contract is the default for all stateful StellaOps webservices unless a module ADR explicitly overrides it.
Storage:Driver- Accepted values:
postgres,inmemory,filesystem. - Production default:
postgres. inmemoryandfilesystemare non-production/testing-only and must be explicitly configured.
- Accepted values:
Storage:ObjectStore:Driver- Accepted values at platform key level:
rustfs,seed-fs. - Module runtime contracts may narrow this set and must fail fast for unsupported values.
- Use only for blob/object payload channels (artifacts, snapshots, package blobs).
- Accepted values at platform key level:
ConnectionStrings:Default- Required when
Storage:Driver=postgresunless a service-specific connection key is provided. - Service-specific key, when present, takes precedence over
ConnectionStrings:Default.
- Required when
Fail-fast policy:
- Non-development runtime must fail startup when required storage configuration is missing (no silent localhost/file fallback).
- Development runtime may use localhost/file defaults only when explicitly intended for local workflows.
Current implementation status (2026-03-05):
PacksRegistry: Postgres metadata/state + seed-fs payload channel for pack/provenance/attestation blobs; startup rejectsrustfsand unknown object-store drivers.TaskRunner: Postgres run state/log/approval + seed-fs artifact payload channel; startup rejectsrustfsand unknown object-store drivers in both WebService and Worker.RiskEngine: Postgres-backed result store (riskengine.risk_score_results) with explicit in-memory test fallback.Replay: Postgres snapshot index + seed-fs snapshot blob store; startup rejectsrustfsand unknown object-store drivers.OpsMemory: connection precedence aligned toConnectionStrings:OpsMemory -> ConnectionStrings:Default, with non-development fail-fast.
Platform Runtime Read-Model Boundary Policy (Point 4 / Sprint 20260305-005)
Platform runtime read-model APIs are aggregation-only and must stay behind explicit query contracts. Runtime read handlers must not take direct dependencies on foreign module persistence internals.
Approved runtime query contracts:
IReleaseControlBundleStore(release/topology/security/integration projections over release-control bundles + runs).IPlatformContextQuery(read-only access to region/environment context inventory).
Prohibited in runtime read-model services:
- Direct constructor dependencies on foreign
StellaOps.*.Persistence*namespaces. - Direct
DbContext,NpgsqlDataSource, or module-specific migration runner dependencies from non-admin read endpoints.
Migration/admin allowlist (explicit boundary exceptions):
src/Platform/StellaOps.Platform.WebService/Endpoints/SeedEndpoints.cssrc/Platform/__Libraries/StellaOps.Platform.Database/MigrationModulePlugins.cs
Enforcement:
- Guard tests in
src/Platform/__Tests/StellaOps.Platform.WebService.Tests/PlatformRuntimeBoundaryGuardTests.csfail when constructor contracts drift or foreign persistence references appear outside the allowlist above.
Runtime Dependency Inventory (2026-03-05)
| Component | Dependency category | Classification | Notes |
|---|---|---|---|
ReleaseReadModelService |
IReleaseControlBundleStore |
Allowed runtime read-model dependency | Release projection reads only via Platform-owned bundle-store contract. |
TopologyReadModelService |
IReleaseControlBundleStore, IPlatformContextQuery |
Allowed runtime read-model dependency | Topology projection composes release bundles with context inventory through explicit query contracts. |
SecurityReadModelService |
IReleaseControlBundleStore, IPlatformContextQuery |
Allowed runtime read-model dependency | Security projection remains synthetic/read-only and does not call VEX/exception write stores directly. |
IntegrationsReadModelService |
IReleaseControlBundleStore, IPlatformContextQuery |
Allowed runtime read-model dependency | Integration freshness projection uses release run metadata and context inventory only. |
PlatformContextService |
IPlatformContextStore (InMemory/Postgres) |
Allowed runtime dependency (module-local persistence) | Exposes read-only IPlatformContextQuery plus preference write APIs; no foreign module coupling. |
SeedEndpoints |
Foreign StellaOps.*.Persistence* migration assemblies |
Migration/admin-only dependency | Allowed exception for demo seed execution only (platform.setup.admin). |
MigrationModulePlugins |
Foreign module migration assemblies | Migration-only dependency | Allowed exception for schema migration orchestration, not part of runtime read endpoint execution path. |
Advisory Commitments (2026-02-26 Batch)
SPRINT_20260226_223_Platform_score_explain_contract_and_replay_alignmentdefines deterministic score/explain/replay contract behavior for CLI and Web consumers.SPRINT_20260226_230_Platform_locale_label_translation_correctionscompletes locale label correction baseline for cross-language operator UI consistency.- Cross-module advisory translation tracking is maintained in
docs/product/advisory-translation-20260226.md.