feat(harness): language workspace param + skill riscritta in inglese (semantica completa)
Due cambiamenti interconnessi da user review:
1. language come parametro workspace (spec decisione 9):
- Config.language (default 'en') + workspaces PSD con 'language: it'
- Generalizza Thoth oltre l'italiano: descrizioni tabelle/colonne ed evidence
sono nel workspace language; le istruzioni della skill restano in inglese
(piu' affidabili per modelli piccoli, meno ambigue)
2. Skill riscritta in INGLESE preservando la semantica COMPLETA dell'originale
(autocritica: la mia riscrittura precedente aveva perso ~10 vincoli precisi):
- 'promuovere' ambiguo (3 accezioni: phase advance / recommend / memory promote)
-> 'never advance a phase or record a decision without confirmation'
- recuperati vincoli persi: choice-is-confirmation (no reviewer_confirm dopo
reviewer_decide), reviewer_select SOLO per iterazione no-decision, messaggi
auto-contenuti obbligatori, artefatto = superficie di decisione (gate rilegge
da disco per CTE/SQL), candidati con provenienza+score non verita', opzione
'leave ambiguity open', F1 passa lista completa non solo ultima
- language contract esplicito (istruzioni EN, output nel workspace language)
Sottomoduli cte/memoria/rewriting/sql-generation in inglese, semantica tecnica
intatta (regole AV-SQL, dim_time trick, max 5 memorie solo 3 tipi riusabili).
Verifica: 0 residui nsp/chirone, tutti i tht <cmd> citati registrati, 165 passed.
This commit is contained in:
@@ -1,40 +1,39 @@
|
||||
# Presentazione delle memorie riapplicabili
|
||||
# Presenting reusable memories
|
||||
|
||||
Le memorie arrivano da `tht memory search "<domanda>" --session <id> --json`,
|
||||
gia' ordinate per similarita'. Tu le argomenti, il reviewer decide. MAI
|
||||
applicarle da solo. **Passa SEMPRE `--session <id>`**: la CLI esclude le memorie
|
||||
gia' decise in questa sessione (applicate o rifiutate), cosi' non riproponi cio'
|
||||
che il reviewer ha gia' scartato (anche dopo un reopen della Fase 2).
|
||||
Memories arrive from `tht memory search "<question>" --session <id> --json`, already
|
||||
ordered by similarity. You argue them, the reviewer decides. NEVER apply them on
|
||||
your own. **ALWAYS pass `--session <id>`**: the CLI excludes memories already decided
|
||||
in this session (applied or rejected), so you don't re-propose what the reviewer has
|
||||
already discarded (even after a Phase 2 reopen).
|
||||
|
||||
Per ogni memoria da presentare in checklist, includi nella `label` e/o
|
||||
`description` dell'opzione:
|
||||
For each memory to present in the checklist, include in the option's `label` and/or
|
||||
`description`:
|
||||
|
||||
- **Cosa dice**: tipo + soggetto + detail (es. "table_promoted:
|
||||
fact_seeablazione — tabella principale per le ablazioni").
|
||||
- **Da dove viene**: question_context e session_id di origine.
|
||||
- **Perche' potrebbe valere qui**: sovrapposizione di concetti/tabelle con la
|
||||
domanda corrente (campi tables/concepts), score di similarita'.
|
||||
- **Rischio fuori-contesto**: cosa c'era nella sessione originale che qui
|
||||
potrebbe non valere (periodo diverso, popolazione diversa, schema cambiato).
|
||||
- **What it says**: type + subject + detail (e.g. "table_promoted:
|
||||
fact_seeablazione — main table for ablazioni").
|
||||
- **Where it comes from**: question_context and origin session_id.
|
||||
- **Why it might apply here**: overlap of concepts/tables with the current question
|
||||
(fields tables/concepts), similarity score.
|
||||
- **Out-of-context risk**: what was in the original session that might not hold here
|
||||
(different period, different population, changed schema).
|
||||
|
||||
Regole:
|
||||
Rules:
|
||||
|
||||
- Proponi al massimo **5** candidate. Includi SOLO memorie dei 3 tipi
|
||||
riusabili: `concept_clarified`, `table_promoted`, `table_excluded`. Le
|
||||
decisioni query-specifiche (es. `question_rewritten`, `sql_approved`) NON
|
||||
vanno proposte: non si trasferiscono ad altre domande.
|
||||
- Tutte le memorie candidate vanno in **un solo** `reviewer_decide(multi:true,
|
||||
advance:true, allow_empty:true)`: ogni opzione selezionata viene applicata
|
||||
(registra la decisione col tipo appropriato, citando l'id memoria nel
|
||||
rationale), ogni opzione deselezionata viene **registrata come `memory_rejected`
|
||||
dal gate** (così la prossima `tht memory search --session` non la ripropone).
|
||||
Per abilitare questo, OGNI opzione memoria DEVE portare il campo
|
||||
`mem_id:"mem-<id>"` (oltre a `type`/`subject`/`rationale`). La checklist parte
|
||||
pre-selezionata con le memorie raccomandate. Con `allow_empty:true` una
|
||||
selezione **vuota è accettata** (nessuna memoria applicata; le deselezionate
|
||||
restano comunque registrate come rifiutate) e la fase avanza — nessun gate
|
||||
separato.
|
||||
- Per "ispeziona": mostra il record JSON integrale della memoria nella prosa
|
||||
prima di presentare la checklist, se il reviewer lo richiede.
|
||||
- Se nessuna memoria supera score 0.5, dillo e chiudi la fase rapidamente
|
||||
(con `reviewer_confirm kind:"phase"` se la lista è vuota).
|
||||
- Propose at most **5** candidates. Include ONLY memories of the 3 reusable types:
|
||||
`concept_clarified`, `table_promoted`, `table_excluded`. Query-specific decisions
|
||||
(e.g. `question_rewritten`, `sql_approved`) are NOT to be proposed: they don't
|
||||
transfer to other questions.
|
||||
- All candidate memories go in **a single** `reviewer_decide(multi:true,
|
||||
advance:true, allow_empty:true)`: each selected option is applied (register the
|
||||
decision with the appropriate type, citing the memory id in the rationale), each
|
||||
deselected option is **recorded as `memory_rejected` by the gate** (so the next
|
||||
`tht memory search --session` won't re-propose it). To enable this, EVERY memory
|
||||
option MUST carry the field `mem_id:"mem-<id>"` (besides `type`/`subject`/
|
||||
`rationale`). The checklist starts pre-selected with the recommended memories.
|
||||
With `allow_empty:true` an **empty selection is accepted** (no memory applied; the
|
||||
deselected ones are still recorded as rejected) and the phase advances — no
|
||||
separate gate.
|
||||
- For "inspect": show the memory's full JSON record in the prose before presenting
|
||||
the checklist, if the reviewer asks.
|
||||
- If no memory clears score 0.5, say so and close the phase quickly (with
|
||||
`reviewer_confirm kind:"phase"` if the list is empty).
|
||||
|
||||
Reference in New Issue
Block a user