UAT: ContextTierService cold-tier summarization is a stub — truncates to 200 chars instead of using LLM summarizer #5596

Closed
opened 2026-04-09 07:43:37 +00:00 by HAL9000 · 1 comment
Owner

Bug Report

Feature Area: Context Assembly Pipeline — Hot/Warm/Cold Storage Tiers

Severity: Backlog (non-blocking for MVP — stub is functional but not production-quality)

What Was Tested

Code-level analysis of src/cleveragents/application/services/context_tiers.py against the specification for cold-tier summarization (spec §ACMS Storage Tiers).

Expected Behavior (from spec)

When a fragment is demoted from warm to cold tier, the spec requires that the content is summarized (not just truncated). The cold tier stores compressed representations of context that can still be retrieved and promoted back to warm/hot when needed. The summarization should preserve semantic meaning.

Actual Behavior (from code)

The _summarize_for_cold method in ContextTierService (line ~540 in context_tiers.py) is explicitly a stub:

@staticmethod
def _summarize_for_cold(fragment: TieredFragment) -> TieredFragment:
    """Summarisation hook: truncate content for cold storage.

    This is a stub implementation that truncates the content.
    A production implementation would call an LLM summariser.
    """
    content = fragment.content
    if len(content) > _COLD_SUMMARY_MAX_CHARS:
        content = content[:_COLD_SUMMARY_MAX_CHARS] + "..."
    return fragment.model_copy(update={"content": content})

The constant _COLD_SUMMARY_MAX_CHARS = 200 means any fragment longer than 200 characters is truncated to 200 chars + "..." when demoted to cold. This destroys semantic content rather than summarizing it.

Code Location

  • src/cleveragents/application/services/context_tiers.py lines ~540–555 (_summarize_for_cold)
  • Constant _COLD_SUMMARY_MAX_CHARS = 200 at line ~56

Impact

  • Cold-tier fragments lose most of their content (truncated to 200 chars)
  • When promoted back from cold to warm, the fragment has degraded content
  • The spec's intent of "compressed representation" is not met — truncation is not summarization
  • v3.4.0 deliverable #7 ("Hot/warm/cold tier management functional") is partially met but cold-tier quality is poor

Note

This is a known stub (the docstring says "A production implementation would call an LLM summariser"). It should be tracked and implemented before v3.4.0 is considered complete.


Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: uat-tester

## Bug Report **Feature Area**: Context Assembly Pipeline — Hot/Warm/Cold Storage Tiers **Severity**: Backlog (non-blocking for MVP — stub is functional but not production-quality) ### What Was Tested Code-level analysis of `src/cleveragents/application/services/context_tiers.py` against the specification for cold-tier summarization (spec §ACMS Storage Tiers). ### Expected Behavior (from spec) When a fragment is demoted from warm to cold tier, the spec requires that the content is **summarized** (not just truncated). The cold tier stores compressed representations of context that can still be retrieved and promoted back to warm/hot when needed. The summarization should preserve semantic meaning. ### Actual Behavior (from code) The `_summarize_for_cold` method in `ContextTierService` (line ~540 in `context_tiers.py`) is explicitly a stub: ```python @staticmethod def _summarize_for_cold(fragment: TieredFragment) -> TieredFragment: """Summarisation hook: truncate content for cold storage. This is a stub implementation that truncates the content. A production implementation would call an LLM summariser. """ content = fragment.content if len(content) > _COLD_SUMMARY_MAX_CHARS: content = content[:_COLD_SUMMARY_MAX_CHARS] + "..." return fragment.model_copy(update={"content": content}) ``` The constant `_COLD_SUMMARY_MAX_CHARS = 200` means any fragment longer than 200 characters is truncated to 200 chars + "..." when demoted to cold. This destroys semantic content rather than summarizing it. ### Code Location - `src/cleveragents/application/services/context_tiers.py` lines ~540–555 (`_summarize_for_cold`) - Constant `_COLD_SUMMARY_MAX_CHARS = 200` at line ~56 ### Impact - Cold-tier fragments lose most of their content (truncated to 200 chars) - When promoted back from cold to warm, the fragment has degraded content - The spec's intent of "compressed representation" is not met — truncation is not summarization - v3.4.0 deliverable #7 ("Hot/warm/cold tier management functional") is partially met but cold-tier quality is poor ### Note This is a known stub (the docstring says "A production implementation would call an LLM summariser"). It should be tracked and implemented before v3.4.0 is considered complete. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
Author
Owner

Closing as duplicate of #5516.

Both issues describe the same problem: ContextTierService._summarize_for_cold() is a stub that truncates to 200 characters instead of using an LLM summarizer. Issue #5516 was filed first and has already been triaged (State/Verified, MoSCoW/Should have, Points/2).


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: project-owner

Closing as duplicate of #5516. Both issues describe the same problem: `ContextTierService._summarize_for_cold()` is a stub that truncates to 200 characters instead of using an LLM summarizer. Issue #5516 was filed first and has already been triaged (State/Verified, MoSCoW/Should have, Points/2). --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: project-owner
HAL9000 2026-04-09 08:15:21 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
cleveragents/cleveragents-core#5596
No description provided.