Close TASK-106 with runtime validation evidence
This commit is contained in:
@@ -0,0 +1,80 @@
|
|||||||
|
# TASK-106-rcon-primary-summary-and-recent-runtime-fix
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
Corregir la frontera runtime para que `historical server summary` y `recent historical matches` usen realmente la capa RCON-backed como fuente primaria cuando haya cobertura suficiente, dejando `public-scoreboard` solo como fallback explicito.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
Las pruebas reales iniciales del sistema habian mostrado que:
|
||||||
|
- `build_historical_server_summary_payload(...)`
|
||||||
|
- `build_recent_historical_matches_payload(...)`
|
||||||
|
|
||||||
|
seguian devolviendo en runtime:
|
||||||
|
- `selected_source = "public-scoreboard"`
|
||||||
|
- `fallback_used = true`
|
||||||
|
|
||||||
|
cuando el objetivo de producto era que, si existe cobertura RCON suficiente, esas rutas fueran realmente RCON-first efectivas y no solo nominales.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
Backend solamente. Sin cambios en frontend.
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
1. Auditar:
|
||||||
|
- `backend/app/payloads.py`
|
||||||
|
- `backend/app/rcon_historical_read_model.py`
|
||||||
|
- `backend/app/rcon_historical_storage.py`
|
||||||
|
- `backend/app/historical_snapshots.py`
|
||||||
|
- `backend/app/data_sources.py`
|
||||||
|
2. Identificar por que `summary` y `recent-matches` seguian seleccionando `public-scoreboard` en las pruebas reales.
|
||||||
|
3. Corregir la seleccion runtime para que:
|
||||||
|
- si hay cobertura/capability RCON suficiente -> `selected_source = "rcon"`
|
||||||
|
- si no la hay -> fallback explicito a `public-scoreboard`
|
||||||
|
4. Mantener trazabilidad clara:
|
||||||
|
- `primary_source`
|
||||||
|
- `selected_source`
|
||||||
|
- `fallback_used`
|
||||||
|
- `fallback_reason`
|
||||||
|
- `source_attempts`
|
||||||
|
5. Alinear snapshots o materializaciones si hace falta para que no obliguen a caer innecesariamente al historico clasico.
|
||||||
|
6. Actualizar README/runbook explicando la frontera exacta de summary/recent.
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
- No fingir cobertura RCON si no existe.
|
||||||
|
- No romper endpoints existentes.
|
||||||
|
- No eliminar `public-scoreboard` como red de seguridad.
|
||||||
|
- No tocar frontend.
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
- `historical server summary` usa RCON como primario real cuando hay cobertura.
|
||||||
|
- `recent historical matches` usa RCON como primario real cuando hay cobertura.
|
||||||
|
- Cuando no haya cobertura, el fallback a `public-scoreboard` sigue siendo explicito y observable.
|
||||||
|
- La repo queda consistente.
|
||||||
|
|
||||||
|
## Expected Files
|
||||||
|
- `backend/app/payloads.py`
|
||||||
|
- `backend/app/rcon_historical_read_model.py`
|
||||||
|
- `backend/app/rcon_historical_storage.py`
|
||||||
|
- `backend/app/historical_snapshots.py`
|
||||||
|
- `backend/app/data_sources.py`
|
||||||
|
- `backend/README.md`
|
||||||
|
- otros archivos backend solo si son estrictamente necesarios
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
- Ya existe evidencia runtime real suficiente para considerar cumplido el objetivo funcional de la task.
|
||||||
|
- Para `server_slug = "comunidad-hispana-01"`:
|
||||||
|
- `build_historical_server_summary_payload(...)` devuelve:
|
||||||
|
- `selected_source = "rcon"`
|
||||||
|
- `fallback_used = false`
|
||||||
|
- `summary_basis = "rcon-competitive-windows"`
|
||||||
|
- `build_recent_historical_matches_payload(..., limit=2)` devuelve:
|
||||||
|
- `selected_source = "rcon"`
|
||||||
|
- `fallback_used = false`
|
||||||
|
- Esto demuestra que la frontera runtime RCON-first ya funciona con cobertura real para al menos un servidor y que `summary` y `recent-matches` ya no quedan solo en una intencion nominal.
|
||||||
|
- El fallback a `public-scoreboard` sigue intacto y sigue siendo la degradacion correcta cuando:
|
||||||
|
- no hay cobertura RCON suficiente
|
||||||
|
- un target falla
|
||||||
|
- la capability concreta no puede servirse de forma fiable desde RCON
|
||||||
|
- `comunidad-hispana-03` sigue teniendo una incidencia separada de `auth/login`, pero eso no invalida el cierre funcional de esta task porque la frontera runtime pedida aqui ya quedo validada con datos reales en al menos un servidor con cobertura.
|
||||||
|
|
||||||
|
## Validation Notes
|
||||||
|
- Cierre administrativo basado en evidencia runtime ya validada y aportada fuera de esta actualizacion.
|
||||||
|
- No se rehacen pruebas ni se introducen cambios funcionales adicionales para este cierre.
|
||||||
Reference in New Issue
Block a user