refactor(memory): own solved-question lifecycle (#24)

This commit is contained in:
2026-08-24 01:23:39 +02:00
parent 93fe0d733b
commit 4a654de84a
13 changed files with 511 additions and 201 deletions
+10 -3
View File
@@ -25,7 +25,10 @@ F8: il reviewer decide se promuoverla
L'invariante principale è `REUSABLE_TYPES = {"concept_clarified"}`: le sole memory generabili, salvabili, ricercabili e proponibili sono i concetti chiariti. Le decisioni `table_promoted`, `table_excluded`, `column_promoted` e analoghe restano decisioni locali alla domanda.
Implementazione principale: [harness/tht/memory.py](../harness/tht/memory.py:14) e [harness/tht/cli/memory_cmd.py](../harness/tht/cli/memory_cmd.py:368).
Implementazione principale: la façade [harness/tht/memory/](../harness/tht/memory/),
con le policy riusabili in
[harness/tht/memory/core.py](../harness/tht/memory/core.py), e l'adapter
[harness/tht/cli/memory_cmd.py](../harness/tht/cli/memory_cmd.py).
## I tre livelli della gestione
@@ -90,7 +93,10 @@ La preview:
5. deduplica contenuti equivalenti;
6. propone al massimo cinque candidati.
Il codice applica il filtro e la deduplica in [harness/tht/memory.py](../harness/tht/memory.py:199); il gate applica un ulteriore filtro difensivo in [harness/.pi/extensions/tht-gate.js](../harness/.pi/extensions/tht-gate.js:628).
Il codice applica il filtro e la deduplica in
[harness/tht/memory/core.py](../harness/tht/memory/core.py); il gate applica un
ulteriore filtro difensivo in
[harness/.pi/extensions/gate/memory/index.js](../harness/.pi/extensions/gate/memory/index.js).
Il reviewer vede un'unica checklist, preselezionata. Per ogni candidato:
@@ -126,7 +132,8 @@ Dopo la promozione, `save-one` costruisce un solo `VectorRecord` e lo invia all'
Il record vettoriale usa l'id `memory:mem-XXXX`, mentre i metadati conservano `subject`, `detail`, `rationale`, `tables`, `concepts` e il discriminante `kind`. L'hash SHA-256 del contenuto impedisce di ricalcolare embedding e upsert quando il testo non è cambiato.
Il comportamento è implementato in [harness/tht/memory.py](../harness/tht/memory.py:253) e [harness/tht/memory.py](../harness/tht/memory.py:305).
Il comportamento è implementato in
[harness/tht/memory/core.py](../harness/tht/memory/core.py).
### Fonte canonica attuale