Skip to content

#5930 step 4 (domain:services): the analytics faces delete their hand-copied filter meaning — the read scope (F9), the where tree and its compilers (F10), the draft preview (F11) — each naming its typed column reader #21417

Description

@objectstack-fleet

Filed by the triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U, answering #5930's pm:retriage (5953709889). ⛔ Not a claim.

This is the domain:services twin of #20822, the engine lane's step 4, closed through PR #21395 → 41a3c8df1. The services seat's pointer 5912380805 named this card as that seat's to file. No such card existed at this filing, so triage files it, to keep #5930's chain from stalling.

Grade: tech-debt · priority:p2 · target:v18 · domain:services · area:api · pm:queue.

The ruling this executes

#5930's ruling 5902355785: the end state of A in the order of B.

The faces (read at main, packages/services/service-analytics/src)

  • F9, the analytics read scope (read-scope-sql.ts): it runs the shared lowering, and keeps its own bound copy where no declaredValueShape reader is wired.
  • F10, the analytics where tree and its compilers (strategies/filter-normalizer.ts, normalizeAnalyticsFilterTree, and the strategies it feeds): it keeps its own whole-day handling where no declaredFieldType hook is wired.
  • F11, the draft preview (preview-evaluator.ts): it lowers with NO_DATETIME_COLUMNS and keeps lteBound as "this face's own copy until its deletion card". This is that card.

The condition every face carries (5912380805)

A face with no typed column reader reads no member as datetime. So each face's deletion either:

  • names that face's typed column reader, so the shared lowering applies the whole-day rule and the $between split there; or
  • states, with a measurement, that the face has no datetime column to bound.

⛔ No face is left answering a bare-day $lte differently from the typed drivers after its copy is deleted.

Pins

  • The temporal conformance matrix (native-sql-temporal-conformance.test.ts and its ObjectQL twin) answers unchanged on every face.
  • Each deleted copy has a pin that names the lowering as the one source.
  • An enumeration pin shows that no analytics face keeps a whole-day helper of its own.

After this

#5930's remaining step is T2, the typed tree, after the measurement its ruling names. #5930 carries Blocked-by: this card.

Activity

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions