Skip to content

[OA-011] Add watch rules, debounced local alerts, and event acknowledgement #11

Open

Description

@johnnycoderbot-cloud

Planned implementation slice OA-011. No application behavior is implemented by this issue.

Phase: P3 · Dependencies: OA-009

Full roadmap detail · Contracts

Requirements

OA-ALT-001, OA-ALT-002, OA-ALT-003, OA-ALT-004, OA-ALT-005, OA-AI-002

Target files

  • packages/core/src/rules/evaluate.ts
  • packages/core/src/rules/debounce.ts
  • apps/service/src/notifications/local.ts
  • apps/desktop/src/renderer/rules/RuleEditor.tsx
  • apps/desktop/src/renderer/events/EventDetails.tsx

Acceptance criteria

  • Rules bind a named source and region to deterministic motion sensitivity/hold/cooldown or an explicit semantic condition/cadence/expiry; rule creation never authorizes actions.
  • Repeated observations coalesce by rule/source/active condition. Cooldown is 30 seconds from the last trigger; semantic reset needs two clear samples, including samples during cooldown. Rearm only after cooldown elapsed and latest fresh evidence remains clear; stale or missing evidence never clears or rearms. Acknowledge/snooze controls remain available.
  • Local dashboard/OS alerts show evidence timestamp and uncertainty; unknown or stale evidence cannot satisfy a fresh condition.
  • Notification delivery failure appears in the timeline; Bionic unsolicited notification delivery remains disabled until a compatibility gate passes.
  • Source-group rules declare any/all/ordered relation and evidence skew (proposed 5 seconds). Missing/stale members make all unknown; preserve member timestamps, and do not count repeated ROIs of one parent as independent observations.

Verification

  • Synthetic observation replay for true/false/unknown/stale conditions, cooldown, acknowledgement, and snooze.
  • Fake-clock duplicate event and retry tests.
  • Opt-in native Windows notification test with a harmless synthetic event.
  • Synthetic frame sequence tests sustained motion, pixel noise, selected region, hold time, cooldown/clear/rearm, disconnected source, disabled/deleted/paused rules.
  • Group replay tests cover any/all, missing/stale members, >5-second skew, ordered relations, and duplicate parent-source regions; unsupported relation yields an explicit gate.

Gate and estimate

G3c: alerts have grounded evidence, bounded repetition, and visible delivery state.

4-8 first-pass work-unit hours; NOT an alpha completion estimate; assumption: 8 bounded 30-60 minute work units, prepared environment and fixtures; integration waits/rework excluded

Handoff

Record changed files, actual commands/results, mock versus live evidence, residual limits, and review verdict. Do not connect personal feeds or accounts in CI.

Bounded work units

  • Define rule schema (30-60 minutes)
  • Build rule editor (30-60 minutes)
  • Evaluate source-specific condition (30-60 minutes)
  • Add unknown/stale suppression (30-60 minutes)
  • Implement debounce and cooldown (30-60 minutes)
  • Add local notification delivery (30-60 minutes)
  • Build acknowledgement controls (30-60 minutes)
  • Test replay and delivery failure (30-60 minutes)

Linked dependencies

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    integration-gateExternal or native capability requires reproducible evidenceplannedExecution-ready planned work; not implemented

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions