Skip to main content

Sparki.tools: Complete Traceability Matrix

8 Recommendations → Implementation → Tests → 100% Coverage

Date: 2025-12-16 Purpose: Map every requirement to specific implementations and test cases

REQ 1.1a: Unified Configuration Layer

Requirement Breakdown

Req IDRequirementTypeStatus
1.1a.1Single source-of-truth per environmentFunctionalPending
1.1a.2Configuration inheritance (local→env→defaults)FunctionalPending
1.1a.3Schema validation before useFunctionalPending
1.1a.4Secrets injected via environment variablesFunctionalPending
1.1a.5Type-safe configuration accessFunctionalPending
1.1a.6Cross-field constraint validationFunctionalPending
1.1a.7Required fields enforcedFunctionalPending
1.1a.8Configuration injectable via DIArchitecturalPending

Implementation Mapping

REQ 1.1a.1 (Single source-of-truth)

  File: engine/internal/config/manager.go
  Type: ConfigManager struct + Load() method
  Code:
    func (cm *ConfigManager) Load(ctx context.Context) (*Config, error) {
        base := loadYAML("config.base.yaml")
        env := loadYAML(fmt.Sprintf("config.%s.yaml", os.Getenv("ENVIRONMENT")))
        // Merge with proper precedence
        return cm.merged(base, env)
    }

  ✅ Unit Test: TestConfigManagerLoadBaseFile
  ✅ Unit Test: TestConfigManagerLoadWithEnvOverrides
  Coverage: manager.go:45-75 (Load method)

REQ 1.1a.2 (Inheritance hierarchy)

  File: engine/internal/config/manager.go
  Type: ConfigManager.mergeConfigs() private method
  Code:
    func (cm *ConfigManager) mergeConfigs(base, override map[string]interface{}) map[string]interface{} {
        for k, v := range override {
            base[k] = v
        }
        return base
    }

  ✅ Unit Test: TestConfigManagerLoadWithAllOverrides
  ✅ Unit Test: TestConfigManagerPriorityOrder
  Coverage: manager.go:95-110 (merge logic)

REQ 1.1a.3 (Schema validation)

  File: engine/internal/config/schema.go
  Type: Validator struct + Validate() method
  Code:
    type Validator struct {
        rules []ValidationRule
    }

    func (v *Validator) Validate(config *Config) error {
        for _, rule := range v.rules {
            if err := rule.Check(config); err != nil {
                return err
            }
        }
        return nil
    }

  ✅ Unit Test: TestConfigValidateRequiredFields
  ✅ Unit Test: TestConfigValidateSchema
  Coverage: schema.go:30-60 (Validate method)

REQ 1.1a.4 (Secrets via env vars)

  File: engine/internal/config/manager.go
  Type: ConfigManager.substituteEnvVars() method
  Code:
    func (cm *ConfigManager) substituteEnvVars(config map[string]interface{}) map[string]interface{} {
        // Replace ${VAR_NAME} with os.Getenv("VAR_NAME")
        return substituteRecursive(config)
    }

  ✅ Unit Test: TestConfigManagerEnvVarSubstitution
  ✅ Unit Test: TestConfigManagerMissingEnvVarError
  Coverage: manager.go:120-145 (env var substitution)

REQ 1.1a.5 (Type-safe access)

  File: engine/internal/config/schema.go
  Type: Config struct + typed accessors
  Code:
    type Config struct {
        Service ServiceConfig
        Database DatabaseConfig
        Cache CacheConfig
    }

    func (c *Config) GetString(key string) (string, error)
    func (c *Config) GetInt(key string) (int, error)
    func (c *Config) GetBool(key string) (bool, error)

  ✅ Unit Test: TestConfigGetStringType
  ✅ Unit Test: TestConfigGetIntType
  ✅ Unit Test: TestConfigTypeMismatchError
  Coverage: schema.go:80-130 (accessor methods)

REQ 1.1a.6 (Cross-field validation)

  File: engine/internal/config/schema.go
  Type: CrossFieldValidator struct
  Code:
    func (v *CrossFieldValidator) ValidateProdRequirements(config *Config) error {
        if config.Environment == "production" && config.Service.Replicas < 3 {
            return fmt.Errorf("production requires at least 3 replicas")
        }
        return nil
    }

  ✅ Unit Test: TestConfigValidateCrossFieldConstraints
  ✅ Unit Test: TestConfigProdReplicas
  Coverage: schema.go:140-160 (cross-field rules)

REQ 1.1a.7 (Required fields)

  File: engine/internal/config/schema.go
  Type: Validator.checkRequired() method
  Code:
    func (v *Validator) checkRequired(config *Config) error {
        required := []string{"service.name", "database.host", "cache.host"}
        for _, field := range required {
            if config.GetString(field) == "" {
                return fmt.Errorf("required field missing: %s", field)
            }
        }
        return nil
    }

  ✅ Unit Test: TestConfigValidateRequiredFields
  ✅ Unit Test: TestConfigMissingServiceName
  Coverage: schema.go:165-180 (required field checks)

