Skip to content

Timeboxing regression: explicit in-thread constraints do not override conflicting defaults #91

@hugolytics

Description

@hugolytics

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

  1. Given a conflict between a session constraint and a profile/default constraint, the session constraint wins for this thread.
  2. 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.
  3. Given no conflicting same-day blocker, the same default/profile constraint remains eligible and can still be selected.
  4. Agent/session debug output includes deterministic kept vs suppressed counts and suppression reasons for this selection pass.
  5. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions