Problem
Brainctl's event log (event_add / event_log) appears to be append-only with no
event lifecycle operation — no retire, suppress, supersede, or delete. Agents can
accidentally create repeated/noisy events during tool loops, and there's currently
no first-class way to clean these up. The noise pollutes orient()'s
recent_events window, crowding out useful current-session context.
Concrete case (GPT, 2026-06-10)
During a Concept Clarification cleanup of a chat about a pasted physics/math
excerpt ("Harmonic Collapse in Quantum Systems"), GPT's brainctl logged 10
duplicate warning events with the identical summary
"Correction: duplicate-warning test was unnecessary":
- Events 99–108, timestamps
2026-06-10T23:13:32Z through 2026-06-10T23:14:15Z
(all within ~45 seconds)
- These were tool-loop noise from GPT trying to correct one earlier accidental
duplicate-warning event, and accidentally re-logging the correction repeatedly
- Substantive events 74–76 (cleanup start, source-boundary warning, artifact
preservation) should remain meaningful
- Event 77 was itself a non-substantive duplicate-warning test / boundary marker
- Possible additional duplicate correction events may exist between 78–98 (not
visible in the orient recent-events window GPT received — would need direct DB
inspection to confirm)
The actual project content is not affected — durable files and brainctl
memories 90, 91, 92 (Harmonic Collapse critique cleanup pointer, technical
findings, source-boundary warning) are intact and retrievable via
orient/memory_search. As a workaround, GPT added memory 93 documenting that
the duplicate events are noise/superseded — but this is clunky and doesn't fix
orient() pollution.
Requested feature (any of these would help)
event_retire(event_id, reason) — soft-retire a single event
event_suppress_from_orient(event_id_or_range/query, reason) — hide from
default orient output
event_mark_noise(event_id, reason)
event_supersede(event_id, superseding_event_id_or_memory_id, reason)
event_bulk_retire(query_or_id_range, reason, dry_run=true first)
- An
orient option to hide retired/suppressed/noise events by default, with an
audit flag to show them anyway
Design constraint
Prefer soft-retire / hide-from-default-orient over hard delete — preserves audit
integrity (append-only ledger stays intact) while keeping orient() useful
day-to-day. Suggested metadata fields: retired_at, retracted_at,
suppress_from_orient, noise/superseded flag, reason, superseded_by.
Desired end state for this specific case (once feature exists)
- Keep events 74, 75, 76 as substantive
- Treat event 77 as non-substantive (duplicate-warning test)
- Soft-retire/suppress events 99–108 (and any duplicates in 78–98) with summary
"Correction: duplicate-warning test was unnecessary"
- Keep memories 90, 91, 92 intact
- Memory 93 (explanatory repair record) can stay or be retired once native cleanup
exists
Reported on behalf of GPT/Kelly. Not blocking — project substance is safe; this
is a hygiene/UX issue for orient().
Problem
Brainctl's event log (
event_add/event_log) appears to be append-only with noevent lifecycle operation — no retire, suppress, supersede, or delete. Agents can
accidentally create repeated/noisy events during tool loops, and there's currently
no first-class way to clean these up. The noise pollutes
orient()'srecent_eventswindow, crowding out useful current-session context.Concrete case (GPT, 2026-06-10)
During a Concept Clarification cleanup of a chat about a pasted physics/math
excerpt ("Harmonic Collapse in Quantum Systems"), GPT's brainctl logged 10
duplicate warning events with the identical summary
"Correction: duplicate-warning test was unnecessary":2026-06-10T23:13:32Zthrough2026-06-10T23:14:15Z(all within ~45 seconds)
duplicate-warning event, and accidentally re-logging the correction repeatedly
preservation) should remain meaningful
visible in the
orientrecent-events window GPT received — would need direct DBinspection to confirm)
The actual project content is not affected — durable files and brainctl
memories 90, 91, 92 (Harmonic Collapse critique cleanup pointer, technical
findings, source-boundary warning) are intact and retrievable via
orient/memory_search. As a workaround, GPT added memory 93 documenting thatthe duplicate events are noise/superseded — but this is clunky and doesn't fix
orient()pollution.Requested feature (any of these would help)
event_retire(event_id, reason)— soft-retire a single eventevent_suppress_from_orient(event_id_or_range/query, reason)— hide fromdefault orient output
event_mark_noise(event_id, reason)event_supersede(event_id, superseding_event_id_or_memory_id, reason)event_bulk_retire(query_or_id_range, reason, dry_run=true first)orientoption to hide retired/suppressed/noise events by default, with anaudit flag to show them anyway
Design constraint
Prefer soft-retire / hide-from-default-orient over hard delete — preserves audit
integrity (append-only ledger stays intact) while keeping
orient()usefulday-to-day. Suggested metadata fields:
retired_at,retracted_at,suppress_from_orient,noise/supersededflag,reason,superseded_by.Desired end state for this specific case (once feature exists)
"Correction: duplicate-warning test was unnecessary"exists
Reported on behalf of GPT/Kelly. Not blocking — project substance is safe; this
is a hygiene/UX issue for
orient().