REQ 1.1a.8 (DI wiring)

  File: engine/cmd/api/main.go
  Type: Dependency injection in main function
  Code:
    func main() {
        cfg, _ := configMgr.Load(ctx)
        container := fx.New(
            fx.Provide(func() *Config { return cfg }),
            // Other providers...
        )
    }

  ✅ Unit Test: TestConfigInjectionIntoContainer
  ✅ Integration Test: TestConfigAccessFromService
  Coverage: main.go:15-30 (DI setup)

Test Coverage Summary for REQ 1.1a

Test IDTest NameFileTypeStatus
1.1a.T1TestConfigManagerLoadBaseFilemanager_test.goUnitPending
1.1a.T2TestConfigManagerLoadWithEnvOverridesmanager_test.goUnitPending
1.1a.T3TestConfigManagerLoadWithAllOverridesmanager_test.goUnitPending
1.1a.T4TestConfigManagerPriorityOrdermanager_test.goUnitPending
1.1a.T5TestConfigValidateSchemaschema_test.goUnitPending
1.1a.T6TestConfigValidateRequiredFieldsschema_test.goUnitPending
1.1a.T7TestConfigEnvVarSubstitutionmanager_test.goUnitPending
1.1a.T8TestConfigMissingEnvVarmanager_test.goUnitPending
1.1a.T9TestConfigGetStringschema_test.goUnitPending
1.1a.T10TestConfigGetIntschema_test.goUnitPending
1.1a.T11TestConfigTypeMismatchschema_test.goUnitPending
1.1a.T12TestConfigCrossFieldConstraintsschema_test.goUnitPending
1.1a.T13TestConfigProdReplicasschema_test.goUnitPending
1.1a.T14TestConfigInvalidYAMLmanager_test.goUnitPending
1.1a.T15TestConfigMissingFilemanager_test.goUnitPending
1.1a.I1TestConfigLoadsInFullStackconfig_integration_test.goIntegrationPending
1.1a.I2TestConfigEnvironmentPromotionconfig_integration_test.goIntegrationPending
1.1a.I3TestConfigSecretInjectionconfig_integration_test.goIntegrationPending
1.1a.I4TestConfigInjectionIntoDIconfig_integration_test.goIntegrationPending
Total Tests for 1.1a: 18 tests (15 unit + 3 integration) Expected Coverage: 100% of config module

REQ 1.2a: Environment Abstraction Layer

Requirement Breakdown

Req IDRequirementTypeStatus
1.2a.1Deployer interface abstracts infrastructureArchitecturalPending
1.2a.2LocalDockerDeployer generates docker-composeFunctionalPending
1.2a.3KubernetesDeployer generates K8s YAMLFunctionalPending
1.2a.4Deploy method applies manifestsFunctionalPending
1.2a.5Scale method adjusts replicasFunctionalPending
1.2a.6Health method checks service statusFunctionalPending
1.2a.7Logs method retrieves service logsFunctionalPending
1.2a.8Rollback method reverts deploymentFunctionalPending

Implementation Mapping

REQ 1.2a.1 (Deployer interface)

  File: engine/pkg/deploy/deployer.go
  Type: Deployer interface definition
  Code:
    type Deployer interface {
        Deploy(ctx context.Context, manifest *Manifest) error
        Scale(ctx context.Context, service string, replicas int) error
        Health(ctx context.Context, service string) (*HealthStatus, error)
        Logs(ctx context.Context, service string, opts *LogOptions) (io.Reader, error)
        Rollback(ctx context.Context, version string) error
        Destroy(ctx context.Context) error
    }

  ✅ Unit Test: TestDeployerInterfaceComplete
  Coverage: deployer.go:5-25

REQ 1.2a.2 (LocalDockerDeployer)

  File: engine/pkg/deploy/implementations/local.go
  Type: LocalDockerDeployer struct
  Code:
    type LocalDockerDeployer struct {
        composeFile string
        projectName string
    }

    func (d *LocalDockerDeployer) Deploy(ctx context.Context, manifest *Manifest) error {
        // Generate docker-compose.yml from manifest
        // Run: docker-compose -f compose.yml up -d
    }

  ✅ Unit Test: TestLocalDockerDeployerDeploy
  ✅ Unit Test: TestLocalDockerDeployerGeneratesCompose
  Coverage: local.go:10-80

[Additional mappings follow similar pattern...]

Test Coverage Summary for REQ 1.2a

Total Tests for 1.2a: 15 tests (12 unit + 3 integration)

REQ 1.3a: Unified Deployment Manifests

Test Coverage Summary for REQ 1.3a

Total Tests for 1.3a: 12 tests (9 unit + 3 integration)

REQ 2.1a: Observability as Core Framework Feature

Requirement Breakdown

