part #2
This commit is contained in:
@@ -57,6 +57,8 @@ StellaOps is a deterministic, offline-first SBOM + VEX platform built as a micro
|
||||
---
|
||||
## Prerequisites
|
||||
|
||||
> **Looking for a quick setup checklist?** See [`docs/dev/DEV_ENVIRONMENT_SETUP.md`](dev/DEV_ENVIRONMENT_SETUP.md) for a streamlined, copy-paste-friendly guide covering prerequisites, hosts file, infrastructure, builds, and Docker images.
|
||||
|
||||
### Required Software
|
||||
|
||||
1. **Docker Desktop** (Windows/Mac) or **Docker Engine + Docker Compose** (Linux)
|
||||
@@ -67,12 +69,17 @@ StellaOps is a deterministic, offline-first SBOM + VEX platform built as a micro
|
||||
- Download: https://dotnet.microsoft.com/download/dotnet/10.0
|
||||
- Verify: `dotnet --version` (should show 10.0.x)
|
||||
|
||||
3. **Visual Studio 2022** (v17.12+) or **Visual Studio Code**
|
||||
3. **Node.js** (for Angular frontend)
|
||||
- Version: ^20.19.0 || ^22.12.0 || ^24.0.0 (see `src/Web/StellaOps.Web/package.json` engines)
|
||||
- npm: >=10.2.0
|
||||
- Verify: `node --version` / `npm --version`
|
||||
|
||||
4. **Visual Studio 2022** (v17.12+) or **Visual Studio Code**
|
||||
- Workload: ASP.NET and web development
|
||||
- Workload: .NET desktop development
|
||||
- Extension (VS Code): C# Dev Kit
|
||||
|
||||
4. **Git**
|
||||
5. **Git**
|
||||
- Version: 2.30+ recommended
|
||||
|
||||
### Optional Tools
|
||||
@@ -104,8 +111,8 @@ cd git.stella-ops.org
|
||||
|
||||
```bash
|
||||
# Copy the development environment template
|
||||
cd deploy\compose
|
||||
copy env\dev.env.example .env
|
||||
cd devops\compose
|
||||
copy env\stellaops.env.example .env
|
||||
|
||||
# Edit .env with your preferred text editor
|
||||
notepad .env
|
||||
@@ -119,13 +126,13 @@ notepad .env
|
||||
### Step 3: Start the Full Platform
|
||||
|
||||
```bash
|
||||
# From deploy/compose directory
|
||||
docker compose -f docker-compose.dev.yaml up -d
|
||||
# From devops/compose directory
|
||||
docker compose -f docker-compose.dev.yml up -d
|
||||
```
|
||||
|
||||
**This will start all infrastructure and services:**
|
||||
- PostgreSQL v16+ (port 5432) - Primary database for all services
|
||||
- Valkey 8.0 (port 6379) - Cache, DPoP nonces, event streams, rate limiting
|
||||
- PostgreSQL 18.1 (port 5432) - Primary database for all services
|
||||
- Valkey 9.0.1 (port 6379) - Cache, DPoP nonces, event streams, rate limiting
|
||||
- RustFS (port 8080) - S3-compatible object storage for artifacts/SBOMs
|
||||
- Authority (port 8440) - OAuth2/OIDC authentication
|
||||
- Signer (port 8441) - Cryptographic signing
|
||||
@@ -138,15 +145,15 @@ docker compose -f docker-compose.dev.yaml up -d
|
||||
|
||||
```bash
|
||||
# Check all services are up
|
||||
docker compose -f docker-compose.dev.yaml ps
|
||||
docker compose -f docker-compose.dev.yml ps
|
||||
|
||||
# Check logs for a specific service
|
||||
docker compose -f docker-compose.dev.yaml logs -f scanner-web
|
||||
docker compose -f docker-compose.dev.yml logs -f scanner-web
|
||||
|
||||
# Check infrastructure health
|
||||
docker compose -f docker-compose.dev.yaml logs postgres
|
||||
docker compose -f docker-compose.dev.yaml logs valkey
|
||||
docker compose -f docker-compose.dev.yaml logs rustfs
|
||||
docker compose -f docker-compose.dev.yml logs postgres
|
||||
docker compose -f docker-compose.dev.yml logs valkey
|
||||
docker compose -f docker-compose.dev.yml logs rustfs
|
||||
```
|
||||
|
||||
### Step 5: Access the Platform
|
||||
@@ -176,7 +183,7 @@ Related references:
|
||||
Service-specific debugging guidance lives with each module to avoid stale, copy-pasted configuration examples.
|
||||
|
||||
Generic workflow:
|
||||
1. Stop the service container in `deploy/compose` (for example: `docker compose -f docker-compose.dev.yaml stop <service>`).
|
||||
1. Stop the service container in `devops/compose` (for example: `docker compose -f docker-compose.dev.yml stop <service>`).
|
||||
2. Run the service locally under a debugger.
|
||||
3. Update dependent services to call `host.docker.internal:<port>` (or your host IP) and restart them.
|
||||
4. Use the module operations docs for required env vars, auth scopes, and health checks.
|
||||
@@ -315,11 +322,11 @@ STELLAOPS_SCANNER__QUEUE__BROKER=nats://localhost:4222
|
||||
|
||||
```bash
|
||||
# 1. Start full platform
|
||||
cd deploy\compose
|
||||
docker compose -f docker-compose.dev.yaml up -d
|
||||
cd devops\compose
|
||||
docker compose -f docker-compose.dev.yml up -d
|
||||
|
||||
# 2. Stop the service you want to debug
|
||||
docker compose -f docker-compose.dev.yaml stop scanner-web
|
||||
docker compose -f docker-compose.dev.yml stop scanner-web
|
||||
|
||||
# 3. Open Visual Studio
|
||||
cd C:\dev\New folder\git.stella-ops.org
|
||||
@@ -331,7 +338,7 @@ start src\Scanner\StellaOps.Scanner.sln
|
||||
curl -X POST http://localhost:5210/api/scans -H "Content-Type: application/json" -d '{"imageRef":"alpine:latest"}'
|
||||
|
||||
# 6. When done, stop VS debugger and restart Docker container
|
||||
docker compose -f docker-compose.dev.yaml start scanner-web
|
||||
docker compose -f docker-compose.dev.yml start scanner-web
|
||||
```
|
||||
|
||||
### Workflow 2: Debug Multiple Services Together
|
||||
@@ -340,7 +347,7 @@ docker compose -f docker-compose.dev.yaml start scanner-web
|
||||
|
||||
```bash
|
||||
# 1. Stop both containers
|
||||
docker compose -f docker-compose.dev.yaml stop scanner-web scanner-worker
|
||||
docker compose -f docker-compose.dev.yml stop scanner-web scanner-worker
|
||||
|
||||
# 2. In Visual Studio, configure multiple startup projects:
|
||||
# - Right-click solution > Properties
|
||||
@@ -361,8 +368,8 @@ cd src\Concelier\StellaOps.Concelier.WebService
|
||||
dotnet build
|
||||
|
||||
# 2. Stop Docker Concelier
|
||||
cd ..\..\..\deploy\compose
|
||||
docker compose -f docker-compose.dev.yaml stop concelier
|
||||
cd ..\..\..\devops\compose
|
||||
docker compose -f docker-compose.dev.yml stop concelier
|
||||
|
||||
# 3. Run Concelier in Visual Studio (F5)
|
||||
|
||||
@@ -371,7 +378,7 @@ docker compose -f docker-compose.dev.yaml stop concelier
|
||||
CONCELIER_BASEURL=http://host.docker.internal:5000
|
||||
|
||||
# 5. Restart Scanner to pick up new config
|
||||
docker compose -f docker-compose.dev.yaml restart scanner-web
|
||||
docker compose -f docker-compose.dev.yml restart scanner-web
|
||||
```
|
||||
|
||||
### Workflow 4: Reset Database State
|
||||
@@ -380,17 +387,17 @@ docker compose -f docker-compose.dev.yaml restart scanner-web
|
||||
|
||||
```bash
|
||||
# 1. Stop all services
|
||||
docker compose -f docker-compose.dev.yaml down
|
||||
docker compose -f docker-compose.dev.yml down
|
||||
|
||||
# 2. Remove database volumes
|
||||
docker volume rm compose_postgres-data
|
||||
docker volume rm compose_valkey-data
|
||||
|
||||
# 3. Restart platform (will recreate volumes and databases)
|
||||
docker compose -f docker-compose.dev.yaml up -d
|
||||
docker compose -f docker-compose.dev.yml up -d
|
||||
|
||||
# 4. Wait for migrations to run
|
||||
docker compose -f docker-compose.dev.yaml logs -f postgres
|
||||
docker compose -f docker-compose.dev.yml logs -f postgres
|
||||
# Look for migration completion messages
|
||||
```
|
||||
|
||||
@@ -400,7 +407,7 @@ docker compose -f docker-compose.dev.yaml logs -f postgres
|
||||
|
||||
```bash
|
||||
# 1. Use the air-gap compose profile
|
||||
cd deploy\compose
|
||||
cd devops\compose
|
||||
docker compose -f docker-compose.airgap.yaml up -d
|
||||
|
||||
# 2. Verify no external network calls
|
||||
@@ -519,18 +526,18 @@ Note: StackExchange.Redis reports "redis server(s)" even when Valkey is the back
|
||||
|
||||
1. **Check Valkey is running:**
|
||||
```bash
|
||||
docker compose -f docker-compose.dev.yaml ps valkey
|
||||
docker compose -f docker-compose.dev.yml ps valkey
|
||||
# Should show: State = "Up"
|
||||
|
||||
# Check logs
|
||||
docker compose -f docker-compose.dev.yaml logs valkey
|
||||
docker compose -f docker-compose.dev.yml logs valkey
|
||||
```
|
||||
|
||||
2. **Reset Valkey:**
|
||||
```bash
|
||||
docker compose -f docker-compose.dev.yaml stop valkey
|
||||
docker compose -f docker-compose.dev.yml stop valkey
|
||||
docker volume rm compose_valkey-data
|
||||
docker compose -f docker-compose.dev.yaml up -d valkey
|
||||
docker compose -f docker-compose.dev.yml up -d valkey
|
||||
```
|
||||
|
||||
#### 5. Service Cannot Reach host.docker.internal
|
||||
@@ -546,7 +553,7 @@ Should work automatically with Docker Desktop.
|
||||
|
||||
**Solution (Linux):**
|
||||
|
||||
Add to docker-compose.dev.yaml:
|
||||
Add to docker-compose.dev.yml:
|
||||
```yaml
|
||||
services:
|
||||
scanner-web:
|
||||
@@ -644,7 +651,7 @@ Permission denied writing to /data/db
|
||||
sudo chown -R $USER:$USER ./volumes
|
||||
|
||||
# Or run Docker as root (not recommended for production)
|
||||
sudo docker compose -f docker-compose.dev.yaml up -d
|
||||
sudo docker compose -f docker-compose.dev.yml up -d
|
||||
```
|
||||
|
||||
---
|
||||
@@ -699,19 +706,19 @@ cd devops\compose
|
||||
docker compose -f docker-compose.stella-ops.yml up -d
|
||||
|
||||
# Stop a specific service for debugging
|
||||
docker compose -f docker-compose.dev.yaml stop <service-name>
|
||||
docker compose -f docker-compose.dev.yml stop <service-name>
|
||||
|
||||
# View logs
|
||||
docker compose -f docker-compose.dev.yaml logs -f <service-name>
|
||||
docker compose -f docker-compose.dev.yml logs -f <service-name>
|
||||
|
||||
# Restart a service
|
||||
docker compose -f docker-compose.dev.yaml restart <service-name>
|
||||
docker compose -f docker-compose.dev.yml restart <service-name>
|
||||
|
||||
# Stop all services
|
||||
docker compose -f docker-compose.dev.yaml down
|
||||
docker compose -f docker-compose.dev.yml down
|
||||
|
||||
# Stop all services and remove volumes (DESTRUCTIVE)
|
||||
docker compose -f docker-compose.dev.yaml down -v
|
||||
docker compose -f docker-compose.dev.yml down -v
|
||||
|
||||
# Build the module solution (see docs/dev/SOLUTION_BUILD_GUIDE.md)
|
||||
cd C:\dev\New folder\git.stella-ops.org
|
||||
|
||||
336
docs/dev/DEV_ENVIRONMENT_SETUP.md
Normal file
336
docs/dev/DEV_ENVIRONMENT_SETUP.md
Normal file
@@ -0,0 +1,336 @@
|
||||
# Dev Environment Setup
|
||||
|
||||
Actionable checklist for getting a local Stella Ops development environment running.
|
||||
For hybrid debugging workflows and service-specific guides, see [`docs/DEVELOPER_ONBOARDING.md`](../DEVELOPER_ONBOARDING.md).
|
||||
|
||||
---
|
||||
|
||||
## Quick Start (automated)
|
||||
|
||||
Setup scripts validate prerequisites, start infrastructure, build solutions and Docker images, and launch the full platform.
|
||||
|
||||
**Windows (PowerShell 7):**
|
||||
|
||||
```powershell
|
||||
.\scripts\setup.ps1 # full setup
|
||||
.\scripts\setup.ps1 -InfraOnly # infrastructure only (PostgreSQL, Valkey, SeaweedFS, Rekor, Zot)
|
||||
.\scripts\setup.ps1 -SkipBuild # skip .NET builds, build images and start platform
|
||||
.\scripts\setup.ps1 -SkipImages # build .NET but skip Docker images
|
||||
.\scripts\setup.ps1 -ImagesOnly # only build Docker images
|
||||
```
|
||||
|
||||
**Linux / macOS:**
|
||||
|
||||
```bash
|
||||
./scripts/setup.sh # full setup
|
||||
./scripts/setup.sh --infra-only # infrastructure only
|
||||
./scripts/setup.sh --skip-build # skip .NET builds
|
||||
./scripts/setup.sh --skip-images # skip Docker image builds
|
||||
./scripts/setup.sh --images-only # only build Docker images
|
||||
```
|
||||
|
||||
The scripts will check for required tools (dotnet 10.x, node 20+, npm 10+, docker, git), warn about missing hosts file entries, and copy `.env` from the example if needed. See the manual steps below for details on each stage.
|
||||
|
||||
---
|
||||
|
||||
## 1. Prerequisites
|
||||
|
||||
| Tool | Version | Verify |
|
||||
|------|---------|--------|
|
||||
| .NET 10 SDK | 10.0.100 (pinned in `global.json`) | `dotnet --version` |
|
||||
| Node.js | ^20.19.0 \|\| ^22.12.0 \|\| ^24.0.0 | `node --version` |
|
||||
| npm | >=10.2.0 | `npm --version` |
|
||||
| Docker Desktop / Engine + Compose | 20.10+ | `docker --version` |
|
||||
| Git | 2.30+ | `git --version` |
|
||||
| PowerShell 7+ (Windows) or Bash | -- | `pwsh --version` / `bash --version` |
|
||||
|
||||
### Optional
|
||||
|
||||
- Visual Studio 2022 v17.12+ (ASP.NET and web development workload)
|
||||
- VS Code + C# Dev Kit
|
||||
- PostgreSQL client (`psql`, DBeaver, pgAdmin)
|
||||
- `valkey-cli` or Redis Insight (Valkey is Redis-compatible)
|
||||
- AWS CLI or `s3cmd` for RustFS inspection
|
||||
|
||||
### System requirements
|
||||
|
||||
- **RAM:** 16 GB minimum, 32 GB recommended
|
||||
- **Disk:** 50 GB free (Docker images, volumes, build artifacts)
|
||||
- **CPU:** 4 cores minimum, 8 cores recommended
|
||||
|
||||
---
|
||||
|
||||
## 2. Hosts file setup
|
||||
|
||||
Each service binds to a unique loopback IP so all can use ports 443/80 without collisions.
|
||||
Full details: [`docs/technical/architecture/port-registry.md`](../technical/architecture/port-registry.md).
|
||||
|
||||
Add the block below to your hosts file:
|
||||
|
||||
- **Windows:** `C:\Windows\System32\drivers\etc\hosts` (run editor as Administrator)
|
||||
- **Linux / macOS:** `/etc/hosts` (use `sudo`)
|
||||
|
||||
```
|
||||
# Stella Ops local development hostnames
|
||||
# Each service gets a unique loopback IP so all can bind :443/:80 simultaneously.
|
||||
127.1.0.1 stella-ops.local
|
||||
127.1.0.2 router.stella-ops.local
|
||||
127.1.0.3 platform.stella-ops.local
|
||||
127.1.0.4 authority.stella-ops.local
|
||||
127.1.0.5 gateway.stella-ops.local
|
||||
127.1.0.6 attestor.stella-ops.local
|
||||
127.1.0.7 evidencelocker.stella-ops.local
|
||||
127.1.0.8 scanner.stella-ops.local
|
||||
127.1.0.9 concelier.stella-ops.local
|
||||
127.1.0.10 excititor.stella-ops.local
|
||||
127.1.0.11 vexhub.stella-ops.local
|
||||
127.1.0.12 vexlens.stella-ops.local
|
||||
127.1.0.13 vulnexplorer.stella-ops.local
|
||||
127.1.0.14 policy-engine.stella-ops.local
|
||||
127.1.0.15 policy-gateway.stella-ops.local
|
||||
127.1.0.16 riskengine.stella-ops.local
|
||||
127.1.0.17 orchestrator.stella-ops.local
|
||||
127.1.0.18 taskrunner.stella-ops.local
|
||||
127.1.0.19 scheduler.stella-ops.local
|
||||
127.1.0.20 graph.stella-ops.local
|
||||
127.1.0.21 cartographer.stella-ops.local
|
||||
127.1.0.22 reachgraph.stella-ops.local
|
||||
127.1.0.23 timelineindexer.stella-ops.local
|
||||
127.1.0.24 timeline.stella-ops.local
|
||||
127.1.0.25 findings.stella-ops.local
|
||||
127.1.0.26 doctor.stella-ops.local
|
||||
127.1.0.27 opsmemory.stella-ops.local
|
||||
127.1.0.28 notifier.stella-ops.local
|
||||
127.1.0.29 notify.stella-ops.local
|
||||
127.1.0.30 signer.stella-ops.local
|
||||
127.1.0.31 smremote.stella-ops.local
|
||||
127.1.0.32 airgap-controller.stella-ops.local
|
||||
127.1.0.33 airgap-time.stella-ops.local
|
||||
127.1.0.34 packsregistry.stella-ops.local
|
||||
127.1.0.35 registry-token.stella-ops.local
|
||||
127.1.0.36 binaryindex.stella-ops.local
|
||||
127.1.0.37 issuerdirectory.stella-ops.local
|
||||
127.1.0.38 symbols.stella-ops.local
|
||||
127.1.0.39 sbomservice.stella-ops.local
|
||||
127.1.0.40 exportcenter.stella-ops.local
|
||||
127.1.0.41 replay.stella-ops.local
|
||||
127.1.0.42 integrations.stella-ops.local
|
||||
127.1.0.43 signals.stella-ops.local
|
||||
127.1.0.44 advisoryai.stella-ops.local
|
||||
127.1.0.45 unknowns.stella-ops.local
|
||||
|
||||
# Stella Ops infrastructure (local dev containers)
|
||||
127.1.1.1 db.stella-ops.local
|
||||
127.1.1.2 cache.stella-ops.local
|
||||
127.1.1.3 s3.stella-ops.local
|
||||
127.1.1.4 rekor.stella-ops.local
|
||||
127.1.1.5 registry.stella-ops.local
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Start infrastructure (Docker)
|
||||
|
||||
```bash
|
||||
cd devops/compose
|
||||
cp env/stellaops.env.example .env # edit POSTGRES_PASSWORD at minimum
|
||||
docker compose -f docker-compose.dev.yml up -d
|
||||
docker compose -f docker-compose.dev.yml ps
|
||||
```
|
||||
|
||||
### Verify infrastructure
|
||||
|
||||
```bash
|
||||
# PostgreSQL
|
||||
psql -h db.stella-ops.local -U stellaops -d stellaops_dev -c "SELECT 1"
|
||||
|
||||
# Valkey
|
||||
valkey-cli -h cache.stella-ops.local ping
|
||||
```
|
||||
|
||||
Infrastructure versions (from `docker-compose.dev.yml`):
|
||||
|
||||
| Service | Version | Hostname | Port |
|
||||
|---------|---------|----------|------|
|
||||
| PostgreSQL | 18.1 | `db.stella-ops.local` | 5432 |
|
||||
| Valkey | 9.0.1 | `cache.stella-ops.local` | 6379 |
|
||||
| SeaweedFS (S3) | -- | `s3.stella-ops.local` | 8080 |
|
||||
| Rekor v2 | -- | `rekor.stella-ops.local` | 3322 |
|
||||
| Zot (OCI registry) | v2.1.3 | `registry.stella-ops.local` | 80 |
|
||||
|
||||
---
|
||||
|
||||
## 4. Build .NET modules
|
||||
|
||||
The codebase uses a **module-first** approach -- there is no root solution file used for builds. Each module has its own `.sln` under `src/<Module>/`.
|
||||
|
||||
### Single module
|
||||
|
||||
```powershell
|
||||
dotnet build src\Scanner\StellaOps.Scanner.sln
|
||||
dotnet test src\Scanner\StellaOps.Scanner.sln
|
||||
```
|
||||
|
||||
### All modules
|
||||
|
||||
```powershell
|
||||
# Windows (PowerShell 7)
|
||||
.\scripts\build-all-solutions.ps1
|
||||
|
||||
# With tests
|
||||
.\scripts\build-all-solutions.ps1 -Test
|
||||
|
||||
# Linux / macOS
|
||||
./scripts/build-all-solutions.sh
|
||||
|
||||
# With tests
|
||||
./scripts/build-all-solutions.sh --test
|
||||
```
|
||||
|
||||
### Module solution index
|
||||
|
||||
See [`docs/dev/SOLUTION_BUILD_GUIDE.md`](SOLUTION_BUILD_GUIDE.md) for the authoritative list. Current modules (39):
|
||||
|
||||
| Module | Solution path |
|
||||
|--------|---------------|
|
||||
| AdvisoryAI | `src/AdvisoryAI/StellaOps.AdvisoryAI.sln` |
|
||||
| AirGap | `src/AirGap/StellaOps.AirGap.sln` |
|
||||
| Aoc | `src/Aoc/StellaOps.Aoc.sln` |
|
||||
| Attestor | `src/Attestor/StellaOps.Attestor.sln` |
|
||||
| Authority | `src/Authority/StellaOps.Authority.sln` |
|
||||
| Bench | `src/Bench/StellaOps.Bench.sln` |
|
||||
| BinaryIndex | `src/BinaryIndex/StellaOps.BinaryIndex.sln` |
|
||||
| Cartographer | `src/Cartographer/StellaOps.Cartographer.sln` |
|
||||
| Cli | `src/Cli/StellaOps.Cli.sln` |
|
||||
| Concelier | `src/Concelier/StellaOps.Concelier.sln` |
|
||||
| EvidenceLocker | `src/EvidenceLocker/StellaOps.EvidenceLocker.sln` |
|
||||
| Excititor | `src/Excititor/StellaOps.Excititor.sln` |
|
||||
| ExportCenter | `src/ExportCenter/StellaOps.ExportCenter.sln` |
|
||||
| Feedser | `src/Feedser/StellaOps.Feedser.sln` |
|
||||
| Findings | `src/Findings/StellaOps.Findings.sln` |
|
||||
| Gateway | `src/Gateway/StellaOps.Gateway.sln` |
|
||||
| Graph | `src/Graph/StellaOps.Graph.sln` |
|
||||
| IssuerDirectory | `src/IssuerDirectory/StellaOps.IssuerDirectory.sln` |
|
||||
| Notifier | `src/Notifier/StellaOps.Notifier.sln` |
|
||||
| Notify | `src/Notify/StellaOps.Notify.sln` |
|
||||
| Orchestrator | `src/Orchestrator/StellaOps.Orchestrator.sln` |
|
||||
| PacksRegistry | `src/PacksRegistry/StellaOps.PacksRegistry.sln` |
|
||||
| Policy | `src/Policy/StellaOps.Policy.sln` |
|
||||
| ReachGraph | `src/ReachGraph/StellaOps.ReachGraph.sln` |
|
||||
| Registry | `src/Registry/StellaOps.Registry.sln` |
|
||||
| Replay | `src/Replay/StellaOps.Replay.sln` |
|
||||
| RiskEngine | `src/RiskEngine/StellaOps.RiskEngine.sln` |
|
||||
| Router | `src/Router/StellaOps.Router.sln` |
|
||||
| SbomService | `src/SbomService/StellaOps.SbomService.sln` |
|
||||
| Scanner | `src/Scanner/StellaOps.Scanner.sln` |
|
||||
| Scheduler | `src/Scheduler/StellaOps.Scheduler.sln` |
|
||||
| Signer | `src/Signer/StellaOps.Signer.sln` |
|
||||
| Signals | `src/Signals/StellaOps.Signals.sln` |
|
||||
| SmRemote | `src/SmRemote/StellaOps.SmRemote.sln` |
|
||||
| TaskRunner | `src/TaskRunner/StellaOps.TaskRunner.sln` |
|
||||
| Telemetry | `src/Telemetry/StellaOps.Telemetry.sln` |
|
||||
| TimelineIndexer | `src/TimelineIndexer/StellaOps.TimelineIndexer.sln` |
|
||||
| Tools | `src/Tools/StellaOps.Tools.sln` |
|
||||
| VexHub | `src/VexHub/StellaOps.VexHub.sln` |
|
||||
| VexLens | `src/VexLens/StellaOps.VexLens.sln` |
|
||||
| VulnExplorer | `src/VulnExplorer/StellaOps.VulnExplorer.sln` |
|
||||
| Zastava | `src/Zastava/StellaOps.Zastava.sln` |
|
||||
|
||||
---
|
||||
|
||||
## 5. Build Angular frontend
|
||||
|
||||
```bash
|
||||
cd src/Web/StellaOps.Web
|
||||
npm ci --prefer-offline --no-audit --no-fund
|
||||
npm run start # dev server -> https://stella-ops.local
|
||||
npm run build # production build
|
||||
npm run test # unit tests (Vitest)
|
||||
npm run test:e2e # Playwright E2E
|
||||
```
|
||||
|
||||
Additional scripts:
|
||||
|
||||
| Command | Purpose |
|
||||
|---------|---------|
|
||||
| `npm run storybook` | Launch Storybook component explorer |
|
||||
| `npm run analyze` | Bundle size visualization (esbuild-visualizer) |
|
||||
| `npm run test:a11y` | Accessibility smoke tests |
|
||||
|
||||
---
|
||||
|
||||
## 6. Build Docker images
|
||||
|
||||
### Option A: Build all services (matrix-driven)
|
||||
|
||||
```bash
|
||||
cd devops/docker
|
||||
./build-all.sh
|
||||
```
|
||||
|
||||
Uses `services-matrix.env` and `Dockerfile.hardened.template` for .NET services, `Dockerfile.console` for Angular.
|
||||
|
||||
### Option B: Build a single .NET service
|
||||
|
||||
```bash
|
||||
docker build -f devops/docker/Dockerfile.hardened.template . \
|
||||
--build-arg SDK_IMAGE=mcr.microsoft.com/dotnet/sdk:10.0-bookworm-slim \
|
||||
--build-arg RUNTIME_IMAGE=mcr.microsoft.com/dotnet/aspnet:10.0-bookworm-slim \
|
||||
--build-arg APP_PROJECT=src/Scanner/StellaOps.Scanner.WebService/StellaOps.Scanner.WebService.csproj \
|
||||
--build-arg APP_BINARY=StellaOps.Scanner.WebService \
|
||||
--build-arg APP_PORT=8080 \
|
||||
-t stellaops/scanner-web:dev
|
||||
```
|
||||
|
||||
### Option C: Build the Angular console image
|
||||
|
||||
```bash
|
||||
docker build -f devops/docker/Dockerfile.console . \
|
||||
--build-arg APP_DIR=src/Web/StellaOps.Web \
|
||||
-t stellaops/console:dev
|
||||
```
|
||||
|
||||
### Release-quality builds (distroless)
|
||||
|
||||
Release Dockerfiles live under `devops/release/docker/`:
|
||||
|
||||
- `Dockerfile.dotnet-service` -- .NET services
|
||||
- `Dockerfile.angular-ui` -- Angular console
|
||||
|
||||
Component manifest: `devops/release/components.json`.
|
||||
|
||||
---
|
||||
|
||||
## 7. Run the full platform
|
||||
|
||||
```bash
|
||||
# Core services
|
||||
docker compose -f devops/compose/docker-compose.stella-ops.yml up -d
|
||||
|
||||
# With Sigstore transparency log
|
||||
docker compose -f devops/compose/docker-compose.stella-ops.yml --profile sigstore up -d
|
||||
|
||||
# With telemetry stack
|
||||
docker compose -f devops/compose/docker-compose.stella-ops.yml \
|
||||
-f devops/compose/docker-compose.telemetry.yml up -d
|
||||
```
|
||||
|
||||
Verify:
|
||||
|
||||
```bash
|
||||
docker compose -f devops/compose/docker-compose.stella-ops.yml ps
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Hybrid debugging (quick reference)
|
||||
|
||||
1. Start the full platform in Docker (section 7).
|
||||
2. Stop the container for the service you want to debug:
|
||||
```bash
|
||||
docker compose -f devops/compose/docker-compose.stella-ops.yml stop <service-name>
|
||||
```
|
||||
3. Run that service locally from your IDE (F5 in Visual Studio, or `dotnet run`).
|
||||
4. The local service uses `localhost` / `.stella-ops.local` hostnames to reach Docker-hosted infrastructure.
|
||||
|
||||
For detailed walkthroughs, configuration overrides, and multi-service debugging see [`docs/DEVELOPER_ONBOARDING.md`](../DEVELOPER_ONBOARDING.md).
|
||||
@@ -88,7 +88,7 @@ Completion criteria:
|
||||
- [ ] Applied changes logged with before/after counts.
|
||||
|
||||
### REMED-05 - Tier 2 manual remediation backlog
|
||||
Status: TODO
|
||||
Status: DOING
|
||||
Dependency: REMED-03
|
||||
Owners: Developer, QA
|
||||
Task description:
|
||||
@@ -198,6 +198,7 @@ Completion criteria:
|
||||
| 2026-01-31 | BLOCKED: Scheduler __Libraries missing `docs/modules/scheduler/implementation_plan.md`; SOLID review deferred. | Developer |
|
||||
| 2026-01-31 | BLOCKED: Policy __Libraries missing `docs/product/advisories/14-Dec-2025 - Smart-Diff Technical Reference.md`; SOLID review deferred. | Developer |
|
||||
| 2026-01-31 | BLOCKED: Signals __Libraries missing unknowns registry doc and archived sprint paths referenced by AGENTS; SOLID review deferred. | Developer |
|
||||
| 2026-02-04 | Aoc libraries remediated (private field naming, blocking async removed, IAocGuard split, AocWriteGuard and filter partials, service locator removal); Aoc tests passed (11 + 8). | Developer |
|
||||
| 2026-01-31 | BLOCKED: SbomService __Libraries missing required architecture/sprint docs; SOLID review deferred. | Developer |
|
||||
| 2026-01-31 | BLOCKED: Signer __Libraries required reading includes external Fulcio doc; blocked pending explicit user approval for web fetch. | Developer |
|
||||
| 2026-01-31 | BLOCKED: Zastava __Libraries missing `docs/modules/devops/runbooks/zastava-deployment.md`; SOLID review deferred. | Developer |
|
||||
@@ -298,6 +299,40 @@ Completion criteria:
|
||||
| 2026-02-03 | Remediated StellaOps.ReachGraph.Cache (ReachGraphValkeyCache split into <=100-line partials, ConfigureAwait(false) + cancellation checks, multi-endpoint invalidation); added ReachGraph.Cache unit tests for get/set/slice/invalidation/cancellation; `dotnet test src/__Libraries/__Tests/StellaOps.ReachGraph.Cache.Tests/StellaOps.ReachGraph.Cache.Tests.csproj` passed (9 tests). | Developer/QA |
|
||||
| 2026-02-03 | Remediated StellaOps.ReachGraph.Persistence (tenant filters added for list/get/delete, Intent traits added for tests); `dotnet test src/__Libraries/__Tests/StellaOps.ReachGraph.Persistence.Tests/StellaOps.ReachGraph.Persistence.Tests.csproj` passed (10 tests). | Developer/QA |
|
||||
| 2026-02-03 | Remediated StellaOps.ReachGraph core (dedup/hash/serialization/signing files split <=100 lines, ConfigureAwait(false) added in signing, new dedup/semantic key tests); `dotnet test src/__Libraries/__Tests/StellaOps.ReachGraph.Tests/StellaOps.ReachGraph.Tests.csproj` passed (MTP0001 warning). | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.Replay.Core.Tests (FeedSnapshot + Determinism validator tests split, ConfigureAwait(false) removed for xUnit); `dotnet test src/__Libraries/StellaOps.Replay.Core.Tests/StellaOps.Replay.Core.Tests.csproj` passed (64 tests) and `dotnet test src/__Libraries/__Tests/StellaOps.Replay.Core.Tests/StellaOps.Replay.Core.Tests.csproj` passed (1 test). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.Evidence.Bundle (evidence models split into single-purpose files, enum serialization test added); `dotnet test src/__Tests/StellaOps.Evidence.Bundle.Tests/StellaOps.Evidence.Bundle.Tests.csproj` passed (29 tests). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.Evidence.Core (adapters/store split into <=100-line partials, EvidenceBundleAdapter test added); `dotnet test src/__Libraries/StellaOps.Evidence.Core.Tests/StellaOps.Evidence.Core.Tests.csproj` passed (113 tests). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.Evidence (budget/retention/model/service/validation splits, ConfigureAwait(false) added, private field naming fixed; retention tier boundary test added); `dotnet test src/__Libraries/__Tests/StellaOps.Evidence.Tests/StellaOps.Evidence.Tests.csproj` passed (24 tests). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | BLOCKED: StellaOps.Evidence.Pack remediation waiting on module AGENTS.md in src/__Libraries/StellaOps.Evidence.Pack. | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.Interop.Tests (async naming, harness/model splits <= 100 lines, FindingsComparer tests added; ConfigureAwait(false) skipped in tests per xUnit1030); `dotnet test src/__Tests/interop/StellaOps.Interop.Tests/StellaOps.Interop.Tests.csproj` passed (11 tests, 38 skipped). | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.IssuerDirectory.Client/Core.Tests (client partial split, options/models split, service locator removed, cache/tests split; ConfigureAwait(false) skipped in tests per xUnit1030); `dotnet test src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core.Tests/StellaOps.IssuerDirectory.Core.Tests.csproj` passed (17 tests). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.IssuerDirectory.Core (domain/service/validation partial splits, metrics field naming, domain/validator tests + missing issuer add test); `dotnet test src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core.Tests/StellaOps.IssuerDirectory.Core.Tests.csproj` passed (23 tests). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-05 | Remediated StellaOps.Replay (ReplayEngine split into partials/interfaces, loader digest guard + exceptions separated, failure timestamps use TimeProvider, loader tests added); `dotnet test src/__Libraries/__Tests/StellaOps.Replay.Tests/StellaOps.Replay.Tests.csproj` passed (11 tests). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.IssuerDirectory.Persistence (repository partial splits, service locator removed, added unit/integration tests, IssuerAuditSinkTests split); `dotnet test src/IssuerDirectory/__Tests/StellaOps.IssuerDirectory.Persistence.Tests/StellaOps.IssuerDirectory.Persistence.Tests.csproj` passed (15 tests). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | Remediated AirGap.Bundle file-length outliers (SnapshotBundleReader.MerkleEntries and PolicySnapshotExtractor.Policy), split AirGap.Bundle test suite into <= 100-line partials with helpers; fixed missing usings; `dotnet test src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/StellaOps.AirGap.Bundle.Tests.csproj` passed (150 tests). | Developer/QA |
|
||||
| 2026-02-05 | Remediated AirGap.Persistence (service locator removal, <=100-line splits, bundle version store coverage, unit DI registration tests, deterministic fixtures/Intent tags); `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/StellaOps.AirGap.Persistence.Tests.csproj` passed (23 tests). | Developer/QA |
|
||||
| 2026-02-04 | Remediated AirGap.Sync (service/transport/store splits <=100 lines, TimeProvider/path validation, metrics refactor, expanded unit coverage including FileBasedJobSyncTransport); `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.csproj` passed (40 tests, MTP0001 warning). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | Remediated AirGap.Policy (EgressPolicy/EgressRule/EgressPolicyServiceCollectionExtensions splits <=100 lines, removed service locator registration, tests split and options binding verified); `dotnet test src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/StellaOps.AirGap.Policy.Tests.csproj` passed (12 tests). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | Remediated AirGap.Policy.Analyzers (HttpClientUsageAnalyzer split into diagnostics/analysis partials, private field naming fixed) and AirGap.Policy.Analyzers.Tests (tests split into partials with shared helpers, added HttpClientHandler construction + test-assembly name coverage; ConfigureAwait(false) omitted in test methods per xUnit1030); `dotnet test src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/StellaOps.AirGap.Policy.Analyzers.Tests.csproj` passed (19 tests). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | Remediated AirGap.Time (Rfc3161/Roughtime/TimeAnchorPolicyService splits, hosted startup validation replacing service locator, ConfigureAwait(false) applied, controller/health checks renamed Async) and AirGap.Time.Tests (test files split, ConfigureAwait(false) skipped per xUnit1030); `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.csproj` passed (48 tests). SOLID review notes + status tables updated. | Developer/QA |
|
||||
| 2026-02-04 | Remediated BinaryIndex.Decompiler library/tests (interfaces/models split into <=100-line partials, parser/tokenizer refactor, keyword-only variable extraction filter, tests split + hex stack-offset coverage); `dotnet test src/BinaryIndex/__Tests/StellaOps.BinaryIndex.Decompiler.Tests/StellaOps.BinaryIndex.Decompiler.Tests.csproj` passed (35 tests). | Developer/QA |
|
||||
| 2026-02-04 | Remediated BinaryIndex Disassembly.Abstractions + Disassembly.Tests (split >100-line files, removed service locator usage, renamed private fields); dotnet test rerun with `-p:BuildInParallel=false -p:UseSharedCompilation=false` after an MSBuild OOM on default run; 41 tests passed. | Developer |
|
||||
| 2026-02-04 | Remediated BinaryIndex Disassembly (split service/hybrid/DI files, extracted helpers, removed hybrid service locator) and added hybrid DI registration test; `dotnet test src/BinaryIndex/__Tests/StellaOps.BinaryIndex.Disassembly.Tests/StellaOps.BinaryIndex.Disassembly.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (42 tests). | Developer |
|
||||
| 2026-02-04 | Remediated BinaryIndex.Disassembly.B2R2 (plugin/pool/low-UIR split into <=100-line partials, private field rename, binary handle extracted); added B2R2 lifter pool + LowUIR support tests; `dotnet test src/BinaryIndex/__Tests/StellaOps.BinaryIndex.Disassembly.Tests/StellaOps.BinaryIndex.Disassembly.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (45 tests). | Developer |
|
||||
| 2026-02-04 | Remediated Authority.Timestamping.Abstractions (split request/response/token/verification/options into <=100-line files, fixed includeNonce null handling); added Timestamping.Abstractions unit test project; `dotnet test src/Authority/__Tests/StellaOps.Authority.Timestamping.Abstractions.Tests/StellaOps.Authority.Timestamping.Abstractions.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (16 tests). | Developer/QA |
|
||||
| 2026-02-04 | Remediated Authority.Timestamping (split HttpTsaClient/registry/verifier/cache/ASN.1 files into <=100-line partials, ConfigureAwait(false) added in library awaits); added Timestamping unit test project; `dotnet test src/Authority/__Tests/StellaOps.Authority.Timestamping.Tests/StellaOps.Authority.Timestamping.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (10 tests). | Developer/QA |
|
||||
| 2026-02-04 | Remediated Authority.Core verdicts (split manifest/builder/replay verifier/store into <=100-line files, fixed private field naming); expanded unit coverage for serializer empty JSON, replay diffs, and asset pagination; `dotnet test src/Authority/__Tests/StellaOps.Authority.Core.Tests/StellaOps.Authority.Core.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (46 tests). | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.AdvisoryAI.Attestation (service/registry/models/store split into <=100-line partials, IAiAttestationStore split, module AGENTS added); `dotnet test src/__Libraries/__Tests/StellaOps.AdvisoryAI.Attestation.Tests/StellaOps.AdvisoryAI.Attestation.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (58 tests). | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.Cryptography.Plugin.EIDAS.Tests (tests split into partials, service locator removed, DI assertions updated, missing-key test added; ConfigureAwait(false) omitted due to xUnit1030); `dotnet test src/__Libraries/StellaOps.Cryptography.Plugin.EIDAS.Tests/StellaOps.Cryptography.Plugin.EIDAS.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (25 tests). | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.Cryptography.Plugin.EIDAS (provider/options/client split into <=100-line partials, ConfigureAwait(false) added in library awaits); `dotnet test src/__Libraries/StellaOps.Cryptography.Plugin.EIDAS.Tests/StellaOps.Cryptography.Plugin.EIDAS.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (25 tests). | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.Cryptography.DependencyInjection (removed service locator usage, split DI/validator/options files, added option configurators for SM/Sim HttpClients); added DI ordering + plugin-loading tests; `dotnet test src/__Libraries/__Tests/StellaOps.Cryptography.Tests/StellaOps.Cryptography.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (326 tests). | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.AuditPack (System-first using order in builder/importer/replay helpers; ArchiveUtilities extraction tests added); `dotnet test src/__Libraries/__Tests/StellaOps.AuditPack.Tests/StellaOps.AuditPack.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (52 tests). | Developer/QA |
|
||||
| 2026-02-04 | Remediated StellaOps.Auth.Security (DpopValidationOptions unit coverage added); `dotnet test src/__Libraries/__Tests/StellaOps.Auth.Security.Tests/StellaOps.Auth.Security.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (20 tests). | Developer/QA |
|
||||
| 2026-02-04 | BLOCKED: StellaOps.Cryptography.CertificateStatus.Abstractions and StellaOps.Cryptography.CertificateStatus missing module-local AGENTS.md; remediation deferred. | Developer |
|
||||
| 2026-02-04 | Remediated StellaOps.Cryptography.Plugin.BouncyCastle (private field naming fixed, provider split into <=100-line partials, key normalization tests added); `dotnet test src/__Libraries/__Tests/StellaOps.Cryptography.Tests/StellaOps.Cryptography.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (330 tests). | Developer/QA |
|
||||
| 2026-02-04 | Started StellaOps.Cryptography.Kms remediation review (AGENTS read; audit checklist loaded); work in progress. | Developer |
|
||||
| 2026-02-04 | Remediated StellaOps.Cryptography.Kms (async naming + file splits <= 100 lines, service locator removal, blocking async removal, public key handling updates); `dotnet test src/__Libraries/__Tests/StellaOps.Cryptography.Kms.Tests/StellaOps.Cryptography.Kms.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (9 tests, MTP0001 warning) and `dotnet test src/__Libraries/__Tests/StellaOps.Cryptography.Tests/StellaOps.Cryptography.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (326 tests). | Developer/QA |
|
||||
| 2026-02-04 | BLOCKED: StellaOps.Cryptography.CertificateStatus.Abstractions and StellaOps.Cryptography.CertificateStatus missing module-local AGENTS.md; remediation deferred. | Developer |
|
||||
## Decisions & Risks
|
||||
- Decision: Remediation proceeds in tiers (safe automation, reviewed automation, manual fixes).
|
||||
- Decision: All automation must be deterministic, offline, and logged to `docs/implplan/audits/csproj-standards/remediation/`.
|
||||
@@ -310,7 +345,7 @@ Completion criteria:
|
||||
- Risk: Tier 1 symbol-aware changes require module expertise; schedule review windows per module.
|
||||
- Risk: File-by-file ramp increases timeline; adjust staffing to maintain momentum.
|
||||
- Risk: `src/__Libraries/__Tests/StellaOps.Orchestrator.Schemas.Tests` remediation blocked until module-local `AGENTS.md` exists (PM task required).
|
||||
- Risk: `src/__Libraries/StellaOps.AdvisoryAI.Attestation` remediation blocked until module-local `AGENTS.md` exists.
|
||||
- Resolved: Added module AGENTS for `src/__Libraries/StellaOps.AdvisoryAI.Attestation`; remediation unblocked.
|
||||
- Risk: Tier 0 left UsingInsideNamespace findings in 7 Scanner library files due to safe automation constraints; requires Tier 1/2 follow-up.
|
||||
- Risk: Tier 0 tool (`csproj-remediate-tier0.ps1`) has 3 known bugs discovered during repo-wide application: (1) **GlobalUsings.cs files are emptied** ? tool sorts `global using` directives but does not write them back, resulting in empty files. Workaround: revert GlobalUsings.cs. (2) **Top-level statement files break** ? `using var x = ...` disposal declarations are treated as using directives and moved into the sorted block. Workaround: revert affected Program.cs files. (3) **Duplicate usings not deduplicated** ? sorting can produce duplicate lines when usings appeared in multiple regions. Manual fix required. These bugs should be fixed before Tier 0 is used for future sprints.
|
||||
- Decision: Remaining 36 UsingNotSorted files are in GlobalUsings.cs or preprocessor-guarded files; these are Tier 1/2 scope and safe to defer.
|
||||
@@ -318,6 +353,7 @@ Completion criteria:
|
||||
- Resolved: Added module AGENTS for StellaOps.Artifact.Core.Tests; REMED-07 closed.
|
||||
- Decision: When file-audit.csv lacks entries for a project, generate SOLID notes by enumerating project .cs files (excluding bin/obj and auto-generated files).
|
||||
- Decision: Do not add ConfigureAwait(false) in xUnit tests when xUnit1030 flags it; treat ConfigureAwaitMissing as not applicable and record the exception in remediation notes.
|
||||
- Decision: ReplayEngine failure timestamps now use the injected TimeProvider; documented in `docs/modules/replay/guides/DETERMINISTIC_REPLAY.md`.
|
||||
- Decision: CSProj audit detail outputs are now canonical under `docs/implplan/audits/csproj-standards/src/**` after the IncludeTests rerun; legacy module-based folders are archival.
|
||||
- Decision: Per-project remediation checklists live under `docs/implplan/audits/csproj-standards/remediation/checklists/src/**` and serve as REMED-05/Tier 0-2 action sources.
|
||||
- Decision: Cross-module TASKS boards created in `src/**` to track remediation and SOLID status per project.
|
||||
@@ -330,6 +366,9 @@ Completion criteria:
|
||||
- Risk: Signer AGENTS reference external Fulcio documentation; SOLID review should be revalidated if external policy requirements change.
|
||||
- Risk: solid-review generator matches `<auto-generated` strings in source content; generator Program.cs required manual note. Consider tightening detection logic.
|
||||
- Decision: PolicyAuthoritySignals contract identifiers now enforce non-empty validation; remediation checklist updated in `docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.PolicyAuthoritySignals.Contracts/StellaOps.PolicyAuthoritySignals.Contracts.md`.
|
||||
- Decision: AOC guard library guidance updated to use `RequireAocGuard` with constructor-injected filter; see `docs/modules/aoc/guides/guard-library.md`.
|
||||
- Decision: Documented file-based job sync path root validation in `docs/modules/airgap/guides/job-sync-offline.md`.
|
||||
- Decision: DecompiledCodeParser.ExtractVariables now ignores keyword-only matches when the type token is not in the known type set to avoid false positives (e.g., return/goto); tests updated.
|
||||
## Next Checkpoints
|
||||
- Stage 0 (single-file) Tier 0 remediation validated.
|
||||
- Stage 1 (small batch) Tier 0 remediation validated.
|
||||
|
||||
@@ -68,8 +68,8 @@ Completion criteria:
|
||||
| Project: src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.md | TODO |
|
||||
| Project: src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.md | TODO |
|
||||
| Project: src/Aoc/__Analyzers/StellaOps.Aoc.Analyzers/StellaOps.Aoc.Analyzers.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Aoc/__Analyzers/StellaOps.Aoc.Analyzers/StellaOps.Aoc.Analyzers.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Aoc/__Analyzers/StellaOps.Aoc.Analyzers/StellaOps.Aoc.Analyzers.md | TODO |
|
||||
| Project: src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/StellaOps.Aoc.AspNetCore.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/StellaOps.Aoc.AspNetCore.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/StellaOps.Aoc.AspNetCore.md | TODO |
|
||||
| Project: src/Aoc/__Libraries/StellaOps.Aoc/StellaOps.Aoc.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Aoc/__Libraries/StellaOps.Aoc/StellaOps.Aoc.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Aoc/__Libraries/StellaOps.Aoc/StellaOps.Aoc.md | TODO |
|
||||
| Project: src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/StellaOps.Aoc.AspNetCore.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/StellaOps.Aoc.AspNetCore.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/StellaOps.Aoc.AspNetCore.md | DONE |
|
||||
| Project: src/Aoc/__Libraries/StellaOps.Aoc/StellaOps.Aoc.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Aoc/__Libraries/StellaOps.Aoc/StellaOps.Aoc.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Aoc/__Libraries/StellaOps.Aoc/StellaOps.Aoc.md | DONE |
|
||||
| Project: src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/StellaOps.Aoc.Analyzers.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/StellaOps.Aoc.Analyzers.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/StellaOps.Aoc.Analyzers.Tests.md | TODO |
|
||||
| Project: src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/StellaOps.Aoc.AspNetCore.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/StellaOps.Aoc.AspNetCore.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/StellaOps.Aoc.AspNetCore.Tests.md | TODO |
|
||||
| Project: src/Aoc/__Tests/StellaOps.Aoc.Tests/StellaOps.Aoc.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Aoc/__Tests/StellaOps.Aoc.Tests/StellaOps.Aoc.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Aoc/__Tests/StellaOps.Aoc.Tests/StellaOps.Aoc.Tests.md | TODO |
|
||||
@@ -467,12 +467,12 @@ Completion criteria:
|
||||
| Project: src/Integrations/__Plugins/StellaOps.Integrations.Plugin.InMemory/StellaOps.Integrations.Plugin.InMemory.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Integrations/__Plugins/StellaOps.Integrations.Plugin.InMemory/StellaOps.Integrations.Plugin.InMemory.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Integrations/__Plugins/StellaOps.Integrations.Plugin.InMemory/StellaOps.Integrations.Plugin.InMemory.md | TODO |
|
||||
| Project: src/Integrations/__Tests/StellaOps.Integrations.Plugin.Tests/StellaOps.Integrations.Plugin.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Integrations/__Tests/StellaOps.Integrations.Plugin.Tests/StellaOps.Integrations.Plugin.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Integrations/__Tests/StellaOps.Integrations.Plugin.Tests/StellaOps.Integrations.Plugin.Tests.md | TODO |
|
||||
| Project: src/Integrations/__Tests/StellaOps.Integrations.Tests/StellaOps.Integrations.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Integrations/__Tests/StellaOps.Integrations.Tests/StellaOps.Integrations.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Integrations/__Tests/StellaOps.Integrations.Tests/StellaOps.Integrations.Tests.md | TODO |
|
||||
| Project: src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core.Tests/StellaOps.IssuerDirectory.Core.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core.Tests/StellaOps.IssuerDirectory.Core.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core.Tests/StellaOps.IssuerDirectory.Core.Tests.md | TODO |
|
||||
| Project: src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core/StellaOps.IssuerDirectory.Core.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core/StellaOps.IssuerDirectory.Core.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core/StellaOps.IssuerDirectory.Core.md | TODO |
|
||||
| Project: src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core.Tests/StellaOps.IssuerDirectory.Core.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core.Tests/StellaOps.IssuerDirectory.Core.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core.Tests/StellaOps.IssuerDirectory.Core.Tests.md | DONE |
|
||||
| Project: src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core/StellaOps.IssuerDirectory.Core.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core/StellaOps.IssuerDirectory.Core.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Core/StellaOps.IssuerDirectory.Core.md | DONE |
|
||||
| Project: src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Infrastructure/StellaOps.IssuerDirectory.Infrastructure.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Infrastructure/StellaOps.IssuerDirectory.Infrastructure.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.Infrastructure/StellaOps.IssuerDirectory.Infrastructure.md | TODO |
|
||||
| Project: src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.WebService/StellaOps.IssuerDirectory.WebService.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.WebService/StellaOps.IssuerDirectory.WebService.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/IssuerDirectory/StellaOps.IssuerDirectory/StellaOps.IssuerDirectory.WebService/StellaOps.IssuerDirectory.WebService.md | TODO |
|
||||
| Project: src/IssuerDirectory/__Libraries/StellaOps.IssuerDirectory.Persistence/StellaOps.IssuerDirectory.Persistence.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/IssuerDirectory/__Libraries/StellaOps.IssuerDirectory.Persistence/StellaOps.IssuerDirectory.Persistence.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/IssuerDirectory/__Libraries/StellaOps.IssuerDirectory.Persistence/StellaOps.IssuerDirectory.Persistence.md | TODO |
|
||||
| Project: src/IssuerDirectory/__Tests/StellaOps.IssuerDirectory.Persistence.Tests/StellaOps.IssuerDirectory.Persistence.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/IssuerDirectory/__Tests/StellaOps.IssuerDirectory.Persistence.Tests/StellaOps.IssuerDirectory.Persistence.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/IssuerDirectory/__Tests/StellaOps.IssuerDirectory.Persistence.Tests/StellaOps.IssuerDirectory.Persistence.Tests.md | TODO |
|
||||
| Project: src/IssuerDirectory/__Libraries/StellaOps.IssuerDirectory.Persistence/StellaOps.IssuerDirectory.Persistence.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/IssuerDirectory/__Libraries/StellaOps.IssuerDirectory.Persistence/StellaOps.IssuerDirectory.Persistence.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/IssuerDirectory/__Libraries/StellaOps.IssuerDirectory.Persistence/StellaOps.IssuerDirectory.Persistence.md | DONE |
|
||||
| Project: src/IssuerDirectory/__Tests/StellaOps.IssuerDirectory.Persistence.Tests/StellaOps.IssuerDirectory.Persistence.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/IssuerDirectory/__Tests/StellaOps.IssuerDirectory.Persistence.Tests/StellaOps.IssuerDirectory.Persistence.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/IssuerDirectory/__Tests/StellaOps.IssuerDirectory.Persistence.Tests/StellaOps.IssuerDirectory.Persistence.Tests.md | DONE |
|
||||
| Project: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Tests/StellaOps.Notifier.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Tests/StellaOps.Notifier.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Tests/StellaOps.Notifier.Tests.md | TODO |
|
||||
| Project: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.WebService/StellaOps.Notifier.WebService.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Notifier/StellaOps.Notifier/StellaOps.Notifier.WebService/StellaOps.Notifier.WebService.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Notifier/StellaOps.Notifier/StellaOps.Notifier.WebService/StellaOps.Notifier.WebService.md | TODO |
|
||||
| Project: src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/StellaOps.Notifier.Worker.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/StellaOps.Notifier.Worker.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/StellaOps.Notifier.Worker.md | TODO |
|
||||
@@ -985,12 +985,12 @@ Completion criteria:
|
||||
| Project: src/__Libraries/StellaOps.Doctor.Plugins.Verification/StellaOps.Doctor.Plugins.Verification.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Doctor.Plugins.Verification/StellaOps.Doctor.Plugins.Verification.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Doctor.Plugins.Verification/StellaOps.Doctor.Plugins.Verification.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Doctor/StellaOps.Doctor.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Doctor/StellaOps.Doctor.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Doctor/StellaOps.Doctor.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Eventing/StellaOps.Eventing.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Eventing/StellaOps.Eventing.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Eventing/StellaOps.Eventing.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Evidence.Bundle/StellaOps.Evidence.Bundle.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence.Bundle/StellaOps.Evidence.Bundle.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence.Bundle/StellaOps.Evidence.Bundle.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Evidence.Bundle/StellaOps.Evidence.Bundle.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence.Bundle/StellaOps.Evidence.Bundle.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence.Bundle/StellaOps.Evidence.Bundle.md | DONE |
|
||||
| Project: src/__Libraries/StellaOps.Evidence.Core.Tests/StellaOps.Evidence.Core.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence.Core.Tests/StellaOps.Evidence.Core.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence.Core.Tests/StellaOps.Evidence.Core.Tests.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Evidence.Core/StellaOps.Evidence.Core.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence.Core/StellaOps.Evidence.Core.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence.Core/StellaOps.Evidence.Core.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Evidence.Pack/StellaOps.Evidence.Pack.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence.Pack/StellaOps.Evidence.Pack.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence.Pack/StellaOps.Evidence.Pack.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Evidence.Persistence/StellaOps.Evidence.Persistence.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence.Persistence/StellaOps.Evidence.Persistence.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence.Persistence/StellaOps.Evidence.Persistence.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Evidence/StellaOps.Evidence.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence/StellaOps.Evidence.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence/StellaOps.Evidence.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Evidence.Core/StellaOps.Evidence.Core.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence.Core/StellaOps.Evidence.Core.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence.Core/StellaOps.Evidence.Core.md | DONE |
|
||||
| Project: src/__Libraries/StellaOps.Evidence.Pack/StellaOps.Evidence.Pack.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence.Pack/StellaOps.Evidence.Pack.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence.Pack/StellaOps.Evidence.Pack.md | BLOCKED |
|
||||
| Project: src/__Libraries/StellaOps.Evidence.Persistence/StellaOps.Evidence.Persistence.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence.Persistence/StellaOps.Evidence.Persistence.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence.Persistence/StellaOps.Evidence.Persistence.md | DONE |
|
||||
| Project: src/__Libraries/StellaOps.Evidence/StellaOps.Evidence.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Evidence/StellaOps.Evidence.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Evidence/StellaOps.Evidence.md | DONE |
|
||||
| Project: src/__Libraries/StellaOps.Facet.Tests/StellaOps.Facet.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Facet.Tests/StellaOps.Facet.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Facet.Tests/StellaOps.Facet.Tests.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Facet/StellaOps.Facet.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Facet/StellaOps.Facet.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Facet/StellaOps.Facet.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.FeatureFlags.Tests/StellaOps.FeatureFlags.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.FeatureFlags.Tests/StellaOps.FeatureFlags.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.FeatureFlags.Tests/StellaOps.FeatureFlags.Tests.md | TODO |
|
||||
@@ -1002,7 +1002,7 @@ Completion criteria:
|
||||
| Project: src/__Libraries/StellaOps.Infrastructure.Postgres/StellaOps.Infrastructure.Postgres.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Infrastructure.Postgres/StellaOps.Infrastructure.Postgres.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Infrastructure.Postgres/StellaOps.Infrastructure.Postgres.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Ingestion.Telemetry/StellaOps.Ingestion.Telemetry.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Ingestion.Telemetry/StellaOps.Ingestion.Telemetry.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Ingestion.Telemetry/StellaOps.Ingestion.Telemetry.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Interop/StellaOps.Interop.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Interop/StellaOps.Interop.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Interop/StellaOps.Interop.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.IssuerDirectory.Client/StellaOps.IssuerDirectory.Client.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.IssuerDirectory.Client/StellaOps.IssuerDirectory.Client.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.IssuerDirectory.Client/StellaOps.IssuerDirectory.Client.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.IssuerDirectory.Client/StellaOps.IssuerDirectory.Client.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.IssuerDirectory.Client/StellaOps.IssuerDirectory.Client.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.IssuerDirectory.Client/StellaOps.IssuerDirectory.Client.md | DONE |
|
||||
| Project: src/__Libraries/StellaOps.Metrics/StellaOps.Metrics.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Metrics/StellaOps.Metrics.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Metrics/StellaOps.Metrics.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Orchestrator.Schemas/StellaOps.Orchestrator.Schemas.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Orchestrator.Schemas/StellaOps.Orchestrator.Schemas.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Orchestrator.Schemas/StellaOps.Orchestrator.Schemas.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Plugin/StellaOps.Plugin.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Plugin/StellaOps.Plugin.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Plugin/StellaOps.Plugin.md | TODO |
|
||||
@@ -1018,9 +1018,9 @@ Completion criteria:
|
||||
| Project: src/__Libraries/StellaOps.ReachGraph/StellaOps.ReachGraph.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.ReachGraph/StellaOps.ReachGraph.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.ReachGraph/StellaOps.ReachGraph.md | DONE |
|
||||
| Project: src/__Libraries/StellaOps.Reachability.Core.Tests/StellaOps.Reachability.Core.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Reachability.Core.Tests/StellaOps.Reachability.Core.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Reachability.Core.Tests/StellaOps.Reachability.Core.Tests.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Reachability.Core/StellaOps.Reachability.Core.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Reachability.Core/StellaOps.Reachability.Core.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Reachability.Core/StellaOps.Reachability.Core.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Replay.Core.Tests/StellaOps.Replay.Core.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Replay.Core.Tests/StellaOps.Replay.Core.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Replay.Core.Tests/StellaOps.Replay.Core.Tests.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Replay.Core/StellaOps.Replay.Core.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Replay.Core/StellaOps.Replay.Core.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Replay.Core/StellaOps.Replay.Core.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Replay/StellaOps.Replay.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Replay/StellaOps.Replay.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Replay/StellaOps.Replay.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Replay.Core.Tests/StellaOps.Replay.Core.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Replay.Core.Tests/StellaOps.Replay.Core.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Replay.Core.Tests/StellaOps.Replay.Core.Tests.md | DONE |
|
||||
| Project: src/__Libraries/StellaOps.Replay.Core/StellaOps.Replay.Core.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Replay.Core/StellaOps.Replay.Core.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Replay.Core/StellaOps.Replay.Core.md | DONE |
|
||||
| Project: src/__Libraries/StellaOps.Replay/StellaOps.Replay.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Replay/StellaOps.Replay.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Replay/StellaOps.Replay.md | DONE |
|
||||
| Project: src/__Libraries/StellaOps.Resolver.Tests/StellaOps.Resolver.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Resolver.Tests/StellaOps.Resolver.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Resolver.Tests/StellaOps.Resolver.Tests.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Resolver/StellaOps.Resolver.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Resolver/StellaOps.Resolver.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Resolver/StellaOps.Resolver.md | TODO |
|
||||
| Project: src/__Libraries/StellaOps.Signals.Contracts/StellaOps.Signals.Contracts.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Libraries/StellaOps.Signals.Contracts/StellaOps.Signals.Contracts.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Libraries/StellaOps.Signals.Contracts/StellaOps.Signals.Contracts.md | TODO |
|
||||
@@ -1129,7 +1129,7 @@ Completion criteria:
|
||||
| Project: src/__Tests/e2e/Integrations/StellaOps.Integration.E2E.Integrations.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Tests/e2e/Integrations/StellaOps.Integration.E2E.Integrations.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Tests/e2e/Integrations/StellaOps.Integration.E2E.Integrations.md | TODO |
|
||||
| Project: src/__Tests/e2e/ReplayableVerdict/StellaOps.E2E.ReplayableVerdict.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Tests/e2e/ReplayableVerdict/StellaOps.E2E.ReplayableVerdict.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Tests/e2e/ReplayableVerdict/StellaOps.E2E.ReplayableVerdict.md | TODO |
|
||||
| Project: src/__Tests/e2e/RuntimeLinkage/StellaOps.E2E.RuntimeLinkage.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Tests/e2e/RuntimeLinkage/StellaOps.E2E.RuntimeLinkage.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Tests/e2e/RuntimeLinkage/StellaOps.E2E.RuntimeLinkage.md | TODO |
|
||||
| Project: src/__Tests/interop/StellaOps.Interop.Tests/StellaOps.Interop.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Tests/interop/StellaOps.Interop.Tests/StellaOps.Interop.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Tests/interop/StellaOps.Interop.Tests/StellaOps.Interop.Tests.md | TODO |
|
||||
| Project: src/__Tests/interop/StellaOps.Interop.Tests/StellaOps.Interop.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Tests/interop/StellaOps.Interop.Tests/StellaOps.Interop.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Tests/interop/StellaOps.Interop.Tests/StellaOps.Interop.Tests.md | DONE |
|
||||
| Project: src/__Tests/offline/StellaOps.Offline.E2E.Tests/StellaOps.Offline.E2E.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Tests/offline/StellaOps.Offline.E2E.Tests/StellaOps.Offline.E2E.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Tests/offline/StellaOps.Offline.E2E.Tests/StellaOps.Offline.E2E.Tests.md | TODO |
|
||||
| Project: src/__Tests/parity/StellaOps.Parity.Tests/StellaOps.Parity.Tests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Tests/parity/StellaOps.Parity.Tests/StellaOps.Parity.Tests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Tests/parity/StellaOps.Parity.Tests/StellaOps.Parity.Tests.md | TODO |
|
||||
| Project: src/__Tests/reachability/StellaOps.Reachability.FixtureTests/StellaOps.Reachability.FixtureTests.csproj; Analysis: DONE (audit + SOLID); Findings: docs/implplan/audits/csproj-standards/src/__Tests/reachability/StellaOps.Reachability.FixtureTests/StellaOps.Reachability.FixtureTests.md; Remediation: docs/implplan/audits/csproj-standards/remediation/checklists/src/__Tests/reachability/StellaOps.Reachability.FixtureTests/StellaOps.Reachability.FixtureTests.md | TODO |
|
||||
@@ -1178,6 +1178,7 @@ Completion criteria:
|
||||
| 2026-02-03 | StellaOps.Cryptography.Plugin.OfflineVerification.Tests remediated; status set to DONE with test pass evidence. | Project Manager |
|
||||
| 2026-02-03 | StellaOps.Cryptography.Tests (__Libraries/__Tests) remediated; status set to DONE with test pass evidence. | Project Manager |
|
||||
| 2026-02-03 | StellaOps.DeltaVerdict.Tests (__Libraries/__Tests) remediated; status set to DONE with test pass evidence. | Project Manager |
|
||||
| 2026-02-04 | StellaOps.Aoc and StellaOps.Aoc.AspNetCore remediated; status set to DONE with test pass evidence (11 + 8 tests). | Project Manager |
|
||||
| 2026-02-03 | StellaOps.DistroIntel.Tests (__Libraries/__Tests) marked BLOCKED; missing module AGENTS.md. | Project Manager |
|
||||
| 2026-02-03 | StellaOps.AdvisoryAI.Attestation marked BLOCKED; missing module AGENTS.md in src/__Libraries/StellaOps.AdvisoryAI.Attestation. | Project Manager |
|
||||
| 2026-02-03 | StellaOps.Artifact.Core remediated; status set to DONE with test pass evidence (23 tests, MTP0001 warning). | Project Manager |
|
||||
@@ -1187,6 +1188,13 @@ Completion criteria:
|
||||
| 2026-02-03 | StellaOps.Configuration.SettingsStore marked BLOCKED; missing module AGENTS.md. | Project Manager |
|
||||
| 2026-02-03 | StellaOps.ReachGraph.Persistence remediated; status set to DONE with test pass evidence (10 tests). | Project Manager |
|
||||
| 2026-02-03 | StellaOps.ReachGraph remediated; status set to DONE with test pass evidence (MTP0001 warning). | Project Manager |
|
||||
| 2026-02-04 | StellaOps.Replay.Core + Replay.Core.Tests remediated; status set to DONE with test pass evidence (64 + 1 tests). | Project Manager |
|
||||
| 2026-02-04 | StellaOps.Evidence.Bundle remediated; status set to DONE with test pass evidence (29 tests). | Project Manager |
|
||||
| 2026-02-04 | StellaOps.Evidence.Core remediated; status set to DONE with test pass evidence (113 tests). | Project Manager |
|
||||
| 2026-02-04 | StellaOps.Evidence remediated; status set to DONE with test pass evidence (24 tests). | Project Manager |
|
||||
| 2026-02-04 | StellaOps.Evidence.Persistence remediated; status set to DONE with test pass evidence (35 tests). | Project Manager |
|
||||
| 2026-02-04 | StellaOps.Evidence.Pack marked BLOCKED; missing module AGENTS.md in src/__Libraries/StellaOps.Evidence.Pack. | Project Manager |
|
||||
| 2026-02-05 | StellaOps.Replay remediated; status set to DONE with test pass evidence (11 tests). | Project Manager |
|
||||
|
||||
## Decisions & Risks
|
||||
- Decision: Status column reflects full remediation and test pass completion; DONE requires full remediation and tests.
|
||||
|
||||
@@ -180,6 +180,9 @@ services.AddRouterJobSyncTransport();
|
||||
services.AddAirGapSyncImportService();
|
||||
```
|
||||
|
||||
Notes:
|
||||
- File-based transport resolves bundle paths under the configured input/output roots and rejects traversal outside those roots.
|
||||
|
||||
## Operational Runbook
|
||||
|
||||
### Pre-Export Checklist
|
||||
|
||||
@@ -46,10 +46,10 @@ app.MapPost("/ingest", async (IngestionRequest request, IAocGuard guard, ILogger
|
||||
// additional application logic
|
||||
return Results.Accepted();
|
||||
})
|
||||
.AddEndpointFilter(new AocGuardEndpointFilter<IngestionRequest>(
|
||||
.RequireAocGuard<IngestionRequest>(
|
||||
request => new object?[] { request.Payload },
|
||||
serializerOptions: null,
|
||||
guardOptions: null))
|
||||
guardOptions: null)
|
||||
.ProducesProblem(StatusCodes.Status400BadRequest)
|
||||
.WithTags("AOC");
|
||||
|
||||
|
||||
@@ -155,7 +155,8 @@ Producer note: default clock values in `StellaOps.Replay.Core` are `UnixEpoch` t
|
||||
|
||||
### 4.1 Environment Normalization
|
||||
|
||||
* **Clock:** frozen to `scan.time` unless a rule explicitly requires “now”.
|
||||
* **Clock:** frozen to `scan.time` unless a rule explicitly requires “now”.
|
||||
* **Replay engine timestamps:** success and failure outputs must use the injected `TimeProvider` to keep replay timestamps deterministic.
|
||||
* **Random seed:** derived as `H(scan.id || MerkleRootAllLayers)`.
|
||||
* **Locale/TZ:** enforced per manifest; deviations cause validation error.
|
||||
* **Filesystem normalization:**
|
||||
|
||||
@@ -152,4 +152,23 @@ Add the following to your hosts file (`C:\Windows\System32\drivers\etc\hosts` on
|
||||
127.1.0.43 signals.stella-ops.local
|
||||
127.1.0.44 advisoryai.stella-ops.local
|
||||
127.1.0.45 unknowns.stella-ops.local
|
||||
|
||||
# Stella Ops infrastructure (local dev containers)
|
||||
127.1.1.1 db.stella-ops.local
|
||||
127.1.1.2 cache.stella-ops.local
|
||||
127.1.1.3 s3.stella-ops.local
|
||||
127.1.1.4 rekor.stella-ops.local
|
||||
127.1.1.5 registry.stella-ops.local
|
||||
```
|
||||
|
||||
### Infrastructure services
|
||||
|
||||
Infrastructure containers (databases, caches, object storage, transparency logs) use a separate loopback range (`127.1.1.x`) to avoid collisions with application services.
|
||||
|
||||
| IP | Hostname | Service | Port |
|
||||
|----|----------|---------|------|
|
||||
| `127.1.1.1` | `db.stella-ops.local` | PostgreSQL 18.1 | 5432 |
|
||||
| `127.1.1.2` | `cache.stella-ops.local` | Valkey 9.0.1 | 6379 |
|
||||
| `127.1.1.3` | `s3.stella-ops.local` | SeaweedFS (S3-compatible) | 8080 |
|
||||
| `127.1.1.4` | `rekor.stella-ops.local` | Rekor v2 (tiles) | 3322 |
|
||||
| `127.1.1.5` | `registry.stella-ops.local` | Zot (OCI registry) | 80 (→5000) |
|
||||
|
||||
Reference in New Issue
Block a user