Skip to content

No GC sweeper for .graff/tool-results/ — handle artifacts accumulate for the life of a workspace #452

Description

@justrach

Surfaced by the #440 implementation (PR #451), and pre-existing rather than caused by it.

Today: .graff/tool-results/ accumulates one file per oversized tool result and nothing ever removes them. Unlike tool_spill's session artifacts, which #409 gave a sweep tied to the session lifecycle, this directory has no cleanup path at all: not on session end, not on /new, not on exit.

Why it matters more now. #440 makes handles the default contract rather than an overflow rescue, so the write rate goes up, and it raised the bash capture ceiling from 128 KiB to 1 MiB, so individual artifacts get larger. #440 added a 64 MiB per-process budget with an honest truncation marker, which bounds any single run, but that budget resets every process. A long-lived workspace accrues without limit across runs.

Proposal: give the directory the same lifecycle treatment .graff/ artifacts already got in #409, rather than inventing a second cleanup mechanism.

Interaction: #441 (append-only transcript) and #411 (post-compaction note listing live handles) both make handles longer-lived by referring to them after compaction. Whatever retention rule this lands on should be the one those two cite, not a third policy.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions