pub const AC_DBC_MAX_RESCUE_ATTEMPTS: u32 = 3;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum TeDbcVerdict {
Pass,
Fail,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum WorkState {
Pending,
InProgress,
Completed,
Failed,
}
#[must_use]
pub fn verdict_from_tied_output_shape(
seq_len: usize,
vocab_size: usize,
actual_rows: usize,
actual_cols: usize,
) -> TeDbcVerdict {
if seq_len == 0 || vocab_size == 0 {
return TeDbcVerdict::Fail;
}
if actual_rows == seq_len && actual_cols == vocab_size {
TeDbcVerdict::Pass
} else {
TeDbcVerdict::Fail
}
}
#[must_use]
pub fn verdict_from_tied_matmul_equivalence(
tied_output: &[f32],
explicit_output: &[f32],
) -> TeDbcVerdict {
if tied_output.is_empty() || tied_output.len() != explicit_output.len() {
return TeDbcVerdict::Fail;
}
for (a, b) in tied_output.iter().zip(explicit_output.iter()) {
if a.to_bits() != b.to_bits() {
return TeDbcVerdict::Fail;
}
}
TeDbcVerdict::Pass
}
#[must_use]
pub fn verdict_from_tied_no_extra_params(
params_before: u64,
params_after: u64,
) -> TeDbcVerdict {
if params_after == params_before {
TeDbcVerdict::Pass
} else {
TeDbcVerdict::Fail
}
}
#[must_use]
pub fn verdict_from_tied_finite_output(logits: &[f32]) -> TeDbcVerdict {
if logits.is_empty() {
return TeDbcVerdict::Fail;
}
if logits.iter().all(|x| x.is_finite()) {
TeDbcVerdict::Pass
} else {
TeDbcVerdict::Fail
}
}
#[must_use]
pub fn verdict_from_only_forward_transition(
from: WorkState,
to: WorkState,
transition_was_rejected: bool,
) -> TeDbcVerdict {
let is_forward = matches!(
(from, to),
(WorkState::Pending | WorkState::Failed, WorkState::InProgress)
| (WorkState::InProgress, WorkState::Completed | WorkState::Failed)
);
if is_forward != transition_was_rejected {
TeDbcVerdict::Pass
} else {
TeDbcVerdict::Fail
}
}
#[must_use]
pub fn verdict_from_require_blocks(
preconditions_satisfied: bool,
transition_was_rejected: bool,
) -> TeDbcVerdict {
if !preconditions_satisfied && !transition_was_rejected {
return TeDbcVerdict::Fail;
}
if preconditions_satisfied && transition_was_rejected {
return TeDbcVerdict::Fail;
}
TeDbcVerdict::Pass
}
#[must_use]
pub fn verdict_from_ensure_blocks(
postconditions_satisfied: bool,
completion_was_rejected: bool,
) -> TeDbcVerdict {
if !postconditions_satisfied && !completion_was_rejected {
return TeDbcVerdict::Fail;
}
if postconditions_satisfied && completion_was_rejected {
return TeDbcVerdict::Fail;
}
TeDbcVerdict::Pass
}
#[must_use]
pub fn verdict_from_falsify_nondestructive(
state_before: WorkState,
state_after: WorkState,
) -> TeDbcVerdict {
if state_before == state_after {
TeDbcVerdict::Pass
} else {
TeDbcVerdict::Fail
}
}
#[must_use]
pub fn verdict_from_rescue_bounded(
attempt_index: u32,
error_contains_limit_reached: bool,
) -> TeDbcVerdict {
if attempt_index < AC_DBC_MAX_RESCUE_ATTEMPTS {
if !error_contains_limit_reached {
TeDbcVerdict::Pass
} else {
TeDbcVerdict::Fail
}
} else if error_contains_limit_reached {
TeDbcVerdict::Pass
} else {
TeDbcVerdict::Fail
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn provenance_constants() {
assert_eq!(AC_DBC_MAX_RESCUE_ATTEMPTS, 3);
}
#[test]
fn fte001_pass_canonical_shape() {
let v = verdict_from_tied_output_shape(128, 32_000, 128, 32_000);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fte001_fail_dim_mismatch() {
let v = verdict_from_tied_output_shape(128, 32_000, 128, 256);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fte001_fail_zero_seq_len() {
let v = verdict_from_tied_output_shape(0, 32_000, 0, 32_000);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fte002_pass_bit_exact() {
let tied = vec![1.0_f32, 2.5, -3.0];
let explicit = vec![1.0_f32, 2.5, -3.0];
let v = verdict_from_tied_matmul_equivalence(&tied, &explicit);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fte002_fail_one_ulp() {
let bumped = f32::from_bits(2.5_f32.to_bits() + 1);
let v = verdict_from_tied_matmul_equivalence(&[1.0, 2.5], &[1.0, bumped]);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fte002_fail_length_mismatch() {
let v = verdict_from_tied_matmul_equivalence(&[1.0, 2.5], &[1.0, 2.5, 3.0]);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fte003_pass_no_extra_params() {
let v = verdict_from_tied_no_extra_params(1_000_000, 1_000_000);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fte003_fail_extra_projection_weight() {
let v = verdict_from_tied_no_extra_params(1_000_000, 1_896_000);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fte004_pass_finite_logits() {
let v = verdict_from_tied_finite_output(&[1.0, -2.0, 3.0]);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fte004_fail_nan() {
let v = verdict_from_tied_finite_output(&[1.0, f32::NAN]);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fte004_fail_infinity() {
let v = verdict_from_tied_finite_output(&[1.0, f32::INFINITY]);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fdbc001_pass_pending_to_inprogress() {
let v = verdict_from_only_forward_transition(
WorkState::Pending,
WorkState::InProgress,
false,
);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fdbc001_pass_inprogress_to_completed() {
let v = verdict_from_only_forward_transition(
WorkState::InProgress,
WorkState::Completed,
false,
);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fdbc001_pass_completed_to_inprogress_rejected() {
let v = verdict_from_only_forward_transition(
WorkState::Completed,
WorkState::InProgress,
true,
);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fdbc001_fail_completed_to_inprogress_accepted() {
let v = verdict_from_only_forward_transition(
WorkState::Completed,
WorkState::InProgress,
false,
);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fdbc001_fail_forward_rejected() {
let v = verdict_from_only_forward_transition(
WorkState::Pending,
WorkState::InProgress,
true,
);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fdbc002_pass_missing_cargo_rejected() {
let v = verdict_from_require_blocks(false, true);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fdbc002_pass_satisfied_accepted() {
let v = verdict_from_require_blocks(true, false);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fdbc002_fail_missing_cargo_accepted() {
let v = verdict_from_require_blocks(false, false);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fdbc003_pass_dirty_git_rejected() {
let v = verdict_from_ensure_blocks(false, true);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fdbc003_fail_dirty_git_accepted() {
let v = verdict_from_ensure_blocks(false, false);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fdbc004_pass_state_unchanged() {
let v = verdict_from_falsify_nondestructive(WorkState::InProgress, WorkState::InProgress);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fdbc004_fail_state_changed() {
let v = verdict_from_falsify_nondestructive(WorkState::InProgress, WorkState::Failed);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fdbc005_pass_attempt_2_no_limit() {
let v = verdict_from_rescue_bounded(2, false);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fdbc005_pass_attempt_3_yields_limit() {
let v = verdict_from_rescue_bounded(3, true);
assert_eq!(v, TeDbcVerdict::Pass);
}
#[test]
fn fdbc005_fail_attempt_5_no_limit() {
let v = verdict_from_rescue_bounded(5, false);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn fdbc005_fail_attempt_1_premature_limit() {
let v = verdict_from_rescue_bounded(1, true);
assert_eq!(v, TeDbcVerdict::Fail);
}
#[test]
fn mutation_survey_dbc001_transition_table() {
let states = [
WorkState::Pending,
WorkState::InProgress,
WorkState::Completed,
WorkState::Failed,
];
for &f in &states {
for &t in &states {
if f == t {
continue;
}
let is_forward = matches!(
(f, t),
(WorkState::Pending, WorkState::InProgress)
| (WorkState::InProgress, WorkState::Completed)
| (WorkState::InProgress, WorkState::Failed)
| (WorkState::Failed, WorkState::InProgress)
);
let v = verdict_from_only_forward_transition(f, t, !is_forward);
assert_eq!(v, TeDbcVerdict::Pass, "({f:?} → {t:?})");
}
}
}
#[test]
fn mutation_survey_dbc005_attempt_band() {
for i in 0_u32..6 {
let yields_limit = i >= 3;
let v = verdict_from_rescue_bounded(i, yields_limit);
assert_eq!(v, TeDbcVerdict::Pass, "attempt={i}");
}
}
#[test]
fn realistic_healthy_passes_all_9() {
let v1 = verdict_from_tied_output_shape(128, 32_000, 128, 32_000);
let v2 = verdict_from_tied_matmul_equivalence(&[1.0, 2.5], &[1.0, 2.5]);
let v3 = verdict_from_tied_no_extra_params(1_000_000, 1_000_000);
let v4 = verdict_from_tied_finite_output(&[1.0, -2.0, 3.0]);
let v5 = verdict_from_only_forward_transition(
WorkState::Pending,
WorkState::InProgress,
false,
);
let v6 = verdict_from_require_blocks(false, true);
let v7 = verdict_from_ensure_blocks(false, true);
let v8 = verdict_from_falsify_nondestructive(WorkState::InProgress, WorkState::InProgress);
let v9 = verdict_from_rescue_bounded(2, false);
for v in [v1, v2, v3, v4, v5, v6, v7, v8, v9] {
assert_eq!(v, TeDbcVerdict::Pass);
}
}
#[test]
fn realistic_pre_fix_all_9_failures() {
let v1 = verdict_from_tied_output_shape(128, 32_000, 128, 256);
let v2 = verdict_from_tied_matmul_equivalence(&[1.0, 2.5], &[1.0, 99.0]);
let v3 = verdict_from_tied_no_extra_params(1_000_000, 2_000_000);
let v4 = verdict_from_tied_finite_output(&[1.0, f32::NAN]);
let v5 = verdict_from_only_forward_transition(
WorkState::Completed,
WorkState::InProgress,
false,
);
let v6 = verdict_from_require_blocks(false, false);
let v7 = verdict_from_ensure_blocks(false, false);
let v8 = verdict_from_falsify_nondestructive(WorkState::InProgress, WorkState::Failed);
let v9 = verdict_from_rescue_bounded(5, false);
for v in [v1, v2, v3, v4, v5, v6, v7, v8, v9] {
assert_eq!(v, TeDbcVerdict::Fail);
}
}
}