Skip to content

Precision before recall: an opt-in injection match floor (story 28.5) - #222

Merged
fabbrik merged 5 commits into
mainfrom
feat/28-5-precision
Oct 31, 2026
Merged

fabbrik merged 5 commits into
mainfrom
feat/28-5-precision

Conversation

@fabbrik

@fabbrik fabbrik commented Oct 31, 2026

Copy link
Copy Markdown
Owner

Story 28.5 of Epic 28. The real-task experiment showed a mismatched lesson costs more than none, so the block needs a way to leave weak matches out.

  • ExperienceInjectionOptions.MinimumMatch (ExperienceMatchFloor, opt-in): a record is injected only on an exact failure-signature match (recall), text coverage at or above MinimumTextCoverage (required, store-relative), or semantic similarity at or above a semantic floor (no floor means the semantic leg is off: fail closed). Weak records are omitted as WeakMatch before the capability gate and record limit, with backfill, and before the holdout split.
  • Retrieval now carries each channel's strength (ExperienceCandidate.TermCoverage, RankedExperience.TextCoverage/VectorRelevance) from the in-memory, PostgreSQL (including the RLS search function) and SQLite sources; ranking unchanged.
  • Measured, and off by default: the floor-choosing rule was fixed before the sweep (FP@8 <= 0.15 on both adapters and no distractor-overlap noise). No floor qualified: noise stops falling at 0.3 while the right lesson for long realistic requests is lost first. Table in docs/benchmarks.md; f=0 is pinned to the goldens.
  • CHANGELOG: the 28.x sections that had landed under the preview.17 heading are moved to Unreleased.

Tests: Core 1349, MAF 1458, SQLite 245, Storage.Postgres 965 (+ RLS-filtered 115), RetrievalQuality 30 with PostgreSQL, package validation.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy

fabbrik and others added 5 commits October 30, 2026 18:52
…ck (story 28.5)

ExperienceInjectionOptions.MinimumMatch (off by default) omits a ranked record whose
text coverage, semantic similarity and signature match are all below the floor, as
WeakMatch, before the record limit. Retrieval now carries each channel's strength
(TermCoverage, TextCoverage, VectorRelevance); the retrieval benchmark sweeps the floor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
…ory 28.5)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
…ut of doc comments

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
… review)

The semantic leg is off without a semantic floor; MinimumTextCoverage is required with
no default; recall skips the coarse lookup under a floor; SQLite reports TermCoverage
and its golden gains the sweep; the sweep's zero row is pinned to the overall metrics;
coverage is documented as store-relative. CHANGELOG: the 28.x sections move back
under Unreleased (none shipped in preview.17).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
A search computes termCoverage; a published preview never returned it, so only its presence is checked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
@fabbrik
fabbrik merged commit 023995b into main Oct 31, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant