---
id: "windowed-aggregation-without-watermark"
type: "rule"
severity: "warning"
url: "https://localhost:3000/catalogue/rules/windowed-aggregation-without-watermark"
---

# Event-time windows without watermark

A stream processor windows by event time but declares no watermark, so window completion and late data are undefined.

| | |
|---|---|
| Severity | warning |
| Selects | every node of kind stream-processor |
| Components in scope | 34 |

## Why

Event-time windows need a watermark to know when a window is complete. Without one the processor either waits forever or closes windows early and silently drops late events.

## What it checks

It looks at every node of kind stream-processor, and fires when:

- all of these hold:
  - the node's `windowing` is "event-time"
  - the node's `watermarkSeconds` has no value

Message template:

```
Stream processor '{{node.id}}' windows by event time but declares no watermark. Late data handling is undefined.
```

## Applies to

- [Stream processor](https://localhost:3000/catalogue/kinds/stream-processor.md) `stream-processor`

34 catalogue components fall under it.

## Tripped by

Reference designs whose broken twin names this rule in its header:

- [ad-click-aggregation](https://localhost:3000/d/zeema/ad-click-aggregation)
- [airbnb-search](https://localhost:3000/d/zeema/airbnb-search)
- [doordash-delivery](https://localhost:3000/d/zeema/doordash-delivery)
- [gojek-platform](https://localhost:3000/d/zeema/gojek-platform)
- [google-maps](https://localhost:3000/d/zeema/google-maps)
- [khan-academy-goliath](https://localhost:3000/d/zeema/khan-academy-goliath)
- [linkedin-kafka](https://localhost:3000/d/zeema/linkedin-kafka)
- [lyft-envoy](https://localhost:3000/d/zeema/lyft-envoy)
- [metrics-monitoring](https://localhost:3000/d/zeema/metrics-monitoring)
- [nubank-core](https://localhost:3000/d/zeema/nubank-core)
- [pokemon-go](https://localhost:3000/d/zeema/pokemon-go)
- [spotify-playback](https://localhost:3000/d/zeema/spotify-playback)
- [tiktok-recommendation](https://localhost:3000/d/zeema/tiktok-recommendation)
- [x-recommendation](https://localhost:3000/d/zeema/x-recommendation)

## Source (`rule` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../schema/rule.schema.json
# Event-time windows need a watermark to know when a window is complete. Without one
# the processor either waits forever or closes windows early and drops late events.
# Tripped by: designs/doordash-delivery.broken.yaml
schemaVersion: "1"
type: "rule"
id: "windowed-aggregation-without-watermark"
severity: "warning"
select:
  node:
    kind: "stream-processor"
when:
  all:
    - prop: "windowing"
      equals: "event-time"
    - prop: "watermarkSeconds"
      exists: false
message: "Stream processor '{{node.id}}' windows by event time but declares no watermark. Late data handling is undefined."
```

Human page: https://localhost:3000/catalogue/rules/windowed-aggregation-without-watermark
