let s = import "../schema.ncl" in # Mode: generate-examples # Executes all verifiable steps from reflection/modes/ in the target project. # The modes are the examples — this mode runs them to prove they work. # Used as the integration test suite replacing a static examples/ directory. { id = "generate-examples", trigger = "Run all verifiable mode steps as integration checks — modes are the canonical examples", preconditions = [ "nickel is available in PATH", "jq is available in PATH", "reflection/modes/*.ncl export without error", "Project binary (typedialog, ontoref, etc.) is installed and in PATH", "reflection/forms/ contains at least one .ncl file", ], steps = [ { id = "list-verifiable-steps", action = "Extract all steps with a non-empty verify field from all modes", actor = 'Agent, cmd = "for f in reflection/modes/*.ncl; do NICKEL_IMPORT_PATH=\"$(pwd)\" nickel export $f 2>/dev/null | jq -r '.steps[] | select(.verify != null and .verify != \"\") | .verify'; done", verify = "for f in reflection/modes/*.ncl; do NICKEL_IMPORT_PATH=\"$(pwd)\" nickel export $f 2>/dev/null && true; done", depends_on = [], on_error = { strategy = 'Stop }, }, { id = "run-verifiable-steps", action = "Execute each verify command; non-zero exit fails the check", actor = 'Agent, cmd = "for f in reflection/modes/*.ncl; do NICKEL_IMPORT_PATH=\"$(pwd)\" nickel export $f 2>/dev/null | jq -r '.steps[] | select(.verify != null and .verify != \"\") | .verify' | while read -r check; do echo \"CHECK: $check\"; eval \"$check\" || { echo \"FAILED: $check\"; exit 1; }; done; done", verify = "echo 'all verifiable steps passed'", depends_on = [{ step = "list-verifiable-steps", kind = 'OnSuccess }], on_error = { strategy = 'Stop }, }, { id = "run-form-typecheck", action = "Typecheck all forms in reflection/forms/", actor = 'Both, cmd = "for f in reflection/forms/*.ncl; do NICKEL_IMPORT_PATH=\"$(pwd)\" nickel typecheck $f || exit 1; done", verify = "for f in reflection/forms/*.ncl; do NICKEL_IMPORT_PATH=\"$(pwd)\" nickel typecheck $f; done", depends_on = [], on_error = { strategy = 'Stop }, }, ], postconditions = [ "All modes with verify commands pass", "All reflection/forms/*.ncl typecheck", "No regressions in verifiable behavior", ], } | s.Mode std.string.NonEmpty