batuta/oracle/knowledge_graph/
integrations.rs1use super::super::types::IntegrationPattern;
4use super::types::KnowledgeGraph;
5
6impl KnowledgeGraph {
7 pub(crate) fn register_integration_patterns(&mut self) {
9 self.integrations.push(IntegrationPattern {
11 from: "aprender".into(),
12 to: "realizar".into(),
13 pattern_name: "model_export".into(),
14 description: "Export trained model for serving".into(),
15 code_template: Some(
16 r#"// Train with aprender
17let model = RandomForest::new().fit(&X, &y)?;
18// Export for realizar
19model.save_apr("model.apr")?;"#
20 .into(),
21 ),
22 });
23
24 self.integrations.push(IntegrationPattern {
25 from: "aprender".into(),
26 to: "trueno".into(),
27 pattern_name: "tensor_backend".into(),
28 description: "Use trueno as compute backend for aprender".into(),
29 code_template: None,
30 });
31
32 self.integrations.push(IntegrationPattern {
33 from: "entrenar".into(),
34 to: "realizar".into(),
35 pattern_name: "training_to_inference".into(),
36 description: "Export fine-tuned model for inference".into(),
37 code_template: None,
38 });
39
40 self.integrations.push(IntegrationPattern {
42 from: "depyler".into(),
43 to: "aprender".into(),
44 pattern_name: "sklearn_convert".into(),
45 description: "Convert sklearn code to aprender".into(),
46 code_template: Some(
47 r"// depyler converts:
48// from sklearn.ensemble import RandomForestClassifier
49// to:
50use aprender::tree::RandomForestClassifier;"
51 .into(),
52 ),
53 });
54
55 self.integrations.push(IntegrationPattern {
56 from: "depyler".into(),
57 to: "trueno".into(),
58 pattern_name: "numpy_convert".into(),
59 description: "Convert numpy operations to trueno".into(),
60 code_template: None,
61 });
62
63 self.integrations.push(IntegrationPattern {
64 from: "batuta".into(),
65 to: "depyler".into(),
66 pattern_name: "orchestrated_transpilation".into(),
67 description: "Batuta orchestrates depyler for Python projects".into(),
68 code_template: None,
69 });
70
71 self.integrations.push(IntegrationPattern {
73 from: "repartir".into(),
74 to: "entrenar".into(),
75 pattern_name: "distributed_training".into(),
76 description: "Distribute training across nodes".into(),
77 code_template: None,
78 });
79
80 self.integrations.push(IntegrationPattern {
81 from: "repartir".into(),
82 to: "trueno".into(),
83 pattern_name: "distributed_compute".into(),
84 description: "Distribute tensor operations".into(),
85 code_template: None,
86 });
87
88 self.integrations.push(IntegrationPattern {
90 from: "alimentar".into(),
91 to: "aprender".into(),
92 pattern_name: "data_loading".into(),
93 description: "Load data for ML training".into(),
94 code_template: Some(
95 r#"use alimentar::CsvReader;
96use aprender::Dataset;
97
98let data = CsvReader::from_path("data.csv")?.load()?;
99let dataset = Dataset::from(data);"#
100 .into(),
101 ),
102 });
103
104 self.integrations.push(IntegrationPattern {
106 from: "ruchy".into(),
107 to: "batuta".into(),
108 pattern_name: "scripted_orchestration".into(),
109 description: "Use ruchy scripts to drive batuta pipelines".into(),
110 code_template: Some(
111 r#"// ruchy script for pipeline automation
112let result = batuta::analyze("./project")?;
113let transpiled = batuta::transpile(&result)?;
114batuta::validate(&transpiled)?;"#
115 .into(),
116 ),
117 });
118
119 self.integrations.push(IntegrationPattern {
120 from: "ruchy".into(),
121 to: "renacer".into(),
122 pattern_name: "scripted_tracing".into(),
123 description: "Automate syscall tracing with ruchy scripts".into(),
124 code_template: None,
125 });
126
127 self.integrations.push(IntegrationPattern {
129 from: "bashrs".into(),
130 to: "batuta".into(),
131 pattern_name: "bootstrap_generation".into(),
132 description: "Generate shell bootstrap scripts from Rust".into(),
133 code_template: Some(
134 r#"// Generate portable install script
135bashrs::transpile! {
136 check_rust_installed();
137 cargo_install("batuta");
138 batuta_init("./project");
139}"#
140 .into(),
141 ),
142 });
143
144 self.integrations.push(IntegrationPattern {
145 from: "bashrs".into(),
146 to: "repartir".into(),
147 pattern_name: "cluster_bootstrap".into(),
148 description: "Generate shell scripts for cluster node setup".into(),
149 code_template: None,
150 });
151
152 self.integrations.push(IntegrationPattern {
154 from: "renacer".into(),
155 to: "certeza".into(),
156 pattern_name: "trace_validation".into(),
157 description: "Validate performance with golden traces".into(),
158 code_template: None,
159 });
160
161 self.integrations.push(IntegrationPattern {
162 from: "pmat".into(),
163 to: "batuta".into(),
164 pattern_name: "quality_gating".into(),
165 description: "Gate pipeline on quality metrics".into(),
166 code_template: None,
167 });
168
169 self.integrations.push(IntegrationPattern {
171 from: "simular".into(),
172 to: "trueno".into(),
173 pattern_name: "zero_js_wasm".into(),
174 description: "Zero-JS WASM architecture for interactive demos".into(),
175 code_template: Some(
176 r#"// HTML: ONE LINE OF JAVASCRIPT
177// <script type="module">import init, { initApp } from './pkg/app.js'; init().then(initApp);</script>
178
179// Rust: Full app in WASM
180use wasm_bindgen::prelude::*;
181use web_sys::{Document, HtmlCanvasElement, CanvasRenderingContext2d};
182
183#[wasm_bindgen(js_name = initApp)]
184pub fn init_app() -> Result<(), JsValue> {
185 let window = web_sys::window().expect("no window");
186 let document = window.document().expect("no document");
187 let canvas = document.get_element_by_id("canvas")
188 .expect("no canvas")
189 .dyn_into::<HtmlCanvasElement>()?;
190
191 // All DOM, rendering, animation in Rust
192 let ctx = canvas.get_context("2d")?.expect("unexpected failure")
193 .dyn_into::<CanvasRenderingContext2d>()?;
194
195 // requestAnimationFrame loop in Rust
196 // Event handlers in Rust closures
197 Ok(())
198}"#
199 .into(),
200 ),
201 });
202
203 self.integrations.push(IntegrationPattern {
204 from: "simular".into(),
205 to: "probar".into(),
206 pattern_name: "edd_testing".into(),
207 description: "Equation-Driven Development with Probar validation".into(),
208 code_template: Some(
209 r"// EDD Demo pattern
210pub trait DemoEngine {
211 fn from_yaml(yaml: &str) -> Result<Self, DemoError>;
212 fn step(&mut self, dt: f64) -> StepResult;
213 fn verify_invariants(&self) -> bool;
214 fn falsification_status(&self) -> FalsificationStatus;
215}
216
217// Probar validates:
218// - Governing equations hold within tolerance
219// - Invariants never violated
220// - Deterministic replay produces identical results"
221 .into(),
222 ),
223 });
224
225 self.integrations.push(IntegrationPattern {
226 from: "probar".into(),
227 to: "certeza".into(),
228 pattern_name: "gui_coverage".into(),
229 description: "GUI/pixel coverage extends code coverage".into(),
230 code_template: None,
231 });
232
233 self.integrations.push(IntegrationPattern {
234 from: "simular".into(),
235 to: "repartir".into(),
236 pattern_name: "distributed_simulation".into(),
237 description: "Distribute Monte Carlo simulations across nodes".into(),
238 code_template: None,
239 });
240
241 self.integrations.push(IntegrationPattern {
243 from: "apr-qa".into(),
244 to: "aprender".into(),
245 pattern_name: "model_validation".into(),
246 description: "Validate APR models trained with aprender".into(),
247 code_template: Some(
248 r#"// Generate and run QA tests for APR model
249use apr_qa_gen::TestGenerator;
250use apr_qa_runner::Runner;
251
252let tests = TestGenerator::for_model("model.apr")?.generate()?;
253let results = Runner::new().run(&tests)?;"#
254 .into(),
255 ),
256 });
257
258 self.integrations.push(IntegrationPattern {
259 from: "apr-qa".into(),
260 to: "realizar".into(),
261 pattern_name: "inference_validation".into(),
262 description: "Validate APR model inference with realizar".into(),
263 code_template: None,
264 });
265
266 self.integrations.push(IntegrationPattern {
267 from: "apr-qa".into(),
268 to: "certeza".into(),
269 pattern_name: "qa_quality_gates".into(),
270 description: "Integrate APR QA into quality gate pipeline".into(),
271 code_template: None,
272 });
273
274 self.integrations.push(IntegrationPattern {
276 from: "provable-contracts".into(),
277 to: "trueno".into(),
278 pattern_name: "kernel_verification".into(),
279 description: "Verify trueno SIMD kernel correctness via YAML contracts".into(),
280 code_template: None,
281 });
282
283 self.integrations.push(IntegrationPattern {
284 from: "provable-contracts".into(),
285 to: "realizar".into(),
286 pattern_name: "inference_kernel_verification".into(),
287 description: "Verify realizar Q4K/Q6K kernel contracts".into(),
288 code_template: None,
289 });
290
291 self.integrations.push(IntegrationPattern {
292 from: "provable-contracts".into(),
293 to: "probar".into(),
294 pattern_name: "contract_to_property_tests".into(),
295 description: "Generate probar property tests from YAML contracts".into(),
296 code_template: None,
297 });
298
299 self.integrations.push(IntegrationPattern {
300 from: "provable-contracts".into(),
301 to: "certeza".into(),
302 pattern_name: "formal_quality_gates".into(),
303 description: "Kani verification as quality gate".into(),
304 code_template: None,
305 });
306
307 self.integrations.push(IntegrationPattern {
309 from: "tiny-model-ground-truth".into(),
310 to: "realizar".into(),
311 pattern_name: "inference_parity".into(),
312 description: "Validate realizar inference against HuggingFace oracle".into(),
313 code_template: None,
314 });
315
316 self.integrations.push(IntegrationPattern {
317 from: "tiny-model-ground-truth".into(),
318 to: "aprender".into(),
319 pattern_name: "conversion_parity".into(),
320 description: "Validate APR format conversions".into(),
321 code_template: None,
322 });
323
324 self.integrations.push(IntegrationPattern {
326 from: "forjar".into(),
327 to: "bashrs".into(),
328 pattern_name: "bootstrap_provisioning".into(),
329 description: "Generate shell provisioning scripts".into(),
330 code_template: None,
331 });
332
333 self.integrations.push(IntegrationPattern {
334 from: "forjar".into(),
335 to: "repartir".into(),
336 pattern_name: "cluster_provisioning".into(),
337 description: "Provision distributed compute nodes".into(),
338 code_template: None,
339 });
340
341 self.integrations.push(IntegrationPattern {
343 from: "whisper-apr".into(),
344 to: "rmedia".into(),
345 pattern_name: "transcription_pipeline".into(),
346 description:
347 "Transcribe course audio with whisper-apr, feed into rmedia subtitle pipeline"
348 .into(),
349 code_template: Some(
350 r#"// 1. Transcribe audio with whisper-apr
351let model = WhisperModel::from_apr("whisper-base.apr")?;
352let transcript = model.transcribe(&audio)?;
353
354// 2. Burn subtitles into video with rmedia
355rmedia::subtitle::burn_in("lecture.mp4", &transcript.srt(), "output.mp4")?;"#
356 .into(),
357 ),
358 });
359
360 self.integrations.push(IntegrationPattern {
361 from: "rmedia".into(),
362 to: "whisper-apr".into(),
363 pattern_name: "audio_extraction".into(),
364 description: "Extract audio from video for transcription".into(),
365 code_template: None,
366 });
367
368 self.integrations.push(IntegrationPattern {
369 from: "rmedia".into(),
370 to: "certeza".into(),
371 pattern_name: "course_quality_gate".into(),
372 description:
373 "Score course artifacts against quality dimensions, enforce critical defect gates"
374 .into(),
375 code_template: None,
376 });
377
378 self.integrations.push(IntegrationPattern {
379 from: "rmedia".into(),
380 to: "batuta".into(),
381 pattern_name: "orchestrated_rendering".into(),
382 description: "Batuta orchestrates rmedia for course video production pipelines".into(),
383 code_template: None,
384 });
385 }
386}