3 Commits

Author SHA1 Message Date
drew ffac6be326 fix(tui): count conversation separators for pruning
CI / load-versions (pull_request) Successful in 16s
CI / push-validation (pull_request) Successful in 24s
CI / lint (pull_request) Successful in 50s
CI / quality (pull_request) Successful in 57s
CI / typecheck (pull_request) Successful in 1m3s
CI / security (pull_request) Successful in 1m4s
CI / build (pull_request) Successful in 43s
CI / helm (pull_request) Successful in 40s
CI / unit_tests (pull_request) Successful in 7m7s
CI / docker (pull_request) Successful in 2m11s
CI / integration_tests (pull_request) Successful in 11m38s
CI / coverage (pull_request) Successful in 10m18s
CI / status-check (pull_request) Successful in 3s
2026-06-17 00:57:52 -04:00
HAL9000 90d65d8a3e fix(tui): fix prune_excess minimum and robot test iteration count
ConversationSettings clamped prune_excess to minimum=100, so the
helper's prune_excess=50 was silently raised to 100, making
trigger_line_count=200 exactly equal to the 200 lines added in the
robot test. The > check never fired, pruning never ran, and both
prune-trigger and prune-note-inserted failed.

Fixes:
- Lower prune_excess minimum from 100 to 10 in _normalise_positive so
  values like 50 are accepted without clamping.
- Change range(20) to range(21) in cmd_prune_trigger and
  cmd_prune_note_inserted: 21 blocks x 10 lines = 210 lines triggers
  pruning twice (at block 15 and block 20), leaving total_lines=91
  after the final prune event which satisfies the <= 100 assertion.

ISSUES CLOSED: #6350
2026-06-17 00:57:51 -04:00
HAL9000 c5df00c6d3 feat(tui): fix lint, add robot/benchmark/changelog for pruning
- Fix ruff format violations in app.py, conversation.py, and
  tui_conversation_pruning_steps.py (3 files reformatted)
- Fix ruff E501 line-too-long in helper_tui_conversation_pruning.py
- Expand ConversationSettings docstring to explain hysteresis design
- Add _note_active invariant comment in ConversationStream.__init__
- Add full docstring to load_conversation_settings (config path, keys,
  fallback behaviour)
- Narrow bare except Exception to (OSError, json.JSONDecodeError) and
  (ValueError, TypeError) in load_conversation_settings
- Add Robot Framework integration tests (tui_conversation_pruning.robot
  + helper) covering prune-trigger, note-inserted, protected-blocks,
  clear-resets-state, settings-defaults
- Add ASV benchmarks (conversation_stream_bench.py) covering add_block
  baseline, heavy-load pruning, render after prune, clear+repopulate
- Add CHANGELOG.md entry for feat(tui) conversation content pruning

ISSUES CLOSED: #6350
2026-06-17 00:57:51 -04:00