diff --git a/agents/enable-ai-router.mdx b/agents/enable-ai-router.mdx
index 198d8a52..70217d85 100644
--- a/agents/enable-ai-router.mdx
+++ b/agents/enable-ai-router.mdx
@@ -7,7 +7,6 @@ doc-type: tutorial
import { FeatureBadge } from '/snippets/feature-badge.jsx';
-
The AI Router is part of [AI agents](/agents).
diff --git a/explore/configure-charts.mdx b/explore/configure-charts.mdx
index ce713ceb..42314886 100644
--- a/explore/configure-charts.mdx
+++ b/explore/configure-charts.mdx
@@ -33,6 +33,15 @@ The options available in here will depend on the data in your chart. But, in her
- Put series on a left or right y-axis
- Show value labels or group totals on data points
- Hide a series from your chart
+- Mark the chart's current, unfinished period so it isn't mistaken for a drop
+
+### Incomplete periods
+
+When the x-axis is a truncated date or time dimension — year, quarter, month, week, day, hour, or minute — and the chart's results include the period that hasn't finished yet (for example, the current week, before the week is over), the Series tab shows an **Incomplete periods** section with an **Indicate incomplete periods** checkbox.
+
+Turn it on to mark that period so a partial period isn't misread as a drop: line and area series draw it with a dashed line, and bar series fill it with a hatched pattern instead of a solid color.
+
+New charts have this on by default, whether you create them in the UI, through the API, from chart-as-code, or with an agent. A chart you already saved keeps its stored setting instead of picking up that default, so tick **Indicate incomplete periods** to turn it on for an existing chart.
### Series order
diff --git a/explore/create-alerts.mdx b/explore/create-alerts.mdx
index 1e9364d9..1355b96c 100644
--- a/explore/create-alerts.mdx
+++ b/explore/create-alerts.mdx
@@ -54,7 +54,7 @@ Here, you can configure your alert. The options are:
* **increased/decreased by**: Verify whether the percentage change in the first value relative to the second value exceeds the specified threshold, either by increasing or decreasing.
* **Notify me only once**: send the alert the first time the condition is met, then pause it. The alert shows as paused in your list of alerts until you turn its toggle back on. Leave this unticked to be notified every time the condition is met.
* **Run frequency**: This is the frequency at which Lightdash runs a query to check your data for changes. (You will be notified if the conditions on the latest value are met) . All times for the scheduler are in UTC.
-* **Send to**: here, you can pick if you want to send your alert to Slack, email, or both. You can add as many Slack channels and email addresses as you'd like to here. You can send an alert to a person in Slack using `@persons-name` or to a channel using `#channel-name`.
+* **Send to**: here, you can pick if you want to send your alert to Slack, email, or both. You can add as many Slack channels and email addresses as you'd like to here. You can send an alert to a person in Slack using `@persons-name` or to a channel using `#channel-name`. The Lightdash app needs to already be a member of any Slack channel you add — see [Saved chart alerts in Slack](/integrations/slack#saved-chart-alerts-in-slack) for how to invite it.
Alerts don't have a custom message. Email and Slack alerts name the chart and list the condition that was met. The field in the condition is named from its field ID rather than its label in the chart, so `orders_total_revenue` appears as **Orders total revenue**. Each alert also includes an image of the chart.
diff --git a/explore/create-scheduled-deliveries.mdx b/explore/create-scheduled-deliveries.mdx
index 7a8c8dfe..a0e6383b 100644
--- a/explore/create-scheduled-deliveries.mdx
+++ b/explore/create-scheduled-deliveries.mdx
@@ -48,7 +48,7 @@ Click `New delivery` to open the scheduled delivery configuration. The sidebar s
### Setup
-Under `Delivery > Setup`, name your delivery, set how often it runs (hourly, daily, weekly, monthly, or a custom Cron expression), and pick a time zone — deliveries follow your project's default time zone unless you override it here. Add recipients as email addresses or Slack channels; you can target a person in Slack with `@persons-name` or a channel with `#channel-name`. Google Chat and Microsoft Teams also show up here as destinations. On a self-hosted instance, Microsoft Teams shows only when `MICROSOFT_TEAMS_ENABLED` is `true` (see [environment variables](/self-host/customize-deployment/environment-variables#microsoft-teams-integration)). A delivery can go to several destinations at once, and a channel or email address can receive any number of deliveries, from the same chart or dashboard or from different ones.
+Under `Delivery > Setup`, name your delivery, set how often it runs (hourly, daily, weekly, monthly, or a custom Cron expression), and pick a time zone — deliveries follow your project's default time zone unless you override it here. Add recipients as email addresses or Slack channels; you can target a person in Slack with `@persons-name` or a channel with `#channel-name`. The Lightdash app needs to already be a member of any Slack channel you add — see [Scheduled deliveries](/integrations/slack#scheduled-deliveries) for how to invite it. Google Chat and Microsoft Teams also show up here as destinations. On a self-hosted instance, Microsoft Teams shows only when `MICROSOFT_TEAMS_ENABLED` is `true` (see [environment variables](/self-host/customize-deployment/environment-variables#microsoft-teams-integration)). A delivery can go to several destinations at once, and a channel or email address can receive any number of deliveries, from the same chart or dashboard or from different ones.

