feat(issue): work-start signal is assignee, not label
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-<slug>, 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/<n> 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.
This commit is contained in:
@@ -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
|
fork (two substantive options with no clear default), bounce
|
||||||
back to the user.
|
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)
|
### The run worktree (mandatory)
|
||||||
|
|
||||||
Before the first dispatch, the orchestrator enters a git worktree
|
Before the first dispatch, the orchestrator enters a git worktree
|
||||||
|
|||||||
+6
-1
@@ -181,7 +181,12 @@ imports.
|
|||||||
## Issue tracker
|
## Issue tracker
|
||||||
|
|
||||||
The tracker is **Gitea** and the commit close-marker is `closes #N`
|
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-<slug>`,
|
||||||
|
§ 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
|
list/show commands live in the project's CLAUDE.md project facts
|
||||||
(see below) — the `boss` skill reads the forward queue from there and
|
(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
|
records its fork decisions on the run's reference issue there, and an
|
||||||
|
|||||||
+10
-2
@@ -274,8 +274,16 @@ Notes:
|
|||||||
`tea issues create -t "..." -d "$(cat <<'EOF'` … `EOF`\n`)"`.
|
`tea issues create -t "..." -d "$(cat <<'EOF'` … `EOF`\n`)"`.
|
||||||
- Labels are matched by name (`-L feature,bug`); they must already
|
- Labels are matched by name (`-L feature,bug`); they must already
|
||||||
exist in the repo. The project's label vocabulary lives in
|
exist in the repo. The project's label vocabulary lives in
|
||||||
`~/dev/CLAUDE.md` (`BLOCKER`, `feature`, `bug`, `idea`,
|
`~/dev/CLAUDE.md` (`BLOCKER`, `feature`, `bug`, `idea`). There is
|
||||||
`in-progress`).
|
**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/<owner>/<repo>/issues/<n>` 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-<slug>`) is the matching git-side signal.
|
||||||
- Before editing, view the issue first (`tea issues <idx>`) — do not
|
- Before editing, view the issue first (`tea issues <idx>`) — do not
|
||||||
edit blind. Status/discussion updates go in a `tea comment`, not by
|
edit blind. Status/discussion updates go in a `tea comment`, not by
|
||||||
overwriting the body. Note `tea issues <idx>` prints the **body
|
overwriting the body. Note `tea issues <idx>` prints the **body
|
||||||
|
|||||||
Reference in New Issue
Block a user