Files
OmniRoute/docs/i18n/lv/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

30 KiB

Release Checklist (Latviešu)

🌐 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 · 🇮🇳 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 · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Pēdējoreiz atjaunināts: 2026-08-28 — v3.8.51 Vienkāršota laidiena plūsma, kas automatizācijai izmanto Claude Code prasmes.

Starp laidieniem uzturiet rindu/zaru zaļu: skatiet RELEASE_GREEN.md (/green-prs saime + npm run check:release-green + /babysit + iknakts izpilde). Periodiska šīs procedūras izpilde — un jo īpaši pirms šī kontrolsaraksta — nodrošina, ka laidiena PR sākotnēji ir zaļš.

Īsumā

# 1. Palieliniet versiju un ģenerējiet CHANGELOG (prasme)
/version-bump-cc patch    # vai minor/major

# 2. Lokāli izpildiet kvalitātes pārbaudes posmu
npm run check              # lintēšana un testi
npm run test:coverage      # pilna pārklājuma pārbaude (60/60/60/60)

# 3. Būvējiet un veiciet ātro pārbaudi
npm run build
npm run test:e2e           # neobligāti, bet ieteicams

# 4. Ģenerējiet laidienu (prasme)
/generate-release-cc

# 5. Izvietojiet (prasme)
/deploy-vps-both-cc        # vai akamai-cc / local-cc

# 6. Iegūstiet laidiena apliecinājumus (prasme)
/capture-release-evidences-cc

npm Trusted Publishing (noklusējums kopš v3.8.51) — pēc pieprasījuma pakāpeniski, tieši kā rezerves variants

npm-publish.yml pēc noklusējuma publicē, izmantojot npm Trusted Publishing (OIDC): stage-npm darbs (GitHub mitināts) apmaina GitHub id-token pret īslaicīgu npm akreditācijas apliecinājumu šai izpildei — repozitorija noslēpumos nav ilglaicīga npm marķiera, nav 2FA uzvednes, un ir pievienots izcelsmes apliecinājums. Šis ir npm atļautais apiešanas mehānisms tagad, kad marķieri, kas izlaiž 2FA, tiek izņemti no aprites; tas atjauno pilnībā automātisko plūsmu, kas projektam bija līdz v3.8.48, vienlaikus saglabājot WS1.3 garantiju (nopludināts marķieris viens pats nevar publicēt — marķiera vispār nav).

Vienreizēja iestatīšana (īpašnieks): npmjs.com → pakotne omniroute → Settings → Trusted Publisher → GitHub: īpašnieks diegosouzapw, repozitorijs OmniRoute, darbplūsma npm-publish.yml (vide: nav). Kamēr tas nav iestatīts, automātiskais solis neizdodas ar ENEEDAUTH: palaidiet darbplūsmu atkārtoti ar publish_mode=staged (skatiet tālāk) vai direct.

Pakāpeniska publicēšana (pēc pieprasījuma — publish_mode=staged)

npm-publish darbplūsma vairs nepublicē tieši: tā palaiž sapakoto tarball arhīvu (check:pack-boot) un pēc tam izpilda npm stage publish — precīzi šie baiti tiek novietoti reģistrā, bet nav instalējami, kamēr īpašnieks tos nav apstiprinājis. Cilvēka veiktā 2FA pārbaude ir pārvietota uz posmu PĒC apliecinājuma, nevis pirms tā.

Īpašnieka darbību secība pēc tam, kad darbplūsma kļūst zaļa:

  1. npm stage list omniroute — atrodiet posma ID (tas ir norādīts arī darbplūsmas kopsavilkumā).
  2. Pārbaudiet sagatavotos baitus (ieteicams): npm stage download <id>, pēc tam instalējiet lejupielādēto tarball arhīvu pagaidu prefiksā un palaidiet to (npm run check:pack-boot CI vidē automatizē tādu pašu pakot→instalē→palaiž pārbaudes rezultātu).
  3. npm stage approve <id> — 2FA uzvedne IR publicēšana. npm stage reject <id> saturu atmet.
  4. Drošības pārbaude pēc publicēšanas: pēcpublikācijas pārbaudītājs (v3.8.49 plāna WS1.4) tīrā konteinerā instalē publicēto versiju no publiskā reģistra un palaiž to.

Ārkārtas rezerves variants: workflow_dispatch ar publish_mode=direct atjauno iepriekšējo tūlītējo npm publish darbību (izmantojiet tikai tad, ja pati pakāpeniskā publicēšana darbojas nepareizi; dokumentējiet iemeslu).

Vienreizēja aizsardzības pastiprināšana (īpašnieks, npmjs.com): konfigurējiet Trusted Publisher pakotnei omniroute tikai pakāpeniskās publicēšanas režīmā, lai nopludināts ilglaicīgs marķieris nevarētu izpildīt npm publish tieši no jebkuras vietas — CI var tikai sagatavot publicēšanu; to veic tikai īpašnieks ar 2FA.

Bojātu artefaktu rīcības plāns (nav mainīts): npm deprecate omniroute@<bad> "<reason> — izmantojiet <fixed>" kā noklusējuma reakcija (aizņem dažas minūtes, atgriezeniska); npm unpublish izmantojiet tikai 72 stundu/loga bez atkarīgajiem ietvaros un nekad kā pirmo darbību. Docker: nekad nepārrakstiet versijas tagu — atgriešana nozīmē latest novirzīšanu uz pēdējo derīgo digest.

Docker Hub latest (obligāts katrai stabilai SemVer publikācijai): docker-publish darbplūsmai jāpiešķir abi tagi — X.Y.Z un, ja should-promote-latest.sh apstiprina, ka šī ir augstākā stabilā SemVer versija, arī :latest — ar vienu un to pašu digest. Pēc darba izpildes: Hub latest digest ir vienāds ar jaunās SemVer versijas digest, un last_updated ir mainījies. Neatstājiet :latest piesaistītu vecākam būvējumam, kamēr laidiena piezīmes apraksta labojumus, kas pieejami tikai git. Compose ātrās sākšanas piemēri izmanto :latest; GitOps risinājumos jāturpina piesaistīt X.Y.Z. Skatiet Docker laidienu kanāli un #10317.

Paātrinātais kritisko labojumu process (etiķete hotfix)

PR ar etiķeti hotfix izlaiž apjomīgo CI matricu (9 daļās sadalītu E2E, pārklājuma slieksni, quality-gate, quality-extended) un saglabā ātrās pārbaudes ar augstu signālvērtību: būvēšanu, vienībtestu daļas, integrācijas testus, vitest, lint/typecheck, docs-sync, check:pack-artifact un tar arhīva palaišanas dūmu testu (check:pack-boot). Mērķis: veiksmīgs rezultāts ≤15 min, nevis ~33 min.

Iekļaušanas politika — obligātas visas četras prasības (veidota pēc Chromium/VS Code/Node ārkārtas procesu parauga):

  1. Nopietnība: produkcijas vide nedarbojas — publicēts artefakts avarē palaišanas laikā / drošības labojums / problēma skar ikvienu laidiena lietotāju. „Svarīgs” nenozīmē „nedarbojas”.
  2. Pilnvarojums: tikai repozitorija īpašnieks piešķir etiķeti hotfix. Etiķete IR apstiprinājums — kampaņas PR to nekad nedrīkst piešķirt patstāvīgi.
  3. Pierādījumi: PR aprakstā ir saite uz iepriekšējo pilnībā veiksmīgo apjomīgo izpildi (testu kopu, kuru izlaistie uzdevumi validētu atkārtoti), kā arī uz paša labojuma testu, kas sākotnēji neizdodas un pēc tam izdodas.
  4. Tvērums: tikai cherry-pick — minimālais labojums, bez refaktorēšanas un bez papildu izmaiņām.

Izlaistā pārklājuma/sliekšņa virsma tiek atkārtoti validēta nākamajā pilnajā izpildē laidiena zarā (nepārtraukti veiksmīgs laidiens) — šis process izlaiž GAIDĪŠANU, nevis validāciju. Izmaiņas tikai testos (visi faili zem tests/, neviens zem tests/e2e/) automātiski izlaiž E2E matricu bez jebkādas etiķetes.

Detalizēts kontrolsaraksts

Pirms laidiena

  • Visi šim laidienam paredzētie PR ir sapludināti zarā release/vX.Y.0
  • Visi šīs versijas atvērtie Linear/problēmu ieraksti ir aizvērti vai pārcelti uz nākamo atskaites punktu
  • CI zarā release/vX.Y.0 ir veiksmīgs
  • Kodā nav TODO(release) marķieru: grep -r "TODO(release)" src/ open-sse/
  • Docker bāzes attēls ir atjaunināts (pašlaik node:24.15.0-trixie-slim)

Versija un izmaiņu žurnāls

  • Izpildiet /version-bump-cc <patch|minor|major> (Claude Code prasme)
    • Atjaunina versiju failos package.json, electron/package.json
    • No jauna ģenerē CHANGELOG.md no git komitiem kopš pēdējā taga
    • Atjaunina README.md emblēmas
  • Manuāli pārskatiet CHANGELOG.md un, ja nepieciešams, sakārtojiet komitu ziņojumus
  • Pārliecinieties, ka jaunākā semver sadaļa failā CHANGELOG.md atbilst package.json versijai
  • Saglabājiet ## [Unreleased] kā pirmo izmaiņu žurnāla sadaļu turpmākajam darbam
  • Atjauniniet docs/openapi.yamlinfo.version jāatbilst package.json versijai

Koda kvalitāte

  • npm run lint — 0 kļūdu (brīdinājumi pastāvēja jau iepriekš)
  • npm run typecheck:core — bez problēmām
  • npm run typecheck:noimplicit:core — bez problēmām (stingrā pārbaude)
  • npm run check:cycles — nav ciklisku atkarību
  • npm run check:any-budget:t11 — budžeta robežās
  • npm run check:route-validation:t06 — bez problēmām
  • npm run check:node-runtime — tiek ievērota minimālā atbalstītā izpildlaika versija (>=22.22.2 <23, >=24.0.0 <27, atbilstoši SUPPORTED_NODE_RANGE failā src/shared/utils/nodeRuntimeSupport.ts; saskaņots ar package.json engines)

Testēšana

  • npm run test:unit — veiksmīgs
  • npm run test:vitest — veiksmīgs (MCP serveris, autoCombo, kešatmiņa)
  • npm run test:coverage — izpildīts slieksnis 60/60/60/60 (priekšraksti/rindas/funkcijas/zari)
  • npm run test:integration — veiksmīgs (ja izmaiņas skar DB/apstrādātājus)
  • npm run test:combo:matrix — veiksmīgs (kombināciju stratēģiju matrica: deterministiski pierāda visu 19 publisko maršrutēšanas stratēģiju atlases lēmumus; izpildiet, ja tiek mainīta kombināciju maršrutēšana, stratēģiju noteikšana vai atkāpšanās loģika)
  • RUN_COMBO_LIVE=1 npm run test:combo:liveneobligāts/manuāls (ar nosacījumu izpildāms dūmu tests pret reāliem ārējiem pakalpojumiem; iegūst tikai lasāmu DB momentuzņēmumu no VPS root@192.168.0.15; izmanto reālus pakalpojumu sniedzējus un patērē kredītus; nekad netiek izpildīts CI; ja nosacījums nav izpildīts, tiek korekti izlaists)
  • npm run test:combo:live:vpsneobligāts/manuāls (3. posma VPS dūmu tests reālajā vidē: 7 HTTP scenāriji pret reālo .15 serveri, izmantojot vienkāršu Node ESM; nepieciešams ssh root@192.168.0.15; izveido/dzēš tikai __live_test__* kombinācijas; izmanto reālus pakalpojumu sniedzējus; nekad netiek izpildīts CI)
  • npm run test:e2e — veiksmīgs (UI izmaiņām)
  • npm run test:protocols:e2e — veiksmīgs (MCP/A2A izmaiņām)
  • npm run test:ecosystem — veiksmīgs

