Búho
Búho guarda cada cifra del mundo real con su procedencia y su fecha, y responde la única pregunta que importa antes de decidir: ¿me puedo apoyar en esta cifra hoy? No calcula nada: alimenta a Cóndor.
Qué hace
Sección titulada «Qué hace»- Registra observaciones con valor, unidad,
source,observed_at,method,ttl_daysy una nota. Sinsourceno entra: lanza. - Distingue tres métodos, y la distinción no es cosmética:
observedse leyó en la fuente y otro puede ir a verlo;derivedse calculó a partir de otras observaciones;estimatedes un supuesto, se puede usar, pero no puede pasar por dato. - Mide cobertura contra lo que el modelo necesita de verdad, no contra lo que hay anotado. Un registro vacío no significa que todo esté bien.
- Devuelve la salud: qué caducó, qué es supuesto y con qué confianza puede hablar el motor. Si hay supuestos, el veredicto baja aunque la cobertura sea total.
De qué depende
Sección titulada «De qué depende»config/buho.php, en forma plana o anidada;ResearchLoglas aplana a la misma.- Cóndor, que lo consulta al construir el motor. Búho manda sobre la reserva de
config/pricing.php: las observaciones se aplican encima antes de calcular, y doblar una observación mueve el precio. - En local,
php artisan condor:derive --research. En producción, el jobcondordecheck-prod.yml, porque artisan no se alcanza sin SSH y el SSH está retirado. Ese job no imprime costos ni márgenes por defecto. - Desde código:
Condor::research()->stale(),->assumptions()yCondor::researchHealth().
Qué pasa cuando se apaga
Sección titulada «Qué pasa cuando se apaga»Búho no es un interruptor de sitio: es una fuente que el motor lee. Si se queda sin observaciones, Cóndor no se queda sin precios —sigue usando las entradas declaradas—, pero pierde la procedencia y la caducidad, y vuelve el problema que Búho cierra: cifras sin fecha que nadie puede envejecer. El veredicto de salud es lo que delata ese estado.
En el catálogo, buho figura como módulo declarado con is_implemented = false: no se ofrece para encender.
Límites y trampas
Sección titulada «Límites y trampas»- La caducidad no es decorativa. El cambio de divisa mueve la escalera entera, así que vence antes que los precios de competidor. Una cifra vencida no es una cifra: es un recuerdo.
- Los puntos de las claves pelean con
config()de Laravel, que parte por el punto. Sin el aplanado, una de las dos formas se ignoraría en silencio. estimatedno es un dato. El motor lo usa, pero el veredicto lo declara. Un motor que no sabe la calidad de sus entradas es un generador de cifras convincentes.- Aquí no se anota ningún precio de venta de Merez. Eso lo deriva Cóndor.
- La cifra de estado que el documento del módulo anota tiene fecha: vale como foto de ese día, no como salud de hoy. La salud se consulta.