ccf-core 1.0.1

Canonical CCF core v1 trust-update and runtime-certificate primitives for filed-Prov6 contract enforcement
Documentation
use ccf_core::envelope::{
    compute_envelope_tick, reject_min_gate_unconditional_convergence,
    reject_missing_target_motion_telemetry, EnvelopeMonitorTick, EnvelopeStatus,
    ENVELOPE_MONITOR_JOURNEY_ID, ENVELOPE_MONITOR_STORY_ID, MIN_GATE_CONVERGENCE_OLD_WRONG_PATH,
    NO_TARGET_MOTION_TELEMETRY_OLD_WRONG_PATH,
};

const TEST_SOURCE: &str = include_str!("envelope_monitor.rs");
const CONTRACT_SOURCE: &str =
    include_str!("../../../docs2/contracts/ccf-core-v1/journey_envelope_monitor.yml");

fn stable_tick() -> EnvelopeMonitorTick {
    EnvelopeMonitorTick {
        tick_id: 90,
        previous_b_t: 0.40,
        alpha_t: 0.25,
        e_t: 0.30,
        delta_t: 0.02,
        kappa_t: 0.01,
        monitored_assumptions_hold: true,
    }
}

fn moving_target_tick() -> EnvelopeMonitorTick {
    EnvelopeMonitorTick {
        tick_id: 91,
        previous_b_t: 0.20,
        alpha_t: 0.25,
        e_t: 0.31,
        delta_t: 0.08,
        kappa_t: 0.02,
        monitored_assumptions_hold: false,
    }
}

#[test]
fn stable_target_reports_inside_envelope_and_bound_values() {
    eprintln!("journey={ENVELOPE_MONITOR_JOURNEY_ID} story={ENVELOPE_MONITOR_STORY_ID}");

    let report =
        compute_envelope_tick(&stable_tick()).expect("envelope monitor implementation is required");

    assert_eq!(report.tick_id, 90);
    assert_eq!(report.e_t, stable_tick().e_t);
    assert_eq!(report.delta_t, stable_tick().delta_t);
    assert_eq!(report.kappa_t, stable_tick().kappa_t);
    assert!(report.b_t >= report.e_t);
    assert!(report.b_t_bounds_e_t);
    assert_eq!(report.status, EnvelopeStatus::InsideEnvelope);
    assert!(!report.theorem_failure_claimed);
    assert!(!report.convergence_claimed);

    eprintln!(
        "stable_envelope=PASS tick_id={} E_t={:.16e} delta_t={:.16e} kappa_t={:.16e} B_t={:.16e} B_t_bounds_E_t=PASS envelope_status=inside_envelope",
        report.tick_id, report.e_t, report.delta_t, report.kappa_t, report.b_t
    );
}

#[test]
fn moving_target_reports_not_certified_without_theorem_language() {
    eprintln!("journey={ENVELOPE_MONITOR_JOURNEY_ID} story={ENVELOPE_MONITOR_STORY_ID}");

    let report = compute_envelope_tick(&moving_target_tick())
        .expect("moving-target envelope monitor implementation is required");

    assert_eq!(report.tick_id, 91);
    assert_eq!(report.e_t, moving_target_tick().e_t);
    assert_eq!(report.delta_t, moving_target_tick().delta_t);
    assert_eq!(report.kappa_t, moving_target_tick().kappa_t);
    assert_eq!(report.status, EnvelopeStatus::NotCertified);
    assert!(!report.theorem_failure_claimed);
    assert!(!report.convergence_claimed);

    eprintln!(
        "moving_target_envelope=PASS tick_id={} E_t={:.16e} delta_t={:.16e} kappa_t={:.16e} B_t={:.16e} envelope_status=not_certified theorem_failure_language=ABSENT convergence_language=ABSENT",
        report.tick_id, report.e_t, report.delta_t, report.kappa_t, report.b_t
    );
}

#[test]
fn min_gate_convergence_old_wrong_path_is_rejected() {
    eprintln!("journey={ENVELOPE_MONITOR_JOURNEY_ID} story={ENVELOPE_MONITOR_STORY_ID}");

    let report = reject_min_gate_unconditional_convergence()
        .expect("min-gate convergence negative guard is required");

    assert_eq!(report.old_wrong_path, MIN_GATE_CONVERGENCE_OLD_WRONG_PATH);
    assert!(report.rejected);

    eprintln!(
        "min_gate_convergence_negative=PASS old_wrong_path={}",
        report.old_wrong_path
    );
}

#[test]
fn target_motion_telemetry_old_wrong_path_is_rejected() {
    eprintln!("journey={ENVELOPE_MONITOR_JOURNEY_ID} story={ENVELOPE_MONITOR_STORY_ID}");

    let report = reject_missing_target_motion_telemetry()
        .expect("target-motion telemetry negative guard is required");

    assert_eq!(
        report.old_wrong_path,
        NO_TARGET_MOTION_TELEMETRY_OLD_WRONG_PATH
    );
    assert!(report.rejected);

    eprintln!(
        "target_motion_telemetry_negative=PASS old_wrong_path={}",
        report.old_wrong_path
    );
}

#[test]
fn envelope_monitor_has_no_silent_omission_or_convergence_claim() {
    eprintln!("journey={ENVELOPE_MONITOR_JOURNEY_ID} story={ENVELOPE_MONITOR_STORY_ID}");

    let omission_needles = [
        concat!("test", ".skip"),
        concat!("describe", ".skip"),
        concat!("it", ".skip"),
        concat!("#[", "ignore]"),
        concat!("status:", " skipped"),
    ];
    let forbidden_claim_needles = [
        concat!("guarantees ", "convergence"),
        concat!("unconditional ", "convergence"),
        concat!("long-term ", "stability proof"),
        concat!("theorem ", "failure"),
    ];

    for source in [TEST_SOURCE, CONTRACT_SOURCE] {
        for needle in omission_needles {
            assert!(
                !source.contains(needle),
                "envelope monitor gate must not contain silent omission marker {needle}"
            );
        }
    }

    for forbidden_claim in forbidden_claim_needles {
        assert!(
            !TEST_SOURCE.contains(forbidden_claim),
            "test source must not claim {forbidden_claim}"
        );
    }

    eprintln!("envelope_no_silent_omission_scan=PASS convergence_language_scan=PASS");
}