Merges dev → main. All CI-green on dev head ab362bc (runs 1940/1941/1942). Migration 0078 (additive ml_settings detector columns with working server_defaults).
Activates + exposes the crop proposers (#1202 was code-complete but anatomy/panel defaulted to empty weights → silently off, env-only). Moves the detector config into the DB, announced to the GPU agent via the lease — same pattern as the embedder model — so it's UI-tunable with no restart, and all three proposers run out-of-the-box.
Per-proposer enable + weights + conf, caps, dedupe IoU — all default-on with pinned working defaults: person yolo11n.pt, anatomy booru_yolo yolov11m_aa22 (in-repo URL; license unstated, private-homelab OK), panel mosesb/…::best.pt.
Step 2 — lease announces it; agent applies live
lease() carries a detectors block; the agent builds its Proposers from the announced config, rebuilding only when it changes (no restart). Agent env drops to bootstrap-only.
Step 3 — Settings → Tagging "Crop proposers" card
Enable toggles + weights + confidence per proposer, plus caps, live-save with defaults pre-filled (rules 25/26).
Operator follow-on after deploy
Deploying runs migration 0078 and turns all three proposers on. Then run a full library reprocess so existing images gain the new anatomy/panel regions — which is what milestone #133 (hover crop-overlay) will visualize.
Merges dev → main. All CI-green on dev head `ab362bc` (runs 1940/1941/1942). **Migration 0078** (additive `ml_settings` detector columns with working `server_default`s).
Activates + exposes the crop proposers (#1202 was code-complete but anatomy/panel defaulted to empty weights → silently off, env-only). Moves the detector config into the DB, announced to the GPU agent via the lease — same pattern as the embedder model — so it's UI-tunable with no restart, and all three proposers run out-of-the-box.
### Step 1 — MLSettings detector columns (migration 0078)
Per-proposer enable + weights + conf, caps, dedupe IoU — all default-on with pinned working defaults: person `yolo11n.pt`, anatomy `booru_yolo yolov11m_aa22` (in-repo URL; license unstated, private-homelab OK), panel `mosesb/…::best.pt`.
### Step 2 — lease announces it; agent applies live
`lease()` carries a `detectors` block; the agent builds its Proposers from the announced config, rebuilding only when it changes (no restart). Agent env drops to bootstrap-only.
### Step 3 — Settings → Tagging "Crop proposers" card
Enable toggles + weights + confidence per proposer, plus caps, live-save with defaults pre-filled (rules 25/26).
### Operator follow-on after deploy
Deploying runs migration 0078 and turns all three proposers on. **Then run a full library reprocess** so existing images gain the new anatomy/panel regions — which is what milestone #133 (hover crop-overlay) will visualize.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01CDgx8bQS5YrGRK76v8HUnM
Move the crop-proposer config (per-proposer enable + weights + conf, caps,
dedupe IoU) into the DB so it's UI-tunable and can be announced to the GPU agent
in the lease (like the embedder model) — no restart, agent env becomes
bootstrap-only. Migration 0078 adds the columns with working server_defaults so
existing rows + fresh installs crop out-of-the-box with all three proposers ON
(operator: default-on): person=yolo11n.pt, anatomy=booru_yolo yolov11m_aa22 (URL,
license unstated/private-homelab-OK), panel=mosesb best.pt. Plain columns, no
CHECK enum. Steps 2 (lease announce + agent apply) and 3 (Settings UI) follow.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CDgx8bQS5YrGRK76v8HUnM
The GPU lease now carries the crop-proposer config from MLSettings in a per-job
'detectors' block (same pattern as embed_model_name). The agent's worker builds
its Proposers from the announced config via _effective_cfg (lease block overlaid
on env) + _proposers_for (rebuilds only when a config signature changes) — so an
operator's UI edit takes effect on the next lease with NO restart, and env is now
just the bootstrap fallback until the server announces. enabled-off maps to empty
weights (proposer skipped); dedupe_iou + max_regions also come from the effective
cfg. Test: lease announces the detectors block with the seeded default weights.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CDgx8bQS5YrGRK76v8HUnM
Exposes the detector config (per-proposer enable + weights + confidence, caps,
dedupe IoU) in Settings → Tagging, backed by MLSettings via /api/ml/settings.
ml_admin adds the detector fields to _EDITABLE + GET payload + validation (conf
0..1, caps >=1, IoU 0..1). New CropProposersCard.vue (mirrors HeadsCard) with
working defaults pre-filled, per-field live-save (no restart — the agent picks
changes up on its next lease), weights-format help, switch-revert on error.
Closes milestone #134: all three proposers are on out-of-the-box and tunable in
the UI. Test: detector defaults GET + patch round-trip + range validation.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CDgx8bQS5YrGRK76v8HUnM
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.
Merges dev → main. All CI-green on dev head
ab362bc(runs 1940/1941/1942). Migration 0078 (additiveml_settingsdetector columns with workingserver_defaults).Activates + exposes the crop proposers (#1202 was code-complete but anatomy/panel defaulted to empty weights → silently off, env-only). Moves the detector config into the DB, announced to the GPU agent via the lease — same pattern as the embedder model — so it's UI-tunable with no restart, and all three proposers run out-of-the-box.
Step 1 — MLSettings detector columns (migration 0078)
Per-proposer enable + weights + conf, caps, dedupe IoU — all default-on with pinned working defaults: person
yolo11n.pt, anatomybooru_yolo yolov11m_aa22(in-repo URL; license unstated, private-homelab OK), panelmosesb/…::best.pt.Step 2 — lease announces it; agent applies live
lease()carries adetectorsblock; the agent builds its Proposers from the announced config, rebuilding only when it changes (no restart). Agent env drops to bootstrap-only.Step 3 — Settings → Tagging "Crop proposers" card
Enable toggles + weights + confidence per proposer, plus caps, live-save with defaults pre-filled (rules 25/26).
Operator follow-on after deploy
Deploying runs migration 0078 and turns all three proposers on. Then run a full library reprocess so existing images gain the new anatomy/panel regions — which is what milestone #133 (hover crop-overlay) will visualize.
🤖 Generated with Claude Code
https://claude.ai/code/session_01CDgx8bQS5YrGRK76v8HUnM