Āķi (Husky validēti)

Husky āķi atrodas .husky/ un tiek automātiski izpildīti git operāciju laikā.

  • pre-commit: npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11
  • pre-push: ātras deterministiskas pārbaudes — npm run check:any-budget:t11 && npm run check:tracked-artifacts (aktivizēts 2026-06-13). Apzināti neietver test:unit (lēns; to nodrošina CI test-unit uzdevums).
    • Pirms laidiena zaru nosūtīšanas manuāli izpildiet npm run test:unit.

Ja āķis neizdodas: novērsiet pamatproblēmu, neapejiet to ar --no-verify.

Conventional Commits

Visiem laidienā iekļaujamajiem komitiem jāatbilst formātam type(scope): subject.

Derīgie tipi: feat, fix, refactor, docs, test, chore, perf, style, ci

Derīgie tvērumi: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz

Lauzošas izmaiņas: pievienojiet kājeni BREAKING CHANGE: vai ! aiz tvēruma (piemēram, feat(api)!: drop /v0).

Dokumentācija

  • npm run check:docs-sync izpildās sekmīgi (to automātiski palaiž pre-commit)
  • npm run check:docs-all izpildās sekmīgi (apvienotā pārbaude: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)
  • npm run check:env-doc-sync beidzas ar kodu 0 — koda ↔ .env.exampledocs/reference/ENVIRONMENT.md vides līgums ir neskarts
  • npm run check:doc-links beidzas ar kodu 0 — pēc pārstrukturēšanas nav bojātu iekšējo markdown atsauču
  • docs/architecture/ARCHITECTURE.md pārskatīts, lai konstatētu glabāšanas vai izpildvides novirzes
  • docs/guides/TROUBLESHOOTING.md pārskatīts, lai konstatētu vides mainīgo un darbības novirzes
  • Ja .env.example ir mainīts: docs/reference/ENVIRONMENT.md ir atjaunināts
  • Ja jaunajai funkcijai ir lietotāja saskarne: tā ir pieminēta docs/guides/USER_GUIDE.md
  • Ja jaunajai funkcijai ir API: docs/reference/API_REFERENCE.md + docs/openapi.yaml ir atjaunināti
  • Ja jaunā funkcija ir modulis: pastāv tai veltīts docs/<MODULE>.md
  • Ja ir nesaderīgas izmaiņas: docs/guides/TROUBLESHOOTING.md ir migrācijas piezīme

i18n

  • npm run i18n:check beidzas ar kodu 0 — tulkojumu stāvoklis (.i18n-state.json) ir sinhronizēts ar avota dokumentāciju (stingrajā režīmā nav novirzījušos avotu; brīdinājumu režīma ieteikumi ir pieņemami pēdējā brīža dokumentācijas labojumiem, taču pirms taga izveides rezultātam jābūt 0)
  • npm run i18n:check-ui-coverage beidzas ar kodu 0 — katras lietotāja saskarnes lokalizācijas pārklājums sasniedz vai pārsniedz 80% slieksni
  • npm run i18n:sync-ui:dry ziņo par 0 trūkstošām atslēgām visās 42 lokalizācijās
  • Ja ir mainīta angļu valodas avota dokumentācija, pirms taga izveides palaidiet npm run i18n:run (nepieciešams OMNIROUTE_TRANSLATION_API_KEY failā .env)
  • Nelielus tulkojumu papildinājumus var atlikt līdz nākamajam laidienam (reģistrējiet CHANGELOG)

Datubāzes migrācijas

  • Ja direktorijā src/lib/db/migrations/ ir jauni faili:
    • Katra migrācija ir idempotenta (CREATE TABLE IF NOT EXISTS utt.)
    • Migrācijas ir ietvertas transakcijās
    • Tās ir pareizi numurētas (secībā nav iztrūkumu)
  • Pārbaudiet jaunā instalācijā: izdzēsiet ~/.omniroute/omniroute.db un palaidiet npm run dev
  • Pārbaudiet esošā instalācijā: izveidojiet DB dublējumu, palaidiet migrāciju un pārbaudiet shēmu
  • WAL faili (-wal, -shm) tiek apstrādāti pareizi, ja migrācija pārraksta tabulas

Pakalpojumu sniedzēju katalogs (validēts ar Zod)

  • src/shared/constants/providers.ts Zod shēma ielādes laikā ir derīga
    • Visiem pakalpojumu sniedzējiem ir obligātie lauki (id, label, kind utt.)
    • Jauniem bezmaksas pakalpojumu sniedzējiem ir norādīts freeNote
    • OAuth pakalpojumu sniedzējiem oauthConfig ir reģistrēts failā src/lib/oauth/constants/oauth.ts
  • Ja ir pievienots jauns pakalpojumu sniedzējs: direktorijā open-sse/executors/ ir atbilstošs izpildītājs
  • Ja formāts nav OpenAI formāts: direktorijā open-sse/translator/ ir tulkotājs
  • Modeļi ir reģistrēti failā open-sse/config/providerRegistry.ts
  • Vienību testi direktorijā tests/unit/ aptver pakalpojumu sniedzēju klasifikāciju un maršrutēšanu

Darbvirsma (Electron)

Ja electron/ ir mainīts:

  • npm run electron:smoke:packaged izpildās sekmīgi
  • Būvējumi ir pārbaudīti vismaz vienai no platformām :win, :mac, :linux
  • Koda parakstīšanas sertifikāti nav beigušies (ja tiek veikta parakstīšana)
  • electron/package.json versija atbilst saknes package.json versijai
  • Ja laidiens paredzēts kanālam stable, automātiskās atjaunināšanas kanāla rādītājs ir atjaunināts

Būvējuma izkārtojums

Repozitorijā tiek izmantotas trīs atsevišķas izvades direktorijas — nekad nesajauciet tās:

Direktorija Nolūks Tiek izsekota?
src/ Lietotnes avota kods (TypeScript / TSX)
.build/ Būvējuma starprezultāti — next build izvade (distDir) Nē (gitignorēta)
dist/ Izplatāmais npm komplekts — izveidots ar assembleStandalone Nē (gitignorēta)

Operatora piezīme: attālā VPS attēla direktorija joprojām ir /usr/lib/node_modules/omniroute/app/. Mainīta ir tikai repozitorijā esošā būvējuma izvade (app/dist/). Izvietošanas prasmes ar rsync kopē dist/ saturu attālajā app/ direktorijā — VPS ceļi nav jāmaina.

Vienas būvēšanas plūsma:

npm run build:release
  └─ rm -rf .build dist          (tīrīšana)
  └─ next build → .build/next/   (starprezultāti)
  └─ assembleStandalone          (kopē savrupo komplektu + statiskos failus + publiskos failus + vietējos moduļus → dist/)
  └─ writes dist/BUILD_SHA       (HEAD kontrolatzīme)

Izvietošanai NEPALAIDIET npm run build, pēc tam atsevišķi palaižot npm run build:cli — izmantojiet npm run build:release, kas ar vienu komandu veic tīru atkārtotu būvēšanu un izveido kontrolatzīmi.

