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 local_edit_preserves_unaffected_chunk_ids_when_practical() {
    let dir = tempdir();
    let content = (1..=140)
        .map(|index| format!("fn line_{index}() {{}}\n"))
        .collect::<String>();
    write_source_file(dir.path(), "src/lib.rs", &content);

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

    bootstrap_source_workspace(&memory_store, &config)
        .await
        .unwrap();
    let first = latest_bootstrap_manifest(&memory_store, &scope.namespace).await;
    let original = first
        .files
        .iter()
        .find(|file| file.path == "src/lib.rs")
        .unwrap()
        .chunk_ids
        .clone();

    let edited = content.replacen(
        "fn line_40() {}\n",
        "fn line_40() { let changed = true; }\n",
        1,
    );
    write_source_file(dir.path(), "src/lib.rs", &edited);
    bootstrap_source_workspace(&memory_store, &config)
        .await
        .unwrap();
    let second = latest_bootstrap_manifest(&memory_store, &scope.namespace).await;
    let updated = second
        .files
        .iter()
        .find(|file| file.path == "src/lib.rs")
        .unwrap()
        .chunk_ids
        .clone();

    let overlap = original
        .iter()
        .filter(|chunk_id| updated.contains(chunk_id))
        .count();
    assert!(
        overlap >= 1,
        "expected at least one unchanged chunk id across a local edit"
    );
}