98 lines
3.9 KiB
Text
98 lines
3.9 KiB
Text
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)
|