Ships three stacked, CI-green features from dev to main. All experience-level changes best validated live.
What ships
#1464 — System-tag behavior refactor.editor screenshot moves from chrome (hidden) to the PROCESS group (shown in gallery, like wip). wip+editor gain provisional auto-apply (opt-in, off by default) via one generalized system_tag_auto_apply_sweep(mode), guarded by the #141 "also looks like real content" ring-loud check → review strip. Provisional source (process_auto) never trains the head. Mode-aware review strip + new "Auto-tag work-in-progress" settings card. Migration 0086.
#1474 — Soft WIP title tier. sketch/doodle/scribble titles also tag wip, but with a provisional source (wip_title_soft) that never trains the head (a finished "sketch" can't pollute it). Opt-in (off by default). Daily ring-loud audit flags soft-tagged images that look like finished art for review. Migration 0087.
#1476 — Explore reach. The walk now reaches past the anchor's immediate cluster (default reach 0.4) so neighbours mix near+mid-far and it can escape dense signatures without hitting "Random"; already-walked images aren't re-served. Near↔Far slider in the trail. Gallery "more like this" unchanged.
Migrations
0086 (ml_settings process knobs + presentation_review.mode) and 0087 (import_settings soft-wip toggle) — both additive columns with server-defaults, apply on deploy.
Post-deploy (to actually try the new behavior)
Settings → ML → flip on "Auto-tag work-in-progress" (WIP head auto-apply), optionally the soft tier under Ingestion & filters.
Walk Explore and feel the reach dial — we'll likely tune the default from real use.
Ships three stacked, CI-green features from `dev` to `main`. All experience-level changes best validated live.
## What ships
**#1464 — System-tag behavior refactor.** `editor screenshot` moves from chrome (hidden) to the PROCESS group (shown in gallery, like wip). `wip`+`editor` gain provisional auto-apply (opt-in, off by default) via one generalized `system_tag_auto_apply_sweep(mode)`, guarded by the #141 "also looks like real content" ring-loud check → review strip. Provisional source (`process_auto`) never trains the head. Mode-aware review strip + new "Auto-tag work-in-progress" settings card. Migration 0086.
**#1474 — Soft WIP title tier.** sketch/doodle/scribble titles also tag `wip`, but with a provisional source (`wip_title_soft`) that never trains the head (a finished "sketch" can't pollute it). Opt-in (off by default). Daily ring-loud audit flags soft-tagged images that look like finished art for review. Migration 0087.
**#1476 — Explore reach.** The walk now reaches past the anchor's immediate cluster (default reach 0.4) so neighbours mix near+mid-far and it can escape dense signatures without hitting "Random"; already-walked images aren't re-served. Near↔Far slider in the trail. Gallery "more like this" unchanged.
## Migrations
0086 (ml_settings process knobs + presentation_review.mode) and 0087 (import_settings soft-wip toggle) — both additive columns with server-defaults, apply on deploy.
## Post-deploy (to actually try the new behavior)
- Settings → ML → flip on **"Auto-tag work-in-progress"** (WIP head auto-apply), optionally the soft tier under Ingestion & filters.
- Walk **Explore** and feel the reach dial — we'll likely tune the default from real use.
CI green on `dev` head `fac5ae6`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Backend for the system-tag behavior refactor (milestone #157). editor screenshot
moves from chrome (hidden) to the PROCESS group (shown, like wip); wip+editor gain
provisional auto-apply so they stop needing endless manual identification —
without a runaway loop.
- tag.py: split PRESENTATION_SYSTEM_TAGS → CHROME_SYSTEM_TAGS (banner) +
PROCESS_SYSTEM_TAGS (wip, editor screenshot).
- heads.py: generalize presentation_auto_apply_sweep → system_tag_auto_apply_sweep
(mode chrome|process). Same Guard 1 (skip human/confirmed) + Guard 2 (ring-loud
conflict → PresentationReview). process mode uses source 'process_auto' and does
NOT hide (hide is a gallery-query effect of group membership).
- training_data._AUTO_SOURCES += 'process_auto' → the head never trains on its own
auto-applied output; only wip_title/manual train it (the runaway break).
- ml_settings: process_auto_apply_enabled (OFF, opt-in) + threshold + conflict
threshold. presentation_review.mode ('chrome'|'process'). Migration 0086.
- gallery_service: default-hide reads CHROME only (editor now shows); Explore
neighbors exclude the whole PROCESS group.
- tasks/ml + celery beat: scheduled_process_auto_apply (daily, opt-in); prune
covers both modes.
- api: ml_admin process_* CRUD+validation; hidden-review returns mode.
- tests: rename chrome sweep calls; new test_process_auto_apply (apply, guards,
mode flag, no-self-train); gallery test asserts editor now visible.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Frontend for the system-tag refactor (milestone #157 step 6).
- HeadsCard: new 'Auto-tag work-in-progress' section (enable + tag-confidence +
conflict knobs) for wip/editor process auto-apply, mirroring the chrome card;
copy notes they stay VISIBLE and the head only learns from titles/manual (no
runaway). Presentation copy narrowed to banner-only.
- HiddenReviewStrip: mode-aware — chrome flags read 'hidden as X / Keep hidden /
Un-hide'; process flags read 'auto-tagged X / Keep tag / Remove tag'. Same
endpoints (the backend returns mode), different words.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Extends WIP title-tagging to lower-precision cues (sketch/doodle/scribble) safely.
- wip_title.py: soft matcher (word-anchored; sketchbook/kadoodle don't trip it);
WIP_TITLE_SOFT_SOURCE + soft SQL prefilter; apply_wip_image_tags takes a source arg.
- training_data._AUTO_SOURCES += 'wip_title_soft' → the soft tier is PROVISIONAL and
never trains the wip head (a finished "sketch" can't pollute it). Only the hard
tier (wip_title) + manual train.
- ImportSettings.wip_soft_title_tagging_enabled (OFF by default, opt-in). Migration 0087.
- importer: hard tier wins, soft is the fallback (source wip_title_soft).
- backfill: refactored into a shared _backfill_wip_tier; hard always, soft when enabled.
- heads.soft_wip_conflict_audit + daily beat: score soft-tagged images against content
heads, flag ring-loud ones (PresentationReview mode=process) for the review strip —
the operator's "measure if they got falsely tagged" safety.
- api settings toggle; ImportFiltersForm soft toggle.
- tests: soft matcher pos/neg; soft source not a training positive; audit flags
ring-loud + spares quiet.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Explore walk got stuck in dense signatures — neighbours all too similar, so
forward-arrow couldn't escape and Random was the only exit. Root cause: MMR only
diversifies WITHIN the nearest ~400 pool; in a dense cluster that whole pool is
near-identical, so there's no escape route in it.
- gallery_service.similar(reach=0.0, exclude_ids=None): reach>0 widens the pool
(cap 400→1000) and _reach_sample strides across an outward-growing distance span
so the set handed to MMR spans near→mid-far (guaranteed escape routes), not just
the tight cluster. exclude_ids drops already-walked images. Gallery 'more like
this' (reach=0) is unchanged.
- api/gallery similar: parse reach + exclude_ids.
- explore store: default reach 0.4 (auto-diversifies without touching the dial),
pass the breadcrumb as exclude_ids, setReach action.
- ExploreView: a Near↔Far reach slider in the trail.
- tests: _reach_sample math (deeper ranks with higher reach, near kept); similar
exclude_ids drops walked + reach path runs clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Ships three stacked, CI-green features from
devtomain. All experience-level changes best validated live.What ships
#1464 — System-tag behavior refactor.
editor screenshotmoves from chrome (hidden) to the PROCESS group (shown in gallery, like wip).wip+editorgain provisional auto-apply (opt-in, off by default) via one generalizedsystem_tag_auto_apply_sweep(mode), guarded by the #141 "also looks like real content" ring-loud check → review strip. Provisional source (process_auto) never trains the head. Mode-aware review strip + new "Auto-tag work-in-progress" settings card. Migration 0086.#1474 — Soft WIP title tier. sketch/doodle/scribble titles also tag
wip, but with a provisional source (wip_title_soft) that never trains the head (a finished "sketch" can't pollute it). Opt-in (off by default). Daily ring-loud audit flags soft-tagged images that look like finished art for review. Migration 0087.#1476 — Explore reach. The walk now reaches past the anchor's immediate cluster (default reach 0.4) so neighbours mix near+mid-far and it can escape dense signatures without hitting "Random"; already-walked images aren't re-served. Near↔Far slider in the trail. Gallery "more like this" unchanged.
Migrations
0086 (ml_settings process knobs + presentation_review.mode) and 0087 (import_settings soft-wip toggle) — both additive columns with server-defaults, apply on deploy.
Post-deploy (to actually try the new behavior)
CI green on
devheadfac5ae6.🤖 Generated with Claude Code