provisioning/reflection/modes/provisioning-coverage.ncl

99 lines
3.9 KiB
Text
Raw Permalink Normal View History

2026-05-12 02:40:14 +01:00
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)