v0.15.4
Fixed
Raise the bar above the base LM by closing four reasoning gaps that caused Neo to collapse to "LLM + logging":
- Objective early-exit gate: require self-confidence >0.8 AND static checks actually ran clean AND simulation traces agree (>=2 matching outputs), instead of trusting self-reported confidence alone. Prior gate bailed without verification in 47.7% of sessions.
- Outcome learning reaches retrieval ranking: shared
success_bonus(n)betweenFactStore.retrieve_relevantandContextAssembler._score_factsviamemory.models. Bonus capped at 0.2 so a narrow historical winner can't dominate cosine similarity. - Constraint verification wired into main path:
ConstraintVerifier.extract_constraintsnow runs at prompt time; typed constraints threaded as parameters (no instance state); marker dict keyed byConstraintTypeenum; comments and string literals stripped before substring match. - Community-facts fallback: prompts always carry some memory-derived context when
FactStoreretrieval returns empty.
Changed
- Single
NeoEngine._finalize_outputexit point for both early-exit and full-pipeline paths (eliminates duplicated save/log/telemetry blocks). - Narrowed silent
except Exceptionin community fallback to(OSError, json.JSONDecodeError).
Removed
- Unsafe
ConstraintVerifier.verify_codesubprocess path (executed arbitrary generated code viaexec; never called).