pub const AC_SHIP1_004_LLAMA_CLI_SUCCESS_EXIT_CODE: i32 = 0;
pub const AC_SHIP1_004_GGUF_MAGIC_BYTES: &[u8; 4] = b"GGUF";
pub const AC_SHIP1_004_GGUF_SUPPORTED_VERSIONS: &[u32] = &[2, 3];
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Ship004Verdict {
Pass,
Fail,
}
#[must_use]
pub const fn verdict_from_llama_cli_exit(code: i32) -> Ship004Verdict {
if code == AC_SHIP1_004_LLAMA_CLI_SUCCESS_EXIT_CODE {
Ship004Verdict::Pass
} else {
Ship004Verdict::Fail
}
}
#[must_use]
pub fn verdict_from_gguf_magic_bytes(bytes: &[u8]) -> Ship004Verdict {
if bytes.len() < AC_SHIP1_004_GGUF_MAGIC_BYTES.len() {
return Ship004Verdict::Fail;
}
if &bytes[..AC_SHIP1_004_GGUF_MAGIC_BYTES.len()] == AC_SHIP1_004_GGUF_MAGIC_BYTES.as_slice() {
Ship004Verdict::Pass
} else {
Ship004Verdict::Fail
}
}
#[must_use]
pub fn verdict_from_gguf_version(ver: u32) -> Ship004Verdict {
let mut i = 0;
while i < AC_SHIP1_004_GGUF_SUPPORTED_VERSIONS.len() {
if AC_SHIP1_004_GGUF_SUPPORTED_VERSIONS[i] == ver {
return Ship004Verdict::Pass;
}
i += 1;
}
Ship004Verdict::Fail
}
#[cfg(test)]
mod ship_004_tests {
use super::*;
#[test]
fn falsify_ship_004_llama_cli_exit_code_logic() {
assert_eq!(
verdict_from_llama_cli_exit(0),
Ship004Verdict::Pass,
"POSIX success exit (0) must Pass"
);
assert_eq!(
verdict_from_llama_cli_exit(1),
Ship004Verdict::Fail,
"Exit code 1 must Fail"
);
assert_eq!(
verdict_from_llama_cli_exit(-1),
Ship004Verdict::Fail,
"Exit code -1 must Fail"
);
for bad_code in [2_i32, 127, 137, 139, 255] {
assert_eq!(
verdict_from_llama_cli_exit(bad_code),
Ship004Verdict::Fail,
"Classic failure exit code {bad_code} must Fail"
);
}
assert_eq!(
verdict_from_llama_cli_exit(i32::MIN),
Ship004Verdict::Fail,
"i32::MIN must Fail"
);
assert_eq!(
verdict_from_llama_cli_exit(i32::MAX),
Ship004Verdict::Fail,
"i32::MAX must Fail"
);
for code in -256_i32..=256 {
let v = verdict_from_llama_cli_exit(code);
let expected = if code == 0 {
Ship004Verdict::Pass
} else {
Ship004Verdict::Fail
};
assert_eq!(v, expected, "Mismatch at exit code {code}");
}
assert_eq!(
AC_SHIP1_004_LLAMA_CLI_SUCCESS_EXIT_CODE, 0_i32,
"POSIX success sentinel drifted — spec §4.2 AC-SHIP1-004 binds 0"
);
}
#[test]
fn falsify_ship_004_gguf_magic_bytes_logic() {
assert_eq!(
verdict_from_gguf_magic_bytes(b"GGUF"),
Ship004Verdict::Pass,
"Canonical GGUF magic must Pass"
);
assert_eq!(
verdict_from_gguf_magic_bytes(b"GGUF\x02\x00\x00\x00"),
Ship004Verdict::Pass,
"GGUF magic + V2 LE version header must Pass (first 4 bytes match)"
);
assert_eq!(
verdict_from_gguf_magic_bytes(b"GGUF\x03\x00\x00\x00garbage_after"),
Ship004Verdict::Pass,
"GGUF magic + V3 LE version + trailing must Pass (first 4 bytes match)"
);
for bad_magic in [
&b"GGUE"[..], &b"GGTF"[..], &b"GFUF"[..], &b"FUGG"[..], &b"GGU "[..], &b"gguf"[..], ] {
assert_eq!(
verdict_from_gguf_magic_bytes(bad_magic),
Ship004Verdict::Fail,
"Byte-flipped magic {bad_magic:?} must Fail"
);
}
assert_eq!(
verdict_from_gguf_magic_bytes(&[]),
Ship004Verdict::Fail,
"Empty slice must conservatively Fail"
);
assert_eq!(
verdict_from_gguf_magic_bytes(b"G"),
Ship004Verdict::Fail,
"1-byte slice must Fail"
);
assert_eq!(
verdict_from_gguf_magic_bytes(b"GG"),
Ship004Verdict::Fail,
"2-byte slice must Fail"
);
assert_eq!(
verdict_from_gguf_magic_bytes(b"GGU"),
Ship004Verdict::Fail,
"3-byte slice must Fail"
);
assert_eq!(
verdict_from_gguf_magic_bytes(b"APR\0"),
Ship004Verdict::Fail,
"APR v2 magic must Fail (a .gguf file with APR header is broken serializer)"
);
assert_eq!(
verdict_from_gguf_magic_bytes(b"APRN"),
Ship004Verdict::Fail,
"APR v1 magic must Fail"
);
assert_eq!(
verdict_from_gguf_magic_bytes(&[0x00, 0x00, 0x00, 0x00]),
Ship004Verdict::Fail,
"Zero-filled first 4 bytes must Fail"
);
assert_eq!(
AC_SHIP1_004_GGUF_MAGIC_BYTES, b"GGUF",
"GGUF magic constant drifted — spec AC-SHIP1-004 binds b\"GGUF\""
);
assert_eq!(
AC_SHIP1_004_GGUF_MAGIC_BYTES[0], 0x47,
"First magic byte must be 'G' = 0x47"
);
assert_eq!(
AC_SHIP1_004_GGUF_MAGIC_BYTES[1], 0x47,
"Second magic byte must be 'G' = 0x47"
);
assert_eq!(
AC_SHIP1_004_GGUF_MAGIC_BYTES[2], 0x55,
"Third magic byte must be 'U' = 0x55"
);
assert_eq!(
AC_SHIP1_004_GGUF_MAGIC_BYTES[3], 0x46,
"Fourth magic byte must be 'F' = 0x46"
);
}
#[test]
fn falsify_ship_004_gguf_version_logic() {
assert_eq!(
verdict_from_gguf_version(2),
Ship004Verdict::Pass,
"GGUF V2 must Pass"
);
assert_eq!(
verdict_from_gguf_version(3),
Ship004Verdict::Pass,
"GGUF V3 must Pass"
);
assert_eq!(
verdict_from_gguf_version(0),
Ship004Verdict::Fail,
"GGUF version 0 must Fail (un-initialized header)"
);
assert_eq!(
verdict_from_gguf_version(1),
Ship004Verdict::Fail,
"GGUF V1 must Fail (GGJT predecessor — llama.cpp rejects)"
);
for bad_ver in [4_u32, 5, 10, 100, 1_000_000, u32::MAX] {
assert_eq!(
verdict_from_gguf_version(bad_ver),
Ship004Verdict::Fail,
"Above-band GGUF version {bad_ver} must Fail (Fail-closed)"
);
}
for ver in 0_u32..=64 {
let v = verdict_from_gguf_version(ver);
let expected = if ver == 2 || ver == 3 {
Ship004Verdict::Pass
} else {
Ship004Verdict::Fail
};
assert_eq!(v, expected, "Mismatch at GGUF version {ver}");
}
assert_eq!(
AC_SHIP1_004_GGUF_SUPPORTED_VERSIONS,
&[2_u32, 3_u32],
"GGUF supported versions drifted — spec §4.2 AC-SHIP1-004 binds {{2, 3}}"
);
assert_eq!(
AC_SHIP1_004_GGUF_SUPPORTED_VERSIONS.len(),
2,
"Supported version count must be exactly 2"
);
assert_eq!(AC_SHIP1_004_GGUF_SUPPORTED_VERSIONS[0], 2_u32);
assert_eq!(AC_SHIP1_004_GGUF_SUPPORTED_VERSIONS[1], 3_u32);
}
#[test]
fn falsify_ship_004_yaml_binding_pins_discharged_status() {
const CONTRACT_YAML: &str =
include_str!("../../../../contracts/qwen2-e2e-verification-v1.yaml");
let doc: serde_yaml::Value = serde_yaml::from_str(CONTRACT_YAML)
.expect("qwen2-e2e-verification-v1.yaml must parse as YAML");
let falsifications = doc["falsification_tests"]
.as_sequence()
.expect("falsification_tests must be a sequence");
let block = falsifications
.iter()
.find(|b| b["id"].as_str() == Some("FALSIFY-QW2E-SHIP-004"))
.expect("FALSIFY-QW2E-SHIP-004 must exist in qwen2-e2e-verification-v1");
assert_eq!(
block["discharge_status"].as_str(),
Some("DISCHARGED"),
"FALSIFY-QW2E-SHIP-004 must advertise DISCHARGED \
(live `apr export → llama-cli` round-trip on canonical teacher \
at v1.8.0; previous PARTIAL_ALGORITHM_LEVEL at v1.5.0)",
);
assert!(
block["discharged_evidence"].is_mapping(),
"FALSIFY-QW2E-SHIP-004 DISCHARGED status requires a discharged_evidence \
block documenting the host, command chain, and per-step verdicts",
);
assert_eq!(
block["discharged_evidence"]["host"].as_str(),
Some("noah-Lambda-Vector"),
"discharged_evidence.host must pin to the lambda-labs RTX 4090 host",
);
assert_eq!(
block["discharged_evidence"]["overall"].as_str(),
Some("PASS"),
"discharged_evidence.overall must equal PASS",
);
assert_eq!(
block["discharged_evidence"]["magic_verdict"].as_str(),
Some("PASS"),
"discharged_evidence.magic_verdict must equal PASS",
);
assert_eq!(
block["discharged_evidence"]["version"].as_u64(),
Some(3),
"discharged_evidence.version must equal 3 (in {{2, 3}} supported set)",
);
assert_eq!(
block["discharged_evidence"]["llama_cli_exit_verdict"].as_str(),
Some("PASS"),
"discharged_evidence.llama_cli_exit_verdict must equal PASS",
);
let live_evidence = block["discharged_evidence"]["evidence_discharged_by_live"]
.as_sequence()
.expect(
"FALSIFY-QW2E-SHIP-004 DISCHARGED requires \
discharged_evidence.evidence_discharged_by_live (live RTX 4090 evidence list)",
);
assert!(
!live_evidence.is_empty(),
"evidence_discharged_by_live must list at least one live observation",
);
}
}