Skip to content

Commit b220db4

Browse files
leopu00claude
andcommitted
docs: bug #21 applications.status mai promosso draft->ready dopo Critic PASS
Snapshot pagina /ready 2026-05-17: CV PRONTI 0, IN ATTESA CV 13. Ma Capitano dice "12 CV ready" e pipeline_overview.png mostra Ready: 12. Tre verita' diverse. Diagnosi via DB locale /jht_home/jobs.db (SQLite container): - applications: 31 totali, TUTTE status='draft' - positions: 62 excluded, 13 ready, 10 scored Pagina web e' corretta. Bug a monte: nessuno aggiorna applications.status da 'draft' a 'ready' dopo Critic PASS. Lo step di promotion semplicemente manca dal flow Scrittore->Critic->PDF. Fix opzione A: aggiungere step 4 in critic-loop/SKILL.md "su PASS, UPDATE applications SET status='ready'". Gate single-writer in db-update: "applications.status='ready' solo dal Critic". Retrofit SQL una tantum per le 12 application con verdict='PASS' attualmente in draft. Sblocca catena di 3 bug: #9 (submit-application avra' record da spedire), #20 (/reports potra' mostrare numeri reali), #14 (la promotion diventa event log). Collegato a #17 (Capitano avrebbe dovuto fare SELECT di verifica ma non lo fa mai). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 33b6417 commit b220db4

1 file changed

Lines changed: 138 additions & 0 deletions

File tree

docs/internal/2026-05-17-team-strategy-bugs.md

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1457,6 +1457,143 @@ file `web/app/api/reports/route.ts` (89 righe, 100% mock).
14571457

14581458
---
14591459

