busya
49a566359a
feat: translate module — runtime knobs, GRACE anchors, two-layer testing, QA fixes
Implementation:
- Performance knobs: llm_batch_max_rows, llm_concurrency, insert_concurrency,
multi_lang_mode, batch_aggressiveness, max_in_flight_batches
- Alembic migration f7a8b9c0d1e2 (idempotent, nullable, non-destructive)
- LLM provider capabilities: throughput_class, reasoning_control,
supports_json_object, default/max_llm_concurrency
- TargetSchemaValidationRequest with conditional validator (sqllab/direct_db)
- Scheduler: background dispatch, local imports for lazy bootstrap
GRACE-Poly compliance:
- Semantic anchors on orchestrator_aggregator, orchestrator_sql, llm_provider
- Shared module _llm_http.py: _apply_reasoning_control extraction (INV_4)
- Alembic migration anchors per C3/C1 template
- Four renamed Svelte components: RunOutcomeSummary, DetectionQualityCard,
LanguageStatList, SourceLanguageOverride
QA (this session):
- 11 backend test regressions fixed: spec'd MagicMock null fields for new
columns, _check_translation_cache_bulk retarget, scheduler mock wiring,
language_detection=auto assertions, token budget constant update
- 4 frontend eslint errors fixed: SvelteSet/SvelteDate imports,
unused lang parameter, dead isTransientError
- Production bugfix: job_to_response() mapped 6 missing fields
- Pre-existing auth test failure documented (dependencies.py untouched)
- Axiom: 6440 contracts, 0 warnings
2026-07-20 14:19:47 +03:00
..
2026-07-20 14:19:47 +03:00
2026-07-17 19:11:09 +03:00
2026-07-04 22:47:17 +03:00
2026-07-16 07:53:41 +03:00
2026-07-16 12:31:59 +03:00
2026-07-20 14:19:47 +03:00
2026-07-14 15:56:31 +03:00
2026-06-16 11:01:31 +03:00
2026-07-20 14:19:47 +03:00
2026-07-07 15:18:24 +03:00
2026-07-14 15:56:31 +03:00
2026-07-14 10:43:38 +03:00
2026-07-16 07:53:41 +03:00
2026-05-26 19:18:28 +03:00
2026-05-26 19:18:28 +03:00
2026-06-16 00:12:49 +03:00
2026-06-10 14:57:18 +03:00
2026-06-10 14:57:18 +03:00
2026-06-15 22:04:40 +03:00
2026-06-16 11:01:31 +03:00
2026-06-10 14:57:18 +03:00
2026-06-16 11:01:31 +03:00
2026-07-20 14:19:47 +03:00
2026-07-06 01:23:09 +03:00
2026-06-15 17:31:43 +03:00
2026-06-16 12:11:49 +03:00
2026-05-26 19:18:28 +03:00
2026-07-15 13:07:41 +03:00
2026-06-16 12:01:03 +03:00
2026-06-05 15:43:35 +03:00
2026-06-16 12:11:49 +03:00
2026-06-16 12:11:49 +03:00
2026-07-15 23:02:23 +03:00
2026-05-26 19:18:28 +03:00
2026-07-15 23:02:23 +03:00
2026-05-26 19:18:28 +03:00
2026-06-15 19:31:56 +03:00
2026-07-12 19:30:57 +03:00
2026-05-26 19:18:28 +03:00
2026-06-16 00:12:49 +03:00
2026-06-05 15:43:35 +03:00
2026-06-15 17:31:43 +03:00
2026-06-16 11:01:31 +03:00
2026-06-15 17:31:43 +03:00
2026-06-15 16:45:49 +03:00
2026-06-15 17:31:43 +03:00
2026-07-02 08:53:19 +03:00
2026-06-15 17:31:43 +03:00
2026-06-16 12:01:03 +03:00
2026-07-17 19:11:09 +03:00
2026-05-26 19:18:28 +03:00
2026-06-18 23:54:57 +03:00
2026-06-16 12:01:03 +03:00
2026-05-26 19:18:28 +03:00
2026-07-06 01:23:09 +03:00
2026-07-12 19:30:57 +03:00
2026-07-14 17:33:16 +03:00
2026-06-16 12:01:03 +03:00
2026-06-16 00:12:49 +03:00
2026-06-16 00:12:49 +03:00
2026-05-26 19:18:28 +03:00
2026-07-14 15:56:31 +03:00
2026-07-16 12:31:59 +03:00
2026-06-15 19:31:56 +03:00
2026-06-11 19:12:45 +03:00
2026-05-26 19:18:28 +03:00
2026-06-11 19:12:45 +03:00
2026-06-11 19:12:45 +03:00
2026-07-17 19:11:09 +03:00
2026-07-17 19:11:09 +03:00
2026-07-17 19:11:09 +03:00
2026-06-15 22:04:40 +03:00