diff --git a/explore/table-calculations.mdx b/explore/table-calculations.mdx
index d6ec6fee..fc54c37b 100644
--- a/explore/table-calculations.mdx
+++ b/explore/table-calculations.mdx
@@ -137,6 +137,21 @@ For example: You use table calculations to calculate the `percentage_of_shipping

+## Show only the top N rows or groups
+
+Lightdash has no built-in top N filter, and no chart option to group the rest into "Other". To keep only the top N rows or groups by a metric, add a `RANK` or `ROW_NUMBER` [formula table calculation](/explore/table-calculations/formulas), ordered by that metric descending, then filter the table calculation to `N` or fewer.
+
+For example, to find the top 2 browsers by visits each month:
+
+```
+=RANK(PARTITION BY orders_order_month, ORDER BY orders_visits DESC)
+```
+
+Add a filter on the new table calculation column using the **is less than or equal to** operator with a value of `2`.
+
+- `PARTITION BY` ranks within each group, so the example above keeps the top 2 browsers for every month. Leave out `PARTITION BY` to rank over the whole results table instead, for a single top N across all rows.
+- The filter only hides rows below the cutoff (see [Key limitations](#key-limitations) above) — it doesn't change any other table calculation. A running total, percent-of-total, or another rank built from the same data still runs over every row, not just the ones the top N filter keeps.
+
## Table calculation functions and SQL templates
If you prefer not to write raw SQL, check out the built-in [row functions](/explore/table-calculations/functions/row-functions), [pivot functions](/explore/table-calculations/functions/pivot-functions), and [aggregate functions](/explore/table-calculations/functions/aggregate-functions) — they handle common patterns like accessing previous rows, row numbering, working across pivot columns, and computing totals.
diff --git a/integrations/slack.mdx b/integrations/slack.mdx
index 765d00d0..47151f08 100644
--- a/integrations/slack.mdx
+++ b/integrations/slack.mdx
@@ -157,6 +157,8 @@ And dashboards look like this when you choose _not_ to include an image:
Beyond scheduled deliveries, you can set up [alerts on saved charts](/explore/create-alerts) that only send to Slack when your criteria are met.
+Alerts need the same channel membership as scheduled deliveries: add the Lightdash app to the channel first, as described [above](#scheduled-deliveries).
+

diff --git a/workflow/content-as-code.mdx b/workflow/content-as-code.mdx
index 39bd7f7b..23948c9c 100644
--- a/workflow/content-as-code.mdx
+++ b/workflow/content-as-code.mdx
@@ -865,6 +865,10 @@ chartConfig:
yField:
- orders_total_orders_amount
- average_order_value_1
+ # Marks the chart's current, unfinished period (e.g. this week, before
+ # it's over) with a dashed line or hatched fill instead of a solid one,
+ # so it isn't mistaken for a drop.
+ showIncompletePeriod: true
eChartsConfig:
yAxis:
- name: Order amount