fix(gate): actionable recovery for mid-promotion failures; truthful solved-index copy; fast-follow notes
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+10
-1
@@ -53,7 +53,7 @@ Opens frontend at http://localhost:5173 → backend :8787.
|
||||
- frontend: `cd frontend && npm run dev` (Vite; `VITE_BACKEND_URL` → backend)
|
||||
- harness install: `cd harness && python -m venv .venv && pip install -e ".[dev]"` → `tht` on PATH
|
||||
|
||||
## How to test (all green as of 2026-07-07: harness pytest 314 / gate JS 103 / backend 71 / frontend 182)
|
||||
## How to test (all green as of 2026-07-07: harness pytest 330 / gate JS 107 / backend 71 / frontend 182)
|
||||
- harness: `cd harness && .venv/bin/pytest -q` (5 L2/real-DB tests are deselected by default)
|
||||
- backend: `cd backend && npx vitest run` · typecheck `npx tsc --noEmit -p .`
|
||||
- frontend: `cd frontend && npx vitest run` · typecheck `npx tsc -b` · e2e `npm run e2e` (Playwright)
|
||||
@@ -104,6 +104,15 @@ workspace `psd` via `./scripts/run-stack.sh` to verify (a) the promotion checkli
|
||||
pre-selected and persists selected/declined correctly, (b) finalize indexes the pair,
|
||||
(c) `tht memory solved-search` returns it with sql + tables.
|
||||
|
||||
**Fast-follow:**
|
||||
- RestSearcher top-k dilution: `memory` and `solved_question` share the pgvector table and
|
||||
`search_similar` has no server-side kind filter — with many solved records the client-side
|
||||
filter can starve `tht memory search` results (and vice versa); fix = over-fetch (top_n*3)
|
||||
when kinds is a strict subset, or kind param in the RPC — da fare prima che i solved record
|
||||
si accumulino.
|
||||
- `tht memory solved-search` muore con traceback grezzo se il vectordb è irraggiungibile
|
||||
(SKILL.md la prescrive in F4/F6/F7) — degradare a messaggio di una riga.
|
||||
|
||||
## Review gates v2 — payload strutturati + viewer dedicati — COMPLETE (2026-07-07)
|
||||
|
||||
Plan: `~/.claude/plans/prima-di-passare-ai-inherited-marshmallow.md`. Merged to `main` @ `2410f01`
|
||||
|
||||
@@ -1076,13 +1076,13 @@ export default function (pi) {
|
||||
ctx,
|
||||
["memory", "save-one", "--session", session,
|
||||
"--decision", String(c.decision_seq), "--json"],
|
||||
"",
|
||||
`Recupero manuale (umano): tht memory save-one --session ${session} --decision ${c.decision_seq}. Finora salvate: ${saved}.`,
|
||||
);
|
||||
if (err) return err;
|
||||
const e2 = relayIfThtFails(ctx, decisionAddArgs(session, {
|
||||
type: "memory_promoted", subject: c.subject,
|
||||
detail: `seq:${c.decision_seq}`, rationale: c.rationale || c.detail || "",
|
||||
}), "");
|
||||
}), `Memoria salvata nel vectordb ma decisione memory_promoted NON registrata: recupero manuale (umano) con tht decision add --session ${session} --type memory_promoted --subject "${c.subject}" --detail seq:${c.decision_seq}.`);
|
||||
if (e2) return e2;
|
||||
saved++;
|
||||
}
|
||||
|
||||
@@ -456,8 +456,8 @@ def index_solved_session(cfg, session_id: str) -> int:
|
||||
|
||||
if not has_vector_write_rest(cfg):
|
||||
raise RuntimeError(
|
||||
"vector_write_rest assente: la coppia domanda->SQL si indicizza con la "
|
||||
"writer key (workstation) o dal server"
|
||||
"vector_write_rest assente: la coppia domanda->SQL si indicizza solo con la "
|
||||
"writer key configurata nel workspace yaml"
|
||||
)
|
||||
manifest = load_session_or_exit(cfg, session_id)
|
||||
record = build_solved_record(
|
||||
|
||||
Reference in New Issue
Block a user