52 lines
2.2 KiB
Plaintext
52 lines
2.2 KiB
Plaintext
{
|
|
id = "0003",
|
|
slug = "manifest-self-interrogation",
|
|
description = "Populate capabilities[], requirements[], and critical_deps[] in manifest.ncl",
|
|
check = {
|
|
tag = "NuCmd",
|
|
cmd = "let f = $\"($env.ONTOREF_PROJECT_ROOT)/.ontology/manifest.ncl\"; if not ($f | path exists) { exit 1 }; let r = (do { ^nickel export --format json --import-path $env.NICKEL_IMPORT_PATH $f } | complete); if $r.exit_code != 0 { exit 1 }; let m = ($r.stdout | from json); if (($m.capabilities? | default [] | length) > 0) and (($m.requirements? | default [] | length) > 0) { exit 0 } else { exit 1 }",
|
|
expect_exit = 0,
|
|
},
|
|
instructions = "
|
|
Open .ontology/manifest.ncl and populate three arrays.
|
|
|
|
capabilities[] — what the project offers (2-6 entries, audience-facing):
|
|
m.make_capability {
|
|
id = \"kebab-id\",
|
|
name = \"Short Name\",
|
|
summary = \"One line: what this does.\",
|
|
rationale = \"Why it exists. What was rejected.\",
|
|
how = \"Key patterns, entry points, data flows.\",
|
|
artifacts = [\"crates/foo/\", \"GET /api/foo\"],
|
|
adrs = [], # ADR IDs that formalize decisions here
|
|
nodes = [], # node IDs from .ontology/core.ncl
|
|
}
|
|
|
|
requirements[] — prerequisites to run (one per tool/service/envvar):
|
|
m.make_requirement {
|
|
id = \"kebab-id\",
|
|
name = \"Human Name\",
|
|
env = 'Both, # 'Production | 'Development | 'Both
|
|
kind = 'Tool, # 'Tool | 'Service | 'EnvVar | 'Infrastructure
|
|
version = \"\",
|
|
required = true,
|
|
impact = \"What breaks if absent.\",
|
|
provision = \"How to install or set.\",
|
|
}
|
|
|
|
critical_deps[] — load-bearing external deps with documented blast radius:
|
|
m.make_critical_dep {
|
|
id = \"kebab-id\",
|
|
name = \"crate-or-service\",
|
|
ref = \"crates.io: foo\",
|
|
used_for = \"Which capabilities depend on this.\",
|
|
failure_impact = \"What breaks if this dep disappears.\",
|
|
mitigation = \"Feature flags, fallback builds, alternatives.\",
|
|
}
|
|
|
|
Verify:
|
|
nickel export --import-path \"$NICKEL_IMPORT_PATH\" .ontology/manifest.ncl \\
|
|
| jq '{capabilities: (.capabilities|length), requirements: (.requirements|length), critical_deps: (.critical_deps|length)}'
|
|
",
|
|
}
|