Skip to content

engine.aggregate: add per-aggregation filter to the contract — ruled half of #10413 (measure-level filters on the ObjectQL analytics path) #10576

Description

@os-zhuang

Contract-half card created by the triage seat executing the maintainer's #10413 ruling. Provenance: maintainer, live PM chat 2026-08-21, verbatim 「其他接受」 accepting the triage recommendation for #10413 — option A: "给引擎聚合契约加逐聚合过滤,一次修对所有驱动" (widen the aggregate contract with a per-aggregation filter; correct once, for every driver).

Scope

Consumer

ObjectQLStrategy in packages/services/service-analytics lowers each measure's filter into the new field — that half stays on #10413 (its phase 2, comment-channel Blocked-by: pointing here). The dataset-level filter merge (#10413 phase 1) does NOT wait on this card.

Discipline

Clause-②: yes — this widens a public contract surface. Dispatch at the contract-review tier per the model-tiering rules; needs:contract-review applies on the PR. Acceptance evidence should include the #10413 reproduction (per-measure stage: 'closed_won' filters reaching engine.aggregate and changing the numbers) plus a refusal/lowering test for a driver without native conditional aggregation.

Refs: #10413 (the decision card and measurements) · #10298 / PR #10411 (the native-SQL half, merged).

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions