Chemenu kompiliert Rohnotizen zu einem verlinkten, quellengebundenen Wiki: raw/ -> types/ + tools/ -> kb/ -> reports/. Was mechanisch ist, macht tools/wikitool; was Urteil braucht, macht ein Agent unter Contracts, deren Grenzen in Code durchgesetzt sind statt im Prompt. Dieser Commit ist der Startpunkt der oeffentlichen Historie. Die vorherige Entwicklung fand in einer privaten Instanz statt und ist nicht Teil dieses Repositorys; ihre Erzaehlung steht vollstaendig in CHANGES.md, das mit 44 Eintraegen von 0.1.0 bis 2.1.0 erhalten geblieben ist. Der mitgelieferte Korpus ist ein Testbett und eine Demo: 170 Seiten ueber den Stack selbst - Gates, Lint, Versionierung, Suche, das Wiki-Muster. Er dokumentiert das Werkzeug mit den eigenen Mitteln des Werkzeugs. Lizenz: AGPL-3.0 fuer den Stack (tools/, types/), CC-BY-4.0 fuer die Inhalte. Die Grenze zwischen beiden ist der Dateiplan, den dist export berechnet - siehe NOTICE.
9.6 KiB
Conversation Transcript - Issue Triage, Labels and TODO Retirement Session
Source: Claude Code session (
claude-opus-5), llm-wiki-test1 workspace Collected: 2026-08-31 Participant: Torben Fidelity: faithful summary transcript, not a verbatim log. Reconstructed by the assistant at the end of the session. Torben's instructions are quoted verbatim where they are short; the assistant's reasoning is condensed. Command outputs and issue titles quoted below are real. No credentials appeared in the session. One of three transcripts cut from the same session; the other two cover the tooling fixes for issues #12/#13, and the harness'sautopermission mode.
Covers the prioritisation of the whole open issue board, the observation that closed issue #11,
and the decision to retire TODO.md in favour of Gitea issues carrying prio/ and size/
labels. Resulting commit: 9fa70f3 (stack 1.2.1). Issues #11 closed, #14 and #15 opened.
Turn 1 - /stack-dev "lies alle offenen issues aus dem repo ... grob priorisiert"
Eleven open issues, all authored by Torben, none labelled. The assistant read every issue body
through the Gitea MCP server rather than working from titles, then measured the corpus (255 kb
pages, 65 raw files, 47 test files, stack at 1.1.1) so the ranking rested on facts rather than
impressions.
Ranking criterion chosen and stated: what blocks or damages work in progress, not effort.
The two issues placed at the top were argued as a single unit:
#12 and #13 belong first because both bent a rule rather than merely annoying someone. The comma bug caused a raw file to be renamed - against
raw/CONTRACT.md's immutability rule - and the budget accounting pushed the session into--override-budget, against invariant 6. A tool that regularly pushes its user against the stack's own invariants is the most expensive class of bug here.
Other judgments recorded at the time:
- #8 (test hardening) before #10 (coverage): measuring coverage on a suite that depends on the measurer's environment measures the environment too.
- #11 named as the cheapest item on the board - no code, one
list_runsobservation. - #7 (
dist upgrade) called the best-written issue on the board and still not top: it pays off only once a second instance exists. Its trigger was named - the production instance. - #6 (backlink ranking) placed last, not because it is unimportant but because it is the only one that changes core search logic, and no search query is on record as ranking wrongly today. Without that "before" case the issue's own before/after acceptance criterion cannot be met.
- #3 (product name) described as "keine Priorität, sondern eine Uhr" - technically blocking
nothing, but growing more expensive with every commit that adds another
llm-wiki-test1reference.
Torben took the top two and instructed the fix (see the companion transcript).
Turn 2 - the observation that closed #11
While verifying the 1.2.0 publish, the run list answered a question a separate issue had been
opened to ask. #11 wanted proof that Gitea evaluates paths-ignore the way GitHub does - the
issue existed precisely because an assumption in this area had already cost six failed runs.
| Commit | Content | Runs |
|---|---|---|
6f54c31 |
Stack (1.1.0) | 59 |
adfa220 |
Stack (1.1.1) | 60, 61 |
f916376 |
only kb/ and raw/ |
none |
40adbb7 |
Stack (1.2.0) | 62, 63 |
f916376 was a pure content publish from an ingest: kb/index.md, kb/log.md,
kb/provenance.md, eight pages under kb/*/**, one file under raw/notes/. Every path is on
the ignore list, and no run exists for its head_sha. The stack commits on either side each
produced two runs (CI plus release, because VERSION moved), so the difference is the filter
and not an idle runner.
The finding was written into the comment header of .gitea/workflows/ci.yml as the issue's
second acceptance criterion required - "damit die nächste Person ihn nicht erneut für eine
Annahme hält":
# That the filter works is now observed, not assumed (Gitea issue #11): commit
# f916376 published only kb/ and raw/ paths and produced no run at all, while
# the stack commits on either side of it (adfa220, 40adbb7) each produced two.
# Gitea evaluates these patterns the way GitHub does. Do not re-derive this.
Consequence recorded on #9: the interaction its text worried about resolves in its favour. Since
the filter does work, lint --fail-on-error genuinely no longer runs on a content publish, so
the nightly drift check keeps the strongest half of its justification. #9's own prerequisite -
whether this Gitea build evaluates on: schedule at all - is untouched and still open.
A note was also left on #8, recording that two tests written during the #12 fix, by someone who had read #8 first, still introduced the same silent environment dependency - which shifts the interesting question from "how many unknown cases are there" to "the suite acquires new ones faster than anyone finds them".
Turn 3 - "Übernehme den Punkt Recherchefähigkeit aus der todo.md vollständig in ein issue"
Torben's full instruction added the decision he wanted made: "Damit müsste in der todo nichts mehr sein, was nicht auf Gitea steht. Falls das so ist, entscheide wie wir zukünftig Prioritäten und t-Shirt sizes führen und ob wir die todo weiterhin brauchen. An ihrer Historie bin ich nicht interessiert."
TODO.md held two sections. The first was already only a link list to issues #7-#11, moved
there on 2026-08-30. The second was the research note - the substantial part.
Issue #15 - research capability
Ported in full: the sources, the finding, the A/B/C table with the decision for C, the cut
that keeps the network call out of wikitool, instruction-rather-than-skill, the work/
friction, the Perplexity specifics including the /v1/sonar deprecation date of 2026-09-27, the
six open contract changes and the three open decisions. Acceptance criteria were added - the
note had none, and without them an issue is not a work package.
The substance worth carrying: the research capability is framed not as a feature but as the
missing exit from invariant 3. Today "the wiki has no confident source for this" is a dead
end; research is the answer "then go and get one". The design question is not "skill yes/no" but
where a Perplexity report falls, given that raw/ forbids "anything the LLM wrote" and kb/
requires every claim to trace to a file under raw/.
The label scheme
With nothing left in TODO.md that was not already on Gitea, the assistant decided:
Two axes, both mandatory on every issue, and deliberately no third.
| Priority | Means |
|---|---|
prio/1 |
Blocks or damages work in progress. Next. |
prio/2 |
Accrues interest. Planned. |
prio/3 |
Worth doing, waiting on a named trigger. |
| Size | Means |
|---|---|
size/XS |
Minutes. Often just a decision or an observation. |
size/S |
One session, one publish, a clear cut. |
size/M |
Several files; a contract or instruction change; its own test effort. |
size/L |
Several sessions, or open design questions before the first commit. |
Reasoning recorded: a priority without a cost is half a decision, so both are required; size is
effort and not importance, so prio/1 size/XS is the best thing on a board and prio/3 size/L
is a thing to discuss before anyone starts. prio/3 is explicitly not a graveyard - the trigger
must be named in the issue, or the label is a polite no. A third axis (kind, area, status) was
rejected as the point where a taxonomy starts needing maintenance of its own, on a board with
one maintainer.
Seven labels were created and applied to all ten open issues. The resulting board:
| # | Title | prio | size |
|---|---|---|---|
| 8 | Testsuite gegen Umgebungsabhängigkeiten härten | 1 | M |
| 3 | Produktname | 2 | XS |
| 9 | Nächtlicher Drift-Check | 2 | M |
| 10 | Coverage messen | 2 | S |
| 14 | raw_files: einer bestehenden Seite schreiben |
2 | S |
| 4 | Link-Disziplin & xref-Auto-Scan | 3 | M |
| 5 | wiki-verify-Skill |
3 | M |
| 6 | Backlink-boosted Ranking | 3 | M |
| 7 | wikitool dist upgrade |
3 | L |
| 15 | Recherche-Fähigkeit | 3 | L |
Where the rule lives
TODO.md was deleted. The scheme was written to instructions/dev/issue-tracking.md and linked
from step 2 of the stack-dev skill.
The placement was the load-bearing decision. README.md and AGENTS.md both ship to every
distributed instance, and a distributed instance has no issues at
gitea.nehmer.net/torben/llm-wiki-test1. instructions/dev/ is the only location that is both
agent-readable and never distributed - dist export excludes it wholesale. For the same reason
the release was a PATCH (1.2.1) rather than a MINOR: nothing changes for an existing
instance.
Two kb pages state that the open work items live as Gitea issues "statt als Prosa in
TODO.md". Both were checked and left alone: the claim stays true after the deletion, and more
so.
Note on the CI version gate: it matches ^(tools/|types/|instructions/|AGENTS\.md$|…), so a
change under instructions/dev/ demands a version bump even though it reaches no instance.
That was verified in ci.yml before the bump rather than assumed.
Outcome
| Artifact | Result |
|---|---|
| Stack version | 1.2.1 (PATCH - dev-repo process, no instance-visible change) |
| Commit | 9fa70f3 - 5 files, TODO.md deleted, instructions/dev/issue-tracking.md added |
| Gitea | #11 closed with the run-table evidence; #14 and #15 opened; 7 labels created and applied to all 10 open issues |
| Repo | No TODO.md. Open work exists only as issues |