Goal
Make same-day explicit session facts override conflicting profile/default memory, including conditional defaults such as "go to the gym unless another sport is already planned or explicitly stated for that day."
Problem
In the latest planning thread, explicit session instructions are not overriding conflicting default/profile constraints. The agent continues using stale defaults even after correction.
Evidence
Slack thread: https://biolyticsai.slack.com/archives/C0AA6HC1RJL/p1772840876953279
- User says gym should be at 12:00 (
ts=1772841791.541729), but agent repeatedly reverts to default evening rhythm before partially correcting.
- User says planning session is already on calendar at 16:00 (
ts=1772841893.355329), but the next reply does not reconcile against that anchor.
- Broader desired behavior: a default activity preference should be suppressible when same-day context contains a stronger conflicting activity (for example another sport on calendar or explicitly stated in-thread).
Scope
- Use existing
aspect_classification metadata to model conditional applicability during timeboxing memory selection.
- Evaluate
conditional_on_present, conditional_on_absent, and excludes_aspect_ids against same-day session/calendar context before selecting active constraints.
- Suppress weaker default/profile constraints when a stronger same-day explicit/session constraint or anchor conflicts in the same planning domain.
- Emit deterministic debug/snapshot fields for kept vs suppressed memory candidates and suppression reasons.
- Add regression tests covering the reproduced gym/planning-time conflict and the gym-vs-other-sport conditional-default case.
Non-goals
Acceptance Criteria
- Given a conflict between a session constraint and a profile/default constraint, the session constraint wins for this thread.
- Given a default/profile activity preference that is conditional, when same-day context contains a blocking/conflicting activity, the default/profile constraint is suppressed before active selection.
- Given no conflicting same-day blocker, the same default/profile constraint remains eligible and can still be selected.
- Agent/session debug output includes deterministic kept vs suppressed counts and suppression reasons for this selection pass.
- Regression tests reproduce:
- the gym/planning-time override pattern from the reported thread,
- a gym default suppressed by another same-day sport,
- a non-conflict case where gym remains active.
Design / Ownership Notes
Validation Plan
- Add focused unit tests for same-day conditional suppression and precedence rules.
- Run targeted timeboxing memory/constraint test subset, including new regressions.
- Verify debug snapshot fields expose suppression results without introducing heuristic behavior.
Links
Goal
Make same-day explicit session facts override conflicting profile/default memory, including conditional defaults such as "go to the gym unless another sport is already planned or explicitly stated for that day."
Problem
In the latest planning thread, explicit session instructions are not overriding conflicting default/profile constraints. The agent continues using stale defaults even after correction.
Evidence
Slack thread: https://biolyticsai.slack.com/archives/C0AA6HC1RJL/p1772840876953279
ts=1772841791.541729), but agent repeatedly reverts to default evening rhythm before partially correcting.ts=1772841893.355329), but the next reply does not reconcile against that anchor.Scope
aspect_classificationmetadata to model conditional applicability during timeboxing memory selection.conditional_on_present,conditional_on_absent, andexcludes_aspect_idsagainst same-day session/calendar context before selecting active constraints.Non-goals
Acceptance Criteria
Design / Ownership Notes
src/fateforger/agents/timeboxing/agent.pyselection/reconciliation path.aspect_classificationschema and avoid regex/substring heuristics.Validation Plan
Links