Crop-proposer detector config → Settings → Tagging (default-on, lease-announced) (#134) #194

Merged
bvandeusen merged 3 commits from dev into main 2026-07-05 20:10:02 -04:00
Owner

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.

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.ai/code/session_01CDgx8bQS5YrGRK76v8HUnM

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
bvandeusen added 3 commits 2026-07-05 20:09:57 -04:00
feat(ml): detector config in MLSettings with working defaults (#134 step 1)
CI / lint (push) Successful in 2s
CI / frontend-build (push) Successful in 21s
CI / backend-lint-and-test (push) Successful in 40s
CI / integration (push) Successful in 3m39s
62ec70b9e4
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
feat(ml): lease announces detector config; agent builds proposers from it live (#134 step 2)
CI / lint (push) Successful in 3s
CI / frontend-build (push) Successful in 19s
CI / backend-lint-and-test (push) Successful in 35s
CI / integration (push) Successful in 3m34s
a4df279343
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
feat(ml): Settings → Tagging 'Crop proposers' card (#134 step 3)
CI / lint (push) Successful in 2s
CI / frontend-build (push) Successful in 19s
CI / backend-lint-and-test (push) Successful in 40s
CI / integration (push) Successful in 3m39s
ab362bc79c
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
bvandeusen merged commit 5289fa3879 into main 2026-07-05 20:10:02 -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#194