The badge-only wrap fixed the 800px overflow but left classifier.degraded_warn_min
with a three-line pill squeezed beside its unit. Letting the hints span wrap
puts the unit on one line and the pill under it in two, matching how
degraded_warn_threshold already reads. Table width at 800 is unchanged (732px).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KkCGRantZsSwmcFpet6FTa
POST /admin/api/runtime/classifier_degraded_warn_threshold with null is now
pinned as a clean 422 (it was a TypeError/500 before the neutral_path guard).
Covered: null, bool, string, 0.0, below-floor and above-max all 422 and leave
cfg untouched; floor, 0.2 and max return 200 and update cfg.
The float handler's 422 text had lost "or null for neutral" and "(null means
neutral, not 0.0)" for every float knob, including the challenger dial, which
does have a neutral. They are back, conditional on the knob having a
neutral_path, and degraded_warn_threshold's 422s never mention null. Tests pin
both directions.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KkCGRantZsSwmcFpet6FTa
Overflow: the persisted-cell note badge is white-space:nowrap, so the
classifier.degraded_warn_min note set the column's min-content width and the
Knobs table measured 821px in a 797px frame (Layer column cut off). The
badge now wraps inside its own pill: 733px at 800, the pre-taxonomy figure.
The previous rule targeted .setting-control .ms-2, but d-inline-flex is
!important and the cell is a plain td, so it never matched.
Seeding: Advanced accordions were seeded collapsed once, on the first render.
The runtime payload lands before the config payload and watchdog.detector.* are
persisted-only, so Watchdog had no advanced rows on that render, was marked
seeded anyway, and loaded EXPANDED. seedAdvancedCollapsed now seeds a category
the first time it renders an advanced row. It is a pure function between
SEED_ADV_COLLAPSED markers, covered by three node tests (a config render after
a runtime-only render stays collapsed; a toggled-open section survives
re-render; a plain-only category is not marked seeded).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KkCGRantZsSwmcFpet6FTa
Reverts 2d145d6, which appended "CLIREF.md updated to CLAUDE.md for current
project state mapping" to the end of CLAUDE.md. It is a stray sentence
describing a rename that never happened.
Correction for b774d55: its subject and body say "CLIREF.md". No such file
exists in this repository; the 17 lines that commit describes (the North Star 1
classifier-coverage paragraphs) are in CLAUDE.md. History is not rewritten.
Also rewords the first of those paragraphs: "partially covered" understated
it. Every classifier scalar is now a control, card-backed, or a recorded
excuse, and fallback_category / max_input_chars are persisted-only.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KkCGRantZsSwmcFpet6FTa
Update explicit value checks for circuit_breaker_enabled and default_flex_preference to include category and advanced flags.
Ultraworked with Sisyphus
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Update set checks to include 'category' and 'advanced' keys in /admin/api/runtime responses. Remove unused ClassifierConfig import.
Ultraworked with Sisyphus
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Restructure config-list tbody: category header rows with chevron toggle, Advanced accordion sub-headers, renderStaticIcons() for both. Add metadata for 7 new classifier knobs (UNITS, KNOB_NOTES, NUMBER_BOUNDS). Collapse state in JS Set preserved across 30s re-renders.
Ultraworked with Sisyphus
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Add COOLDOWN_FLOOR, FALLBACK_TIER_MIN, DEGRADED_WARN_MIN_CEILING, etc. constants and field_validators for cooldown_seconds, fallback_tier, degraded_warn_min. Update test_admin_config.py for category/advanced fields.
Ultraworked with Sisyphus
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>