Files
git.stella-ops.org/docs/modules/packsregistry/architecture.md
StellaOps Bot e6c47c8f50 save progress
2025-12-28 23:49:56 +02:00

2.7 KiB

component_architecture_packsregistry.md - Stella Ops PacksRegistry (2025Q4)

Task packs registry and distribution service.

Scope. Implementation-ready architecture for PacksRegistry: the registry for task packs, policy packs, and analyzer packs that can be distributed to TaskRunner instances.


0) Mission & boundaries

Mission. Provide a centralized registry for distributable task packs, policy packs, and analyzer bundles. Enable versioned pack management with integrity verification and air-gap support.

Boundaries.

  • PacksRegistry stores and distributes packs; it does not execute them.
  • Pack execution is handled by TaskRunner.
  • All packs are content-addressed with integrity verification.
  • Supports offline distribution via bundle export.

1) Solution & project layout

src/PacksRegistry/StellaOps.PacksRegistry/
 ├─ StellaOps.PacksRegistry.Core/           # Pack models, validation
 ├─ StellaOps.PacksRegistry.Infrastructure/ # Storage, distribution
 ├─ StellaOps.PacksRegistry.Persistence.EfCore/  # EF Core persistence
 ├─ StellaOps.PacksRegistry.WebService/     # REST API
 ├─ StellaOps.PacksRegistry.Worker/         # Background processing
 └─ StellaOps.PacksRegistry.Tests/

src/PacksRegistry/__Libraries/
 └─ StellaOps.PacksRegistry.Persistence/    # Persistence abstractions

2) External dependencies

  • PostgreSQL - Pack metadata storage
  • RustFS/S3 - Pack content storage
  • Authority - Authentication and authorization
  • TaskRunner - Pack consumer

3) Contracts & data model

3.1 Pack

{
  "packId": "policy-baseline-v2",
  "version": "2.1.0",
  "type": "policy",
  "name": "Baseline Security Policy",
  "description": "Standard security policy pack",
  "digest": "sha256:abc123...",
  "size": 45678,
  "publishedAt": "2025-01-15T10:30:00Z",
  "author": "stellaops",
  "dependencies": [],
  "metadata": {
    "minRunnerVersion": "1.5.0"
  }
}

3.2 Pack Types

Type Description
policy Policy rule packs
analyzer Scanner analyzer packs
task TaskRunner task definitions
bundle Composite packs

4) REST API

GET  /packs                     → { packs: PackSummary[] }
GET  /packs/{id}                → { pack: Pack }
GET  /packs/{id}/versions       → { versions: Version[] }
GET  /packs/{id}/{version}      → binary content

POST /packs                     { manifest, content } → { packId }
DELETE /packs/{id}/{version}    → { deleted: bool }

GET  /healthz | /readyz | /metrics

  • TaskRunner: ../taskrunner/architecture.md
  • Policy: ../policy/architecture.md