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
/// A decision was made (extracted from conversation)
77
77
Decision,
78
+
/// The user corrected a prior assumption, instruction, or framing
79
+
UserCorrection,
80
+
/// A prior decision changed after feedback or new information
81
+
DecisionRevised,
82
+
/// A concrete due date, deadline, or scheduled milestone was set
83
+
DeadlineSet,
84
+
/// Progress is waiting on approval, missing input, or an external dependency
85
+
BlockedOn,
86
+
/// A hard requirement, limitation, or non-negotiable boundary was stated
87
+
Constraint,
88
+
/// A task, branch, or delegated step reached a clear terminal result
89
+
Outcome,
78
90
/// An error or failure occurred
79
91
Error,
80
92
/// A task was created or updated
@@ -455,19 +467,19 @@ The periodic memory persistence branch currently runs every 50 user messages. Re
455
467
456
468
### Persistence Branch Dual Output
457
469
458
-
The memory persistence branch gains a second responsibility: in addition to saving graph memories, it emits `Decision` and `MemorySaved` events into the working memory log. This connects the two systems:
470
+
The memory persistence branch gains a second responsibility: in addition to saving graph memories, it emits typed conversational events into the working memory log. This connects the two systems:
3. Saves new graph memories via memory_save (as today)
465
477
4. Identifies key decisions and events
466
-
5. Emits working memory events for each decision identified
478
+
5. Emits working memory events for each important event identified
467
479
6. Calls memory_persistence_complete
468
480
```
469
481
470
-
Step 5 is new. The persistence branch prompt is updated to instruct it to identify decisions explicitly. The `memory_persistence_complete` tool gains an optional `events` field:
482
+
Step 5 is new. The persistence branch prompt is updated to identify durable temporal events explicitly: decisions, user corrections, revised decisions, concrete deadlines, blockers, constraints, terminal outcomes, errors, and system events. The `memory_persistence_complete` tool gains an optional `events` field:
| Worker spawned |`spawn_worker` tool handler | After successful spawn, write event with task description as summary |
493
-
| Worker completed | Worker state machine terminal transition | Write event with worker result summary (truncated to 200 chars) |
494
-
| Branch completed | Branch return path in channel | Write event with branch conclusion (truncated to 200 chars) |
505
+
| Worker completed | Worker state machine terminal transition | Write typed result, blocker, constraint, or deadline event when the summary uses a recognized prefix; otherwise write `WorkerCompleted`|
506
+
| Branch completed | Branch return path in channel | Write typed result, blocker, constraint, or deadline event when the summary uses a recognized prefix; otherwise write `BranchCompleted`|
495
507
| Cron executed | Cron scheduler after job completes | Write event with cron name + outcome |
496
508
| Memory saved |`memory_save` tool handler | Write event with memory type + content preview |
497
-
| Task updated | Task tool handlers | Write event with task title + new status |
509
+
| Task updated | Task tool handlers | Write `Outcome` when a task transitions to `done`; otherwise write `TaskUpdate` with task status |
510
+
| Duplicate worker |`spawn_worker` duplicate guard | Write `BlockedOn` with the active worker ID and duplicate task preview |
511
+
| Agent delegation |`send_agent_message` tool handler | Write `Outcome` when delegation creates the cross-agent task |
498
512
| Error | SpacebotHook on tool failure, worker failure | Write event with error description |
499
513
| System | Startup, config change, maintenance | Write event with description |
500
514
515
+
Branch and worker summaries may opt into richer event types with these prefixes: `outcome:`, `blocked_on:` or `blocked on:`, `constraint:`, and `deadline_set:` or `deadline:`. The prefix is stripped before rendering the event summary.
516
+
501
517
Each emitter calls `working_memory_store.record_event()` as a fire-and-forget `tokio::spawn`. The message processing pipeline never waits on event recording.
0 commit comments