You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
⬜ **Rinominare il ruolo «Capitano» in «Coordinatore» (EN: «Captain» → «Coordinator») OVUNQUE.** Decisione utente 2026-06-21: il nome del ruolo cambia in tutto il sistema, **incluso il codice del container**. Grande rifattorizzazione, da fare in una sessione dedicata.
171
+
172
+
**Già fatto (solo web pubblico, estetica):** pagina `/agents` — rimossi gli emoji dai ruoli + rinominato il primo ruolo in «Il Coordinatore / The Coordinator» (titolo + descrizioni + menzioni in Sentinella/Assistente); `slug`/`promptId` → `coordinatore`/`team.coordinatore`; voce immagine in `landing-image-prompts.md` aggiornata.
173
+
174
+
**Da fare (il grosso — codice, agenti, runtime):**
175
+
-**Prompt agenti** — `agents/capitano/` (cartella + 7 file `capitano.*.md`), riferimenti a «Capitano/Captain» nei prompt degli altri ruoli e in `agents/_team/*` (architettura, team-rules), regole `C-NN` che lo nominano.
176
+
-**Container / runtime** — nomi sessione tmux (`SESSION-CAPITANO`), `start-agent.sh`/`.launcher`, role registry, `agent-watchdog`, eventuali `role == "capitano"` hardcoded in Python/JS.
177
+
-**CLI** — `jht team` (label/known agents), comandi che citano l'agente.
178
+
-**Web app (resto)** — route `web/app/api/capitano/chat`, pagine `(protected)/team`, `DashboardI18n`/`LandingI18n` e i18n 7 lingue, qualsiasi `capitano` nel codice web oltre `/agents`.
179
+
-**Menzioni testuali residue sul sito pubblico** — guide `/docs` (es. getting-started «The Captain dispatches…»), copy landing.
180
+
-**Compat** — decidere se mantenere alias `capitano` (slug DB/sessione) per non rompere team in esecuzione, o migrare con mapping. ⚠️ Tocca team live: pianificare il cutover.
181
+
182
+
**Approccio suggerito:** un censimento `git grep -i 'capitan\|captain'` → tabella per-area → rinomina a ondate (1 web testo, 2 prompt agenti+i18n, 3 runtime/CLI con alias di compat). Verificare team live non si rompa.
183
+
184
+
---
185
+
168
186
### 1️⃣ PHASE 1 — Web Platform Consolidation (current sprint)
Die 5 Teilscores bilden DB-Spalten ab: `stack_match · remote_fit · salary_fit · experience_fit · strategic_fit`. `--total` ist der kanonische 0-100-Score, den der Captain liest.
53
53
54
+
**Ein Score pro Aufruf — sofort schreiben.** Der Scorer schreibt den Score direkt nach der Bewertung EINER Position und geht dann zur nächsten. **Niemals** mehrere Positionen bewerten und am Ende der Runde alle `score`-Inserts zusammen abfeuern: sie würden dieselbe `scored_at`-Sekunde teilen und hastig wirken. Eine Position → eine Bewertung → ein sofortiges Insert → die nächste (Scorer RULE-08).
Las 5 sub-puntuaciones mapean a columnas de la DB: `stack_match · remote_fit · salary_fit · experience_fit · strategic_fit`. `--total` es la puntuación canónica 0–100 que lee el Captain.
53
53
54
+
**Un score por llamada — escríbelo enseguida.** El Scorer escribe el score justo después de evaluar UNA posición y luego pasa a la siguiente. **Nunca** evalúes varias posiciones y lances todos los insert `score` juntos al final de la ronda: compartirían el mismo segundo `scored_at` y parecería apresurado. Una posición → una evaluación → un insert inmediato → la siguiente (Scorer RULE-08).
Les 5 sous-scores correspondent aux colonnes DB : `stack_match · remote_fit · salary_fit · experience_fit · strategic_fit`. `--total` est le score canonique 0-100 que le Capitano lit.
53
53
54
+
**Un score par appel — écris-le tout de suite.** Le Scorer écrit le score juste après avoir évalué UNE position, puis passe à la suivante. **Jamais** évaluer plusieurs positions et lancer tous les insert `score` ensemble en fin de tour : ils partageraient la même seconde `scored_at` et paraîtraient précipités. Une position → une évaluation → un insert immédiat → la suivante (Scorer RULE-08).
Az 5 alpontszám DB oszlopoknak felel meg: `stack_match · remote_fit · salary_fit · experience_fit · strategic_fit`. A `--total` a kanonikus 0–100 pontszám, amelyet a Capitano olvas.
53
53
54
+
**Egy score hívásonként — írd be azonnal.** A Scorer EGY pozíció kiértékelése után rögtön beírja a score-t, majd a következőre lép. **Soha** ne értékelj több pozíciót és lődd ki az összes `score` insertet együtt a kör végén: ugyanazt a `scored_at` másodpercet kapnák és kapkodónak tűnne. Egy pozíció → egy kiértékelés → egy azonnali insert → a következő (Scorer RULE-08).
I 5 sotto-punteggi mappano alle colonne del DB: `stack_match · remote_fit · salary_fit · experience_fit · strategic_fit`. `--total` è il punteggio canonico 0–100 che il Capitano legge.
53
53
54
+
**Uno score per chiamata — scrivilo subito.** Lo Scorer scrive lo score appena valutata UNA posizione, poi passa alla prossima. **Mai** valutare più posizioni e lanciare tutti gli insert `score` insieme a fine giro: condividerebbero lo stesso secondo `scored_at` e sembrerebbe frettoloso. Una posizione → una valutazione → un insert immediato → la prossima (Scorer RULE-08).
The 5 sub-scores map to DB columns: `stack_match · remote_fit · salary_fit · experience_fit · strategic_fit`. `--total` is the canonical 0–100 score the Captain reads.
52
52
53
+
**One score per call — write it immediately.** The Scorer writes the score right after evaluating ONE position, then moves to the next. **Never** evaluate several positions and fire all the `score` inserts together at the end of the round: they would share the same `scored_at` second and look rushed. One position → one evaluation → one immediate insert → next (Scorer RULE-08).
As 5 sub-pontuações mapeiam para colunas do DB: `stack_match · remote_fit · salary_fit · experience_fit · strategic_fit`. `--total` é a pontuação canónica 0–100 que o Capitano lê.
53
53
54
+
**Um score por chamada — escreve-o já.** O Scorer escreve o score logo após avaliar UMA posição e depois passa à próxima. **Nunca** avaliar várias posições e disparar todos os insert `score` juntos no fim da ronda: partilhariam o mesmo segundo `scored_at` e pareceria apressado. Uma posição → uma avaliação → um insert imediato → a próxima (Scorer RULE-08).
Copy file name to clipboardExpand all lines: agents/scorer/scorer.de.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -87,6 +87,9 @@ Schreibe NUR in `scores` (INSERT) und `positions.status`. NIEMALS `applications`
87
87
88
88
**RULE-07 — CAPITANO-SESSION**: sende Nachrichten an `CAPITANO`.
89
89
90
+
**RULE-08 — EINE NACH DER ANDEREN, SOFORT SCHREIBEN (KEIN BATCHING)**
91
+
Bewerte Positionen **strikt eine nach der anderen**. Bewerte EINE Position vollständig und **schreibe ihr Ergebnis sofort in die DB** (`db_insert.py score` + `db_update.py position --status`), und ERST DANN lies/bewerte die nächste. **NIEMALS** mehrere Positionen bewerten und am Ende der Runde alle zusammen schreiben. Batching lässt mehrere Scores denselben `scored_at`-Sekundenwert teilen: das wirkt auf den User hastig/oberflächlich, auch wenn jeder Score einzeln durchdacht wurde. Eine Position → eine fokussierte Bewertung → ein sofortiges DB-Schreiben → die nächste. So bleibt die Aktivitäts-Timeline ehrlich (unterschiedliche Timestamps = sichtbar sequenzielle Arbeit).
92
+
90
93
---
91
94
92
95
## SCORING-FORMEL
@@ -127,6 +130,8 @@ python3 /app/shared/skills/db_query.py position <ID>
127
130
6. Speichere Score in DB
128
131
7. Status aktualisieren + eventuell Scrittori benachrichtigen
129
132
133
+
**Führe die Schritte 1-7 für EINE Position aus und schreibe sie in die DB, BEVOR du die nächste liest oder bewertest (RULE-08 — kein Batching am Ende der Runde).**
Nach Berechnung des Base-Scores frage die Cloud nach eventuellen Like/Dislike/Hide/Star, die der User auf dieser Position geklickt hat. Die Skill hard-failt nie: wenn die Cloud deaktiviert oder nicht erreichbar ist, gibt sie `latest_action=null` mit einer `note` zurück, sodass der Multiplier zu einem No-Op wird und du normal fortfährst.
Copy file name to clipboardExpand all lines: agents/scorer/scorer.es.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -87,6 +87,9 @@ Escribe SOLO en `scores` (INSERT) y `positions.status`. NUNCA toques `applicatio
87
87
88
88
**RULE-07 — SESIÓN CAPITANO**: envía mensajes a `CAPITANO`.
89
89
90
+
**RULE-08 — UNA A LA VEZ, ESCRITURA INMEDIATA (SIN BATCHING)**
91
+
Evalúa las posiciones **estrictamente una a la vez**. Evalúa UNA posición y **escribe su resultado en la DB enseguida** (`db_insert.py score` + `db_update.py position --status`), y SOLO DESPUÉS lee/evalúa la siguiente. **NUNCA** evalúes varias posiciones y luego las escribas todas juntas al final de la ronda. El batch hace que varios scores compartan el mismo segundo `scored_at`: parece apresurado/superficial al usuario aunque cada score se haya razonado individualmente. Una posición → una evaluación enfocada → una escritura DB inmediata → la siguiente. Así la timeline de actividad queda verídica (timestamps distintos = trabajo visiblemente secuencial).
92
+
90
93
---
91
94
92
95
## FÓRMULA DE SCORING
@@ -127,6 +130,8 @@ python3 /app/shared/skills/db_query.py position <ID>
127
130
6. Guarda score en DB
128
131
7. Actualiza status + posible notify a los Scrittori
129
132
133
+
**Completa los pasos 1-7 para UNA posición y escríbela en la DB ANTES de leer o evaluar la siguiente (RULE-08 — sin batching al final de la ronda).**
Después de calcular el base score, query la cloud para eventuales like/dislike/hide/star que el usuario haya clickeado en esta posición. La skill nunca hard-falla: cuando la cloud está deshabilitada o inalcanzable retorna `latest_action=null` con una `note`, así que el multiplier se vuelve no-op y procedes normalmente.
0 commit comments