Files
OmniRoute/docs/i18n/uz/docs/ops/RELEASE_CHECKLIST.md
Diego Rodrigues de Sa e Souza b637350680 fix(docs): re-sync the 65 documentation mirror sets; section-level docs pipeline; drift gate blocking (#13940)
1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors.

⚠️ base-red inherited: #12732
2026-09-17 02:55:31 -03:00

31 KiB
Raw Blame History

Release Checklist (Oʻzbekcha)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Soʻnggi yangilanish: 2026-08-28 — v3.8.51 Avtomatlashtirish uchun Claude Code konikmalaridan foydalanadigan soddalashtirilgan reliz jarayoni.

Relizlar orasida navbat/tarmoqni yashil holatda saqlang: RELEASE_GREEN.md fayliga qarang (/green-prs oilasi + npm run check:release-green + /babysit + tungi ishga tushirish). Buni vaqti-vaqti bilan — ayniqsa ushbu nazorat royxatidan oldin — ishga tushirish reliz PRining yashil holatda boshlanishini taminlaydi.

Qisqacha

# 1. Versiyani oshirish + CHANGELOG yaratish (konikma)
/version-bump-cc patch    # yoki minor/major

# 2. Sifat tekshiruvini mahalliy muhitda ishga tushirish
npm run check              # lint + testlar
npm run test:coverage      # toliq qamrov tekshiruvi (60/60/60/60)

# 3. Yigish va tezkor tekshiruv
npm run build
npm run test:e2e           # ixtiyoriy, ammo tavsiya etiladi

# 4. Relizni yaratish (konikma)
/generate-release-cc

# 5. Joylashtirish (konikma)
/deploy-vps-both-cc        # yoki akamai-cc / local-cc

# 6. Reliz dalillarini yigish (konikma)
/capture-release-evidences-cc

npm Trusted Publishing (v3.8.51 dan beri standart) — sorov boyicha bosqichli, zaxira variant sifatida togridan-togri

npm-publish.yml standart holatda npm Trusted Publishing (OIDC) orqali nashr qiladi: stage-npm vazifasi (GitHub tomonidan xost qilinadi) GitHub id-tokenini shu ishga tushirish uchun qisqa muddatli npm hisob maʼlumotiga almashtiradi — repozitoriy sirlarida uzoq muddatli npm tokeni yoq, 2FA sorovi yoq va kelib chiqish maʼlumoti biriktiriladi. 2FAni chetlab otadigan tokenlar isteʼmoldan chiqarilayotgani sababli endi npm ruxsat beradigan chetlab otish usuli shu; u WS1.3 kafolatini saqlagan holda loyiha v3.8.48 gacha ega bolgan toliq avtomatik jarayonni tiklaydi (sizdirilgan tokenning ozi nashr qila olmaydi — tokenning ozi mavjud emas).

Bir martalik sozlash (egasi): npmjs.com → omniroute paketi → Settings → Trusted Publisher → GitHub: egasi diegosouzapw, repozitoriy OmniRoute, ish jarayoni npm-publish.yml (muhit: yoq). Bu sozlama yaratilmaguncha avtomatik qadam ENEEDAUTH bilan muvaffaqiyatsiz tugaydi: publish_mode=staged (quyida) yoki direct bilan qayta ishga tushiring.

Bosqichli nashr qilish (sorov boyicha — publish_mode=staged)

npm-publish ish jarayoni endi togridan-togri nashr qilmaydi: u paketlangan tarballni ishga tushiradi (check:pack-boot) va keyin npm stage publish buyrugini bajaradi — aynan shu baytlar reyestrda saqlanadi, ammo egasi tasdiqlamaguncha ornatib bolmaydi. Inson bajaradigan 2FA nazorati isbotdan oldin emas, undan KEYINGI bosqichga kochirildi.

Ish jarayoni yashil holatga otgandan keyingi egasi bajaradigan jarayon:

  1. npm stage list omniroute — bosqich identifikatorini toping (u ish jarayoni xulosasida ham korsatiladi).
  2. Bosqichlangan baytlarni tekshiring (tavsiya etiladi): npm stage download <id>, song yuklab olingan tarballni vaqtinchalik prefiksga ornating va ishga tushiring (npm run check:pack-boot CI ichida xuddi shu paketlash→ornatish→ishga tushirish xulosasini avtomatlashtiradi).
  3. npm stage approve <id> — 2FA sorovi nashrning OZIDIR. npm stage reject <id> uni bekor qiladi.
  4. Nashrdan keyingi himoya: nashrdan keyingi tekshiruvchi (v3.8.49 rejasining WS1.4 qismi) nashr qilingan versiyani ochiq reyestrdan toza konteynerga ornatadi va ishga tushiradi.

Favqulodda zaxira variant: publish_mode=direct bilan workflow_dispatch eski darhol bajariladigan npm publish jarayonini tiklaydi (faqat bosqichlashning ozi notogri ishlasa foydalaning; sababini qayd eting).

Bir martalik mustahkamlash (egasi, npmjs.com): omniroute uchun Trusted Publisherni faqat bosqichlash rejimida sozlang, shunda sizdirilgan uzoq muddatli token hech qayerdan togridan-togri npm publish bajara olmaydi — CI faqat bosqichlay oladi; relizni faqat egasining 2FAi chiqaradi.

Buzilgan artefakt boyicha yoriqnoma (ozgarmagan): standart tezkor chora sifatida npm deprecate omniroute@<bad> "<reason> — use <fixed>" dan foydalaning (bir necha daqiqa oladi, qaytarish mumkin); npm unpublish dan faqat 72 soat/hech qanday bogliq paket yoq oynasi ichida foydalaning va uni hech qachon birinchi chora sifatida qollamang. Docker: versiya tegini hech qachon qayta yozmang — ortga qaytarish latest ni oxirgi yaxshi dayjestga qayta yonaltirishdan iborat.

Docker Hub latest (har bir barqaror SemVer nashrida majburiy): docker-publish ish jarayoni ikkala X.Y.Z tegini va should-promote-latest.sh bu eng yuqori barqaror SemVer ekaniga rozi bolsa, :latest tegini bir xil dayjest bilan belgilashi kerak. Vazifa tugagandan keyin Hubdagi latest dayjesti yangi SemVer dayjestiga teng bolishi va last_updated yangilangan bolishi kerak. Reliz qaydlarida faqat gitda mavjud bolgan tuzatishlar haqida yozilgan bolsa, :latest ni eski yigilmada qoldirmang. Compose uchun tezkor boshlash yoriqnomalari :latest dan foydalanadi; GitOps esa X.Y.Z ga mahkamlashda davom etishi kerak. Docker reliz kanallari va #10317 ga qarang.

Tezkor tuzatish yoʻlagi (hotfix yorligʻi)

hotfix yorligʻi qoʻyilgan PR ogʻir CI matritsasini (9-shard E2E, qamrov ratcheti, quality-gate, quality-extended) chetlab oʻtadi va tezkor, yuqori signal beruvchi tekshiruvlarni saqlab qoladi: build, unit shardlari, integration, vitest, lint/typecheck, docs-sync, check:pack-artifact hamda tarball ishga tushish smoke-testi (check:pack-boot). Maqsad: ~33 daqiqa oʻrniga ≤15 daqiqada yashil holat.

Kirish siyosati — toʻrttalasi ham majburiy (Chromium/VS Code/Node favqulodda yoʻlaklari asosida):

  1. Jiddiylik: production buzilgan — elon qilingan artefakt ishga tushishda qulaydi / xavfsizlik tuzatishi / relizning har bir foydalanuvchisiga tasir qiladi. “Muhim” degani “buzilgan” degani emas.
  2. Vakolat: hotfix yorligʻini faqat repository egasi qoʻllaydi. YorliqNING OʻZI tasdiq hisoblanadi — campaign PRda uni hech qachon oʻzingiz qoʻllamang.
  3. Dalil: PR matni oldingi toʻliq yashil ogʻir ishga tushirishga (oʻtkazib yuborilgan joblar qayta tekshirishi kerak boʻlgan suitega), shuningdek tuzatishning avval muvaffaqiyatsiz, keyin muvaffaqiyatli oʻtgan testiga havola beradi.
  4. Qamrov: faqat cherry-pick — minimal tuzatish, refaktoringsiz, qoʻshimcha oʻzgarishlarsiz.

Oʻtkazib yuborilgan coverage/ratchet yuzasi release branchdagi keyingi toʻliq ishga tushirishda qayta tekshiriladi (uzluksiz release-green) — yoʻlak tekshiruvni emas, faqat KUTISHNI chetlab oʻtadi. Faqat testlardan iborat difflar (barcha fayllar tests/ ichida, hech biri tests/e2e/ ichida emas) E2E matritsasini hech qanday yorliqsiz avtomatik ravishda oʻtkazib yuboradi.

Batafsil nazorat roʻyxati

Relizdan oldin

  • Ushbu relizga moʻljallangan barcha PRlar release/vX.Y.0 branchiga merge qilingan
  • Ushbu versiya uchun barcha ochiq Linear/issue bandlari yopilgan yoki keyingi milestonega koʻchirilgan
  • release/vX.Y.0 branchida CI yashil
  • Kodda TODO(release) markerlari yoʻq: grep -r "TODO(release)" src/ open-sse/
  • Docker asosiy imagei yangilangan (hozirda node:24.15.0-trixie-slim)

Versiya va oʻzgarishlar jurnali

  • /version-bump-cc <patch|minor|major> buyrugʻini ishga tushiring (Claude Code skilli)
    • package.json, electron/package.json versiyalarini oshiradi
    • Oxirgi tagdan keyingi git commitlari asosida CHANGELOG.md faylini qayta yaratadi
    • README.md badgelarini yangilaydi
  • CHANGELOG.md faylini qoʻlda koʻrib chiqing va zarur boʻlsa commit xabarlarini tozalang
  • CHANGELOG.md faylidagi eng soʻnggi semver boʻlimi package.json versiyasiga teng ekanini tekshiring
  • Kelgusi ishlar uchun ## [Unreleased] boʻlimini oʻzgarishlar jurnalining birinchi boʻlimi sifatida saqlang
  • docs/openapi.yaml faylini yangilang → info.version qiymati package.json versiyasiga teng boʻlishi kerak

Kod sifati

  • npm run lint — 0 ta xato (ogohlantirishlar avvaldan mavjud)
  • npm run typecheck:core — toza
  • npm run typecheck:noimplicit:core — toza (qatiy)
  • npm run check:cycles — siklik bogʻliqliklar yoʻq
  • npm run check:any-budget:t11 — budjet doirasida
  • npm run check:route-validation:t06 — toza
  • npm run check:node-runtime — qoʻllab-quvvatlanadigan minimal runtime talabi bajarilgan (>=22.22.2 <23, >=24.0.0 <27, src/shared/utils/nodeRuntimeSupport.ts ichidagi SUPPORTED_NODE_RANGE boʻyicha; package.json ichidagi engines bilan moslashtirilgan)

Testlash

  • npm run test:unit — muvaffaqiyatli
  • npm run test:vitest — muvaffaqiyatli (MCP server, autoCombo, cache)
  • npm run test:coverage — 60/60/60/60 chegarasi bajarilgan (statements/lines/functions/branches)
  • npm run test:integration — muvaffaqiyatli (agar oʻzgarishlar DB / handlerlarga tegishli boʻlsa)
  • npm run test:combo:matrix — muvaffaqiyatli (combo strategiyasi matritsasi: barcha 19 ta ommaviy routing strategiyasining tanlov qarorlarini deterministik tarzda isbotlaydi; combo routing, strategy resolution yoki fallback mantiqiga oʻzgartirish kiritilganda ishga tushiring)
  • RUN_COMBO_LIVE=1 npm run test:combo:liveixtiyoriy/qoʻlda (gate bilan himoyalangan haqiqiy upstream smoke-testi; VPSdagi root@192.168.0.15 manzilidan faqat oʻqish uchun DB snapshotini oladi; haqiqiy providerlarga murojaat qiladi, kredit sarflaydi; CIda hech qachon ishlamaydi; gate boʻlmasa muammosiz oʻtkazib yuboriladi)
  • npm run test:combo:live:vpsixtiyoriy/qoʻlda (3-bosqich VPS jonli smoke-testi: oddiy Node ESM orqali jonli .15 serveriga qarshi 7 ta HTTP ssenariy; ssh root@192.168.0.15 talab etiladi; faqat __live_test__* combolarini yaratadi/oʻchiradi; haqiqiy providerlarga murojaat qiladi; CIda hech qachon ishlamaydi)
  • npm run test:e2e — muvaffaqiyatli (UI oʻzgarishlari)
  • npm run test:protocols:e2e — muvaffaqiyatli (MCP/A2A oʻzgarishlari)
  • npm run test:ecosystem — muvaffaqiyatli

Hooklar (Husky orqali tekshiriladi)

Husky hooklari .husky/ ichida joylashgan va git amallari vaqtida avtomatik ravishda ishlaydi.

  • pre-commit: npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11
  • pre-push: tezkor deterministik tekshiruvlar — npm run check:any-budget:t11 && npm run check:tracked-artifacts (2026-06-13 kuni faollashtirilgan). test:unit ataylab kiritilmagan (sekin; CIdagi test-unit jobi bilan qamrab olingan).
    • Release branchlarini push qilishdan oldin npm run test:unit buyrugʻini qoʻlda ishga tushiring.

Agar hook muvaffaqiyatsiz tugasa: asosiy muammoni tuzating, --no-verify bilan chetlab oʻtmang.

Conventional Commitlar

Relizga kiritiladigan barcha commitlar type(scope): subject formatiga amal qilishi kerak.

Yaroqli typelar: feat, fix, refactor, docs, test, chore, perf, style, ci

Yaroqli scopelar: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz

Orqaga mos kelmaydigan oʻzgarishlar: BREAKING CHANGE: footerini yoki scopedan keyin ! belgisini qoʻshing (masalan, feat(api)!: drop /v0).

Hujjatlar

  • npm run check:docs-sync muvaffaqiyatli bajariladi (pre-commit tomonidan avtomatik ishga tushiriladi)
  • npm run check:docs-all muvaffaqiyatli bajariladi (umumlashtiruvchi: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)
  • npm run check:env-doc-sync 0 kodi bilan yakunlanadi — kod ↔ .env.exampledocs/reference/ENVIRONMENT.md muhit shartnomasi buzilmagan
  • npm run check:doc-links 0 kodi bilan yakunlanadi — qayta tuzishdan keyin buzilgan ichki markdown havolalari yoʻq
  • docs/architecture/ARCHITECTURE.md saqlash/runtime tafovutlari boʻyicha koʻrib chiqilgan
  • docs/guides/TROUBLESHOOTING.md muhit oʻzgaruvchilari va operatsion tafovutlar boʻyicha koʻrib chiqilgan
  • Agar .env.example oʻzgargan boʻlsa: docs/reference/ENVIRONMENT.md yangilangan
  • Agar yangi funksiyada UI boʻlsa: u docs/guides/USER_GUIDE.md ichida eslatilgan
  • Agar yangi funksiyada API boʻlsa: docs/reference/API_REFERENCE.md + docs/openapi.yaml yangilangan
  • Agar yangi funksiya modul boʻlsa: unga bagʻishlangan docs/<MODULE>.md mavjud
  • Agar orqaga mos kelmaydigan oʻzgarish boʻlsa: docs/guides/TROUBLESHOOTING.md ichida migratsiya eslatmasi mavjud

i18n

  • npm run i18n:check 0 kodi bilan yakunlanadi — tarjima holati (.i18n-state.json) manba hujjatlari bilan sinxronlangan (qatʼiy rejimda tafovutli manbalar yoʻq; oxirgi daqiqadagi hujjat tuzatishlari uchun ogohlantirish rejimidagi tavsiyalarga ruxsat etiladi, ammo teg qoʻyishdan oldin natija 0 boʻlishi kerak)
  • npm run i18n:check-ui-coverage 0 kodi bilan yakunlanadi — har bir UI lokali 80% qamrov chegarasiga yetgan yoki undan yuqori
  • npm run i18n:sync-ui:dry barcha 42 lokal boʻyicha 0 ta yetishmayotgan kalit haqida xabar beradi
  • Agar ingliz tilidagi manba hujjatlari oʻzgargan boʻlsa, teg qoʻyishdan oldin npm run i18n:run buyrugʻini ishga tushiring (.env ichida OMNIROUTE_TRANSLATION_API_KEY boʻlishi talab qilinadi)
  • Kichik tarjima hissalarini keyingi relizgacha kechiktirish mumkin (CHANGELOG ichida kuzatib boring)

Maʼlumotlar bazasi migratsiyalari

  • Agar src/lib/db/migrations/ ichida yangi fayllar boʻlsa:
    • Har bir migratsiya idempotent (CREATE TABLE IF NOT EXISTS va hokazo)
    • Migratsiyalar tranzaksiyalarga oʻralgan
    • Toʻgʻri raqamlangan (ketma-ketlikda boʻshliqlar yoʻq)
  • Yangi oʻrnatishda sinang: ~/.omniroute/omniroute.db faylini oʻchirib, npm run dev buyrugʻini ishga tushiring
  • Mavjud oʻrnatishda sinang: maʼlumotlar bazasining zaxira nusxasini yarating, migratsiyani ishga tushiring va sxemani tekshiring
  • Agar migratsiya jadvallarni qayta yozsa, WAL fayllari (-wal, -shm) toʻgʻri boshqarilgan

Provayderlar katalogi (Zod orqali tekshiriladi)

  • src/shared/constants/providers.ts Zod sxemasi yuklanish vaqtida yaroqli
    • Barcha provayderlarda talab qilinadigan maydonlar (id, label, kind va hokazo) mavjud
    • Yangi bepul provayderlar uchun freeNote taqdim etilgan
    • OAuth provayderlarining oauthConfig qiymati src/lib/oauth/constants/oauth.ts ichida roʻyxatdan oʻtkazilgan
  • Agar yangi provayder qoʻshilgan boʻlsa: open-sse/executors/ ichida unga mos ijrochi mavjud
  • Agar format OpenAI formatidan farq qilsa: open-sse/translator/ ichida tarjimon mavjud
  • Modellar open-sse/config/providerRegistry.ts ichida roʻyxatdan oʻtkazilgan
  • tests/unit/ ichidagi modul testlari provayder tasnifi va yoʻnaltirishni qamrab oladi

Ish stoli (Electron)

Agar electron/ oʻzgargan boʻlsa:

  • npm run electron:smoke:packaged muvaffaqiyatli bajariladi
  • Buildlar :win, :mac, :linux variantlaridan kamida bittasi uchun sinovdan oʻtkazilgan
  • Kodni imzolash sertifikatlarining amal qilish muddati tugamagan (agar imzolash qoʻllansa)
  • electron/package.json versiyasi ildizdagi package.json versiyasiga mos
  • Agar stable kanaliga reliz qilinayotgan boʻlsa, avtomatik yangilash kanali koʻrsatkichi yangilangan

Build tuzilishi

Repozitoriy uchta alohida chiqish katalogidan foydalanadi — ularni hech qachon aralashtirmang:

Katalog Maqsad Kuzatiladimi?
src/ Ilova manba kodi (TypeScript / TSX) Ha
.build/ Build oraliq fayllari — next build chiqishi (distDir) Yoʻq (gitignored)
dist/ Tarqatiladigan npm toʻplami — assembleStandalone orqali yigʻiladi Yoʻq (gitignored)

Operator eslatmasi: masofaviy VPS tasvir katalogi /usr/lib/node_modules/omniroute/app/ boʻlib qoladi. Faqat repozitoriy ichidagi build chiqishi koʻchirildi (app/dist/). Deploy koʻnikmalari dist/ tarkibini masofaviy app/ katalogiga rsync orqali nusxalaydi — VPS yoʻllarini oʻzgartirish talab qilinmaydi.

Yagona build jarayoni:

npm run build:release
  └─ rm -rf .build dist          (tozalash)
  └─ next build → .build/next/   (oraliq fayllar)
  └─ assembleStandalone          (standalone + static + public + natives fayllarini dist/ ichiga nusxalaydi)
  └─ writes dist/BUILD_SHA       (HEAD nazorat belgisi)

Deploy uchun npm run build buyrugʻidan keyin alohida npm run build:cli buyrugʻini ISHGA TUSHIRMANG — bitta buyruqda toza qayta build va nazorat belgisini yaratadigan npm run build:release buyrugʻidan foydalaning.

Artefaktni tekshirish

  • npm run build:release muvaffaqiyatli yakunlanadi va dist/BUILD_SHA == git rev-parse --short HEAD
  • npm run check:pack-artifact toza yakunlanadi — app.__qa_backup, scripts/scratch, package-lock.json yoki boshqa mahalliy qoldiqlar yoʻq
  • Builddan keyin dist/server.js mavjud

Teg qoʻyish va reliz

  • /generate-release-cc buyrugʻini ishga tushiring (Claude Code koʻnikmasi):
    • vX.Y.Z tegini yaratadi
    • Teg va branchni yuboradi
    • Oʻzgarishlar jurnali matni bilan GitHub Release ochadi
    • Electron oʻrnatuvchilarini biriktiradi (agar build qilingan boʻlsa)
  • Yoki qoʻlda:
    git tag -a vX.Y.Z -m "Release vX.Y.Z"
    git push origin vX.Y.Z
    gh release create vX.Y.Z --notes-from-tag
    

Deploy

Deploy koʻnikmalari yengil rsync jarayonidan foydalanadi — npm pack ham, npm i -g ham ishlatilmaydi:

  • Maqsadga mos deploy koʻnikmasidan foydalaning:
    • /deploy-vps-local-cc — mahalliy VPS (192.168.0.15)
    • /deploy-vps-akamai-cc — Akamai VPS (69.164.221.35)
    • /deploy-vps-both-cc — har ikkisi
  • Deploy qilishdan oldin dist/BUILD_SHA == git rev-parse --short HEAD ekanini tasdiqlang
  • Build node_modules haqiqiy boʻlgan joyda ishga tushirilishi kerak (asosiy checkout yoki npm ci bajarilgan worktree — symlink qilingan worktree EMAS)
  • Deploy qilingan nusxada smoke-test oʻtkazing:
    • /dashboard/health sahifasini oching → versiya satri relizga mosligini tekshiring
    • Maʼlum provayderga /v1/chat/completions soʻrovini yuboring
    • /api/monitoring/health CLOSED holatidagi circuit breakerlarni qaytarishini tekshiring
    • MCP transportlari javob berishini tasdiqlang (/mcp HTTP, /mcp-sse SSE)

Relizdan keyin

  • /capture-release-evidences-cc buyrugʻini ishga tushiring (Claude Code koʻnikmasi)
    • Yangi funksiyalarning WebP formatidagi skrinshotlari/yozuvlarini oladi
    • Ularni reliz qaydlari / blog postiga biriktiradi
  • GitHub Discussions / Discordʼni reliz eʼloni bilan yangilang
  • Keyingi versiya uchun bosqichni oching
  • Agar muhim boʻlsa: muhokamani tepaga mahkamlang yoki ilova ichidagi banner uchun news.json fayliga joylang

Radarʼni ommaviy ishga tushirish nazorat bosqichi

Radar eʼloni ataylab active: false holatida commit qilingan. Quyidagi har bir band dalillar bilan tasdiqlangandan soʻng faollashtirish alohida oʻzgartirish sifatida amalga oshiriladi:

  • Barcha ketma-ket Radar PRʼlari birlashtirilgan va release-tip CI muvaffaqiyatli oʻtgan
  • RADAR_ENABLED standart holatda hali ham oʻchiq boʻlgan holda OSS Radar yoʻnalishlarini joylashtiring va smoke-testdan oʻtkazing
  • Belgilangan Radar hostida GET /planos, /termos, /privacidade va /reembolso yoʻnalishlarini smoke-testdan oʻtkazing
  • Operatorning shaxsi/aloqa maʼlumotlari/manzilini va egasi tasdiqlagan huquqiy tekshiruvni xususiy xizmatda qayd eting
  • Stripe Checkout va imzolangan webhookʼni faqat test rejimida sinab koʻring
  • Tasdiqlangan joʻnatuvchi/domen orqali bitta shifrlangan tranzaksion elektron xat yetkazilishini sinab koʻring
  • Zaxira nusxadan tiklashni va nazorat ostida, byudjeti cheklangan bitta tadqiqot ishga tushirilishini tasdiqlang
  • Xayriya dalillarini qabul qilishdan oldin BRL/PIX tekshiruv siyosatini tasdiqlang
  • Ommaviy Checkoutʼni faqat oldingi nazorat bosqichlaridan oʻtgach yoqing, soʻng yangi news.json IDʼsini faollashtiring
  • Bosh sahifa bannerida mahalliylashtirilgan matn ishlatilishini va eski ID yopilgandan keyin yangi ID yana paydo boʻlishini tekshiring

Oʻrnatilgan xizmatlar smoke-testi (v3.8.4+)

Oʻrnatilgan xizmatlarga oid oʻzgarishlarni oʻz ichiga olgan har qanday relizni chiqarishdan oldin quyidagilarni tekshiring:

Yangi DB bilan ishga tushirish (migratsiya toʻqnashuvlarini aniqlaydi — v3.8.4 tezkor tuzatishidan keyin qoʻshilgan)

  • DATA_DIR=$(mktemp -d) npm start & — ishga tushishini 10 s kuting
  • curl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool' natijasi "9router" boʻladi (404 EMAS, 500 EMAS). Bu 071_services.sql migratsiyasi qoʻllanganini va qator kiritilganini tasdiqlaydi.
  • sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at" natijasida 3 ta qator qaytadi.
  • sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted" natijasida 2 ta qator qaytadi (070_webhooks_kind_metadata.sql qoʻllanganini tasdiqlaydi).
  • node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.ts muvaffaqiyatli oʻtadi — kelajakdagi toʻqnashuvlardan himoya qiladi.

9Router

  • POST /api/services/9router/install 2 min dan kamroq vaqt ichida installedVersion bilan 200 qaytaradi
  • POST /api/services/9router/start 30 s dan kamroq vaqt ichida 200 va state: "running" qaytaradi
  • GET /api/services/9router/status health: "healthy" holatini bildiradi
  • "model": "9router/auto/..." bilan POST /v1/chat/completions 200 qaytaradi (9Router orqali boshidan oxirigacha marshrutlash)
  • GET /dashboard/providers/services/9router/embed/dashboard proksi ichida 9Router mahalliy UI interfeysini render qiladi (toʻgʻridan-toʻgʻri 127.0.0.1:port iframe ishlatilmaydi)
  • POST /api/services/9router/rotate-key { keyRotated: true } qaytaradi va xizmat muammosiz qayta ishga tushadi
  • POST /api/services/9router/stop 200 va state: "stopped" qaytaradi
  • GET /api/services/9router/logs?tail=50 soʻnggi qatorlarni oʻz ichiga olgan snapshot hodisasi bilan SSE oqimini qaytaradi
  • PATH ichida npm boʻlmagan muhitda oʻrnatish tushunarli (stek treysisiz) xato xabari bilan 500 qaytaradi

CLIProxyAPI

  • POST /api/services/cliproxy/install 2 min dan kamroq vaqt ichida 200 qaytaradi
  • POST /api/services/cliproxy/start 30 s dan kamroq vaqt ichida 200 va state: "running" qaytaradi
  • GET /api/services/cliproxy/status health: "healthy" holatini bildiradi
  • POST /api/services/cliproxy/stop 200 va state: "stopped" qaytaradi
  • GET /api/services/cliproxy/logs?tail=50 SSE oqimini qaytaradi

Xavfsizlik regressiyasi

  • curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/start 403 LOCAL_ONLY qaytaradi
  • curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/start 403 LOCAL_ONLY qaytaradi
  • /api/services/* dan kelgan xato javoblarida err.stack yoki mutlaq fayl yoʻllari mavjud emas

v3.8.0+ tekshiruvlari

Har qanday v3.8.x relizini chiqarishdan oldin quyidagi qoʻshimcha bandlarni tekshiring:

  • omniroute --tray macOS tizimida ishga tushadi (systray2 ~/.omniroute/runtime/ ichiga oʻrnatilgan)
  • omniroute --tray Linux tizimida ishga tushadi (DISPLAY talab qilinadi; oʻrnatilmagan boʻlsa, xato toʻgʻri qayta ishlanadi)
  • omniroute --tray Windows tizimida ishga tushadi (PowerShell NotifyIcon, qoʻshimcha ikkilik fayllarsiz)
  • omniroute config tray enable avtomatik ishga tushirish yozuvini yaratadi; oʻchirish uni olib tashlaydi
  • npm install -g omniroute@<this-version> postinstall jarayonini halokatli chiqishsiz bajaradi
  • Yangilash yoʻli ixtiyoriy bogʻliqliklarni saqlab qoladi: omniroute update --apply va avtomatik yangilagich npm install -g … --include=optional buyrugʻini ishga tushiradi, shunda optionalDependencies (better-sqlite3, keytar, tls-client va llmlingua SLM steki: @atjsh/llmlingua-2@2.0.5, js-tiktoken) yangilanishdan keyin ham saqlanib qoladi. Ultra modelPath SLM darajasi uchun tinybert modeli ham kerak boʻlib, u birinchi foydalanishda avtomatik tarzda ${DATA_DIR}/models/llmlingua manziliga yuklab olinadi. Shundan soʻng postinstall (scripts/build/colocateOptionals.mjs) SLM ixtiyoriy bogʻliqliklar yopilmasini dist/node_modules ichiga birga joylashtiradi, natijada worker YAGONA @huggingface/transformers ^4.2.0 nusxasini aniqlaydi — mustaqil trace faqat transformers paketini toʻplamga kiritadi, dinamik import qilinadigan ixtiyoriy bogʻliqliklarni emas; busiz worker llmlingua-2 ni ildizdagi transformers bilan yuklaydi va SLM darajasi xatoni bildirmasdan fail-open holatiga oʻtadi.
  • omniroute status .env faylisiz ishlaydi (CLI token yoʻli, faqat loopback)
  • curl http://localhost:20128/api/shutdown 401 qaytaradi (har doim himoyalangan marshrut)
  • curl -H "host: evil.com" http://localhost:20128/api/mcp/sse 401 qaytaradi (loopback himoyasi)
  • SQLite runtime birinchi ishga tushirishda bundled sifatida aniqlanadi (toʻplamdagi ikkilik fayl platforma uchun yaroqli)
  • node_modules/better-sqlite3 oʻchirilganda SQLite runtime runtime variantiga qaytadi
  • Smart MCP filtri haqiqiy playwright-mcp browser_snapshot chiqishini siqadi (≥50% kamayish)
  • Barcha 10 ta skills/omniroute*/SKILL.md faylini raw GitHub URL orqali ommaviy tarzda olish mumkin
  • Boshlangʻich sozlash ustasi yangi sozlamada "U qanday ishlaydi" darajalar bilan tanishtirish bosqichini koʻrsatadi
  • Bosh sahifa boshqaruv panelidagi darajalar qamrovi vidjeti sozlangan/faol miqdorlarni koʻrsatadi

Orqaga qaytarish

Agar relizda jiddiy muammo bolsa:

  1. gh release edit vX.Y.Z --prerelease (eng songgi reliz emas deb belgilaydi)
  2. git tag -d vX.Y.Z && git push --delete origin vX.Y.Z (faqat foydalanuvchilar hali undan foydalanishni boshlamagan bolsa)
  3. Yoki: release/vX.Y.0 da tezkor tuzatish → vX.Y.(Z+1) tuzatish relizi
  4. GitHub Discussions va Discord orqali darhol xabar bering

Qatiy qoidalar

  • Hech qachon togridan-togri main ga commit qilmang
  • Hech qachon main yoki release/* branchlariga git push --force ishlatmang
  • Hech qachon Husky hooklarini (--no-verify) chetlab otmang
  • Hech qachon sirlar, hisob malumotlari yoki .env fayllarini commit qilmang
  • Qamrov ≥60/60/60/60 (bayonotlar/satrlar/funksiyalar/tarmoqlar) darajasida qolishi kerak
  • src/, open-sse/, electron/ yoki bin/ ichidagi ishlab chiqarish kodini ozgartirganda har doim testlarni qoshing yoki yangilang

Avtomatlashtirilgan sinxronlash tekshiruvi

PR ochishdan oldin hujjatlar sinxronligini tekshirish vositasini lokal ravishda ishga tushiring:

npm run check:docs-sync

CI ham ushbu tekshiruvni .github/workflows/ci.yml faylida (lint vazifasi) ishga tushiradi.