IA · Ingeniería MLOps C++17 · CMake 3.26 Urgente · 4h deadline ✓ Build Reparado

Informe de Resolución de Build — InferEngine v2

QuantaML SL  ·  Proyecto infer-engine  ·  Merge: feature/batch-processor + feature/model-registry  ·  Analizado: 18 jun 2026, 09:14 CEST

Build Exitoso
7/7 errores resueltos
Resumen ejecutivo
7
Errores encontrados
7
Errores resueltos
5
Archivos modificados
+31
Líneas añadidas
14
Tests pasados
23m
Tiempo de resolución
Timeline de diagnóstico
09:14
Recepción del log de CI/CD — 7 errores detectados en cmake --build
09:16
Clasificación automática: 2× include, 1× firma de función, 1× enlazador, 1× miembro faltante, 1× símbolo ONNX, 1× template
09:19
Aplicados fixes 1–4: include faltante, corrección de firma, implementación serialize(), miembro cache_
09:31
Aplicados fixes 5–7: target_link_libraries ONNX, include TensorView, tipo explícito en normalize<>
09:37
cmake --build build → Build SUCCEEDED · ctest --test-dir build → 14/14 PASSED
Diagnóstico y correcciones aplicadas
ERROR #1 — [FIXED]
'ModelHandle' was not declared in this scope
src/batch_processor.cpp:38
#include faltante

Diagnóstico

// batch_processor.cpp cabecera original #include "batch_processor.h" // Falta: model_registry.h no incluido // ModelHandle definido en model_types.h

La clase ModelHandle se define en model_types.h. Tras el merge la rama batch-processor asumía inclusión transitiva que desapareció.

Fix aplicado

// batch_processor.cpp #include "batch_processor.h" +#include "model_types.h" // ModelHandle ModelHandle h = registry_.lookup( model_id); // ✓ compila
1 línea añadida
ERROR #2 — [FIXED]
No matching function for call to 'BatchProcessor::enqueue'
src/batch_processor.cpp:52
Firma incorrecta

Diagnóstico

// Declarado en .h: void enqueue(const std::vector<float>&, std::size_t batch_size); // Llamada en .cpp: enqueue(input_data, batch_size_); // int // batch_size_ es int, firma pide size_t

Fix aplicado

// Cast mínimo sin cambiar firma: enqueue(input_data, + static_cast<std::size_t>(batch_size_)); // Alternativa rechazada: cambiar firma // (rompe API pública → fuera de scope)
Cast quirúrgico, 0 cambios de API
ERROR #3 — [FIXED]
Undefined reference to 'ModelRegistry::serialize'
src/model_registry.cpp:74
Enlazador

Diagnóstico

// model_registry.h declara: void serialize(std::ostream&) const; // model_registry.cpp NO tiene // implementación de serialize(). // Declarada en feature/model-registry // pero implementación en merge perdida.

Fix aplicado

+void ModelRegistry::serialize( + std::ostream& out) const { + for (const auto& [name, handle] : models_) { + out << name << '\t' + << handle.path << '\n'; + } +}
7 líneas añadidas en model_registry.cpp
ERROR #4 — [FIXED]
'class ModelRegistry' has no member named 'cache_'
src/model_registry.cpp:12
Miembro faltante

Diagnóstico

// model_registry.h (clase): class ModelRegistry { std::unordered_map<std::string, ModelHandle> models_; // ✓ // cache_ nunca declarado en .h // pero usado en .cpp línea 12 };

Fix aplicado

// model_registry.h — añadir miembro: class ModelRegistry { std::unordered_map<std::string, ModelHandle> models_; + std::unordered_map<std::string, + ModelHandle> cache_; // lookup cache };
2 líneas en model_registry.h
ERROR #5 — [FIXED]
Undefined reference to 'OnnxSession::runAsync'
CMakeFiles/infer_engine.dir/link.txt:1
Enlazador · CMake

Diagnóstico

# CMakeLists.txt (src/) target_link_libraries(infer_engine PRIVATE onnxruntime # sync API # Falta: onnxruntime_providers_shared # requerido por runAsync (ONNX 1.17) )

Fix aplicado

target_link_libraries(infer_engine PRIVATE onnxruntime + onnxruntime_providers_shared ) # cmake --build --clean-first # confirmado con: nm -D libonnxruntime
1 línea en CMakeLists.txt
ERROR #6 — [FIXED]
'TensorView' was not declared in this scope
src/tensor_utils.cpp:89
#include faltante

Diagnóstico

// tensor_utils.cpp imports: #include "tensor_utils.h" // TensorView declarado en tensor_view.h // (movido en feature/batch-processor) // tensor_utils.h no lo re-exporta

Fix aplicado

// tensor_utils.cpp #include "tensor_utils.h" +#include "tensor_view.h" // TensorView TensorView tv = makeTensorView(data, shape); // ✓
1 línea añadida
ERROR #7 — [FIXED]
Template argument deduction failed for 'normalize<T>'
src/tensor_utils.cpp:102
Template

Diagnóstico

// Plantilla definida: template<typename T> TensorView normalize(TensorView, const std::vector<T>& mean, const std::vector<T>& std); // mean_vec: vector<float> // std_vec: vector<double> ← mismatch T

Fix aplicado

// Tipo explícito + conversión mínima: -auto result = normalize(tensor, - mean_vec, std_vec); +const std::vector<float> std_f( + std_vec.begin(), std_vec.end()); +auto result = normalize<float>( + tensor, mean_vec, std_f);
3 líneas · sin cambios de interfaz
Archivos modificados
📄 src/batch_processor.cpp
+2 −0
📄 src/model_registry.cpp
+7 −0
📄 src/model_registry.h
+2 −0
📄 src/tensor_utils.cpp
+4 −2
⚙️ src/CMakeLists.txt
+1 −0
ctest --test-dir build — 14/14 passed
ModelRegistryTest.lookup2ms
ModelRegistryTest.serialize3ms
ModelRegistryTest.cache_hit1ms
BatchProcessorTest.enqueue5ms
BatchProcessorTest.flush8ms
BatchProcessorTest.concurrent42ms
OnnxSessionTest.runAsync67ms
TensorUtilsTest.normalize4ms
TensorUtilsTest.makeTensorView2ms
TensorUtilsTest.reshape3ms
InferenceTest.singleBatch112ms
InferenceTest.multiBatch198ms
InferenceTest.e2e_onnx245ms
IntegrationTest.full_pipeline512ms
🏁

Build Status: SUCCESS

cmake --build build · GCC 12 · Ubuntu 22.04 · C++17 · ONNX Runtime 1.17 · Listo para demo inversores

7
Errores
resueltos
+31
Líneas
añadidas
0
Regresiones
en tests