Artefakta validācija

  • npm run build:release izpildās sekmīgi, un dist/BUILD_SHA == git rev-parse --short HEAD
  • npm run check:pack-artifact rezultāts ir tīrs — nav app.__qa_backup, scripts/scratch, package-lock.json vai citu lokālu atlikumu
  • Pēc būvēšanas pastāv dist/server.js

Taga izveide un laidiens

  • Palaidiet /generate-release-cc (Claude Code prasme):
    • Izveido tagu vX.Y.Z
    • Nosūta tagu un zaru
    • Izveido GitHub laidienu ar izmaiņu žurnāla saturu
    • Pievieno Electron instalētājus (ja tie ir izveidoti)
  • Vai manuāli:
    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
    

Izvietošana

Izvietošanas prasmes izmanto vieglo rsync plūsmu — bez npm pack un bez npm i -g:

  • Izmantojiet mērķim atbilstošo izvietošanas prasmi:
    • /deploy-vps-local-cc — lokālais VPS (192.168.0.15)
    • /deploy-vps-akamai-cc — Akamai VPS (69.164.221.35)
    • /deploy-vps-both-cc — abi
  • Pirms izvietošanas pārbaudiet, ka dist/BUILD_SHA == git rev-parse --short HEAD
  • Būvēšana jāveic vietā, kur node_modules ir īsta direktorija (galvenajā darba kopijā vai ar npm ci sagatavotā worktree — NEVIS worktree ar simbolisko saiti)
  • Veiciet izvietotās instances ātro pārbaudi:
    • Atveriet /dashboard/health → pārbaudiet, vai versijas virkne atbilst laidienam
    • Izpildiet /v1/chat/completions pieprasījumu, izmantojot zināmu pakalpojumu sniedzēju
    • Pārbaudiet, vai /api/monitoring/health atgriež CLOSED ķēdes pārtraucējus
    • Pārliecinieties, ka MCP transporti atbild (/mcp HTTP, /mcp-sse SSE)

Pēc laidiena

  • Palaidiet /capture-release-evidences-cc (Claude Code prasme)
    • Uzņem jauno funkciju WebP ekrānuzņēmumus/ierakstus
    • Pievieno tos laidiena piezīmēm / emuāra ierakstam
  • Atjauniniet GitHub Discussions / Discord ar paziņojumu par laidienu
  • Atveriet atskaites punktu nākamajai versijai
  • Ja kritiski svarīgi: piespraudiet diskusiju vai publicējiet to failā news.json, lai parādītu reklāmkarogu lietotnē

Radar publiskās palaišanas pārbaudes nosacījumi

Radar paziņojums ir apzināti komitēts ar active: false. Aktivizēšana ir atsevišķa izmaiņa pēc tam, kad ir dokumentāri apstiprināts katrs tālāk norādītais punkts:

  • Visi secīgie Radar PR ir sapludināti, un release-tip CI statuss ir sekmīgs
  • Izvietojiet un veiciet OSS Radar maršrutu pamatpārbaudi, kamēr RADAR_ENABLED pēc noklusējuma joprojām ir izslēgts
  • Veiciet GET /planos, /termos, /privacidade un /reembolso pamatpārbaudi norādītajā Radar resursdatorā
  • Privātajā pakalpojumā reģistrējiet operatora identitāti/kontaktinformāciju/adresi un īpašnieka apstiprinātu juridisko pārbaudi
  • Tikai testa režīmā pārbaudiet Stripe Checkout un parakstīto tīmekļa aizķeri
  • Pārbaudiet vienu šifrētu transakciju e-pasta piegādi, izmantojot apstiprināto sūtītāju/domēnu
  • Aplieciniet dublējuma atjaunošanu un vienu uzraudzītu izpētes izpildi ar ierobežotu budžetu
  • Pirms ziedojuma apliecinājumu pieņemšanas apstipriniet BRL/PIX pārbaudes politiku
  • Iespējojiet publisko Checkout tikai pēc iepriekšējo nosacījumu izpildes un pēc tam aktivizējiet jauno news.json ID
  • Pārbaudiet, vai sākumlapas reklāmkarogā tiek izmantots lokalizēts teksts un vai jaunais ID atkal tiek parādīts pēc vecāka ID noraidīšanas

