workflow: retire milestone label — Gitea milestone container IS the concept

The `milestone` label was a dead duplicate of Gitea's first-class
milestone container. Zero issues carried it (the three actual
big-chunks — Flat array, Iteration-totality, Stateful islands —
live as Gitea milestone containers, not as labelled issues).
Same pattern as `prio:p1`: a slot that never gets used because
the concept it tries to label lives somewhere else.

Label deleted in Gitea. Remaining labels: `feature`, `idea`,
`in-progress` (three, all semantic, no taxonomy noise). Big-
chunk work continues to live as Gitea milestone containers
(reached via `tea milestones ls --repo Brummel/AILang`).

In-tree changes:

- CLAUDE.md: Gitea-issues bullet describes the three-label
  shape; explicit note that milestone is a Gitea container,
  not a label.
- skills/boss/SKILL.md: Step 1 filter set drops `milestone`,
  adds `tea milestones ls` for the container view; direction-
  freedom "new milestone" trigger reworded around the
  container, not the label.
- skills/brainstorm/SKILL.md: Step 7.5 tea-create template
  drops `milestone` from the choice set; adds a note that
  spec-needing deferred work should be filed as a Gitea
  milestone container via `tea milestones create` instead.

Verification: cargo test --workspace 647/0/2, architect_sweeps
exit 0, zero residual `milestone`-as-label refs in live docs
(grep skip-listed legitimate "Gitea milestone (container)"
prose).
This commit is contained in:
2026-05-20 15:24:26 +02:00
parent d8379a15ba
commit a5540c5620
3 changed files with 27 additions and 22 deletions
+8 -7
View File
@@ -226,13 +226,14 @@ not retroactively renamed.
- **Gitea issues** (since 2026-05-20) are the forward queue —
milestones, features, todos, and ideas. Browse:
http://192.168.178.103:3000/Brummel/AILang/issues. CLI: `tea
issues ls --repo Brummel/AILang`. Labels: `milestone` (needs a
`docs/specs/` entry, bounces back to the user in /boss),
`feature` (substantive addition, no full spec), `idea` (may be
cut, no commitment), `in-progress` (work has started). An
unlabelled issue is the default: a concrete task to just do,
no spec needed. Big chunks live as Gitea **milestones**
(containers); smaller items are standalone issues. No formal
issues ls --repo Brummel/AILang`. Labels: `feature`
(substantive addition, no full spec), `idea` (may be cut, no
commitment), `in-progress` (work has started). An unlabelled
issue is the default: a concrete task to just do, no spec
needed. Big chunks live as Gitea **milestone containers**
(first-class Gitea concept, not a label — needs a
`docs/specs/` entry, opening one bounces back to the user in
/boss); smaller items are standalone issues. No formal
priority axis — "what's next" is an orchestrator judgement
call per session, not a pre-set label. The orchestrator owns
the backlog: opening new issues, retagging, closing on
+15 -13
View File
@@ -70,18 +70,20 @@ mode. This skill does not restate them.
The Gitea issue backlog is the forward queue. Browse:
http://192.168.178.103:3000/Brummel/AILang/issues. CLI:
`tea issues ls --repo Brummel/AILang --state open` lists every
open issue; `--labels milestone` / `feature` / `idea` filters by
semantic class. Unlabelled issues are the default "just do it"
bucket. Read a candidate body with
`tea issues <N> --repo Brummel/AILang`.
open issue; `--labels feature` / `idea` filters by semantic
class. Unlabelled issues are the default "just do it" bucket.
Big chunks live as Gitea **milestone containers** — list via
`tea milestones ls --repo Brummel/AILang`. Read a candidate
issue body with `tea issues <N> --repo Brummel/AILang`.
There is no formal priority axis (`prio:*` labels were retired
2026-05-20). Pick the next item by orchestrator judgement:
typically the simplest in-flight follow-up to the just-closed
milestone, then an unlabelled issue or a `feature` that
unblocks something, then `milestone` (which is itself a
bounce-back per §"Direction freedom"). `idea` is "may be cut"
and should rarely be picked autonomously.
unblocks something, then opening a new Gitea milestone
container (which is itself a bounce-back per §"Direction
freedom"). `idea` is "may be cut" and should rarely be picked
autonomously.
If the entire open backlog is empty: skip to Step 5 (done-state).
Do not invent work; an empty queue is a real signal that the
@@ -159,12 +161,12 @@ Bounce back to the user only when:
project's direction (a fundamental design flaw, an external
dependency failure, a discovered invariant violation).
- The user has explicitly asked for a checkpoint.
- **The next item on the queue is a new milestone** — i.e. a
backlog issue (typically labelled `milestone`) that has no
`docs/specs/` file yet and would require dispatching `brainstorm`
to even begin. Continuing an open milestone (next iter, audit,
fieldtest, post-audit tidy) is autonomous; *starting* a new one
is a bounce-back.
- **The next item on the queue is a new milestone** — i.e. an
open Gitea milestone container that has no `docs/specs/` file
yet and would require dispatching `brainstorm` to even begin.
Continuing an open milestone (next iter, audit, fieldtest,
post-audit tidy) is autonomous; *starting* a new one is a
bounce-back.
**Why this is different from the other three triggers.** Cross-
milestone work is high-context work. A fresh brainstorm alone
+4 -2
View File
@@ -248,7 +248,7 @@ interpretation:
```bash
tea issues create --repo Brummel/AILang \
--title "<idea title>" \
--labels "<milestone|feature|idea>" \
--labels "<feature|idea>" \
--description "<one-line description>
**context:** <why this is deferred>
@@ -256,7 +256,9 @@ interpretation:
```
(Omit `--labels` entirely for an unlabelled default-bucket
issue.)
issue. If the deferred work is big enough to need its own
`docs/specs/` entry on resumption, file it as a Gitea
milestone container instead via `tea milestones create`.)
3. Tell the user the spec was retired and which Gitea issue was
filed (include the issue number). No commit is needed for the