50 lines
3 KiB
Text
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 = [],
|
|
}
|