Req IDRequirementTypeStatus
2.1a.1Observability middleware auto-instrumentsFunctionalPending
2.1a.2Correlation IDs propagated in requestsFunctionalPending
2.1a.3Metrics emitted for all operationsFunctionalPending
2.1a.4Tracing spans created for requestsFunctionalPending
2.1a.5Logs include correlation IDFunctionalPending
2.1a.6Error stack traces capturedFunctionalPending
2.1a.7Performance profiling sampledFunctionalPending
2.1a.8No manual instrumentation neededArchitecturalPending

Test Coverage Summary for REQ 2.1a

Total Tests for 2.1a: 22 tests (17 unit + 5 integration)

REQ 2.2a: Storm Integration Layer

Test Coverage Summary for REQ 2.2a

Total Tests for 2.2a: 13 tests (10 unit + 3 integration)

REQ 3.1a: Standardized Subsystem Communication

Test Coverage Summary for REQ 3.1a

Total Tests for 3.1a: 18 tests (14 unit + 4 integration)

REQ 3.2a: Unified Test Framework

Test Coverage Summary for REQ 3.2a

Total Tests for 3.2a: 22 tests (16 unit + 6 integration)

REQ 3.3a: Dev Watch Mode with Hot-Reload

Test Coverage Summary for REQ 3.3a

Total Tests for 3.3a: 8 tests (5 unit + 3 integration)

📊 Complete Traceability Summary

By Recommendation

RecommendationFiles to CreateUnit TestsIntegration TestsTotal TestsCoverage Target
1.1a Config315318100%
1.2a Deploy Interface512315100%
1.3a Manifests39312100%
2.1a Observability617522100%
2.2a Storm310313100%
3.1a Subsystem Comms514418100%
3.2a Test Framework416622100%
3.3a Dev Watch3538100%
TOTAL32 files108 tests30 tests138 tests100% coverage

By File Type

Configuration Files:      8 YAML files
Go Source Files:         32 .go files (core implementation)
Go Test Files:           16 _test.go files (unit tests)
Integration Test Files:   4 files (integration tests)
Shell Scripts:            2 shell files (e.g., dev-watch.sh)
Documentation:            6 markdown files

Total: 68 artifacts created/modified

By Taskset

TasksetRecommendationsTestsFiles
11.1a185
21.2a, 1.3a278
32.1a, 2.2a359
43.1a, 3.2a409
53.3a83
6Full Coverage30+Integration

✅ Coverage Verification Checklist

For each requirement, verify:
  • Code exists - Implementation file created
  • Function exists - Method/function implemented
  • Tests exist - At least 1 unit test
  • Integration tests exist - At least 1 integration test
  • 100% coverage - Code coverage metric shows 100%
  • Documentation - Function documented with purpose
  • Error handling - Error cases tested
  • Edge cases - Boundary conditions tested

📝 Requirement Traceability Template

For each requirement during implementation:
REQ ID: 1.1a.1
Title: Single source-of-truth per environment
Status: ✅ COMPLETE / ⏳ IN_PROGRESS / ❌ NOT_STARTED

Implementation:
  File: engine/internal/config/manager.go
  Function: Load()
  Lines: 45-75

Unit Tests:
  ✅ TestConfigManagerLoadBaseFile (manager_test.go:12)
  ✅ TestConfigManagerEnvOverrides (manager_test.go:28)

Integration Tests:
  ✅ TestConfigEnvironmentPromotion (config_integration_test.go:15)

Code Coverage:
  Current: 100%
  Lines covered: 31/31
  Branches covered: 8/8

Verification:
  ✅ Configuration loads
  ✅ Hierarchy applied
  ✅ All test cases pass
  ✅ No warnings/skips

🎯 Success Criteria

For the Implementation Strategy Itself

  • All 8 recommendations traced to specific code locations
  • Each recommendation has 5+ test cases
  • All test cases pass with 100% coverage
  • Cross-service patterns documented
  • Traceability matrix complete and verified

For Each Taskset Execution

  • All files created with expected structure
  • All tests pass (no failures, skips, or warnings)
  • Code coverage 100% for that module
  • Traceability matrix updated (requirements → code)
  • Acceptance criteria all satisfied
  • Documentation complete

📞 How to Use This Matrix

During Implementation:
  1. For each requirement, check the “Implementation Mapping” section
  2. Create the specified files
  3. Implement the specified methods
  4. Run the test cases listed
  5. Verify 100% coverage
During Verification:
  1. Run all tests in the Test Coverage Summary table
  2. Verify each test passes
  3. Check code coverage is 100%
  4. Mark requirement as COMPLETE
For Traceability:
  1. Each requirement ID maps to specific code
  2. Each code location maps to specific tests
  3. Each test verifies specific requirement
  4. 1:1 mapping between requirements and tests

🚀 Ready to Execute

This matrix provides complete traceability for:
  • ✅ 8 recommendations
  • ✅ 32+ files to create
  • ✅ 138+ test cases
  • ✅ 100% code coverage target
  • ✅ Cross-repository patterns
Awaiting your confirmation to begin TASKSET 1.