1460+
## 🐛 21. `applications.status` mai promosso da `draft` a `ready` dopo Critic PASS
1461+
1462+
**Sintomo** (rilevato 2026-05-17 ~14:30 UTC dalla pagina `/ready`):
1463+
1464+
| Fonte | Cosa dice |
1465+
|---|---|
1466+
| Pagina `/ready` cloud | CV PRONTI: **0** / IN ATTESA CV: 13 |
1467+
| Capitano via Telegram | *"12 CV ready"* (msg 13:14) / *"4 CV ready (Bending, Rinse, Gr4vy, Canonical)"* (00:58) |
1468+
| `pipeline_overview.png` (Capitano) | Ready: **12** |
1469+
| **DB SQLite locale `/jht_home/jobs.db`** | `applications` = 31 totali, **TUTTE `status='draft'`**|
1470+
| Stessa query | `positions` = 62 excluded, 13 ready, 10 scored |
1471+
1472+
Tre "verità" diverse:
1473+
- **Capitano** dice 12 ready (e ha ragione concettualmente: 12 CV con
1474+
Critic PASS, PDF pronto)
1475+
- **DB** dice 0 ready (e ha ragione tecnicamente: nessuna application
1476+
ha `status='ready'`)
1477+
- **Cloud `/ready`** dice 0 ready (riflette il DB)
1478+
1479+
La pagina web è corretta; il bug è a monte: **nessuno aggiorna
1480+
`applications.status` da `'draft'` a `'ready'` quando il Critic dà PASS
1481+
e il PDF viene generato**.
1482+
1483+
**Causa** — manca lo step di promotion. Flow attuale:
1484+
1485+
```
1486+
1. Scrittore-1 crea draft → INSERT applications (status='draft')
1487+
2. Critic legge draft + dà voto → write critic_score, critic_notes
1488+
3. Critic 5.5/10 PASS → ???
1489+
4. Scrittore-1 genera PDF → UPDATE applications SET cv_path=..., cv_pdf_path=...
1490+
5. PDF ready → 🚨 NESSUNO esegue: UPDATE applications SET status='ready'
1491+
```
1492+
1493+
L'evidenza: nei `wire.jsonl` Capitano/Scrittore di `_skills/critic-loop/`
1494+
e `_skills/db-update/` probabilmente la transizione `status='ready'`
1495+
non è scritta da nessuna parte. Il Critic riconosce visivamente "PASS"
1496+
nel suo report, ma quel concetto non viene tradotto in DB update.
1497+
1498+
**Conseguenze a cascata**:
1499+
1500+
1. **Bug #20 (`/reports` mock)** difficile da fixare a metà strada:
1501+
anche se sostituiamo i mock con query Supabase reali, mostreranno
1502+
sempre 0 perché `applications.status='ready'` è 0.
1503+
2. **Pagina `/applications`** probabilmente mostra 31 draft tutti
1504+
"incompleti" — l'utente non vede mai uno stato "pronto".
1505+
3. **Bug #9 (`submit-application` skill mancante)** auto-bloccato:
1506+
anche se aggiungiamo la skill, dovrebbe pescare solo
1507+
`WHERE status='ready'` → 0 record → niente da spedire mai. Il bug
1508+
#9 non si può manifestare finché #21 non è chiuso.
1509+
4. **Trust del Capitano**: il Capitano dice *"ready"* nei suoi report
1510+
ma il DB lo smentisce. Manuale del Capitano e schema DB non sono
1511+
allineati semanticamente.
1512+
1513+
**Fix proposto** — aggiungere lo step di promotion in 1 di 2 punti:
1514+
1515+
### Opzione A — Critic chiude con UPDATE atomic
1516+
1517+
In `agents/_skills/critic-loop/SKILL.md` aggiungere step finale:
1518+
1519+
```
1520+
4. Dopo verdetto:
1521+
- Se PASS: UPDATE applications SET status='ready', ready_at=NOW(),
1522+
critic_score=X, critic_verdict='PASS'
1523+
WHERE id=<app_id>
1524+
- Se FAIL: UPDATE applications SET status='draft' (resta),
1525+
critic_score=X, critic_verdict='FAIL',
1526+
critic_notes='<motivo>'
1527+
WHERE id=<app_id>
1528+
- Se REWRITE: UPDATE applications SET status='rewrite_requested'
1529+
WHERE id=<app_id> (per Scrittore loop)
1530+
```
1531+
1532+
### Opzione B — Scrittore promuove dopo PDF generation
1533+
1534+
In `agents/_skills/cv-generate/SKILL.md` (o pdf-generate) aggiungere
1535+
ultimo step:
1536+
1537+
```
1538+
5. Dopo generazione PDF + Critic PASS confermato:
1539+
UPDATE applications
1540+
SET status='ready', cv_pdf_path=<path>, ready_at=NOW()
1541+
WHERE id=<app_id>
1542+
```
1543+
1544+
**Raccomandazione**: **Opzione A** — il Critic è il "gate" naturale
1545+
(PASS/FAIL), e la promotion è semanticamente "il Critic approva il
1546+
draft". Coerente con il flusso di approvazione.
1547+
1548+
**Aggiunta a `db-update` SKILL.md**: regola esplicita
1549+
*"applications.status='ready' è SOLO impostabile dal Critic, mai
1550+
direttamente dallo Scrittore"* — gate single-writer.
1551+
1552+
**Dipendenze**:
1553+
- Bug **#14** (state-event log): se attivo, la transition
1554+
`draft → ready` viene loggata automaticamente con `by_agent='critico-s1'`.
1555+
- Bug **#9** (submit-application): si sblocca DOPO il fix di #21 — la
1556+
skill `submit-application` deve filtrare `WHERE status='ready'` e
1557+
promuovere a `'sent'` dopo invio.
1558+
- Bug **#20** (`/reports` mock): si sblocca dopo #21 perché la pagina
1559+
potrà finalmente mostrare numeri reali invece di mock.
1560+
1561+
**Priorità**: **alta**. È il **gate stato-tabella** che disallinea
1562+
Capitano/Critic concettuali dal DB. Sblocca contemporaneamente #9, #20,
1563+
e parzialmente #14.
1564+
1565+
**Effort**: piccolo. ~10-20 righe in `critic-loop/SKILL.md` + 1 regola
1566+
in `db-update/SKILL.md` + retrofit eventuale: una query SQL
1567+
`UPDATE applications SET status='ready' WHERE id IN (...)` per
1568+
promuovere retroattivamente le 12 application con `critic_verdict='PASS'`
1569+
attualmente in `draft`.
1570+
1571+
**Validazione**:
1572+
- Dopo fix: nuovo flow Scrittore→Critic deve risultare in
1573+
`applications.status='ready'` per i PASS.
1574+
- Query SQL di verifica:
1575+
```sql
1576+
SELECT status, critic_verdict, COUNT(*)
1577+
FROM applications
1578+
GROUP BY status, critic_verdict;
1579+
```
1580+
Atteso: tutte le righe con `critic_verdict='PASS'` hanno
1581+
`status='ready'`. Nessun `status='draft'` con `critic_verdict='PASS'`.
1582+
- Pagina `/ready` deve mostrare 12 CV PRONTI (corrispondenti ai 12 PASS).
1583+
1584+
**Riferimento conversazionale**: snapshot pagina `/ready` 2026-05-17,
1585+
DB locale `/jht_home/jobs.db` ispezionato via SSH.
1586+
1587+
**Bug collegati / catena**:
1588+
- **#21 sblocca #9**: senza promotion, submit-application non ha cosa spedire.
1589+
- **#21 sblocca #20**: senza promotion, /reports vede 0 ready ovunque.
1590+
- **#14**: se attivo, registra la promotion come event log.
1591+
- **#17** (Capitano passivo): il Capitano avrebbe dovuto notare la
1592+
divergenza tra "12 ready" detto a voce e "0 ready" nel DB, ma non
1593+
ha mai fatto query di verifica `SELECT status FROM applications`.
1594+
1595+
---
1596+
14601597
## 📋 Riepilogo priorità
14611598

14621599
| # | Bug | Priorità | Effort |
@@ -1471,6 +1608,7 @@ file `web/app/api/reports/route.ts` (89 righe, 100% mock).
14711608
| 18 | **Dottore mai spawnato** (watchdog non lo include) | **alta** | piccolo-medio |
14721609
| 19 | **Capitano non sa weekly reset Kimi** (dato + C-06 indaga) | media-alta | piccolo |
14731610
| 20 | 🚨 **`/reports` 100% mock** — zero query Supabase | **alta** | piccolo-medio |
1611+
| 21 | 🚨 **`applications.status` mai promosso draft→ready** dopo Critic PASS | **alta** | piccolo |
14741612
| 3 | Capitano gerarchia utente > Sentinella | media | piccolo (prompt) |
14751613
| 4 | Performance band 85-95% rispettata | media | piccolo (post #2+#3) |
14761614
| 7 | Sync history conversazione su web | media | medio |

0 commit comments

Comments
 (0)