ontoref-derive: #[onto_mcp_tool] attribute macro registers MCP tool unit-structs in
the catalog at link time via inventory::submit!; annotated item is emitted unchanged,
ToolBase/AsyncTool impls stay on the struct. All 34 tools migrated from manual wiring
(net +5: ontoref_list_projects, ontoref_search, ontoref_describe,
ontoref_list_ontology_extensions, ontoref_get_ontology_extension).
validate modes (ADR-018): reads level_hierarchy from workflow.ncl and checks every
.ncl mode for level declared, strategy declared, delegate chain coherent, compose
extends valid. mode resolve <id> shows which hierarchy level handles a mode and why.
--self-test generates synthetic fixtures in a temp dir for CI smoke-testing.
validate run-cargo: two-step Cargo.toml resolution — workspace layout first
(crates/<check.crate>/Cargo.toml), single-crate fallback by package name or repo
basename. Lets the same ADR constraint shape apply to workspace and single-crate repos.
ontology/schemas/manifest.ncl: registry_topology_type contract — multi-registry
coordination, push targets, participant scopes, per-namespace capability.
reflection/requirements/base.ncl: oras ≥1.2.0, cosign ≥2.0.0, sops ≥3.9.0, age
≥1.1.0, restic declared as Hard/Soft requirements with version_min, check_cmd, and
install_hint (ADR-017 toolchain surface).
ADR-019: per-file recipient routing for tenant isolation without multi-vault. Schema
additions: sops.recipient_groups + sops.recipient_rules in ontoref-project.ncl.
secrets-bootstrap generates .sops.yaml from project.ncl in declarative mode. Three
new secrets-audit checks: recipient-routing-coherent, recipient-routing-coverage,
no-multi-vault. Adoption templates: single-team/, multi-tenant/, agent-first/.
Integration templates: domain-producer/, mode-producer/, mode-consumer/.
UI: project_picker surfaces registry badge (⟳ participant) and vault badge
(⛁ vault_id · N, green=declarative / amber=legacy) per project card. Expanded panel
adds collapsible Registry section with namespace, endpoint, and push/pull capability.
manage.html gains Runtime Services card — MCP and GraphQL toggleable without restart
via HTMX POST /ui/manage/services/{service}/toggle.
describe.nu: capabilities JSON includes registry_topology and vault_state per project.
sync.nu: drift check extended to detect //! absence on newly registered crates.
qa.ncl: six entries — credential-vault-best-practice (layered data-flow diagram),
credential-vault-templates (paths A/B/C), credential-vault-troubleshooting (15 named
errors), integration-what-and-why (ADR-042 OCI federation), integration-how-to-implement,
integration-troubleshooting.
on+re: core.ncl + manifest.ncl updated to reflect OCI, MCP, and mode-hierarchy nodes.
Deleted stale presentation assets (2026-02 slides + voice notes).
|
||
|---|---|---|
| .. | ||
| components | ||
| docs | ||
| images | ||
| public | ||
| setup | ||
| slides | ||
| theme | ||
| .gitignore | ||
| .tmp-check-slidev-count.mjs | ||
| .tmp-critical-blocks.mjs | ||
| .tmp-regenerate-reader-docs.mjs | ||
| 00_talk-structure.md | ||
| 01_talk-structure.md | ||
| _slides.md | ||
| abstract_en.md | ||
| ajusta_texto.md | ||
| critical-phrases-blocks-30min.md | ||
| fix_slides.md | ||
| intro_slides.md | ||
| jj_rad.sh | ||
| jj_slides.md | ||
| key-moments-storytelling.md | ||
| last_slides.md | ||
| lian-build.md | ||
| ontology_slides.md | ||
| org_slides.md | ||
| package.json | ||
| QUICKSTART.md | ||
| reader-script-en-live-30min.md | ||
| reader-script-en-live.md | ||
| reader-script-en-pronunciation.md | ||
| reader-script-en-simple.md | ||
| reader-script-en.md | ||
| README.md | ||
| run.sh | ||
| rustikon.md | ||
| save_slides.md | ||
| slidev.config.ts | ||
| style.css | ||
| talk-structure.md | ||
| TO_CHANGE.md | ||
| work_group_info.md | ||
Rustikon 2026 Presentation
Why I Needed Rust, Finally: Infrastructure Automation I Can Sleep On
Presentation slides built with Slidev
Setup
Prerequisites
- Node.js 16+ (or Deno/Bun)
- npm or pnpm
Installation
cd rustikon-2026-slides
npm install
Development
Run the development server with hot reload:
npm run dev
Open http://localhost:3030 in your browser.
Build
Build slides for distribution:
npm run build
Output will be in dist/
Export
Export as PDF:
npm run export:pdf
Export as PNG (per slide):
npm run export:png
Structure
.
├── slides.md # All slides content
├── slidev.config.ts # Slidev configuration
├── theme/
│ └── dark-rust.css # Custom dark theme with Rust branding
├── public/ # Static assets (images, etc.)
└── package.json
Customization
Theme
The presentation uses a custom dark theme with Rust orange accents (#CE422B).
Edit theme/dark-rust.css to customize colors, fonts, or styles.
Content
All slide content is in slides.md. Follow Slidev markdown syntax.
Images
Place images in public/ directory and reference them in slides.md:

Presentation Notes
Speaker notes are included at the end of slides.md under each slide's frontmatter or in the notes section.
Press p during presentation to see presenter view with notes.
Keyboard Shortcuts
f— Fullscreenp— Presenter viewg— Go to slideo— Overviewj/k— Next/previous slideESC— Exit presentation
Deployment
To host on GitHub Pages:
- Build the slides:
npm run build - Push
dist/to your GitHub Pages branch
Or use Slidev's built-in deployment options.
Author
Jesús Pérez Lorenzo
Rustikon 2026