let s = import "reflection/schema.ncl" in # Mode: provisioning-coverage # Maps the maturity of the provisioning extension ecosystem: # - Providers: how many of 25 required functions are implemented per provider # - Taskservs: which have metadata.ncl + contracts, which are incomplete # - Overall coverage score as a maturity map { id = "provisioning-coverage", trigger = "Generate a maturity map of the provisioning extension ecosystem", strategy = 'Override, preconditions = [ "catalog/ directory exists", "nickel is available in PATH", "./scripts/ontoref is executable", ], steps = [ { id = "list_providers", action = "catalog_all_providers", actor = 'Agent, cmd = "ls catalog/providers/ 2>/dev/null | sort", depends_on = [], on_error = { strategy = 'Continue }, note = "List all provider extension directories.", }, { id = "list_taskservs", action = "catalog_all_taskservs", actor = 'Agent, cmd = "ls catalog/taskservs/ 2>/dev/null | sort", depends_on = [], on_error = { strategy = 'Continue }, note = "List all taskserv extension directories.", }, { id = "check_provider_functions", action = "verify_provider_interface_completeness", actor = 'Agent, cmd = "for p in catalog/providers/*/; do echo \"--- $(basename $p)\"; rg 'fn ' $p --include='*.rs' -l | head -1 | xargs rg 'pub fn' 2>/dev/null | wc -l | xargs echo 'functions:'; done", depends_on = [ { step = "list_providers", kind = 'OnSuccess }, ], on_error = { strategy = 'Continue }, note = "For each provider, count implemented public functions. Target: 25 functions per the provider interface contract.", }, { id = "check_taskserv_metadata", action = "verify_taskserv_contracts", actor = 'Agent, cmd = "for ts in catalog/taskservs/*/; do name=$(basename $ts); has_meta=$(test -f $ts/metadata.ncl && echo yes || echo NO); has_contracts=$(test -f $ts/contracts.ncl && echo yes || echo NO); echo \"$name: metadata=$has_meta contracts=$has_contracts\"; done", depends_on = [ { step = "list_taskservs", kind = 'OnSuccess }, ], on_error = { strategy = 'Continue }, note = "For each taskserv, verify it has metadata.ncl and contracts.ncl. Missing files indicate incomplete extension.", }, { id = "check_taskserv_nickel_validity", action = "typecheck_taskserv_metadata", actor = 'Agent, cmd = "find catalog/taskservs -name 'metadata.ncl' | xargs -I{} sh -c 'nickel typecheck {} > /dev/null 2>&1 && echo \"OK: {}\" || echo \"INVALID: {}\"'", depends_on = [ { step = "check_taskserv_metadata", kind = 'Always }, ], on_error = { strategy = 'Continue }, note = "Typecheck all taskserv metadata.ncl files. Invalid metadata cannot be used by the platform.", }, { id = "generate_coverage_report", action = "write_coverage_output", actor = 'Agent, cmd = "./scripts/ontoref describe provisioning --format coverage", depends_on = [ { step = "check_provider_functions", kind = 'Always }, { step = "check_taskserv_nickel_validity", kind = 'Always }, ], on_error = { strategy = 'Stop }, note = "Generate the maturity map: provider coverage (N/25 functions), taskserv completeness, overall ecosystem coverage score.", }, ], postconditions = [ "Provider function coverage counted per provider (target: 25 functions each)", "Taskserv completeness checked (metadata.ncl + contracts.ncl presence and validity)", "Coverage report generated with maturity score per extension and ecosystem totals", ], } | (s.Mode String)