Created: 2026-03-31 Status: IN PROGRESS Branch: development Project: MindSpark: ThoughtForge
Build the refinement layer: FragmentSalvage (multi-pass draft scoring + reassembly), EnforcementGate (citation integrity + response validation), wire both into ThoughtForgeCore, and deliver run_thoughtforge.py interactive CLI.
- Phase 0–3 complete, 191 tests passing
- ThoughtForgeCore.think() full pipeline working
- Inline fragment scoring in core.py (to be replaced/augmented)
- Inline citation check in core.py (to be replaced with EnforcementGate)
- refinement/init.py stub only
- Write this TASK file + commit
-
src/thoughtforge/refinement/salvage.py— FragmentSalvage.forge() -
src/thoughtforge/refinement/enforcement.py— EnforcementGate -
src/thoughtforge/refinement/__init__.py— exports - Update
src/thoughtforge/cognition/core.py— wire salvage + enforcement -
run_thoughtforge.py— interactive CLI -
tests/test_phase4_refinement.py— test suite - Git commit Phase 4
| Module | Class | Key Method |
|---|---|---|
refinement/salvage.py |
FragmentSalvage |
forge(candidates, bundle, engine, prompt_builder, sketch, scaffold) -> SalvageResult |
refinement/enforcement.py |
EnforcementGate |
check(text, citations, bundle) -> EnforcementResult |
run_thoughtforge.py |
— | Interactive REPL + single-query mode |
- Score each candidate: length_score (45%) + citation_score (55%) per BUILD_PLAN_v1
- Extract top sentences from best-scoring candidates
- Attempt refine pass via engine (if available) — max 2 passes
- Return SalvageResult: text, citations, confidence, passes_used
- If no knowledge retrieved → pass (nothing to enforce against)
- If Wikidata records present → check at least 1 QID cited
- If text below min length → fail
- Return EnforcementResult: passed, notes, text (may append forge note on soft fail)
| File | Path |
|---|---|
| Build Plan Phase 4 | BUILD_PLAN_v1.md lines 134–146 |
| Scoring spec | docs/specs/Retrieval_and_Scoring_Spec.md |
| ThoughtForgeCore | src/thoughtforge/cognition/core.py |
| Refinement package | src/thoughtforge/refinement/ |
| CLI | run_thoughtforge.py |
Read this file + check git log. Continue from first unchecked item above.