Iegulto pakalpojumu pamatpārbaude (v3.8.4+)

Pirms jebkura laidiena, kurā iekļautas iegulto pakalpojumu izmaiņas, pārbaudiet:

Palaišana ar svaigu DB (atklāj migrāciju konfliktus — pievienots pēc v3.8.4 steidzamā labojuma)

  • DATA_DIR=$(mktemp -d) npm start & — uzgaidiet 10 s, līdz sistēma tiek palaista
  • curl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool' atgriež "9router" (NEVIS 404, NEVIS 500). Tas apstiprina, ka migrācija 071_services.sql ir lietota un rinda ir sākotnēji aizpildīta.
  • sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at" atgriež 3 rindas.
  • sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted" atgriež 2 rindas (apstiprina, ka 070_webhooks_kind_metadata.sql ir lietota).
  • node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.ts tiek izpildīts sekmīgi — aizsargā pret turpmākiem konfliktiem.

9Router

  • POST /api/services/9router/install mazāk nekā 2 minūtēs atgriež 200 ar installedVersion
  • POST /api/services/9router/start mazāk nekā 30 s atgriež 200 un state: "running"
  • GET /api/services/9router/status ziņo health: "healthy"
  • POST /v1/chat/completions ar "model": "9router/auto/..." atgriež 200 (pilna maršrutēšanas plūsma caur 9Router)
  • GET /dashboard/providers/services/9router/embed/dashboard starpniekserverī attēlo 9Router iebūvēto lietotāja saskarni (bez tieša 127.0.0.1:port iframe)
  • POST /api/services/9router/rotate-key atgriež { keyRotated: true }, un pakalpojums tiek korekti restartēts
  • POST /api/services/9router/stop atgriež 200 un state: "stopped"
  • GET /api/services/9router/logs?tail=50 atgriež SSE straumi ar snapshot notikumu, kas satur jaunākās rindas
  • Instalēšana vidē, kurā npm nav ietverts PATH, atgriež 500 ar lietotājam saprotamu kļūdas ziņojumu (bez steka izsekojuma)

CLIProxyAPI

  • POST /api/services/cliproxy/install mazāk nekā 2 minūtēs atgriež 200
  • POST /api/services/cliproxy/start mazāk nekā 30 s atgriež 200 un state: "running"
  • GET /api/services/cliproxy/status ziņo health: "healthy"
  • POST /api/services/cliproxy/stop atgriež 200 un state: "stopped"
  • GET /api/services/cliproxy/logs?tail=50 atgriež SSE straumi

