From 22abd3745848c839fdb721ba4842851b1ed7c107 Mon Sep 17 00:00:00 2001 From: claude Date: Tue, 14 Jul 2026 12:42:50 +0200 Subject: [PATCH] feat(issue): work-start signal is assignee, not label MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Retire the in-progress label. Work-start on a tracker issue is now signalled by assigning the issue to the dedicated tracker user claude — one write, no removal; the assignee survives the close as provenance. The live worktree branch (issue-N-, from the worktree convention) is the matching git-side signal, and it disappears with the ratified merge on its own. Rationale (user decision 2026-07-14): a set-and-remove label is administrative overhead with a lying-label failure mode when the removal is forgotten; an assignee needs no removal and stays meaningful after close. issue/SKILL.md documents the mechanic (PATCH .../issues/ with {"assignees": ["claude"]} — the call replaces the assignee set; Gitea has no additive endpoint, verified against the live swagger). boss/SKILL.md Step 2 assigns on a clean pick (chat-seeded runs assign when the reference issue is created). conventions.md § Issue tracker carries the cross-project statement. The label itself was deleted from all Gitea repos that had it (AILang, Aura, Skills, doctate); the label vocabulary in ~/dev/CLAUDE.md no longer lists it. --- boss/SKILL.md | 7 +++++++ docs/conventions.md | 7 ++++++- issue/SKILL.md | 12 ++++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/boss/SKILL.md b/boss/SKILL.md index 52f5cdb..a213bf4 100644 --- a/boss/SKILL.md +++ b/boss/SKILL.md @@ -102,6 +102,13 @@ autonomously when the path is clear. If the top item is a real fork (two substantive options with no clear default), bounce back to the user. +On a clean pick, mark work-start on the tracker: assign the issue +to the `claude` user (`../issue/SKILL.md` § tea mechanics — one +write, no removal; there is no in-progress label). A chat-seeded +run with no issue yet assigns the moment the reference issue is +created (§ The reference issue). The live run-worktree branch +(§ The run worktree) is the matching git-side signal. + ### The run worktree (mandatory) Before the first dispatch, the orchestrator enters a git worktree diff --git a/docs/conventions.md b/docs/conventions.md index f4674ae..dfae9a0 100644 --- a/docs/conventions.md +++ b/docs/conventions.md @@ -181,7 +181,12 @@ imports. ## Issue tracker The tracker is **Gitea** and the commit close-marker is `closes #N` -(`refs #N` for non-closing work). The per-project repo slug and the +(`refs #N` for non-closing work). Work-start is signalled by +**assignee, not label**: the actor that begins work on an issue +assigns it to the agent tracker user (`claude`) — one write, no +removal; the assignee survives the close as provenance. There is no +`in-progress` label. The live worktree branch (`issue-N-`, +§ Git discipline) is the git-side counterpart. The per-project repo slug and the list/show commands live in the project's CLAUDE.md project facts (see below) — the `boss` skill reads the forward queue from there and records its fork decisions on the run's reference issue there, and an diff --git a/issue/SKILL.md b/issue/SKILL.md index e71c8fb..844cc50 100644 --- a/issue/SKILL.md +++ b/issue/SKILL.md @@ -274,8 +274,16 @@ Notes: `tea issues create -t "..." -d "$(cat <<'EOF'` … `EOF`\n`)"`. - Labels are matched by name (`-L feature,bug`); they must already exist in the repo. The project's label vocabulary lives in - `~/dev/CLAUDE.md` (`BLOCKER`, `feature`, `bug`, `idea`, - `in-progress`). + `~/dev/CLAUDE.md` (`BLOCKER`, `feature`, `bug`, `idea`). There is + **no in-progress label**: work-start is signalled by assigning the + issue to the `claude` tracker user (§ Actor identity) — one write, + no removal; the assignee survives the close as provenance. Assign + via the API (a write, so the `claude` token): + `PATCH /api/v1/repos///issues/` with body + `{"assignees": ["claude"]}` — the call **replaces** the assignee + set (Gitea has no additive endpoint), so when the issue already + carries assignees, include them in the array. The live worktree branch + (`issue-N-`) is the matching git-side signal. - Before editing, view the issue first (`tea issues `) — do not edit blind. Status/discussion updates go in a `tea comment`, not by overwriting the body. Note `tea issues ` prints the **body