@tdd_issue @tdd_issue_821 @mock_only @tdd_issue_4178 Feature: TDD Issue #821 — context tier service has data models but no runtime logic As a developer I want to verify that ContextTierService automatically promotes, demotes, and evicts fragments based on access patterns, staleness, and budget limits So that the bug is captured and will be caught by a regression test Bug #821 identified that ContextTierService had data models for hot/warm/cold tiers (ContextTier, TieredFragment, TierBudget) and manual promote()/demote()/evict_lru() methods, but NO automatic runtime logic. The bug has been fixed — ContextTierService now: - auto-promotes frequently accessed cold/warm fragments to a higher tier, - enforces staleness by demoting stale hot fragments to warm/cold, - enforces budget limits by evicting on hot tier overflow. These tests serve as a permanent regression guard for the fix. @tdd_issue @tdd_issue_4278 Scenario: Promotion on repeated access moves fragment to a higher tier Given a context tier service with default budget And a fragment stored in the cold tier When I access the fragment 5 times via get Then the fragment should have been promoted to warm or hot tier @tdd_issue @tdd_issue_4278 Scenario: Demotion on staleness moves fragment to a lower tier Given a context tier service with default budget And a fragment stored in the hot tier with a stale last_accessed timestamp When I invoke the staleness enforcement runtime Then the fragment should have been demoted to warm or cold tier @tdd_issue @tdd_issue_4278 Scenario: Eviction on hot tier budget overflow removes oldest fragment Given a context tier service with a small hot tier budget of 100 tokens And the hot tier is filled to its token budget limit When I store one more fragment in the hot tier Then the oldest fragment should have been evicted from the hot tier