{"id":"complete-dependency-injection-enables-hermetic-testing","text":"The combination of time injection (notification, rate limiter, crawler) and service injection (payment processor) covers both sources of test non-determinism — temporal behavior and external service responses — unless the inconsistent current_time fallback means some code paths silently revert to wall-clock time when injection is omitted.","truth_value":"IN","source":"","source_url":"","source_hash":"","justifications":[{"type":"SL","antecedents":["time-injection-enables-deterministic-testing","payment-processor-injectable"],"outlist":["current-time-fallback-inconsistent"],"label":"time and service injection together eliminate the two main non-determinism sources; the fallback inconsistency threatens completeness"}],"dependents":[],"metadata":{},"created_at":"","updated_at":"","reviewed_at":"","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"complete-dependency-injection-enables-hermetic-testing","truth_value":"IN","reason":"SL justification valid","antecedents":["time-injection-enables-deterministic-testing","payment-processor-injectable"],"label":"time and service injection together eliminate the two main non-determinism sources; the fallback inconsistency threatens completeness","outlist":["current-time-fallback-inconsistent"]},{"node":"time-injection-enables-deterministic-testing","truth_value":"IN","reason":"SL justification valid","antecedents":["notif-caller-controls-time","rate-limiter-time-injectable","crawl-uses-simulated-clock"],"label":""},{"node":"notif-caller-controls-time","truth_value":"IN","reason":"premise"},{"node":"rate-limiter-time-injectable","truth_value":"IN","reason":"premise"},{"node":"crawl-uses-simulated-clock","truth_value":"IN","reason":"premise"},{"node":"payment-processor-injectable","truth_value":"IN","reason":"premise"}]}}