ontoref-code/domains/rustelo/domain.ncl
2026-07-18 00:57:58 +01:00

50 lines
3 KiB
Text

let s = import "../schema.ncl" in
# Rustelo domain — full-stack Rust framework (Leptos + Axum).
# Authority: rustelo project. Schemas queried via schema_cmd.
# Consumers declare .rustelo.ontoref/ for their implementation.
s.Domain & {
id = "rustelo",
name = "Rustelo Framework",
repo_kinds = ["RusteloApp"],
description = "Full-stack Rust framework based on Leptos and Axum. Provides schemas for app layers, WASM targets, plugin system, and routing contracts.",
short_alias = "rs",
# NCL schemas live in the rustelo project — not in ontoref.
# Resolves to the rustelo project root via the global registry so consumers
# import as: import "%{schema_root}/domains/rustelo/ontology/schema.ncl".
schema_cmd = "ontoref project root rustelo",
commands = [
{ id = "layers", description = "List application layers declared in catalog" },
{ id = "plugins", description = "Plugin registry: registered, active, interface contracts" },
# Declared from the start and answering `not yet implemented` for its entire life — the
# project's own pathogen on its own domain surface: a capability announced on a queryable
# protocol surface, doing nothing, with nothing noticing. Now it is the WITNESS across the
# three levels a rustelo page spans, and each seam it checks is one that fails SILENTLY:
#
# route → page_id → FTL a route with no FTL keys does NOT 404. `static.j2` renders
# `texts[page_id ~ "-page-title"] | default(page_id)`, so the page
# comes back 200 with its own id as the title. Seven of them are
# live. A broken page that returns 200 is worse than a 404: nothing
# alerts, and no log records it.
# content → route `content/pages/**` is NOT a content-kind and NO Rust code reads
# it. A .md there is dead by construction — and it looks like the
# obvious place to edit. The privacy policy lives in BOTH the FTL
# (served) and the markdown (dead), and nothing checks they agree.
# A legal document, declared twice, no witness.
{ id = "routes",
description = "Route manifest, and the witness across the three levels: routes (framework/build) → page_id → FTL text (instance), plus orphan markdown in the content tree",
usage = "ore rustelo routes [--check]",
examples = [
"ore rustelo routes # report the manifest and every seam",
"ore rustelo routes --check # exit 1 on a broken seam (CI gate)",
] },
{ id = "wasm", description = "WASM build targets and feature flags" },
{ id = "publish-contract", description = "Content-publisher consumption contract: the 6 answers + their oracles, declared once on the producer" },
{ id = "probe", description = "Run the end-to-end publish->activate->index oracle in this RusteloApp (ADR-056 witnessed verification)" },
],
pages = [],
}