You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
storage: the profile store grew to 153 GB with growth measurement unavailable #4099
On 2026-10-16 ~/.tracedecay measured 153 GB before the owner had it deleted. Nothing reported the growth: tracedecay_runtime(doctor_report=true) listed storage.table_growth for both tracedecay.db and global.db as "table payload growth measurement is unavailable", so the doctor had no size finding at all.
What the folder held (listing taken before deletion; sizes per entry were not captured): projects/ with more than 30 proj_* stores, one per registered root, so each agent worktree under /fast/tmp that ran TraceDecay carried its own full code-graph index and sessions shard; lcm-payloads; user-sessions.db and user-sessions.grafeo with their WALs; global.db; maintenance, response-handles, hook_analytics.jsonl, host-bundle-stage, host-components. The live project_sessions shard for proj_a5b3d7e3ebe14ca7 had a 229 MB WAL whose checkpoint stayed pending through 245,264 retry wakes, and the host projection drain had been failing on a corrupt head since Oct 8 (separate lane). A past note records a staging container that grew to 8.6 GB and was loaded whole into heap.
Needed:
Make size observable: fix the table-growth measurement, and make the doctor and tracedecay storage report show per-store sizes (each project store, LCM payloads, Grafeo and WALs) with a finding when a store or the profile crosses a bound.
Retention and GC: project stores whose registered root no longer exists on disk (deleted worktrees); LCM payload retention; Grafeo WAL checkpointing; projection history; hook analytics rotation. Every GC goes through the daemon's own maintenance path, never a direct file delete.
A regression check in the suites: a store that grows without bound under the ingest journey must trip the finding.
Acceptance: after a fresh tracedecay init, 24 hours of normal use on this host shows per-store sizes in the doctor, and no store grows past its bound without a named finding.
Remaining growth sources are assigned to the storage redesign cutover (docs/plans/storage/README.md, #4118): retention for LCM payloads no summary covers and for unmounted session databases, observation projection history, the disposition ledger, generation staging release (step 9), the response-handle cap, hook events into a telemetry table (step 8), closing a lost store's lane instead of requiring a restart (step 7), and a 24-hour bounded-growth acceptance check on a fresh profile. This issue stays open until those land.
Activity
ScriptedAlchemy commentedon Oct 16, 2026
Status 2026-10-16. Landed or in the merge queue for this issue:
tracedecay storage reportshow it, Grafeo WAL segments are sized.hook_analytics.jsonlis truncated under its append lock once fully imported past 64 MiB.Remaining growth sources are assigned to the storage redesign cutover (
docs/plans/storage/README.md, #4118): retention for LCM payloads no summary covers and for unmounted session databases, observation projection history, the disposition ledger, generation staging release (step 9), the response-handle cap, hook events into a telemetry table (step 8), closing a lost store's lane instead of requiring a restart (step 7), and a 24-hour bounded-growth acceptance check on a fresh profile. This issue stays open until those land.Merge pull request #4125 from ScriptedAlchemy/fix/4099-grafeo-wal-che…
Merge pull request #4127 from ScriptedAlchemy/fix/4099-footprint-regr…
Merge pull request #4128 from ScriptedAlchemy/fix/4099-sidecar-retention
Merge pull request #4130 from ScriptedAlchemy/fix/4099-store-identity