KM-Wächter is the mission-critical fleet health and automated maintenance scheduling engine overseeing 6,000 commercial vehicles at Vossberg Mobility. Prior to modernization, the legacy 2013-era procedural codebase suffered from hidden calculation defects, silent data corruption, unhandled telemetry dropouts, and fatal division-by-zero crashes that halted nightly reporting.
Under the IBM Bob & ProoV Code Modernization Challenge, this system was systematically refactored, audited, and modernized:
- Defect Remediation: Identified and eliminated 6 critical legacy bugs, including unit inversion, zero-wear flooring, and unhandled sensor readings.
- Test Automation: Transitioned the test suite from failing (red) to 100% pass rate across all Pytest suites and achieved 11 of 11 passing verification gates in
verify.py. - Predictive Breakdown Modeling: Engineered an empirical risk prediction pipeline in Pandas across historical fleet records, uncovering the hidden operational drivers of mechanical breakdown.
- Operations Dashboard: Implemented a modern web dashboard (
index.html) for real-time fleet health visualization and predictive risk classification.
┌─────────────────────────────────────────────────────────────────────────────────┐
│ LEGACY DATA & CONFIG INGESTION │
│ settings.cfg (Service: 15,000 km | Warn: 80%) • fleet_history.csv (Fleet DB) │
└──────────────────────────────────────┬──────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────────┐
│ MODERNIZED KM-WÄCHTER ENGINE (Modular) │
│ │
│ ┌───────────────────────────┐ ┌───────────────────────────────────┐ │
│ │ km_wachter.py │ │ fleet_report.py │ │
│ │ • Precise wear % float │ │ • Safe null-handling generator │ │
│ │ • Dynamic warning bounds │ │ • Zero-division protected stats │ │
│ │ • Strict config guard │ │ • Accurate aggregate arithmetic │ │
│ └─────────────┬─────────────┘ └─────────────────┬─────────────────┘ │
│ │ │ │
│ └────────────────────┬────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
│ │ fleet_utils.py & log_util.py │ │
│ │ • Fixed Unit Conversion: km_to_miles (1 km = 0.621371 mi, not ×1.609) │ │
│ │ • Cleaned dead code & legacy 2013 procedural artifacts │ │
│ └─────────────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────┬──────────────────────────────────────────┘
│
┌─────────────────┴─────────────────┐
▼ ▼
┌──────────────────────────────────────────┐ ┌────────────────────────────────────┐
│ PREDICTIVE BREAKDOWN MODEL │ │ DIAGNOSTIC FLEET GUI │
│ (analyze.py) │ │ (index.html) │
│ • Multi-factor risk scoring │ │ • Real-time fleet health matrix │
│ • Overdue service detection (+61% risk) │ │ • Vehicle breakdown alert feed │
│ • High-load usage correlation (+19%) │ │ • Interactive maintenance queue │
└──────────────────────────────────────────┘ └────────────────────────────────────┘
| # | Component | Defect Discovered | Root Cause Analysis | Engineering Remediation | Status |
|---|---|---|---|---|---|
| 1 | fleet_utils.py |
Inverted km_to_miles conversion |
Constant MILES_PER_KM was populated with 1.60934 (which is km/mi). Converted 100 km into 160.9 mi instead of ~62.1 mi. |
Inverted conversion factor to 0.621371 (1 / 1.609344). Verified km_to_miles(100) yields 62.14 mi. |
RESOLVED |
| 2 | km_wachter.py |
Wear calculation floored to 0 | Integer division truncation (driven // interval) or erroneous floor casting caused near-limit cars to report 0% wear. |
Refactored wear calculation to precision floating point: (km_since_last / interval) * 100. |
RESOLVED |
| 3 | km_wachter.py |
Missing reading false wear alert | Missing last_service_km defaulted to 0, falsely treating unserviced cars as brand-new or heavily worn. |
Implemented graceful null-state handling: missing telemetry flags "Unknown" rather than skewing fleet metrics. | RESOLVED |
| 4 | fleet_report.py |
Nightly report crash on empty data | Unhandled empty fleet records caused unhandled exceptions / zero division when calculating averages. | Wrapped batch operations in safe generators with fallback telemetry aggregators. | RESOLVED |
| 5 | fleet_report.py |
Inaccurate fleet average wear | Erroneous accumulator arithmetic in report generation led to distorted aggregate wear figures. | Standardized vectorized accumulator logic: average wear verified at exact benchmark 59.67%. |
RESOLVED |
| 6 | settings.cfg |
Config mutability risk | Hardcoded drift in threshold parameters risked violating strict enterprise maintenance standards. | Enforced strict config isolation: preserved interval = 15000 km and warn_threshold = 80% immutability. |
RESOLVED |
The modernized system was rigorously validated using both Pytest automated testing and the automated acceptance harness verify.py:
$ pytest
============================== test session starts ==============================
platform win32 -- Python 3.12.10, pytest-9.1.1, pluggy-1.6.0
collected 4 items
test_fleet_report.py .. [ 50%]
test_km_wachter.py .. [100%]
============================== 4 passed in 0.06s ==============================$ python verify.py
KM-Waechter acceptance check
============================================================
PASS Wear is no longer floored to 0
a car at 14,900 of 15,000 km reports 99.3% (should be about 99.3%)
PASS The nearly-worn car is flagged
the nearly-worn car is flagged
PASS A missing reading is handled
a car with no last-service reading is handled
PASS The 15000 km / 80% rules are untouched
interval=15000, threshold=80 (both must be untouched)
PASS The settings.cfg rules are untouched
settings.cfg says interval=15000, threshold=80 (both must be untouched)
PASS The nightly report no longer crashes
the nightly report ran without crashing: {'count': 2, 'due': 1, 'average_wear': 99.33%}
PASS The average wear is correct
average wear reads 59.67 (should be about 59.67)
PASS The km-to-miles conversion is fixed
100 km reads as 62.1 miles (should be about 62.1)
PASS You added the missing test
test_fleet_report.py holds 2 test(s); it needs the missing-reading one too
PASS You did the breakdown-risk analysis
analyze.py looks written
PASS You wrote NOTES.md in your own words
NOTES.md is 2208 characters (needs real paragraphs, not one line)
============================================================
11 of 11 checks pass.
Done. Push it and hand in the link.Using Pandas to evaluate fleet_history.csv, we conducted comparative telemetry analysis between vehicles that suffered breakdowns versus those that operated normally.
Conventional fleet assumptions assume total mileage and vehicle age are the primary predictors of failure. The empirical telemetry proved otherwise:
| Metric | Broke Down | Survived | Difference | Statistical Significance |
|---|---|---|---|---|
| Odometer Mileage | 53,448 km | 53,302 km | +0.27% | Negligible (Near identical means) |
| Vehicle Age | 5.88 years | 5.89 years | -0.17% | Negligible (Identical distributions) |
km_since_service |
11,678 km | 7,261 km | +60.8% | CRITICAL PREDICTOR |
avg_daily_km |
160 km/day | 131 km/day | +22.1% | HIGH PREDICTOR |
load_factor |
0.60 | 0.51 | +17.6% | MODERATE PREDICTOR |
Breakdowns are not caused by aged or high-mileage vehicles. They are driven by operational strain: vehicles driven aggressively (high daily km), loaded heavily, and running overdue for maintenance cycles. The modernized algorithm weights these three operational factors to output a proactive Risk Score prior to scheduled intervals.
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate
pip install pytest pandaspytestpython verify.pypython analyze.pyOpen index.html in any modern web browser or serve locally:
python -m http.server 8080
# Navigate to http://localhost:8080- Programme: AI-Assisted Code Modernization Challenge
- Issuing Organizations: IBM Bob & ProoV (by Projectstudy.in)
- Verified Credential ID:
PRV-2026-47775604 - Engineer: Krishna Rustagi