provisioning-code/.ncl-cache/290eb5271c0cd3daff5bc1647716b418a3e4c446ef0cd850a4f3dd0ebe56fe5f.json

120 lines
3.9 KiB
JSON

{
"guards": [],
"id": "provisioning-assess",
"postconditions": [
"Assessment report identifies infrastructure nodes from child project ontology",
"Report cross-references available providers and taskservs",
"Gaps between requirements and available extensions are listed"
],
"preconditions": [
"{child_project_dir}/.ontology/core.ncl exists and is valid Nickel",
"nickel is available in PATH",
"./scripts/ontoref is available and executable",
"provisioning platform catalog (catalog/providers/, catalog/taskservs/) is readable"
],
"steps": [
{
"action": "export_child_ontology",
"actor": "Agent",
"cmd": "nickel export {child_project_dir}/.ontology/core.ncl",
"depends_on": [],
"id": "read_child_core",
"note": "Export the child project's core ontology. Identifies nodes with infrastructure implications.",
"on_error": {
"backoff_s": 5,
"max": 3,
"strategy": "Stop"
}
},
{
"action": "catalog_providers",
"actor": "Agent",
"cmd": "ls catalog/providers/ 2>/dev/null || echo 'no-providers'",
"depends_on": [],
"id": "list_available_providers",
"note": "List available provider extensions. Used to cross-reference child requirements.",
"on_error": {
"backoff_s": 5,
"max": 3,
"strategy": "Continue"
}
},
{
"action": "catalog_taskservs",
"actor": "Agent",
"cmd": "ls catalog/taskservs/ 2>/dev/null || echo 'no-taskservs'",
"depends_on": [],
"id": "list_available_taskservs",
"note": "List available taskservs. Used to cross-reference child requirements.",
"on_error": {
"backoff_s": 5,
"max": 3,
"strategy": "Continue"
}
},
{
"action": "filter_infra_relevant_nodes",
"actor": "Agent",
"cmd": "nickel export {child_project_dir}/.ontology/core.ncl | jq '[.nodes[] | select(.level == \"Project\" or .level == \"Axiom\")]'",
"depends_on": [
{
"kind": "OnSuccess",
"step": "read_child_core"
}
],
"id": "identify_infra_nodes",
"note": "Filter nodes that imply infrastructure requirements — Project and Axiom level nodes typically require provisioning.",
"on_error": {
"backoff_s": 5,
"max": 3,
"strategy": "Stop"
}
},
{
"action": "match_requirements_to_providers",
"actor": "Agent",
"cmd": "nickel export {child_project_dir}/.ontology/core.ncl | jq -r '.nodes[] | select(.level == \"Project\") | .id' | while read id; do echo \"$id: check catalog/providers/$id 2>/dev/null || echo 'no match'\"; done",
"depends_on": [
{
"kind": "OnSuccess",
"step": "identify_infra_nodes"
},
{
"kind": "Always",
"step": "list_available_providers"
}
],
"id": "cross_reference_providers",
"note": "Cross-reference identified infrastructure nodes with available providers.",
"on_error": {
"backoff_s": 5,
"max": 3,
"strategy": "Continue"
}
},
{
"action": "write_assessment_output",
"actor": "Agent",
"cmd": "./scripts/ontoref describe {child_project_name} --format assessment",
"depends_on": [
{
"kind": "Always",
"step": "cross_reference_providers"
},
{
"kind": "Always",
"step": "list_available_taskservs"
}
],
"id": "generate_assessment_report",
"note": "Generate the final assessment report: what the child project needs from provisioning, what is available, what gaps exist.",
"on_error": {
"backoff_s": 5,
"max": 3,
"strategy": "Stop"
}
}
],
"strategy": "Override",
"trigger": "Assess a project's infrastructure requirements against the provisioning platform"
}