chore: auto-commit (27 archivos)
- .claude/CLAUDE.md - .claude/rules/create_agent.md - agents/_specials/father-bot/prompts/system.md - agents/_template/config.yaml - agents/_template_robot/config.yaml - cmd/agentctl/autoavatar.go - cmd/launcher/sqlite.go - dev-scripts/_common.sh - dev-scripts/agent/create-full.sh - dev-scripts/agent/delete-full.sh - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -128,3 +128,69 @@ Y re-ejecutar los tests para forzar login fresco.
|
||||
- **Tests secuenciales**: `fullyParallel: false` y `workers: 1` para evitar race conditions en el timeline de Matrix.
|
||||
- **Timeouts generosos**: 60s por test, 30s para expect. Los LLMs pueden tardar 5-20s en responder.
|
||||
- **Retry en CI**: 1 retry en CI para manejar timeouts ocasionales.
|
||||
|
||||
---
|
||||
|
||||
## agent-wsl-lucas (issue 0144 / flow 0009)
|
||||
|
||||
Tests con cobertura DoD Quality Triada (registry rule `dod_quality.md`) que **no se fian de la respuesta visual del bot**: cruzan cada turno contra logs SSH del VPS y contra la audit DB local del `device_agent`.
|
||||
|
||||
### Que validan
|
||||
|
||||
| Capa | Tests | Por que |
|
||||
|------|-------|---------|
|
||||
| 1. Mecanica | `M1` bot alive, `M2` matrix sync, `M3` mesh tools >=14 | pre-requisito, NO es DoD |
|
||||
| 2. Cobertura | `C1` exec golden, `C2` fs.list golden, `C3` shell.eval auto-approve, `C4` rm -rf bloqueado, `C5` tool no-en-manifest, `C6` device_agent down, `C7` hash chain | 1 golden + 2 edge + 1 error path por DoD |
|
||||
| 3. Vida util | `V1` systemd uptime, `V2` tool ratio, `V3` latencia | sobrevivir uso real |
|
||||
| Anti-criterios | `A1` no ERROR inesperado, `A2` chain intacta, `A3` claim sin audit = hallucination | invalidan DoD aunque otros pasen |
|
||||
|
||||
### Cross-checks (no fake passes)
|
||||
|
||||
- **A3 (anti-criterio clave)**: si el agent log VPS muestra `executing tool` para `exec` / `shell.eval` / `fs.*` pero `audit_log` no tiene entries, el test falla — captura LLM hallucinando ejecuciones sin tocar el device.
|
||||
- **Hash chain**: `verifyHashChain` recomputa `sha256(prev|ts|req|cap|args_hash|exit)` y compara con `this_hash` de cada fila. Detecta tampering en `audit_log`.
|
||||
|
||||
### Prerequisitos
|
||||
|
||||
1. **device_agent corriendo en WSL** en `10.42.0.10:7474` con `--audit /tmp/device_audit.db`.
|
||||
2. **`agents_and_robots.service` activo** en VPS `organic-machine.com`.
|
||||
3. **SSH key-based** al VPS (`ssh organic-machine.com true` sin password). Override con `AGENT_LOG_SSH_TARGET`.
|
||||
4. **claude CLI** instalado en el VPS para que `agent-wsl-lucas` pueda generar respuestas.
|
||||
5. **`e2e/.env`** con `MATRIX_*` rellenado.
|
||||
|
||||
Ejecuta el preflight para verificarlo todo:
|
||||
|
||||
```bash
|
||||
./scripts/setup-agent-wsl-lucas.sh
|
||||
# o
|
||||
npm run preflight:agent-wsl-lucas
|
||||
```
|
||||
|
||||
### Run
|
||||
|
||||
```bash
|
||||
cd e2e
|
||||
npm install # instala better-sqlite3
|
||||
npm run test:agent-wsl-lucas # ejecuta solo este spec
|
||||
# o filtrando una capa
|
||||
npx playwright test agent-wsl-lucas.spec.ts -g "Capa 2"
|
||||
# o un test concreto
|
||||
npx playwright test agent-wsl-lucas.spec.ts -g "C1: golden exec"
|
||||
```
|
||||
|
||||
### Variables de entorno extra (todas opcionales)
|
||||
|
||||
| Variable | Default | Para que |
|
||||
|----------|---------|----------|
|
||||
| `AGENT_WSL_LUCAS_ROOM` | `Agent Wsl Lucas` | nombre del room en Element |
|
||||
| `AGENT_WSL_LUCAS_DISPLAY` | `Agent Wsl Lucas` | display name del bot para filtrar replies |
|
||||
| `AGENT_LOG_SSH_TARGET` | `organic-machine.com` | alias ssh del VPS |
|
||||
| `AGENT_LOG_BASE_DIR` | `/home/ubuntu/CodeProyects/agents_and_robots/logs` | base de logs en VPS |
|
||||
| `DEVICE_AUDIT_DB` | `/tmp/device_audit.db` | audit DB del device_agent |
|
||||
| `AGENT_LATENCY_THRESHOLD_MS` | `20000` | umbral para V3 (claude-code puede ser lento) |
|
||||
|
||||
### Reports
|
||||
|
||||
Output por defecto en `e2e/test-results/`. HTML report con `npx playwright show-report`.
|
||||
|
||||
Los tests `C*` imprimen el `JSON.stringify` de las filas `audit_log` cuando fallan — facil de pegar en un issue para debugging.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user