The gate that wasn't there
1.4.0 was named for silent failures, and shipped with one of its own. It fixed the token budget that let refine write empty and truncated definitions — that fix holds, and no truncation appeared in any verification run since. What it did not fix was the failure underneath, which was never the budget: nothing checked whether what consolidation wrote was about anything.
The evidence is a store repaired from 301 damaged definitions down to zero, then handed to dream on a copy. It came back with two rows silently regressed — a specific, grounded definition about SQLite-backed semantic indexes rewritten into "The memory concept involves rapid embedding of observations through optimized processing", and another that stored its own prompt scaffolding as though Concept A and Concept B were the subject. Both passed every check the engine had.
Fixed
-
The thought-quality gate accepted refinements that describe the memory instead of its subject.
Grounding cannot catch this class, structurally. This failure is a paraphrase of the definition it replaces, so it keeps that definition's vocabulary and scores well — the case above scored 0.32 with zero generic-marker hits.
groundingScoremeasures whether a thought is derived from its evidence; it has nothing to say about whether the thought has a subject. SoassessThoughtnow treats self-referential meta-text openers and leakedConcept A/Concept Bscaffolding as form failures, rejected unconditionally alongside truncation and markdown leakage rather than weighed against grounding.The opener check is anchored to the start of the text, deliberately. A legitimate memory may quote this phrasing mid-sentence — a finding about memory corruption necessarily cites the corrupt text — and matching anywhere would stop the engine ever recording its own failure modes, which is exactly the knowledge worth keeping. The regression corpus in
thought-quality.test.tsholds the real 2026-07-31 texts verbatim, including the legitimate row that must keep passing.Left unfixed and worth naming: a rejected refinement leaves the existing row untouched, so a definition that is already meta-text stays that way. The gate stops new damage; it does not repair old.