Skip to content

cc-explorer: grown (resumed) conversion artifacts are never reaped — accumulate forever #39

Description

@coryking

Problem

The conversion reaper (PR #38) only deletes pristine (never-resumed) convert_session artifacts. The growth guard deliberately protects any fork that was resumed — growth_exceeded() is true the moment new turns are appended — and the reaper inherits that protection. Both delete_conversions and the reaper refuse grown forks.

Consequence: a fork that was resumed once and then abandoned is protected permanently. There is no path, manual-tool or automatic, that ever removes a grown conversion artifact. They accumulate without bound.

Why this is harder than the pristine case

A pristine fork is a pure copy of an untouched source — deleting it loses nothing (regenerable). A grown fork contains a unique tail of turns that were appended only there (the source is never modified). Deleting one destroys conversation that exists nowhere else. So this isn't garbage collection — it's a retention/pruning decision with real data-loss stakes.

Observed today

5 grown conversion artifacts on disk under bluetaka, all currently recent. The growth guard correctly keeps them while they're active; the gap is what happens when they go cold and stay cold.

Breadcrumbs (not a prescription)

  • growth_exceeded() answers "was it ever resumed," not "is it still alive."
  • Possible liveness signals to consider: last-activity age (the file stopped growing), and whether the parent session the fork lives under still exists on disk.
  • conversion_age_seconds() (PR feat(cc-explorer): lifespan reaper for pristine conversion artifacts #38) reads converted_at; a last-activity variant would read the final body timestamp / mtime.

Deferred from PR #38.

Metadata

Metadata

Assignees

No one assigned

    Labels

    cc-explorerMCP server and typed JSONL toolkitenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions