You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit fd6f53c
Browse filesBrowse the repository at this point in the historyBrowse files
fix(service-analytics): runtime strings state each decision in words instead of a tracker number (stage 7)
The analytics-service.ts, comparand-shape.ts and filter-normalizer.ts
strings that sent the reader to a tracker number now say what was
decided: the engine path's driver enforces the cross-field rules in one
place; a $between bound may not be a field reference because the schema
removed that position; an undefined comparand, a zero-operator field
constraint and a mixed $/bare wrapper are refused rather than guessed
at; a filter array is lowered at every door or refused, never dropped.
The prose-id ledger is recomputed with --census-ledger: the three
files' entries go to zero and no other entry moves. Text only.
Claude-Session: https://claude.ai/code/session_01DiCSbmJrkzNhuEAier4VoJ
Co-authored-by: Claude <noreply@anthropic.com>
Analytics filter refusals, the no-strategy diagnostic and the cube-gate warning no longer cite tracker numbers; each one states the decision behind it in words
6
+
7
+
Clause-②: no
8
+
9
+
Some strings the analytics service shows to callers, authors and operators pointed at an issue-tracker number for the reason behind them. The number goes; where the sentence did not already say what was decided, it now does.
10
+
11
+
- The two field-reference refusals (a `{ $field }` comparand the SQL lowering cannot render, and a `{ $field }` used as a `$between` bound) say the engine path's driver enforces the cross-field rules (declared same-table columns only, never the tenant-isolation column, one comparison class) with metadata it owns, so those rules are enforced in one place. The bound refusal also says `FieldReferenceSchema` was removed from the `$between` endpoint union rather than implemented there, since nothing asked for it.
12
+
- The no-strategy diagnostic for a cross-field filter on a deployment with no aggregate bridge says the same about the engine path.
13
+
- The `where` refusals: an undefined comparand is refused rather than read as null, on the SQL drivers and on this door alike; a field constraint with zero operators is refused on every backend, because neither "every row" nor "no row" is the author's intent; a field constraint mixing `$` operators with bare keys is refused by both doors in the package; and the two filter-array refusals say a filter array is lowered at every door or refused, never dropped, so it means the same rows whichever door it enters. Where the undefined-comparand refusal cited a tracker number for the silent widening, it now says that a dropped predicate widens the query; the mixed-wrapper refusal already said so and only drops its citation.
14
+
- The dotted-measure refusal drops its citation; the sentence already says measures do not traverse relationships and that the prefix used to be dropped silently.
15
+
- The warning logged when no object-registry hook is configured says the inactive gate is the one that answers 404 `CUBE_NOT_FOUND` for a name that is neither a registered cube nor a registered object.
16
+
17
+
Text only: no status, error code, field, route or control flow moves. A client or log filter that matches the old text (for example a tracker-number suffix) needs the new spelling.
0 commit comments