April 15, 2026

v0.9.0 Classifier Stack & Schema Refactor

The classifier stack was integrated in v0

The classifier stack was integrated in v0.9.0, replacing Qwen2.5-0.5B with Alibaba-NLP/gte-modernbert-base, using shared encoder and 2-layer MLP heads.

The OnnxInferenceService was rewritten to borrow the shared encoder session, load per-task MLP heads from .npz files, and run inference in numpy.

A boot-time sha256 pin is now enforced; a mismatch between the expected and on-disk encoder raises a RuntimeError.

The thinking_level classification was completely rewritten to use 772-d features derived from a 768-d embedding concatenated with a 4-dim one-hot vector.

The contradiction_classifier now strictly enforces a JSON-only input contract, passing the MLP label directly without letter mapping.

The MessageProcessor integrates the thinking_level classifier to mutate the system prompt based on predicted deliberation depth (low/medium/high).

Schema management shifted to bidirectional convergence in SchemaConvergenceService, making schema.sql the sole source of truth, eliminating explicit migration files.

Tool capability profiles were pruned of dead triage columns, and the unnecessary CortexIterationService was fully removed from the codebase.

  • Swapped classifier stack to gte-modernbert-base with MLP heads in v0.9.0.

  • Implemented boot-time sha256 pin for the classifier encoder to ensure integrity.

  • Thinking level classification now uses 772-d features including a 4-dim one-hot vector.

  • Schema convergence became bidirectional, managing both adds and drops from schema.sql on boot.

  • OnnxInferenceService optimized to reuse the shared gte-modernbert session.

  • Pruned dead triage columns from tool capability profiles and removed CortexIterationService.