diff --git a/docs/reference/expression-coverage.json b/docs/reference/expression-coverage.json index 4d115178..229b5123 100644 --- a/docs/reference/expression-coverage.json +++ b/docs/reference/expression-coverage.json @@ -71096,6 +71096,13 @@ "since": "2026-08-06" } ], - "gaps": [], + "gaps": [ + { + "gap_kind": "other", + "reason": "ibis-sqlite's TimestampBucket has no compilation rule, so a multi-digit MA-wrapper duration string (e.g. dt.truncate('2d')) on ibis-sqlite raises a raw native OperationNotDefinedError rather than a clean BackendCapabilityError. A DURATION_MULTIPLIER-class fact for this would need a corresponding class-backed OptionCell, which the 4-fixture argument-type matrix cannot instantiate for ibis-sqlite (same structural limit as test_option_fact_integrity.py's _MATRIX_UNREACHABLE_DIALECT_FACTS) -- see backlog item 99.", + "since": "2026-08-16", + "review_due": "2027-02-15" + } + ], "retired": [] } diff --git a/docs/reference/expression-coverage.md b/docs/reference/expression-coverage.md index 779f2694..da4d27d8 100644 --- a/docs/reference/expression-coverage.md +++ b/docs/reference/expression-coverage.md @@ -591,7 +591,9 @@ Cells whose facts are all scoped (dialect / parameter / option / value-class) ha ## Known gaps -None recorded. +| Kind | Reason | Since | Review due | +| --- | --- | --- | --- | +| other | ibis-sqlite's TimestampBucket has no compilation rule, so a multi-digit MA-wrapper duration string (e.g. dt.truncate('2d')) on ibis-sqlite raises a raw native OperationNotDefinedError rather than a clean BackendCapabilityError. A DURATION_MULTIPLIER-class fact for this would need a corresponding class-backed OptionCell, which the 4-fixture argument-type matrix cannot instantiate for ibis-sqlite (same structural limit as test_option_fact_integrity.py's _MATRIX_UNREACHABLE_DIALECT_FACTS) -- see backlog item 99. | 2026-08-16 | 2027-02-15 | ## Retirement changelog diff --git a/src/mountainash/core/capabilities/gaps.py b/src/mountainash/core/capabilities/gaps.py index b575f921..41d5889b 100644 --- a/src/mountainash/core/capabilities/gaps.py +++ b/src/mountainash/core/capabilities/gaps.py @@ -6,9 +6,22 @@ """ from __future__ import annotations -from typing import TYPE_CHECKING +from mountainash.core.capabilities.schema import GapKind, KnownGap -if TYPE_CHECKING: - from mountainash.core.capabilities.schema import KnownGap - -KNOWN_GAPS: tuple[KnownGap, ...] = () +KNOWN_GAPS: tuple[KnownGap, ...] = ( + KnownGap( + gap_kind=GapKind.OTHER, + reason=( + "ibis-sqlite's TimestampBucket has no compilation rule, so a " + "multi-digit MA-wrapper duration string (e.g. dt.truncate('2d')) " + "on ibis-sqlite raises a raw native OperationNotDefinedError " + "rather than a clean BackendCapabilityError. A " + "DURATION_MULTIPLIER-class fact for this would need a " + "corresponding class-backed OptionCell, which the 4-fixture " + "argument-type matrix cannot instantiate for ibis-sqlite (same " + "structural limit as test_option_fact_integrity.py's " + "_MATRIX_UNREACHABLE_DIALECT_FACTS) -- see backlog item 99." + ), + since="2026-08-16", + ), +)