- sql_generator: normalize ISO/epoch values only against a resolved target type
(Nullable/LowCardinality unwrapped); untyped epoch-looking strings are preserved and
unparseable temporal values raise instead of coercing. Removes the heuristic that
wrote sentinel dates (2106-02-07 = UInt32 max) into business date columns.
- sql_generator: ClickHouse string-literal escaping — backslash, quote and control
characters escaped; ANSI '' doubling alone silently rewrote paths and tabs on insert.
- service_target_schema: one fetch_target_column_types resolver for both direct_db and
SQL Lab insert paths (300s cache) plus a single column-catalog SQL builder; EXPLORE
trace when the catalog is unreachable/empty instead of a silent untyped fallback.
- _lang_detect: script-conflict downgrade no longer depends on the target language list;
letterless text becomes und; short/number-heavy Cyrillic cannot survive as a Latin
language; sanitize_detected_language validates the LLM arbitration answer by script.
- _batch_proc/_utils: und rows actually reach LLM arbitration (same-language, cache and
preview short-circuits blocked) and trust a cache entry only when its stored source
language is confirmed; detector version bumped to invalidate the v2 cache.
- _key_mapping: single source->target key mapping; MERGE with target_language_column
absent from target_key_cols rejected in preflight before any fetch/LLM; lang_code is a
target-only discriminator (no fictitious source key). Removes 5 divergent copies.
- frontend: global run indicator elapsed timer (1s tick, server started_at, cleanup)
reusing formatDuration; MERGE-key inline validation with en/ru i18n keys; UX contract
and decision-memory updates.
- tests: real ClickHouse testcontainers coverage on dm.debt_comment_translations
(Date32/DateTime transfer, epoch/millis/sentinel/boundaries, NULL semantics, text
escaping round-trip, MERGE language discriminator, chunked batch, production
projection); unit coverage for typed normalization, escaping, key mapping and the
arbitration cache. Existing integration module had a stale untyped-epoch expectation.
- ProviderEventLoop.stop(): close_all_sessions fan-out on the live loop before detach +
bounded pending-task drain before loop.close() (zero 'Task was destroyed' live-proven);
close_all_sessions weak-registry shutdown fan-out in browser_session_managers.
- SCEX-FR-038 independent mutation readback: browser_readback.py (same-session fresh
client_id SELECT, cleanup-aware expectation, canonical 6dp float normalization);
transport wiring adds readback_verified checkpoint; BrowserTransportReadbackMismatch ->
reconciliation_required/effect unknown/retry blocked; INV_7 kept (browser.py 395 LOC
via factory-helpers extraction).
- Live canaries: actions/mutation (readonly-canary-20260918T174659/174740/184343Z) and
native filters (filters-canary-20260918T195946Z: values/clear/replay/chart PASS; date
vector absent on stand — external prerequisite).
- Robustness fixes from live flake: pre-apply Escape (stale overlay in reused sessions)
and bounded antd dropdown settle in browser_native_filter.
- Root-cause of the 82.75/82.74 divergence: mid-step post-SELECT vs post-restore
lifecycle skew, not a cache defect.
The 044 provider lifecycle is decomposed to satisfy INV_7 and closed with live canaries;
the remaining acceptance row (T046 graph-level terminal PASS) is diagnosed with executable proof.
- split browser_readonly_actions (534->160), browser_session (501->58) and browser.py (407->398)
into sibling modules with frozen contract IDs and frozen import surface (facades re-export every
moved public name); monkeypatch seams follow the owning modules
- gates per phase: scoped 044 suite 1590 passed and full backend 11269 passed / 0 failed, no delta
- T042b: six PREPROD browser canaries GREEN under the Wave-C run-scoped session architecture;
harness gains SS_CANARY_STORAGE_ROOT and fixes the dead-loop scheduler drain hang
- T044: new artifact-content live HTTP canary 11/11 (real app, PostgreSQL, JWTs, live-captured bytes)
- T045: new fault-injection canary 16/16 (bounded loop refusals, deadline cancellation, shutdown
drain, capacity quarantine + TTL reconcile, receipt CAS, late response, cancel drain)
- T046: walker-level evaluation->comparison binding diagnosed (compare-only + mandatory ->
EVALUATION_UNAVAILABLE; bound evaluation -> BASELINE_AND_SEMANTIC_PASS); T043/T046 stay open
- refresh 044 spec/traceability/checklist/quickstart/SESSION_STATE/contracts/plan/data-model and the
037/050 rows to evidence-backed states; split three malformed multi-target @RELATION lines
- fix skill drift in semantics-python/semantics-svelte (logger facade, notify(), i18n proxy)
Add 2026-09-08 production gap/spec-coverage/refresh-plan and dashboard
scenario E2E plan/report, axiom-mcp feedback, and 2026-09-11 data-team
maintenance dev-test run notes.
Structure-first validation: prose double-hyphen passes, SQL in title rejected,
needs_baseline is not a promotion gate, legacy snapshot stays free-text scan.
Module load of maintenance.svelte.js happened inside the first test via
dynamic import and exceeded the 5000ms testTimeout under full-suite
parallel load. Move to a single hoisted static import (mock factories
now resolve vi.fn()s created via vi.hoisted) and drop a dead no-op
placeholder test. 39/39 in isolation, 3563/3563 full suite.