Drošības regresijas pārbaude

  • curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/start atgriež 403 LOCAL_ONLY
  • curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/start atgriež 403 LOCAL_ONLY
  • Kļūdu atbildes no /api/services/* nesatur err.stack vai absolūtus failu ceļus

v3.8.0+ pārbaudes

Pirms jebkura v3.8.x laidiena papildus pārbaudiet tālāk norādīto:

  • omniroute --tray tiek palaists operētājsistēmā macOS (systray2 instalēts mapē ~/.omniroute/runtime/)
  • omniroute --tray tiek palaists operētājsistēmā Linux (nepieciešams DISPLAY; ja tas nav iestatīts, tiek parādīta korekta kļūda)
  • omniroute --tray tiek palaists operētājsistēmā Windows (PowerShell NotifyIcon, bez papildu binārajiem failiem)
  • omniroute config tray enable izveido automātiskās palaišanas ierakstu; atspējošana to noņem
  • npm install -g omniroute@<this-version> izpilda pēcinstalēšanas darbības bez fatālas iziešanas
  • Atjaunināšanas ceļš saglabā neobligātās atkarības: omniroute update --apply un automātiskais atjauninātājs izpilda npm install -g … --include=optional, lai optionalDependencies (better-sqlite3, keytar, tls-client un llmlingua SLM steks: @atjsh/llmlingua-2@2.0.5, js-tiktoken) saglabātos pēc atjaunināšanas. Ultra modelPath SLM līmenim ir nepieciešams arī tinybert modelis, kas pirmajā lietošanas reizē tiek automātiski lejupielādēts mapē ${DATA_DIR}/models/llmlingua. Pēcinstalēšanas darbība (scripts/build/colocateOptionals.mjs) pēc tam līdzās izvieto SLM neobligāto atkarību kopu mapē dist/node_modules, lai darbinieks atrastu VIENU @huggingface/transformers ^4.2.0 instanci — savrupais trasējums iekļauj tikai transformers, nevis dinamiski importētās neobligātās atkarības, tādēļ bez šī darbinieks ielādētu llmlingua-2 kopā ar saknes transformers un SLM līmenis nemanāmi pārslēgtos uz rezerves režīmu.
  • omniroute status darbojas bez .env (CLI pilnvaras marķiera ceļš, tikai cilpas interfeiss)
  • curl http://localhost:20128/api/shutdown atgriež 401 (vienmēr aizsargāts maršruts)
  • curl -H "host: evil.com" http://localhost:20128/api/mcp/sse atgriež 401 (cilpas interfeisa aizsardzība)
  • Pirmajā palaišanas reizē SQLite izpildlaiks tiek noteikts kā bundled (komplektā iekļautais binārais fails ir derīgs attiecīgajai platformai)
  • SQLite izpildlaiks pārslēdzas uz runtime, kad node_modules/better-sqlite3 ir izdzēsts
  • Viedais MCP filtrs saspiež reālu playwright-mcp browser_snapshot izvadi (samazinājums ≥50%)
  • Visi 10 skills/omniroute*/SKILL.md faili ir publiski izgūstami, izmantojot neapstrādātā GitHub satura URL
  • Sākotnējās iestatīšanas vednis jaunā instalācijā parāda līmeņu pārskata darbību „Kā tas darbojas”
  • Sākuma informācijas paneļa līmeņu pārklājuma logrīks parāda konfigurēto/aktīvo vienību skaitu

Atgriešana uz iepriekšējo versiju

Ja laidienā ir kritiska problēma:

  1. gh release edit vX.Y.Z --prerelease (atzīmē kā nejaunāko)
  2. git tag -d vX.Y.Z && git push --delete origin vX.Y.Z (tikai tad, ja lietotāji to vēl nav sākuši izmantot)
  3. Vai arī: veiciet steidzamu labojumu zarā release/vX.Y.0 → ielāpa laidiens vX.Y.(Z+1)
  4. Nekavējoties informējiet GitHub Discussions un Discord kanālos

Stingri noteikumi

  • Nekad neveiciet komitus tieši zarā main
  • Nekad neizmantojiet git push --force zariem main vai release/*
  • Nekad neizlaidiet Husky āķus (--no-verify)
  • Nekad neiekļaujiet komitos noslēpumus, akreditācijas datus vai .env failus
  • Testu pārklājumam jāsaglabājas ≥60/60/60/60 (priekšraksti/rindas/funkcijas/zari)
  • Mainot produkcijas kodu direktorijos src/, open-sse/, electron/ vai bin/, vienmēr iekļaujiet vai atjauniniet testus

Automatizēta sinhronizācijas pārbaude

Pirms PR atvēršanas lokāli palaidiet dokumentācijas sinhronizācijas pārbaudi:

npm run check:docs-sync

CI arī palaiž šo pārbaudi failā .github/workflows/ci.yml (lintēšanas uzdevumā).