feat: an outsider's issue is worked like any other once admitted

The guard refused to review any issue the owner had not filed himself. The rule
was meant to keep malformed outside reports out of the pipeline, but it checked at
every step instead of at the entrance, and it duplicated a guarantee the platform
already gives: only someone with write access can apply a label. Applying the
first status label is the owner's explicit decision, and it is the only place the
question belongs.

So the author check is gone. While an issue carries no status label it sits
outside the process and the invariants do not apply; once labelled, the task is in
flight and who filed it stops mattering.

The old rule also cost real work. On #123 an outside bug report had been analysed
and specified before the guard turned it away in nine seconds, and the remedy on
offer was to refile the same thing as the owner's own issue.

Issue: #114
User-Visible: no
This commit is contained in:
Matysh
2026-08-13 20:49:04 +03:00
parent 4e539b02df
commit 024cdc0d94
3 changed files with 34 additions and 16 deletions
+14 -6
View File
@@ -472,12 +472,20 @@ Project v2 остаётся человеческим представление
Инварианты: **ровно одна `S*`-метка** на открытом issue; закрытый issue статусных
меток не несёт; `blocked` не заменяет статус, а дополняет его.
**В процесс берутся только issue, созданные владельцем** (решение владельца
2026-08-13). Репозиторий публичный, задачи заводят и посторонние; такие issue
бывают плохо оформлены или невалидны, и статусных меток им не ставят — инварианты
на них не распространяются. Проверять `user.login`. Что делать с чужим issue:
прочитать, при необходимости переформулировать и завести **свой** со ссылкой на
исходный, либо оставить до решения владельца. Не размечать и не брать в работу.
**Чужой issue берётся в работу так же, как свой — после явного решения
владельца** (решение владельца 2026-08-13, уточнено в тот же день). Репозиторий
публичный, отчёты заводят и посторонние; проверка стоит **на входе**, а не на
каждом шаге.
Входом служит присвоение первой статусной метки: пока меток нет, issue вне
процесса и инварианты на него не распространяются. Как только метка стоит, задача
в работе, и **кто её завёл, дальше не имеет значения** — статусы, ревью и лимиты
работают одинаково.
Присвоение метки и есть то самое явное решение, причём проверенное платформой:
метки может ставить только тот, у кого есть право записи в репозиторий. Прежняя
редакция требовала переоформлять чужой отчёт своим issue со ссылкой на исходный;
это оказалось работой впустую — на #123 к моменту отказа ТЗ уже было написано.
`S8-merged` появился позже остальных и закрывает разрыв, который раньше
закрывался памятью человека: код принят, но бета ещё не вышла, и issue закрывать