# 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 ```json { "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`