refactor(session-cache): rename staleness_minutes to staleness_seconds #94

Merged
alee merged 1 commits from feat/staleness-seconds into main 2026-09-18 04:50:29 +00:00

1 Commits

Author SHA1 Message Date
adlee-was-taken
1a6354deea refactor(session-cache): rename staleness_minutes to staleness_seconds
Change the unit of session_cache.staleness from minutes to seconds so it
can express finer-grained (sub-minute) staleness windows. This is a
straight rename, not an additive/compat knob — no deprecated alias, per
the project's convention of updating every consumer in the same change.

New bounds: floor 5 seconds (was 1 minute), ceiling 7200 seconds (was
120 minutes). Default: 1200 seconds (was 20 minutes). The validator's
reasoning is unit-independent and carries over: the floor is deliberately
> 0 because 0 would make session_cache.get() miss every turn while
put() still writes and the classifier-failure cascade's stale_read
ignores staleness; the ceiling reasoning (unbounded window = never-expiring
cache, 7200s still >> 840s real max run) also carries over in seconds.

Every consumer updated in the same commit:
- src/config.py: STALENESS_MINUTES_MIN/MAX -> STALENESS_SECONDS_MIN/MAX
= 5/7200, staleness_minutes -> staleness_seconds: 1200, validator updated
- src/dispatcher.py: drop the * 60 conversion (field is native seconds)
- src/admin.py: _INT_KNOBS key/path/constants, _CONFIG_ALLOWLIST,
  _CONFIG_GET_ORDER, _runtime_state, error message template
- admin/frontend/controls.html: note keys, tooltip, NUMBER_BOUNDS
- config/config.yaml: staleness_seconds: 1200
- tests: test_admin_runtime/config/frontend/knob_coverage, plus stale
  comment in test_chat_completions
- docs: admin-portal.md, evaluation.md, README.md

config.local.yaml is gitignored and will be migrated separately.
2026-09-18 00:45:08 -04:00