Issue — dasturiy loyiha doirasidagi xato, yangi funksiya, texnik qarz, hujjat vazifasi yoki boshqa kuzatiladigan ishni qayd etuvchi yozuvdir. Issue tracker vazifaning tavsifi, holati, mas’uli, muhokamasi va bog‘liq kod o‘zgarishlarini bir joyda saqlaydi. Issue oddiy chat xabaridan farqli ravishda qidiriladigan va lifecycle’ga ega ish obyektidir.
Tarkibi
Sifatli issue kuzatilgan holat va kutilgan natijani ajratadi. Bug uchun reproduksiya qadamlari, muhit, versiya, log va minimal misol kerak bo‘lishi mumkin. Maxfiy token yoki shaxsiy ma’lumot screenshot va logdan olib tashlanadi.
Feature issue foydalanuvchi muammosi, qabul mezoni va doiradan tashqari qismlarni ko‘rsatadi. Faqat “qidiruv qo‘shish” degan sarlavha til, filter, ruxsat va performance talabi haqida yetarli ma’lumot bermaydi.
Holatlar
Oddiy tracker open va closed holatiga ega, keng workflow esa triage, ready, in progress, blocked, review va done bosqichlarini ishlatishi mumkin. Holat real jarayonni ifodalashi kerak; juda ko‘p bosqich faqat ma’muriy yuk yaratadi.
Closed issue “kod yozildi” emas, qabul mezoni bajarilib kerakli muhitga yetganini anglatishi mumkin. Duplicate issue asl yozuvga bog‘lanib yopiladi, muhokama va ishtirokchilar yagona joyda davom etadi.
Label va prioritet
Label issue turini, komponentini, platformasini yoki holatini ajratadi. bug, documentation, security, frontend kabi label qidiruv va avtomatlashtirishga yordam beradi. Prioritet ta’sir va shoshilinchlik asosida belgilanadi; eng baland priority hamma issuega berilsa ma’nosini yo‘qotadi.
Severity texnik yoki foydalanuvchi ta’sirini, priority esa qachon ishlash qarorini bildiradi. Katta severityga ega, lekin faqat o‘chirilgan eski moduldagi bug pastroq priority olishi mumkin.
Bog‘lanishlar
Issue pull request va commitga bog‘lanadi. Commit xabaridagi maxsus kalit issue’ni yopishi mumkin, ammo branch merge qilinmaguncha holat o‘zgarmasligi platformaga bog‘liq. Parent-child yoki dependency bog‘lanishi katta epicni kichik vazifalarga ajratadi.
Issue boshqa ish bilan blocked bo‘lsa, sabab va kerakli qaror ko‘rsatiladi. Faqat “blocked” labeli muammoni hal qilish uchun yetarli kontekst bermaydi.
Triage
Triage yangi issue’ni tekshiradi, reproduksiya qiladi, doira va prioritetini belgilaydi. Ma’lumot yetishmasa aniq kerakli dalil so‘raladi. Security zaifligi public issuega yozilmasdan private disclosure jarayoniga yo‘naltirilishi mumkin.
Stale automation uzoq faol bo‘lmagan issue’ni belgilaydi, ammo sukut muammo yo‘qolganini isbotlamaydi. Yopish siyosati contributor tajribasi va backlog sifatiga ta’sir qiladi.
Qabul mezonlari va kuzatuv
Issue bajarilganini tekshirish mumkin bo‘lishi uchun qabul mezonlari kuzatiladigan natija shaklida yoziladi. Masalan, “sahifa tez ishlasin” jumlasi o‘rniga o‘lchanadigan javob vaqti, qo‘llab-quvvatlanadigan brauzer va xato holatidagi xabar ko‘rsatiladi. Muhokama davomida talab o‘zgarsa, asosiy tavsif yangilanadi, muhim qarorlar esa izohlar orasida yo‘qolib ketmaydi. Commit yoki pull request matnida issue raqamini ko‘rsatish kod o‘zgarishini talab bilan bog‘laydi. Avtomatik yopish kalit so‘zlari qulay, lekin pull request birlashishi haqiqatan barcha mezonlar bajarilganini tekshiradigan review o‘rnini bosmaydi.
Takroriy va eskirgan yozuvlar
Bir muammo uchun bir nechta issue ochilsa, muhokama va dalillar bo‘linib ketadi. Triage vaqtida asosiy yozuv tanlanib, qolganlari duplicate sifatida unga bog‘lanadi. Talab endi dolzarb bo‘lmasa, issue sabab ko‘rsatilgan holda yopiladi; yopilish muammo albatta kod bilan tuzatilganini anglatmaydi. Uzoq muddat javobsiz qolgan yozuvni avtomatik yopishdan oldin loyiha siyosati va qayta ochish yo‘li ko‘rsatiladi.
Bog‘liq tushunchalar
issue tracker, bug report, feature request, label, milestone, pull request, triage