Skip to main content

Verification Traceability Matrix (Current Baseline)

A. Core Config / Nests

Req IDRequirement / BehaviorVerification MethodTest / ArtifactStatus
CFG-1Default config is valid, workspace_root set, sync/assembly fields parseUnit load+validatepkg.LoadConfig used in multiple tests (e.g. TestNestOlly_DefaultConfig_ServicesGraph)Covered (indirect)
CFG-2GetDefaultConfigPath prefers nests layout (nests/olly.yaml)Code path execution (manual + tests)internal/pkg/config.go::GetDefaultConfigPath, used in CLI / engine, sanity checked via nest tests path setupPartially covered (behavior validated via usage, not directly asserted anymore)
NEST-1nests/olly.yaml services and deps are correct (uuid-lib → none, is-libuuid-lib)Config-level integration testengine/tests/nest_olly_integration_test.go::TestNestOlly_DefaultConfig_ServicesGraphCovered
NEST-2nests/olly.yaml yields correct project graph (topological order: uuid-lib, is-lib)Config-level integration testSame as NEST-1 (graph check)Covered
NEST-3Engine can consume nests/olly.yaml via core.Engine.LoadProject and build correct projectEngine-level integration testengine/tests/engine_nest_olly_integration_test.go::TestEngine_NestOlly_LoadProjectCovered

B. Project Model & Orchestration

Req IDRequirement / BehaviorVerification MethodTest / ArtifactStatus
PROJ-1Project.ScanRepositories normalizes relative paths with WorkspaceRoot and is deterministicUnit testsinternal/project/project_test.go::TestScanRepositories_*Covered
PROJ-2Project.RunAcrossServices is deterministic in unordered mode (sorted by name)Unit + integration testsinternal/project/project_test.go::TestRunAcrossServices_UnorderedDeterministic, engine/tests/engine_project_integration_test.go::TestEngineAndProject_Integration_RunAcrossServicesCovered
PROJ-3Project.RunAcrossServices honors dependency ordering when ordered=trueUnit + integration testsproject_test.go::TestRunAcrossServices_OrderedByDependencies, engine_project_integration_test.go::TestEngineAndProject_Integration_OrderedByDependenciesCovered
PROJ-4Project.RunAcrossServices supports filters and error propagationUnit testsproject_test.go::TestRunAcrossServices_FilterBehavior, ..._ErrorPropagationCovered
PROJ-5Dependency graph TopologicalOrder yields stable order & detects cyclesUnit + usage in integrationsinternal/project/model.go tests (topo tests if present) + all tests above that rely on order; assembler and nest tests indirectly exercise thisMostly covered (strong via usage)

C. Core Engine Surface

Req IDRequirement / BehaviorVerification MethodTest / ArtifactStatus
ENG-1core.Engine.RunAcrossServices validates inputs and delegates correctlyUnit testsinternal/core/engine_test.go::TestEngineRunAcrossServices_*Covered
ENG-2core.Engine.RunAcrossServices preserves deterministic behavior from project layerIntegration testsengine/tests/engine_project_integration_test.go::*Covered
ENG-3core.Engine.LoadProject can construct a project from config and expose services graphEngine-level integrationengine/tests/engine_nest_olly_integration_test.go::TestEngine_NestOlly_LoadProjectCovered
ENG-4core.Engine.Assemble and core.Engine.Sync are reachable from CLI and accept optionsCLI smoke + code inspectionengine/cli_main_test.go::TestAssembleCommand_NoConfig, TestSyncCommand_NoConfig (wiring & error surface)Wiring covered, end-to-end assemble/sync behavior not yet verified via engine-only tests

D. Assembler (Option B)

Req IDRequirement / BehaviorVerification MethodTest / ArtifactStatus
ASM-1Assembler.calculateBuildOrder respects service dependency DAGUnit testinternal/assembler/assembler_test.go::TestCalculateBuildOrder_RespectsDependenciesCovered
ASM-2Assembler.calculateBuildOrder detects cyclesUnit testassembler_test.go::TestCalculateBuildOrder_DetectsCycleCovered
ASM-3Full AssembleWorkspace behavior over repos and buildsNot yet coveredNo direct integration test yetNot covered (by design for now)

E. Sync Engine (Option B)

Req IDRequirement / BehaviorVerification MethodTest / ArtifactStatus
SYNC-1Pattern matching picks included files and excludes correctlyUnit testinternal/sync/engine_test.go::TestMatchesSyncAndExcludePatternsCovered
SYNC-2discoverSyncCandidates walks a tree, applies patterns/excludes deterministicallyUnit test with temp direngine_test.go::TestDiscoverSyncCandidates_SmallTreeCovered
SYNC-3SynchronizeWorkspace dry-run mode computes ops and reports success without side effectsIntegration test with temp direngine_test.go::TestSynchronizeWorkspace_DryRun_SmallTreeCovered
SYNC-4Non-dry-run sync actually mutates filesystemNot yet coveredNo current testNot covered (intentionally kept out of fast deterministic suite)

F. CLI / UX (Option C)

Req IDRequirement / BehaviorVerification MethodTest / ArtifactStatus
CLI-1olly assemble routes via core.Engine.Assemble and propagates config path / log levelCode inspection + smoke test (error path)engine/main.go::newAssembleCommand, cli_main_test.go::TestAssembleCommand_NoConfigWiring covered, happy-path not covered
CLI-2olly sync routes via core.Engine.Sync and preserves summary outputCode inspection + smoke test (error path)engine/main.go::newSyncCommand, cli_main_test.go::TestSyncCommand_NoConfigWiring + output path covered for error case
CLI-3project subcommands (info, services, graph) use core.Engine.LoadProjectCode inspection + existing behaviorengine/main.go::newProject*CommandCovered by design; no dedicated tests yet
CLI-4run services uses core.Engine.RunAcrossServicesCode inspectionengine/main.go::newRunServicesCommandWiring covered, not yet under test

G. Observability / Logging

Req IDRequirement / BehaviorVerification MethodTest / ArtifactStatus
OBS-1pkg.Logger can be constructed and used in sync engine pathsIntegration testsinternal/sync/engine_test.go tests construct real loggers; dry-run logs are emittedCovered (for sync paths)
OBS-2Higher-level observability (metrics/workflows) integrationSeparate existing testsengine/tests/observability_integration_test.go::*Covered (existing baseline)

Summary

  • Truth testing: nests/olly.yaml is now covered both at config level and engine level.
  • Core orchestration: Project + engine orchestration are well-covered by unit + integration tests.
  • Assembler/Sync: Key deterministic behaviors are covered; destructive/full operations are intentionally left for future, slower or opt-in tests.
  • CLI: Wiring through core.Engine is in place and smoke-tested for error paths; full happy-path E2Es are a future enhancement, not required for this baseline.