Skip to content

Blueprint-Action Service Status

Overall Status: 100% COMPLETE ✅ Location: src/Services/Sorcha.Blueprint.Service/Last Updated: 2026-02-08


Summary

ComponentStatusLOCTests
Sprint 3: Service Layer✅ 100%~9007 tests
Sprint 4: API Endpoints✅ 100%~40016 tests
Sprint 5: Execution/SignalR✅ 100%~30014 tests
Sprint 10: Orchestration✅ 100%~65021 tests
TOTAL✅ 100%~2,250123 tests

Sprint 3: Service Layer Foundation - 100% COMPLETE ✅

Implementations:

  1. ActionResolverService (154 lines)

    • ✅ Blueprint retrieval with Redis distributed caching (10-minute TTL)
    • ✅ Action definition extraction
    • ✅ Participant wallet resolution
    • Tests: 13 unit tests (286 lines)
  2. PayloadResolverService (187 lines)

    • ✅ Encrypted payload creation
    • ✅ Historical data aggregation
    • Tests: Multiple test cases (259 lines)
  3. TransactionBuilderService (269 lines)

    • ✅ Action transaction building using Sorcha.TransactionHandler
    • ✅ Rejection transaction building
    • ✅ File attachment transaction building
    • ✅ Proper metadata serialization
    • Tests: Comprehensive coverage (357 lines)
  4. Redis Caching Layer

    • ✅ Configured: builder.AddRedisOutputCache("redis")
    • ✅ Distributed cache in ActionResolverService
    • ✅ Output caching for endpoints
  5. Storage Implementation

    • ✅ IActionStore interface
    • ✅ InMemoryActionStore (82 lines)

Integration Tests:

  • ✅ ServiceLayerIntegrationTests.cs (403 lines, 7 tests)
  • ✅ End-to-end workflow simulations
  • ✅ Cache verification tests

Sprint 4: Action API Endpoints - 100% COMPLETE ✅

Endpoints in Program.cs:

EndpointLinesDescription
GET /api/actions/{wallet}/{register}/blueprints415-468Available blueprints with output caching (5 min)
GET /api/actions/{wallet}/{register}473-497Paginated action retrieval
GET /api/actions/{wallet}/{register}/{tx}502-525Action by transaction hash
POST /api/actions530-657Action submission (127 lines)
POST /api/actions/reject662-727Rejection transaction
GET /api/files/{wallet}/{register}/{tx}/{fileId}732-767File download

API Tests:

  • ✅ ActionApiIntegrationTests.cs (527 lines, 16 tests)
  • ✅ All CRUD operations, file attachments, error handling

OpenAPI Documentation:

  • ✅ Scalar UI at /scalar/v1
  • ✅ OpenAPI spec at /openapi/v1.json

Sprint 5: Execution Helpers & SignalR - 100% COMPLETE ✅

Execution Helper Endpoints:

EndpointLinesDescription
POST /api/execution/validate780-822Schema validation
POST /api/execution/calculate827-864JSON Logic calculations
POST /api/execution/route869-909Next action/participant
POST /api/execution/disclose914-956Selective disclosure

SignalR Implementation:

  1. ActionsHub.cs (142 lines)

    • OnConnectedAsync/OnDisconnectedAsync
    • SubscribeToWallet/UnsubscribeFromWallet
    • Wallet-based grouping: wallet:{address}
    • Client methods: ActionAvailable, ActionConfirmed, ActionRejected
  2. NotificationService.cs (117 lines)

    • IHubContext<ActionsHub> integration
    • NotifyActionAvailableAsync/Confirmed/Rejected
    • Group-based broadcasting
  3. Redis Backplane

    csharp
    .AddStackExchangeRedis(connectionString, options =>
    {
        options.Configuration.ChannelPrefix = "sorcha:blueprint:signalr:";
    });

SignalR Tests: 520+ lines, 14 comprehensive tests


Sprint 10: Orchestration & Instance Management - 100% COMPLETE ✅

Completed 2025-12-04:

  1. StateReconstructionService (186 lines)

    • ✅ Fetches prior transactions from Register Service
    • ✅ Decrypts payloads using Wallet Service with delegation tokens
    • ✅ Accumulates state from all prior actions
    • ✅ Branch state tracking for parallel workflows
    • Tests: 10 unit tests
  2. ActionExecutionService (320+ lines)

    • ✅ 15-step orchestration workflow:
      1. Instance lookup
      2. Blueprint retrieval
      3. Action definition validation
      4. Current action verification
      5. State reconstruction
      6. Payload validation
      7. JSON Logic evaluation
      8. Route determination
      9. Payload encryption
      10. Transaction building
      11. Transaction signing
      12. Register submission
      13. Instance state update
      14. Notification dispatch
      15. Response generation
    • Tests: 11 unit tests
  3. DelegationTokenMiddleware (45 lines)

    • ✅ Extracts X-Delegation-Token header
    • ✅ Injects into HttpContext.Items
  4. Instance Management

    • ✅ Instance model with state tracking (Pending, Active, Completed, Failed)
    • ✅ IInstanceStore interface with full CRUD
    • ✅ InMemoryInstanceStore implementation
  5. Orchestration Models (100+ lines)

    • AccumulatedState, Instance, Branch, NextAction, BranchState
  6. Extended Service Clients

    • IWalletServiceClient.DecryptWithDelegationAsync
    • IRegisterServiceClient.GetTransactionsByInstanceIdAsync
  7. New API Endpoints

    • POST /api/instances/{id}/actions/{actionId}/execute
    • POST /api/instances/{id}/actions/{actionId}/reject
    • GET /api/instances/{id}/state
  8. Test Infrastructure

    • BlueprintServiceWebApplicationFactory
    • NoOpOutputCacheStore
    • Mock HTTP handlers

Test Results: 123 tests passing (98 pre-existing + 25 new)


Template Library Storage - COMPLETE ✅

Completed 2026-02-08:

  1. Docker Template Seeding Fix

    • ✅ Dockerfile now copies examples/templates/ into /app/templates during build
    • FindTemplatesDirectory() already checks Path.Combine(baseDir, "templates") — resolves immediately in Docker
  2. IDocumentStore Migration

    • BlueprintTemplateService migrated from Dictionary<string, BlueprintTemplate> to IDocumentStore<BlueprintTemplate, string>
    • ✅ Thread-safe via InMemoryDocumentStore (uses ConcurrentDictionary internally)
    • ✅ Swappable to MongoDB with a single DI registration change
    • ✅ Consistent with Blueprint Service's in-memory storage pattern (line 36: "later: replace with EF Core + PostgreSQL")

Test Results: 224 tests passing (all unchanged)


Back to: Development Status

Released under the MIT License.