CCIP match threshold (tunable, 0.85) + Explore → variance #150

Merged
bvandeusen merged 2 commits from dev into main 2026-06-29 20:48:14 -04:00
Owner

CCIP match threshold — tunable, default 0.85

Live measurement showed the v1 flat 0.75 cosine over-fires (~64% of matched images got 3–10 character guesses dominated by the most-referenced characters). 0.85 collapses the noise while keeping confident matches.

  • ml_settings.ccip_match_threshold (migration 0063); match_image reads it.
  • GET/PATCH /api/ml/settings (validated 0.5–0.999).
  • "Character-match strictness" slider in the GPU agent card — tune live.

Explore → navigation — fix loop-back + add variance

forwardTarget picked a uniformly-random image from the 24 nearest, so → often landed on a visited node (snapping the cursor back = "loops back") and only offered near-duplicates. Now: excludes visited neighbours, skips the closest third of the similarity-sorted pool for variety, pool widened 24→40.

CI green (1010 tests + migration). Server deploy needed for the threshold (migration + endpoint); the Explore fix ships with the web image.

🤖 Generated with Claude Code

## CCIP match threshold — tunable, default 0.85 Live measurement showed the v1 flat 0.75 cosine over-fires (~64% of matched images got 3–10 character guesses dominated by the most-referenced characters). 0.85 collapses the noise while keeping confident matches. - `ml_settings.ccip_match_threshold` (migration 0063); `match_image` reads it. - GET/PATCH `/api/ml/settings` (validated 0.5–0.999). - "Character-match strictness" slider in the GPU agent card — tune live. ## Explore → navigation — fix loop-back + add variance `forwardTarget` picked a uniformly-random image from the 24 nearest, so → often landed on a visited node (snapping the cursor back = "loops back") and only offered near-duplicates. Now: excludes visited neighbours, skips the closest third of the similarity-sorted pool for variety, pool widened 24→40. CI green (1010 tests + migration). Server deploy needed for the threshold (migration + endpoint); the Explore fix ships with the web image. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bvandeusen added 2 commits 2026-06-29 20:48:05 -04:00
feat(ccip): tunable match threshold, default 0.85 (#114)
CI / lint (push) Successful in 3s
CI / frontend-build (push) Successful in 20s
CI / backend-lint-and-test (push) Successful in 25s
CI / integration (push) Successful in 3m28s
625336b6b4
Live data showed the v1 flat 0.75 cosine over-fired — ~64% of matched images got
3-10 character guesses dominated by the most-referenced characters (a 27-ref
character clears a low bar on many images). A sweep showed 0.85 collapses the
noise (noisy multi-matches 47→3) while keeping the confident single-character
matches.

- ml_settings.ccip_match_threshold (migration 0063, default 0.85); match_image
  reads it (override still accepted). DEFAULT_SIM_THRESHOLD fallback 0.75→0.85.
- Exposed in GET/PATCH /api/ml/settings (validated 0.5–0.999).
- Slider in the GPU agent card ("Character-match strictness") — tune live, no
  redeploy, same observe-and-tune loop as auto-apply.

Test: a ~0.9-cosine figure matches at 0.85, dropped at 0.95.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ttrj5P7upUTueSfoJcxEqa
fix(explore): variance + no loop-back on → navigation (#94)
CI / lint (push) Successful in 2s
CI / frontend-build (push) Successful in 21s
CI / backend-lint-and-test (push) Successful in 26s
CI / integration (push) Successful in 3m26s
301f2de989
Two reports: → sometimes "loops back", and the walk gets stuck on near-identical
images. Cause: forwardTarget picked a uniformly-random neighbour from the 24
NEAREST, so it (a) often landed on an image already in the trail — which snaps
the cursor back into history and makes → bounce between visited nodes — and (b)
only ever offered near-duplicates.

forwardTarget now: excludes already-visited neighbours (→ opens something new,
no snap-back), and skips the closest third of the (similarity-sorted) pool so the
jump favours the more-varied remainder instead of lookalikes. Neighbour pool
widened 24→40 for more variety to browse + jump into. The post-← browser-forward
walk through visited crumbs is unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ttrj5P7upUTueSfoJcxEqa
bvandeusen merged commit 5e8c28236a into main 2026-06-29 20:48:14 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bvandeusen/FabledCurator#150