warble-mdl-context 0.2.0

Warble ContextLoader adapter #1 — introspects a wren MDL project (via wren-core-base) into Warble's Info projections + semantic lineage. Binding-layer only; keeps core zero-wren.
Documentation
#![cfg(not(target_arch = "wasm32"))]

use std::fs;
use warble_mdl_context::read_knowledge_rules;

#[test]
fn knowledge_rules_are_sorted_trimmed_and_followed_by_legacy_content() {
    let project = tempfile::tempdir().unwrap();
    let rules = project.path().join("knowledge/rules");
    fs::create_dir_all(&rules).unwrap();
    fs::write(rules.join("z-last.md"), "\n# Z\r\n\r\nlast\n").unwrap();
    fs::write(rules.join("a-first.md"), "# A\n\nfirst\n").unwrap();
    fs::write(rules.join("empty.md"), " \n").unwrap();
    fs::write(project.path().join("instructions.md"), "\n# Legacy\n").unwrap();

    let loaded = read_knowledge_rules(project.path()).unwrap();

    assert_eq!(
        loaded.content,
        "# A\n\nfirst\n\n# Z\r\n\r\nlast\n\n# Legacy"
    );
    assert!(loaded.used_legacy);
}

#[test]
fn missing_rules_are_an_explicit_empty_payload() {
    let project = tempfile::tempdir().unwrap();
    let loaded = read_knowledge_rules(project.path()).unwrap();
    assert_eq!(loaded.content, "");
    assert!(!loaded.used_legacy);
}