2026-03-13 00:21:04 +00:00
# Form: Onboard an existing project into the ontoref protocol
# Drives reflection/modes/adopt_ontoref.ncl with concrete parameter values.
#
# Usage:
# nickel export reflection/forms/adopt_ontoref.ncl
# # Fill in values, then run the generated adopt_ontoref.nu script.
#
# Agent query:
# nickel export reflection/forms/adopt_ontoref.ncl \
# | get elements \
# | where type != "section_header" \
# | where type != "section" \
# | select name prompt required default
{
name = "Adopt Ontoref",
description = "Onboard an existing project into the ontoref protocol. Adds .ontoref/, .ontology/ stubs, and scripts/ontoref wrapper without overwriting existing files.",
elements = [
# ── Identity ─────────────────────────────────────────────────────────────
{ type = "section_header", name = "identity_header",
title = "Project Identity", border_top = true, border_bottom = true },
{ type = "text", name = "project_name",
prompt = "Project name (identifier)",
required = true,
placeholder = "my-service",
help = "Lowercase, kebab-case. Used in .ontology/ node IDs and NATS subject prefix." },
{ type = "text", name = "project_dir",
prompt = "Absolute path to the existing project",
required = true,
placeholder = "/Users/Akasha/Development/my-service",
help = "The directory must exist. Ontoref only adds files — never overwrites." },
# ── Ontoref location ─────────────────────────────────────────────────────
{ type = "section_header", name = "ontoref_header",
title = "Ontoref Location", border_top = true, border_bottom = true },
{ type = "text", name = "ontoref_dir",
prompt = "Absolute path to ontoref checkout",
required = true,
default = "/Users/Akasha/Development/ontoref",
help = "Used to source templates (ontology stubs, config template, scripts wrapper)." },
# ── What to install ──────────────────────────────────────────────────────
{ type = "section_header", name = "install_header",
title = "What to Install", border_top = true, border_bottom = true },
{ type = "section", name = "install_note",
content = "All steps are additive and idempotent. Existing files are never overwritten." },
{ type = "confirm", name = "install_config",
prompt = "Create .ontoref/config.ncl (per-project ontoref config)?",
default = true,
help = "Templated from ontoref/templates/ontoref-config.ncl. Controls log, mode_run rules, NATS events." },
{ type = "confirm", name = "install_ontology_stubs",
prompt = "Create .ontology/ stubs (core.ncl, state.ncl, gate.ncl)?",
default = true,
help = "Stub files are minimal — project owner fills in project-specific content. Skipped if files exist." },
{ type = "confirm", name = "install_scripts_wrapper",
prompt = "Install scripts/ontoref thin wrapper?",
default = true,
help = "Thin bash wrapper that sets ONTOREF_ROOT and ONTOREF_PROJECT_ROOT, then delegates to ontoref entry point." },
feat: workflow layer model — NCL-first CI/build/distribution generator
Adds a declarative workflow system where .ontology/workflow.ncl declares
independent layers (commit-fast, ci-standard, ci-exhaustive), each with a
trigger and a set of providers. The generator materialises Woodpecker YAML,
justfile recipes, and pre-commit hook stubs from that single declaration.
Layers form a set, not a chain — no layer depends on another at the
declaration level. Woodpecker steps express fine-grained parallelism
internally (lint → test/docs/build).
Schema and catalog:
- reflection/schemas/workflow.ncl — types, contracts, provider constructors
- reflection/defaults/workflow.ncl — standard Rust/Nushell/Nickel catalog
(14 validations, 4 builds)
Generator (ore workflow generate):
- PreCommit: prints hook fragments for manual merge into .pre-commit-config.yaml
- Woodpecker: writes per-layer YAML with image selection, tool installs,
depends_on chains, and CI-aware command translation
(nu --ide-check → find+xargs; markdownlint-cli2 → node:lts image)
- Justfile: single justfiles/workflow.just aggregated from all Justfile layers
(hoisted out of per-provider loop — was writing N times, now once)
Dispatcher: ore workflow validate|list|generate|diff + ore wf v|l|gen|diff
Cargo/nextest profiles:
- .cargo/config.toml: [profile.ci-test] (debug=0, no-incremental) and
[profile.ci] (line-tables-only) — shared by test + docs hooks to reuse
.rlib artifacts; CI retains actionable backtraces
- .config/nextest.toml: ci-test (fail-fast, no retries) and ci (all failures,
one retry)
Pre-commit: nextest run with --profile ci-test --cargo-profile ci-test;
docs-links hook shares same profile to reuse artifacts
Self-application: ontoref declares its own workflow in .ontology/workflow.ncl
and the generated .woodpecker/ files are the authoritative CI definition
Migration 0014: checks workflow.ncl + both cargo and nextest profiles present
Adoption: reflection/templates/ontology/workflow.ncl stub + install_workflow
confirm in adopt_ontoref form + step 5 in adoption script template
2026-04-08 14:20:38 +01:00
{ type = "confirm", name = "install_workflow",
prompt = "Create .ontology/workflow.ncl (CI/build/distribution layer declaration)?",
default = true,
help = "Declares independent workflow layers (commit-fast, ci-standard, ci-exhaustive). After adoption, run: ore workflow generate" },
2026-03-13 00:21:04 +00:00
# ── Validation ───────────────────────────────────────────────────────────
{ type = "section_header", name = "validation_header",
title = "Validation", border_top = true, border_bottom = true },
{ type = "confirm", name = "validate_after",
prompt = "Run nickel export on .ontology/ files after installation?",
default = true,
help = "Verifies the stub files parse correctly with nickel." },
# ── Review ───────────────────────────────────────────────────────────────
{ type = "section_header", name = "review_header",
title = "Review", border_top = true },
{ type = "section", name = "review_note",
feat: workflow layer model — NCL-first CI/build/distribution generator
Adds a declarative workflow system where .ontology/workflow.ncl declares
independent layers (commit-fast, ci-standard, ci-exhaustive), each with a
trigger and a set of providers. The generator materialises Woodpecker YAML,
justfile recipes, and pre-commit hook stubs from that single declaration.
Layers form a set, not a chain — no layer depends on another at the
declaration level. Woodpecker steps express fine-grained parallelism
internally (lint → test/docs/build).
Schema and catalog:
- reflection/schemas/workflow.ncl — types, contracts, provider constructors
- reflection/defaults/workflow.ncl — standard Rust/Nushell/Nickel catalog
(14 validations, 4 builds)
Generator (ore workflow generate):
- PreCommit: prints hook fragments for manual merge into .pre-commit-config.yaml
- Woodpecker: writes per-layer YAML with image selection, tool installs,
depends_on chains, and CI-aware command translation
(nu --ide-check → find+xargs; markdownlint-cli2 → node:lts image)
- Justfile: single justfiles/workflow.just aggregated from all Justfile layers
(hoisted out of per-provider loop — was writing N times, now once)
Dispatcher: ore workflow validate|list|generate|diff + ore wf v|l|gen|diff
Cargo/nextest profiles:
- .cargo/config.toml: [profile.ci-test] (debug=0, no-incremental) and
[profile.ci] (line-tables-only) — shared by test + docs hooks to reuse
.rlib artifacts; CI retains actionable backtraces
- .config/nextest.toml: ci-test (fail-fast, no retries) and ci (all failures,
one retry)
Pre-commit: nextest run with --profile ci-test --cargo-profile ci-test;
docs-links hook shares same profile to reuse artifacts
Self-application: ontoref declares its own workflow in .ontology/workflow.ncl
and the generated .woodpecker/ files are the authoritative CI definition
Migration 0014: checks workflow.ncl + both cargo and nextest profiles present
Adoption: reflection/templates/ontology/workflow.ncl stub + install_workflow
confirm in adopt_ontoref form + step 5 in adoption script template
2026-04-08 14:20:38 +01:00
content = "The generated script will:\n 1. mkdir -p .ontoref/logs .ontoref/locks (idempotent)\n 2. Copy .ontoref/config.ncl from template (if not present)\n 3. Copy .ontology/{core,state,gate}.ncl stubs (if not present)\n 4. Install scripts/ontoref wrapper (if not present)\n 5. Copy .ontology/workflow.ncl stub (if install_workflow and not present)\n 6. Run nickel export on .ontology/ files to validate\n\nFiles already present are NOT overwritten." },
2026-03-13 00:21:04 +00:00
{ type = "confirm", name = "ready_to_generate",
prompt = "Generate the adopt script?",
default = true },
],
}