feat: Complete MongoDB/MinIO removal and integrate CLI consolidation

This commit completes the MongoDB and MinIO removal from the StellaOps
platform and integrates the CLI consolidation work from remote.

## Infrastructure Changes

- PostgreSQL v16+ is now the ONLY supported database
- Valkey v8.0 replaces Redis for caching, DPoP security, and event streams
- RustFS is the primary object storage (MinIO fully removed)
- NATS is OPTIONAL for messaging (Valkey is default transport)

## Docker Compose Updates

Updated all deployment profiles:
- deploy/compose/docker-compose.dev.yaml
- deploy/compose/docker-compose.airgap.yaml
- deploy/compose/docker-compose.stage.yaml
- deploy/compose/docker-compose.prod.yaml

All profiles now use PostgreSQL + Valkey + RustFS stack.

## Environment Configuration

Updated all env.example files with:
- Removed: MONGO_*, MINIO_* variables
- Added: POSTGRES_*, VALKEY_* variables
- Updated: SCANNER_QUEUE_BROKER to use Valkey by default
- Enhanced: Surface.Env and Offline Kit configurations

## Aoc.Cli Changes

- Removed --mongo option entirely
- Made --postgres option required
- Removed VerifyMongoAsync method
- PostgreSQL is now the only supported backend

## CLI Consolidation (from merge)

Integrated plugin architecture for unified CLI:
- stella aoc verify (replaces stella-aoc)
- stella symbols (replaces stella-symbols)
- Plugin manifests and command modules
- Migration guide for users

## Documentation Updates

- README.md: Updated deployment workflow notes
- DEVELOPER_ONBOARDING.md: Complete Valkey-centric flow diagrams
- QUICKSTART_HYBRID_DEBUG.md: Removed MongoDB/MinIO references
- VERSION_MATRIX.md: Updated infrastructure dependencies
- CLEANUP_SUMMARY.md: Marked all cleanup tasks complete
- 07_HIGH_LEVEL_ARCHITECTURE.md: Corrected infrastructure stack
- 11_DATA_SCHEMAS.md: Valkey keyspace documentation

## Merge Resolution

Resolved merge conflicts by accepting incoming changes which had more
complete Surface.Env and Offline Kit configurations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
master
2025-12-23 10:40:20 +02:00
645 changed files with 236330 additions and 7473 deletions

View File

@@ -6,8 +6,14 @@ namespace StellaOps.Aoc.Cli;
public static class Program
{
private const string DeprecationDate = "2025-07-01";
private const string MigrationUrl = "https://docs.stellaops.io/cli/migration";
public static async Task<int> Main(string[] args)
{
// Emit deprecation warning
EmitDeprecationWarning();
var rootCommand = new RootCommand("StellaOps AOC CLI - Verify append-only contract compliance")
{
VerifyCommand.Create()
@@ -15,4 +21,21 @@ public static class Program
return await rootCommand.InvokeAsync(args);
}
private static void EmitDeprecationWarning()
{
var originalColor = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Error.WriteLine();
Console.Error.WriteLine("================================================================================");
Console.Error.WriteLine("[DEPRECATED] stella-aoc is deprecated and will be removed on " + DeprecationDate + ".");
Console.Error.WriteLine();
Console.Error.WriteLine("Please migrate to the unified stella CLI:");
Console.Error.WriteLine(" stella aoc verify --since <ref> --postgres <conn>");
Console.Error.WriteLine();
Console.Error.WriteLine("Migration guide: " + MigrationUrl);
Console.Error.WriteLine("================================================================================");
Console.Error.WriteLine();
Console.ForegroundColor = originalColor;
}
}

View File

@@ -22,7 +22,7 @@ public sealed class AocVerificationService
// Parse the since parameter
var sinceTimestamp = ParseSinceParameter(options.Since);
// Verify PostgreSQL database
// Verify using PostgreSQL
await VerifyPostgresAsync(options.PostgresConnectionString, sinceTimestamp, options.Tenant, result, cancellationToken);
stopwatch.Stop();
@@ -228,4 +228,5 @@ public sealed class AocVerificationService
Console.WriteLine("Note: excititor.vex_documents table not found (may not be initialized)");
}
}
}

View File

@@ -117,25 +117,16 @@ public sealed class AocVerificationServiceTests
}
[Fact]
public void VerifyOptions_MongoAndPostgres_AreMutuallyExclusive()
public void VerifyOptions_PostgresConnectionString_IsRequired()
{
var optionsMongo = new VerifyOptions
{
Since = "HEAD~1",
MongoConnectionString = "mongodb://localhost:27017"
};
var optionsPostgres = new VerifyOptions
var options = new VerifyOptions
{
Since = "HEAD~1",
PostgresConnectionString = "Host=localhost;Database=test"
};
Assert.NotNull(optionsMongo.MongoConnectionString);
Assert.Null(optionsMongo.PostgresConnectionString);
Assert.Null(optionsPostgres.MongoConnectionString);
Assert.NotNull(optionsPostgres.PostgresConnectionString);
Assert.NotNull(options.PostgresConnectionString);
Assert.Equal("Host=localhost;Database=test", options.PostgresConnectionString);
}
[Fact]
@@ -143,7 +134,8 @@ public sealed class AocVerificationServiceTests
{
var options = new VerifyOptions
{
Since = "2025-01-01"
Since = "2025-01-01",
PostgresConnectionString = "Host=localhost;Database=test"
};
Assert.False(options.DryRun);
@@ -154,7 +146,8 @@ public sealed class AocVerificationServiceTests
{
var options = new VerifyOptions
{
Since = "2025-01-01"
Since = "2025-01-01",
PostgresConnectionString = "Host=localhost;Database=test"
};
Assert.False(options.Verbose);