Blueprint-Action Service Status
Overall Status: 100% COMPLETE ✅ Location: src/Services/Sorcha.Blueprint.Service/Last Updated: 2026-02-08
Summary
| Component | Status | LOC | Tests |
|---|---|---|---|
| Sprint 3: Service Layer | ✅ 100% | ~900 | 7 tests |
| Sprint 4: API Endpoints | ✅ 100% | ~400 | 16 tests |
| Sprint 5: Execution/SignalR | ✅ 100% | ~300 | 14 tests |
| Sprint 10: Orchestration | ✅ 100% | ~650 | 21 tests |
| TOTAL | ✅ 100% | ~2,250 | 123 tests |
Sprint 3: Service Layer Foundation - 100% COMPLETE ✅
Implementations:
ActionResolverService (154 lines)
- ✅ Blueprint retrieval with Redis distributed caching (10-minute TTL)
- ✅ Action definition extraction
- ✅ Participant wallet resolution
- Tests: 13 unit tests (286 lines)
PayloadResolverService (187 lines)
- ✅ Encrypted payload creation
- ✅ Historical data aggregation
- Tests: Multiple test cases (259 lines)
TransactionBuilderService (269 lines)
- ✅ Action transaction building using Sorcha.TransactionHandler
- ✅ Rejection transaction building
- ✅ File attachment transaction building
- ✅ Proper metadata serialization
- Tests: Comprehensive coverage (357 lines)
Redis Caching Layer
- ✅ Configured:
builder.AddRedisOutputCache("redis") - ✅ Distributed cache in ActionResolverService
- ✅ Output caching for endpoints
- ✅ Configured:
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:
| Endpoint | Lines | Description |
|---|---|---|
GET /api/actions/{wallet}/{register}/blueprints | 415-468 | Available blueprints with output caching (5 min) |
GET /api/actions/{wallet}/{register} | 473-497 | Paginated action retrieval |
GET /api/actions/{wallet}/{register}/{tx} | 502-525 | Action by transaction hash |
POST /api/actions | 530-657 | Action submission (127 lines) |
POST /api/actions/reject | 662-727 | Rejection transaction |
GET /api/files/{wallet}/{register}/{tx}/{fileId} | 732-767 | File 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:
| Endpoint | Lines | Description |
|---|---|---|
POST /api/execution/validate | 780-822 | Schema validation |
POST /api/execution/calculate | 827-864 | JSON Logic calculations |
POST /api/execution/route | 869-909 | Next action/participant |
POST /api/execution/disclose | 914-956 | Selective disclosure |
SignalR Implementation:
ActionsHub.cs (142 lines)
- OnConnectedAsync/OnDisconnectedAsync
- SubscribeToWallet/UnsubscribeFromWallet
- Wallet-based grouping:
wallet:{address} - Client methods: ActionAvailable, ActionConfirmed, ActionRejected
NotificationService.cs (117 lines)
IHubContext<ActionsHub>integration- NotifyActionAvailableAsync/Confirmed/Rejected
- Group-based broadcasting
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:
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
ActionExecutionService (320+ lines)
- ✅ 15-step orchestration workflow:
- Instance lookup
- Blueprint retrieval
- Action definition validation
- Current action verification
- State reconstruction
- Payload validation
- JSON Logic evaluation
- Route determination
- Payload encryption
- Transaction building
- Transaction signing
- Register submission
- Instance state update
- Notification dispatch
- Response generation
- Tests: 11 unit tests
- ✅ 15-step orchestration workflow:
DelegationTokenMiddleware (45 lines)
- ✅ Extracts X-Delegation-Token header
- ✅ Injects into HttpContext.Items
Instance Management
- ✅ Instance model with state tracking (Pending, Active, Completed, Failed)
- ✅ IInstanceStore interface with full CRUD
- ✅ InMemoryInstanceStore implementation
Orchestration Models (100+ lines)
- AccumulatedState, Instance, Branch, NextAction, BranchState
Extended Service Clients
- IWalletServiceClient.DecryptWithDelegationAsync
- IRegisterServiceClient.GetTransactionsByInstanceIdAsync
New API Endpoints
- POST /api/instances/{id}/actions/{actionId}/execute
- POST /api/instances/{id}/actions/{actionId}/reject
- GET /api/instances/{id}/state
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:
Docker Template Seeding Fix
- ✅ Dockerfile now copies
examples/templates/into/app/templatesduring build - ✅
FindTemplatesDirectory()already checksPath.Combine(baseDir, "templates")— resolves immediately in Docker
- ✅ Dockerfile now copies
IDocumentStore Migration
- ✅
BlueprintTemplateServicemigrated fromDictionary<string, BlueprintTemplate>toIDocumentStore<BlueprintTemplate, string> - ✅ Thread-safe via
InMemoryDocumentStore(usesConcurrentDictionaryinternally) - ✅ 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