forge-pilot 0.1.0

Closed-loop orchestrator over runtime advisories, kernel oracles, and canonical Forge export/import lanes
Documentation
mod common;

use common::{
    base_loop_config, latest_bootstrap_manifest, open_memory_store, point_config_at_dir, tempdir,
    write_source_file,
};
use forge_pilot::bootstrap_source_workspace;
use knowledge_runtime::Scope;

#[tokio::test]
async fn bootstrap_source_marks_rust_line_scanner_as_degraded_for_unsupported_surface() {
    let dir = tempdir();
    write_source_file(
        dir.path(),
        "src/lib.rs",
        r#"
#[cfg(feature = "demo")]
pub fn gated_symbol<T>
(
    value: T,
) -> T {
    value
}

#[derive(Clone)]
pub struct DerivedRecord<T> {
    value: T,
}
"#,
    );

    let memory_store = open_memory_store(dir.path());
    let scope = Scope::new("bootstrap-rust-degraded");
    let mut config = base_loop_config(scope.clone());
    point_config_at_dir(&mut config, dir.path());

    let report = bootstrap_source_workspace(&memory_store, &config)
        .await
        .unwrap();
    assert_eq!(report.degraded_symbol_file_count, 1);

    let manifest = latest_bootstrap_manifest(&memory_store, &scope.namespace).await;
    let file = manifest
        .files
        .iter()
        .find(|file| file.path == "src/lib.rs")
        .unwrap();
    assert_eq!(file.symbol_extraction_status, "degraded");
    let degradation = file.symbol_extraction_degradation.as_deref().unwrap();
    assert!(degradation.contains("cfg_gated_item"));
    assert!(degradation.contains("attribute_annotated_item"));
    assert!(degradation.contains("generic_header"));
    assert!(degradation.contains("multiline_signature"));
    assert_eq!(file.symbol_capability.extractor, "rust_line_scanner_v1");
}