119 lines
3.9 KiB
JSON
119 lines
3.9 KiB
JSON
{
|
|
"guards": [],
|
|
"id": "provisioning-coverage",
|
|
"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"
|
|
],
|
|
"preconditions": [
|
|
"extensions/ directory exists",
|
|
"nickel is available in PATH",
|
|
"./scripts/ontoref is executable"
|
|
],
|
|
"steps": [
|
|
{
|
|
"action": "catalog_all_providers",
|
|
"actor": "Agent",
|
|
"cmd": "ls extensions/providers/ 2>/dev/null | sort",
|
|
"depends_on": [],
|
|
"id": "list_providers",
|
|
"note": "List all provider extension directories.",
|
|
"on_error": {
|
|
"backoff_s": 5,
|
|
"max": 3,
|
|
"strategy": "Continue"
|
|
}
|
|
},
|
|
{
|
|
"action": "catalog_all_taskservs",
|
|
"actor": "Agent",
|
|
"cmd": "ls extensions/taskservs/ 2>/dev/null | sort",
|
|
"depends_on": [],
|
|
"id": "list_taskservs",
|
|
"note": "List all taskserv extension directories.",
|
|
"on_error": {
|
|
"backoff_s": 5,
|
|
"max": 3,
|
|
"strategy": "Continue"
|
|
}
|
|
},
|
|
{
|
|
"action": "verify_provider_interface_completeness",
|
|
"actor": "Agent",
|
|
"cmd": "for p in extensions/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": [
|
|
{
|
|
"kind": "OnSuccess",
|
|
"step": "list_providers"
|
|
}
|
|
],
|
|
"id": "check_provider_functions",
|
|
"note": "For each provider, count implemented public functions. Target: 25 functions per the provider interface contract.",
|
|
"on_error": {
|
|
"backoff_s": 5,
|
|
"max": 3,
|
|
"strategy": "Continue"
|
|
}
|
|
},
|
|
{
|
|
"action": "verify_taskserv_contracts",
|
|
"actor": "Agent",
|
|
"cmd": "for ts in extensions/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": [
|
|
{
|
|
"kind": "OnSuccess",
|
|
"step": "list_taskservs"
|
|
}
|
|
],
|
|
"id": "check_taskserv_metadata",
|
|
"note": "For each taskserv, verify it has metadata.ncl and contracts.ncl. Missing files indicate incomplete extension.",
|
|
"on_error": {
|
|
"backoff_s": 5,
|
|
"max": 3,
|
|
"strategy": "Continue"
|
|
}
|
|
},
|
|
{
|
|
"action": "typecheck_taskserv_metadata",
|
|
"actor": "Agent",
|
|
"cmd": "find extensions/taskservs -name 'metadata.ncl' | xargs -I{} sh -c 'nickel typecheck {} > /dev/null 2>&1 && echo \"OK: {}\" || echo \"INVALID: {}\"'",
|
|
"depends_on": [
|
|
{
|
|
"kind": "Always",
|
|
"step": "check_taskserv_metadata"
|
|
}
|
|
],
|
|
"id": "check_taskserv_nickel_validity",
|
|
"note": "Typecheck all taskserv metadata.ncl files. Invalid metadata cannot be used by the platform.",
|
|
"on_error": {
|
|
"backoff_s": 5,
|
|
"max": 3,
|
|
"strategy": "Continue"
|
|
}
|
|
},
|
|
{
|
|
"action": "write_coverage_output",
|
|
"actor": "Agent",
|
|
"cmd": "./scripts/ontoref describe provisioning --format coverage",
|
|
"depends_on": [
|
|
{
|
|
"kind": "Always",
|
|
"step": "check_provider_functions"
|
|
},
|
|
{
|
|
"kind": "Always",
|
|
"step": "check_taskserv_nickel_validity"
|
|
}
|
|
],
|
|
"id": "generate_coverage_report",
|
|
"note": "Generate the maturity map: provider coverage (N/25 functions), taskserv completeness, overall ecosystem coverage score.",
|
|
"on_error": {
|
|
"backoff_s": 5,
|
|
"max": 3,
|
|
"strategy": "Stop"
|
|
}
|
|
}
|
|
],
|
|
"trigger": "Generate a maturity map of the provisioning extension ecosystem"
|
|
}
|