2.7 KiB
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
Related Documentation
- TaskRunner:
../taskrunner/architecture.md - Policy:
../policy/architecture.md