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
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
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
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
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
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
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
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