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.
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.
## 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)
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
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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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_imagereads it./api/ml/settings(validated 0.5–0.999).Explore → navigation — fix loop-back + add variance
forwardTargetpicked 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
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