diff --git a/README.md b/README.md index 8cda980..4564dfa 100644 --- a/README.md +++ b/README.md @@ -1119,24 +1119,29 @@ dotnet test --filter "Category=Unit" # Unit tests only | Python art pipeline, model backends, its Dockerfiles | `spikersoft-artpipe` | | Native mobile apps | `spikersoft-ios` / `spikersoft-android` | | Godot client | `spikersoft-games-godot` | -| **Cross-repo epics only** | `spikersoft-issues` | + +**There is no central tracker.** `spikerj/spikersoft-issues` was retired on 2026-08-07 and +now holds this README only — do not file there. The reason is mechanical: Gitea auto-closes an issue when a merged PR says `fixes #N` **only within the same repo**. A ticket filed in a central tracker can never close itself, so completed work silently accumulates as an open backlog. That is exactly what happened — -the umbrella tracker reached 234 open issues, a large share of which were already shipped. +the umbrella tracker reached 234 open issues before it was broken up. Rules that follow from this: - A ticket must be **closeable by merging in one repo**. If it isn't, it's really several tickets. -- Work spanning repos becomes **one narrowly-scoped issue per repo**, cross-linked to its - siblings by full reference (`spikerj/spikersoft-backend#12`) and pointing at its epic. -- **Epics live in [`spikerj/spikersoft-issues`](https://git.spikersoft.com/spikerj/spikersoft-issues)** - and hold no implementation work of their own — only a checklist of per-repo children. - They are the one thing that legitimately closes by hand. +- Work spanning repos becomes **one narrowly-scoped issue per repo**. There is no epic + parent — a unit is held together by two things instead: + 1. a **shared title prefix**, e.g. `[Scheduling] Backend: recurrence expansion`, so the + whole unit is one search away; and + 2. a **sibling cross-link block** in every issue body listing the unit by full reference. - Reference issues across repos with the **full `owner/repo#N` form**. A bare `#N` resolves against the repo you're writing in, which silently points at an unrelated ticket. +- When an epic-sized idea has genuinely undecided design, file a **decision issue** stating + the concrete options and what must be settled. That is a real, closeable deliverable; a + vague "implement X" stub is not. ### QA: Gitea issues and the AI agent (MCP)