Skip to content

conveyor-engine: ConveyorTransitNotDtMultiple and ConveyorLeakFractionsExceedOne warnings are declared but never emitted #873

Description

@bpowers

Found by branch review of conveyor-engine before merge (the in-flight XMILE conveyor+queue implementation; specs docs/design/conveyors.md + docs/design/queues.md). Filed from a review report that exceeded its 15-finding cap.

Summary

ErrorCode::ConveyorTransitNotDtMultiple and ErrorCode::ConveyorLeakFractionsExceedOne are declared, rustdoc'd as Warning-level, Display-mapped, and libsimlin-mapped, but never constructed anywhere. The two Warning-level compile diagnostics that docs/design/conveyors.md sections 4.1 and 5.1 mandate are silently omitted: the belt is DT-quantized and leaks are content-clamped with no diagnostic.

Failure scenario

  • A conveyor with <len>1.3</len> under dt=0.25: slat_count(1.3, 0.25) = floor(5.2 + 0.5) = 5, giving an effective transit of 1.25 with no Warning -- though |5.2 - 5| = 0.2 > 1e-9, and conveyors.md:217-218 (section 4.1) requires "the compiler emits a Warning naming the conveyor and reporting the effective transit time".
  • Two linear leak flows with constant fractions 0.7 and 0.5 (sum 1.2 > 1) silently under-leak the later flow via the step-2 content clamp with no Warning -- though conveyors.md:510 (section 5.1) requires "the compiler warns when constant leak fractions sum above 1".

Evidence

  • declarations: ConveyorTransitNotDtMultiple, (src/simlin-engine/src/common.rs:424) and ConveyorLeakFractionsExceedOne, (:427)
  • Display arms: common.rs:564-565; libsimlin mapping to Generic: src/libsimlin/src/lib.rs:287-288
  • a repo-wide grep for each variant name returns only the declaration/Display/libsimlin sites and zero constructor sites, whereas siblings are constructed: ConveyorTransitNotPositive at conveyor_compile.rs:1824, ConveyorLtmDegraded at db/diagnostic.rs:220
  • grep Warning src/simlin-engine/src/conveyor_compile.rs returns nothing (no Warning-severity emission in the conveyor compile path)
  • runtime silently rounds: pub fn slat_count(transit: f64, dt: f64) -> usize { let n = (transit / dt + 0.5).floor(); (conveyor.rs:30-31)
  • spec error-code table (conveyors.md:925-926) lists both as Warning

Suggested direction

Construct and emit both Warning diagnostics at the appropriate points in the conveyor compile path (slat-count quantization for 4.1, constant-leak-fraction sum for 5.1).

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingengineIssues with the rust-based simulation engine

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions