INSTALL.md nennt die neue Setup-Frage (Menschendoku-Nachzug)
7bc5da6
Der Befund, aus dem das Paket entstand
source_type beschreibt diese Instanz, nicht den Stack. Die sieben Werte (transcript, analysis, article, document, notes, tracker, unclassified) kommen aus einer Wissensbasis. Gegen drei hypothetische Zielinstanzen gestellt, hat die Achse fast nichts Gemeinsames:
Zum Vergleich: fidelity und authority (#67) sind in allen vier Zeilen dieselben Werte. Das ist die Trennlinie — was aus dem Substrat oder dem Konsumenten folgt, bleibt Stack-Vokabular; eine Inhaltstaxonomie ist ein Default, den eine Instanz übernimmt oder ersetzt.
Architektonisch war das längst wahr: types/source.md trägt root: kb, dist_cmd._plan_types() liefert es samt .schema.yaml nur als .template aus, Schritt 5 von setup-instance.md kopiert es in die Instanz. Was fehlte, war, dass irgendjemand die Frage stellt. instructions/kb-profiles.md riet im entities-Abschnitt ausdrücklich „Adapt the area list first: it is the part most likely to be wrong for another domain" — und sagte im sources-Abschnitt über source_typekein Wort.
Zweiter Befund, aus #66 mitgenommen: dort steht „Leeren keine benannte Operation war (#68 holt das nach)". Das unclassified-Fach hatte seit #66 einen beratenden lint-Befund, aber keine Prozedur, die es wieder leert.
Die sieben Entscheidungen (Vorbereitung 2026-09-09)
Alle sieben in der Vorbereitungssitzung getroffen, alle sieben unverändert umgesetzt. Vier davon korrigieren den ursprünglichen Body, der gegen den Baum nicht mehr stimmte.
D1 — Dateiname instructions/evolve-subtypes.md. Muss von link-taxonomy.md klar unterscheidbar sein, und instructions_cmd.manual_forbidden_references() prüft per Dateinamen-Substring gegen AGENTS.md/CLAUDE.md/jede SKILL.md — ein generischer Name wäre auch mechanisch riskant gewesen.
D2 — Geltungsbereich: jede Subtype-Achse, source_type ausgearbeitet.entity.md, concept.md und source.md tragen alle subtype_field:undlayout:; comparison keins von beidem und fällt heraus. Eine zweite, fast gleichlautende Instruction für entity_type wäre die Kopie, die Invariante 8 verbietet. Instanz-spezifisch bleibt nur die Drain-Hälfte: ein unclassified-Fach hat allein sources.
D3 — Die ≥3-Aufnahmeschwelle steht ausschließlich in der neuen Instruction. Sie existierte nirgends im Baum, nur als Absicht in #66 („die ≥3-Regel aus #68"). Der Floor in corpus-policy.md sagt etwas anderes (≥ 1 Seite pro bereits deklariertem Wert) und bleibt, wo er ist — aufgenommen wird bei 3, gehalten wird ab 1, kein Widerspruch.
D4 — Die neue Instruction verweist nicht auf corpus-policy.md. Der ursprüngliche Body sah genau diesen Link vor; er ist unzulässig, weil instructions/dev/ von dist export gepruned wird und instructions verifys Boundary-Check jede Referenz von außerhalb nach innen meldet. Die Untrennbarkeitsregel ist stattdessen aus sich selbst begründet (der notes-Fall aus #66). Ein Entwurf der Umsetzung enthielt den Verweis trotzdem — auf version-parts.md, in Schritt 4 — und wurde vor dem ersten verify wieder entfernt; die Entscheidung hat also im Lauf tatsächlich gegriffen, statt nur dokumentiert dazustehen.
D5 — Der ursprüngliche Punkt 4 war bereits erledigt.corpus-policy.md trägt die unclassified-Floor-Ausnahme seit #66, mit Begründung und Invarianten-3-Bezug. Punkt und Kriterium gestrichen statt offen gelassen.
D6 — Die Setup-Frage ist neuer Unterschritt 5 in Schritt 5, hinter dem Terminologie-Schritt. Sie hängt nicht an der Sprachentscheidung: Enum-Werte sind Identifier und folgen keiner KB-Sprache (kb/CONTRACT.md § Language and identifiers) — übersetzt wird nur der title: einer layout:-Zeile.
D7 — Kein instructions sync. Es ändert sich keine SKILL.md; eine flache Instruction wird nicht publiziert. instructions verify ist hier der eigentliche Check.
Was gebaut wurde
instructions/kb-profiles.md. Der sources-Abschnitt behandelt source_type jetzt wie entities seine Area-Liste: als das, was zuerst anzupassen ist, mit zwei ausformulierten Domänenprofilen (Handball-Verein, Pen-&-Paper) als Anschauung. Dazu die Anleitung, was „übernehmen" konkret heißt — Werteliste ins Enum von types/source.schema.yaml, je Wert eine layout:-Zeile in types/source.md — und die Auflage, den sichtbaren Auffangwert in jedem übernommenen Vorschlag zu behalten, weil ein Subtype-Feld ohne ihn still den default:-getriebenen Sammelpunkt aus #66 wiederherstellt. Als Gegenbeispiel im selben Abschnitt: fidelity und authority stehen nicht zur Wahl.
instructions/setup-instance.md. Neuer Unterschritt 5 in Schritt 5: nach dem Anwendungsgebiet fragen, source_type-Vorschlag ableiten, Enum und layout: in derselben Bearbeitung setzen — eins ohne das andere lässt einen Wert ohne Zielverzeichnis zurück. Mit der Ansage, dass der Betreiber zu diesem Zeitpunkt null Quellen hat und seine Taxonomie rät, bevor er Material gesehen hat: das Ergebnis ist ein Startpunkt, keine Festlegung, und evolve-subtypes.md ist der Weg, ihn später zu korrigieren.
instructions/evolve-subtypes.md, manual: true. Benennt die Schleife, die werkzeugseitig vollständig existierte: Fach sehen (lint, search --field) → Kandidaten lesen → Wert samt layout: ergänzen → touch --set / move --reconcile → index rebuild / migrate verify. Über alle drei Subtype-Achsen (D2). Zwei Regeln im Body:
Wert und Sweep sind untrennbar — ein deklarierter Wert, den keine Seite trägt, ist eine Kategorie, die beim nächsten Mal zum Raten zwischen ihr und dem Auffangfach einlädt; genau so absorbierte der alte notes-Default 22 von 29 Source-Seiten.
Aufnahmeschwelle ≥ 3 Seiten — ein Wert wird zugelassen, nachdem er sich an echtem Material bewährt hat, nie in Erwartung. spec und image sind die Gegenbeispiele (beide vorab aufgenommen, beide ein Jahr bei null, beide in #66 gestrichen); eine kleinere Zahl ist nur eine ausdrücklich benannte Ausnahme des Betreibers (tracker bei zwei Seiten), nie ein Grund, die Schwelle selbst zu senken.
Dazu die Abgrenzung nach oben: Umbenennen oder Streichen eines Wertes bewegt Seiten und ist eine Korpus-Migration (migrate-corpus.md), kein Fall dieser Schleife. Und nach unten: das Drainen läuft ohne die ≥3-Schwelle, weil eine Seite im Auffangfach ihr Ziel bereits hat.
kb/sources/COLLECTION.md. Die unclassified/-Zeile nennt evolve-subtypes.md als Weg, das Fach zu leeren oder das Enum zu erweitern.
Menschendoku (7bc5da6).INSTALL.md zählt auf, wonach setup-instance.md den Betreiber fragt — und dieses Paket hat dort eine Frage hinzugefügt, ohne die die Aufzählung unvollständig gewesen wäre. Neuer Aufzählungspunkt Anwendungsgebiet, mit dem Startpunkt-Vorbehalt, dem Verweis auf evolve-subtypes.md und der Abgrenzung gegen fidelity/authority.
Ein Nebenbefund am Scaffolding
tools/wikitool new instruction schreibt obligation: required ins Frontmatter, weil types/instruction.schema.yaml dafür ein default: trägt. Das Feld gehört fachlich aber nur zu einem Migrationsdokument unter instructions/migrations/ (es steuert migrate status), und keine der beiden bestehenden Manual-Instructions — kb-profiles.md, german-terminology.md — trägt es. Hier von Hand entfernt. Nichts prüft das: weder docs verify noch instructions verify fragt, ob ein obligation: außerhalb von migrations/ steht. Ob das ein Schema-Fehler ist (Default gehört weg, migrate_cmd liest ohnehin required als Fallback) oder gewollt, ist nicht in diesem Paket entschieden worden — es ist derselbe Mechanismus, den #66 bei default: notes als Ursache identifiziert hat, eine Ebene höher.
Versionsteil
MINOR, geprüft gegen instructions/dev/version-parts.md. Forward: eine Instanz kopiert instructions/ und types/ über sich; nichts umbenannt, nichts entfernt, kein Kommando, kein Flag, kein maschinengelesenes Format. Backward: die alte Fassung findet eine zusätzliche Instruction-Datei vor und ignoriert sie. Kein --breaking, kein Migrationsdokument.
Kandidat 4.8.0-beta.8 → 4.8.0-beta.9, derselbe Eintrag in place eskaliert. Der Nachzug 7bc5da6 ist reine Prosa (INSTALL.md) und bumpt nicht — CI's Versions-Gate ist auf Verhaltensänderungen beschränkt.
Verifiziert
pytest 1076 grün, docs verify grün (CHANGES.md documents version 4.8.0-beta.9), instructions verify grün: 21 instruction(s) and 7 skill(s) valid, 14 published copy/copies match their source — evolve-subtypes.md weder als tot noch als unzulässig verlinkt gemeldet, was beide Hälften der manual:-Regel gleichzeitig belegt.
Push nach origin/main gegengelesen statt der Tool-Meldung geglaubt: git rev-parse HEAD origin/main identisch auf 6b300aa, kein Divergenz-Marker.
Kein Korpus angefasst außer der einen Zeile in kb/sources/COLLECTION.md: kein work/-Lauf, kein Mass-Update-Gate, kein index rebuild nötig.
CI auf 6b300aa (dem substanziellen Commit): Run 202 (ci.yml) success, Run 203 (release.yml) success ohne Release-Schnitt — neuester Release ist unverändert v4.7.4, genau das Verhalten, das version-parts.md § Kandidatenmodell für ein -beta.N beschreibt. Run 204 auf dem Prosa-Nachzug 7bc5da6 lief beim Schließen noch; er ändert kein Verhalten, und der lokale Vollcheck war für ihn grün.
Akzeptanzkriterien
instructions/kb-profiles.md behandelt source_type im sources-Abschnitt mit zwei ausformulierten Domänenprofilen und benennt es als das, was zuerst anzupassen ist.
kb-profiles.md sagt, dass fidelity und authoritynicht zur Wahl stehen.
instructions/setup-instance.md Schritt 5 fragt nach dem Anwendungsgebiet, leitet einen source_type-Vorschlag ab, setzt Enum und layout: gemeinsam, behält unclassified und sagt, dass das Ergebnis ein Startpunkt ist.
instructions/evolve-subtypes.md existiert, trägt manual: true, und führt beide Hälften: Fach leeren und Vokabular erweitern.
Ihr Body enthält beide Regeln (Untrennbarkeit, Aufnahmeschwelle ≥ 3 mit Ausnahmeklausel) und grenzt gegen migrate-corpus.md ab.
Sie enthält keinen Verweis auf instructions/dev/ (D4) — ein Entwurf hatte einen, er wurde vor dem ersten verify entfernt.
Sie ist aus kb/sources/COLLECTION.md, kb-profiles.md und setup-instance.md erwähnt und aus keinerSKILL.md, keiner AGENTS.md und keiner CLAUDE.md verlinkt; per instructions verify belegt.
docs verify, instructions verify und pytest grün.
Changelog: Bump --minor auf 4.8.0-beta.9, Prosa im bestehenden Kandidateneintrag, ohne --breaking, ohne Migrationsdokument.
corpus-policy.md nimmt unclassified vom Subtype-Floor aus — bereits in #66 erledigt (D5).
Nachgetragen, im ursprünglichen Body nicht gefordert:INSTALL.md nennt die neue Setup-Frage. Ohne das hätte die Aufzählung dessen, wonach das Setup fragt, eine Frage unterschlagen.
docs/-Veralterung geprüft
Keine der vier Seiten ist durch dieses Paket veraltet. ownership-and-templates.md führt die root: kb-Type-Specs bereits als .template-gestützt und instanzeigen — dieses Paket wendet die Eigentümerlinie an, statt sie zu verschieben, und ist damit ein Beleg für die Seite, keine Korrektur an ihr. pipeline-rationale.md, version-model.md und why-gates-are-code.md berührt es nicht. README.md bleibt ebenfalls korrekt: seine Zeile zu setup-instance.md ist eine bewusst unvollständige Kurzfassung („git init, author identity, an optional remote, and the first commit") und nennt weder Konventionen noch Personalization, wird durch eine weitere Frage also nicht falsch — anders als INSTALL.md, das die Fragen einzeln aufzählt und deshalb nachgezogen wurde.
Modelle je Phase
Design, Versionsteil und Boundary-Beurteilung (D1–D7, Vorbereitungssitzung): Opus. Mechanischer Mittelteil (die vier Dateien, Bump, Changelog-Prosa): ebenfalls Opus — der Wechsel auf Sonnet wurde am Ende der Vorbereitung angeboten und nicht vollzogen, weil die Umsetzung direkt in derselben Sitzung startete. Abschlussphase (stack-close, dieser Body, die docs/-Prüfung, der INSTALL.md-Nachzug): Opus. Alle drei Phasen auf demselben Modell; die mittlere teurer als nötig, die beiden ungeprüften Phasen auf dem Modell, das sie verlangen. Zweites Paket in Folge mit demselben Muster (#66 auch) — der angebotene Wechsel scheitert reproduzierbar daran, dass Vorbereitung und Umsetzung dieselbe Sitzung sind, was #50 als Befund bereits offen hat.
Was daraus offen weiterläuft
#69 (Paket D, Reproduktionslauf) ist das letzte offene Paket der Vierergruppe; #66, #67 und #68 sind geschlossen.
Der obligation:-Nebenbefund oben ist bewusst nicht zu einem Issue gemacht worden, sondern hier notiert: er ist ein Ein-Zeilen-Verdacht am Schema, kein Arbeitspaket, und gehört nach instructions/dev/issue-tracking.md § Incoming stubs erst ausgearbeitet, wenn ihn jemand aufgreift.
Die erste echte Anwendung von evolve-subtypes.md steht aus: unclassified steht auf dieser Instanz bei 0 Seiten, es gibt also nichts zu drainen. Die Instruction ist damit geschrieben, aber nicht an echtem Material gelaufen.
Aus der Architekturdiskussion vom 2026-09-08. **Paket C** von vier: A ist #66, B ist #67, D ist #69.
**Erledigt und geschlossen am 2026-09-09.** Zwei Publishes, ein Kandidat (`4.8.0-beta.9`):
| # | Was | Commit |
|---|---|---|
| 1/2 | Profilkatalog, Setup-Frage, `evolve-subtypes`-Instruction, `COLLECTION.md` | `6b300aa` |
| 2/2 | `INSTALL.md` nennt die neue Setup-Frage (Menschendoku-Nachzug) | `7bc5da6` |
## Der Befund, aus dem das Paket entstand
**`source_type` beschreibt diese Instanz, nicht den Stack.** Die sieben Werte (`transcript`, `analysis`, `article`, `document`, `notes`, `tracker`, `unclassified`) kommen aus *einer* Wissensbasis. Gegen drei hypothetische Zielinstanzen gestellt, hat die Achse fast nichts Gemeinsames:
| Instanz | plausibles `source_type`-Enum |
|---|---|
| Privat-Projekte (diese hier) | transcript, analysis, article, document, notes, tracker |
| Handball-Verein und -Verband | satzung, protokoll, korrespondenz, spielbericht, verbandsmitteilung |
| Produktentwicklung | spec, meeting, kundenanforderung, marktstudie, postmortem |
| Pen-&-Paper-Gamemaster | regelwerk, abenteuermodul, sessionlog, handout, weltenbau |
Zum Vergleich: `fidelity` und `authority` (#67) sind in allen vier Zeilen dieselben Werte. **Das ist die Trennlinie** — was aus dem Substrat oder dem Konsumenten folgt, bleibt Stack-Vokabular; eine Inhaltstaxonomie ist ein Default, den eine Instanz übernimmt oder ersetzt.
Architektonisch war das längst wahr: `types/source.md` trägt `root: kb`, `dist_cmd._plan_types()` liefert es samt `.schema.yaml` nur als `.template` aus, Schritt 5 von `setup-instance.md` kopiert es in die Instanz. Was fehlte, war, dass irgendjemand die Frage **stellt**. `instructions/kb-profiles.md` riet im `entities`-Abschnitt ausdrücklich „Adapt the area list first: it is the part most likely to be wrong for another domain" — und sagte im `sources`-Abschnitt über `source_type` **kein Wort**.
Zweiter Befund, aus #66 mitgenommen: dort steht „Leeren keine benannte Operation war (#68 holt das nach)". Das `unclassified`-Fach hatte seit #66 einen beratenden `lint`-Befund, aber keine Prozedur, die es wieder leert.
## Die sieben Entscheidungen (Vorbereitung 2026-09-09)
Alle sieben in der Vorbereitungssitzung getroffen, alle sieben unverändert umgesetzt. Vier davon korrigieren den ursprünglichen Body, der gegen den Baum nicht mehr stimmte.
**D1 — Dateiname `instructions/evolve-subtypes.md`.** Muss von `link-taxonomy.md` klar unterscheidbar sein, und `instructions_cmd.manual_forbidden_references()` prüft per **Dateinamen-Substring** gegen AGENTS.md/CLAUDE.md/jede `SKILL.md` — ein generischer Name wäre auch mechanisch riskant gewesen.
**D2 — Geltungsbereich: jede Subtype-Achse, `source_type` ausgearbeitet.** `entity.md`, `concept.md` und `source.md` tragen alle `subtype_field:` **und** `layout:`; `comparison` keins von beidem und fällt heraus. Eine zweite, fast gleichlautende Instruction für `entity_type` wäre die Kopie, die Invariante 8 verbietet. Instanz-spezifisch bleibt nur die Drain-Hälfte: ein `unclassified`-Fach hat allein `sources`.
**D3 — Die ≥3-Aufnahmeschwelle steht ausschließlich in der neuen Instruction.** Sie existierte nirgends im Baum, nur als Absicht in #66 („die ≥3-Regel aus #68"). Der Floor in `corpus-policy.md` sagt etwas anderes (≥ 1 Seite pro *bereits deklariertem* Wert) und bleibt, wo er ist — aufgenommen wird bei 3, gehalten wird ab 1, kein Widerspruch.
**D4 — Die neue Instruction verweist *nicht* auf `corpus-policy.md`.** Der ursprüngliche Body sah genau diesen Link vor; er ist unzulässig, weil `instructions/dev/` von `dist export` gepruned wird und `instructions verify`s Boundary-Check jede Referenz von außerhalb nach innen meldet. Die Untrennbarkeitsregel ist stattdessen aus sich selbst begründet (der `notes`-Fall aus #66). **Ein Entwurf der Umsetzung enthielt den Verweis trotzdem** — auf `version-parts.md`, in Schritt 4 — und wurde vor dem ersten `verify` wieder entfernt; die Entscheidung hat also im Lauf tatsächlich gegriffen, statt nur dokumentiert dazustehen.
**D5 — Der ursprüngliche Punkt 4 war bereits erledigt.** `corpus-policy.md` trägt die `unclassified`-Floor-Ausnahme seit #66, mit Begründung und Invarianten-3-Bezug. Punkt und Kriterium gestrichen statt offen gelassen.
**D6 — Die Setup-Frage ist neuer Unterschritt 5 in Schritt 5,** hinter dem Terminologie-Schritt. Sie hängt nicht an der Sprachentscheidung: Enum-Werte sind Identifier und folgen keiner KB-Sprache (`kb/CONTRACT.md` § Language and identifiers) — übersetzt wird nur der `title:` einer `layout:`-Zeile.
**D7 — Kein `instructions sync`.** Es ändert sich keine `SKILL.md`; eine flache Instruction wird nicht publiziert. `instructions verify` ist hier der eigentliche Check.
## Was gebaut wurde
**`instructions/kb-profiles.md`.** Der `sources`-Abschnitt behandelt `source_type` jetzt wie `entities` seine Area-Liste: als das, was zuerst anzupassen ist, mit zwei ausformulierten Domänenprofilen (Handball-Verein, Pen-&-Paper) als Anschauung. Dazu die Anleitung, was „übernehmen" konkret heißt — Werteliste ins Enum von `types/source.schema.yaml`, je Wert eine `layout:`-Zeile in `types/source.md` — und die Auflage, den sichtbaren Auffangwert in jedem übernommenen Vorschlag zu behalten, weil ein Subtype-Feld ohne ihn still den `default:`-getriebenen Sammelpunkt aus #66 wiederherstellt. Als Gegenbeispiel im selben Abschnitt: `fidelity` und `authority` stehen **nicht** zur Wahl.
**`instructions/setup-instance.md`.** Neuer Unterschritt 5 in Schritt 5: nach dem Anwendungsgebiet fragen, `source_type`-Vorschlag ableiten, Enum und `layout:` in derselben Bearbeitung setzen — eins ohne das andere lässt einen Wert ohne Zielverzeichnis zurück. Mit der Ansage, dass der Betreiber zu diesem Zeitpunkt **null Quellen** hat und seine Taxonomie rät, bevor er Material gesehen hat: das Ergebnis ist ein Startpunkt, keine Festlegung, und `evolve-subtypes.md` ist der Weg, ihn später zu korrigieren.
**`instructions/evolve-subtypes.md`, `manual: true`.** Benennt die Schleife, die werkzeugseitig vollständig existierte: Fach sehen (`lint`, `search --field`) → Kandidaten lesen → Wert samt `layout:` ergänzen → `touch --set` / `move --reconcile` → `index rebuild` / `migrate verify`. Über alle drei Subtype-Achsen (D2). Zwei Regeln im Body:
- **Wert und Sweep sind untrennbar** — ein deklarierter Wert, den keine Seite trägt, ist eine Kategorie, die beim nächsten Mal zum Raten zwischen ihr und dem Auffangfach einlädt; genau so absorbierte der alte `notes`-Default 22 von 29 Source-Seiten.
- **Aufnahmeschwelle ≥ 3 Seiten** — ein Wert wird zugelassen, *nachdem* er sich an echtem Material bewährt hat, nie in Erwartung. `spec` und `image` sind die Gegenbeispiele (beide vorab aufgenommen, beide ein Jahr bei null, beide in #66 gestrichen); eine kleinere Zahl ist nur eine ausdrücklich benannte Ausnahme des Betreibers (`tracker` bei zwei Seiten), nie ein Grund, die Schwelle selbst zu senken.
Dazu die Abgrenzung nach oben: Umbenennen oder Streichen eines Wertes bewegt Seiten und ist eine Korpus-Migration (`migrate-corpus.md`), kein Fall dieser Schleife. Und nach unten: das Drainen läuft ohne die ≥3-Schwelle, weil eine Seite im Auffangfach ihr Ziel bereits hat.
**`kb/sources/COLLECTION.md`.** Die `unclassified/`-Zeile nennt `evolve-subtypes.md` als Weg, das Fach zu leeren oder das Enum zu erweitern.
**Menschendoku (`7bc5da6`).** `INSTALL.md` zählt auf, wonach `setup-instance.md` den Betreiber fragt — und dieses Paket hat dort eine Frage hinzugefügt, ohne die die Aufzählung unvollständig gewesen wäre. Neuer Aufzählungspunkt **Anwendungsgebiet**, mit dem Startpunkt-Vorbehalt, dem Verweis auf `evolve-subtypes.md` und der Abgrenzung gegen `fidelity`/`authority`.
## Ein Nebenbefund am Scaffolding
`tools/wikitool new instruction` schreibt `obligation: required` ins Frontmatter, weil `types/instruction.schema.yaml` dafür ein `default:` trägt. Das Feld gehört fachlich aber nur zu einem Migrationsdokument unter `instructions/migrations/` (es steuert `migrate status`), und keine der beiden bestehenden Manual-Instructions — `kb-profiles.md`, `german-terminology.md` — trägt es. Hier von Hand entfernt. Nichts prüft das: weder `docs verify` noch `instructions verify` fragt, ob ein `obligation:` außerhalb von `migrations/` steht. Ob das ein Schema-Fehler ist (Default gehört weg, `migrate_cmd` liest ohnehin `required` als Fallback) oder gewollt, ist nicht in diesem Paket entschieden worden — es ist derselbe Mechanismus, den #66 bei `default: notes` als Ursache identifiziert hat, eine Ebene höher.
## Versionsteil
**MINOR**, geprüft gegen `instructions/dev/version-parts.md`. *Forward:* eine Instanz kopiert `instructions/` und `types/` über sich; nichts umbenannt, nichts entfernt, kein Kommando, kein Flag, kein maschinengelesenes Format. *Backward:* die alte Fassung findet eine zusätzliche Instruction-Datei vor und ignoriert sie. Kein `--breaking`, kein Migrationsdokument.
Kandidat `4.8.0-beta.8` → `4.8.0-beta.9`, derselbe Eintrag in place eskaliert. Der Nachzug `7bc5da6` ist reine Prosa (`INSTALL.md`) und bumpt nicht — CI's Versions-Gate ist auf Verhaltensänderungen beschränkt.
## Verifiziert
- `pytest` 1076 grün, `docs verify` grün (`CHANGES.md documents version 4.8.0-beta.9`), `instructions verify` grün: `21 instruction(s) and 7 skill(s) valid, 14 published copy/copies match their source` — `evolve-subtypes.md` weder als tot noch als unzulässig verlinkt gemeldet, was beide Hälften der `manual:`-Regel gleichzeitig belegt.
- Push nach `origin/main` gegengelesen statt der Tool-Meldung geglaubt: `git rev-parse HEAD origin/main` identisch auf `6b300aa`, kein Divergenz-Marker.
- Kein Korpus angefasst außer der einen Zeile in `kb/sources/COLLECTION.md`: kein `work/`-Lauf, kein Mass-Update-Gate, kein `index rebuild` nötig.
- CI auf `6b300aa` (dem substanziellen Commit): Run **202** (`ci.yml`) **success**, Run **203** (`release.yml`) **success ohne Release-Schnitt** — neuester Release ist unverändert `v4.7.4`, genau das Verhalten, das `version-parts.md` § Kandidatenmodell für ein `-beta.N` beschreibt. Run **204** auf dem Prosa-Nachzug `7bc5da6` lief beim Schließen noch; er ändert kein Verhalten, und der lokale Vollcheck war für ihn grün.
## Akzeptanzkriterien
- [x] `instructions/kb-profiles.md` behandelt `source_type` im `sources`-Abschnitt mit zwei ausformulierten Domänenprofilen und benennt es als das, was zuerst anzupassen ist.
- [x] `kb-profiles.md` sagt, dass `fidelity` und `authority` **nicht** zur Wahl stehen.
- [x] `instructions/setup-instance.md` Schritt 5 fragt nach dem Anwendungsgebiet, leitet einen `source_type`-Vorschlag ab, setzt Enum und `layout:` gemeinsam, behält `unclassified` und sagt, dass das Ergebnis ein Startpunkt ist.
- [x] `instructions/evolve-subtypes.md` existiert, trägt `manual: true`, und führt beide Hälften: Fach leeren und Vokabular erweitern.
- [x] Ihr Body enthält beide Regeln (Untrennbarkeit, Aufnahmeschwelle ≥ 3 mit Ausnahmeklausel) und grenzt gegen `migrate-corpus.md` ab.
- [x] Sie enthält **keinen** Verweis auf `instructions/dev/` (D4) — ein Entwurf hatte einen, er wurde vor dem ersten `verify` entfernt.
- [x] Sie ist aus `kb/sources/COLLECTION.md`, `kb-profiles.md` und `setup-instance.md` erwähnt und aus **keiner** `SKILL.md`, keiner AGENTS.md und keiner CLAUDE.md verlinkt; per `instructions verify` belegt.
- [x] `docs verify`, `instructions verify` und `pytest` grün.
- [x] Changelog: Bump `--minor` auf `4.8.0-beta.9`, Prosa im bestehenden Kandidateneintrag, ohne `--breaking`, ohne Migrationsdokument.
- [x] ~~`corpus-policy.md` nimmt `unclassified` vom Subtype-Floor aus~~ — bereits in #66 erledigt (D5).
- [x] **Nachgetragen, im ursprünglichen Body nicht gefordert:** `INSTALL.md` nennt die neue Setup-Frage. Ohne das hätte die Aufzählung dessen, wonach das Setup fragt, eine Frage unterschlagen.
## `docs/`-Veralterung geprüft
Keine der vier Seiten ist durch dieses Paket veraltet. `ownership-and-templates.md` führt die `root: kb`-Type-Specs bereits als `.template`-gestützt und instanzeigen — dieses Paket *wendet* die Eigentümerlinie an, statt sie zu verschieben, und ist damit ein Beleg für die Seite, keine Korrektur an ihr. `pipeline-rationale.md`, `version-model.md` und `why-gates-are-code.md` berührt es nicht. `README.md` bleibt ebenfalls korrekt: seine Zeile zu `setup-instance.md` ist eine bewusst unvollständige Kurzfassung („git init, author identity, an optional remote, and the first commit") und nennt weder Konventionen noch Personalization, wird durch eine weitere Frage also nicht falsch — anders als `INSTALL.md`, das die Fragen einzeln aufzählt und deshalb nachgezogen wurde.
## Modelle je Phase
Design, Versionsteil und Boundary-Beurteilung (D1–D7, Vorbereitungssitzung): **Opus**. Mechanischer Mittelteil (die vier Dateien, Bump, Changelog-Prosa): **ebenfalls Opus** — der Wechsel auf Sonnet wurde am Ende der Vorbereitung angeboten und nicht vollzogen, weil die Umsetzung direkt in derselben Sitzung startete. Abschlussphase (`stack-close`, dieser Body, die `docs/`-Prüfung, der `INSTALL.md`-Nachzug): **Opus**. Alle drei Phasen auf demselben Modell; die mittlere teurer als nötig, die beiden ungeprüften Phasen auf dem Modell, das sie verlangen. Zweites Paket in Folge mit demselben Muster (#66 auch) — der angebotene Wechsel scheitert reproduzierbar daran, dass Vorbereitung und Umsetzung dieselbe Sitzung sind, was #50 als Befund bereits offen hat.
## Was daraus offen weiterläuft
- **#69** (Paket D, Reproduktionslauf) ist das letzte offene Paket der Vierergruppe; #66, #67 und #68 sind geschlossen.
- Der `obligation:`-Nebenbefund oben ist bewusst **nicht** zu einem Issue gemacht worden, sondern hier notiert: er ist ein Ein-Zeilen-Verdacht am Schema, kein Arbeitspaket, und gehört nach `instructions/dev/issue-tracking.md` § Incoming stubs erst ausgearbeitet, wenn ihn jemand aufgreift.
- Die erste echte Anwendung von `evolve-subtypes.md` steht aus: `unclassified` steht auf dieser Instanz bei 0 Seiten, es gibt also nichts zu drainen. Die Instruction ist damit geschrieben, aber nicht an echtem Material gelaufen.
Changelog: Body auf den Vorbereitungsstand umgeschrieben, gegen den Baum geprüft (2026-09-09). Neu: § Entscheidungen mit D1–D7, § Versionsteil (MINOR, Kandidat 4.8.0-beta.8 bleibt offen und eskaliert in place), § Prüfstand mit den vorab gemessenen Zahlen. Vier Korrekturen am alten Text: D4 — der vorgesehene Link auf instructions/dev/corpus-policy.md ist unzulässig, weil instructions verifys Boundary-Check ihn als in einer verteilten Instanz dangelnd meldet; die Untrennbarkeitsregel wird stattdessen aus sich selbst begründet. D5 — der frühere Punkt 4 (corpus-policy.md nimmt unclassified vom Subtype-Floor aus) ist seit #66 erledigt, Punkt und Kriterium gestrichen statt offen. D2 — Geltungsbereich auf jede Subtype-Achse erweitert (entity/concept/source tragen alle subtype_field: + layout:), source_type bleibt der ausgearbeitete Fall. D7 — instructions sync fällt aus den Kriterien, weil keine SKILL.md berührt wird. Neuer Punkt 4: kb/sources/COLLECTION.md benennt die Schleife am unclassified/-Fach. Dateiname festgelegt: instructions/evolve-subtypes.md (D1). Nicht begonnen — die Umsetzung folgt als eigene Sitzung.
**Changelog:** Body auf den Vorbereitungsstand umgeschrieben, gegen den Baum geprüft (2026-09-09). Neu: § Entscheidungen mit D1–D7, § Versionsteil (MINOR, Kandidat `4.8.0-beta.8` bleibt offen und eskaliert in place), § Prüfstand mit den vorab gemessenen Zahlen. Vier Korrekturen am alten Text: **D4** — der vorgesehene Link auf `instructions/dev/corpus-policy.md` ist unzulässig, weil `instructions verify`s Boundary-Check ihn als in einer verteilten Instanz dangelnd meldet; die Untrennbarkeitsregel wird stattdessen aus sich selbst begründet. **D5** — der frühere Punkt 4 (`corpus-policy.md` nimmt `unclassified` vom Subtype-Floor aus) ist seit #66 erledigt, Punkt und Kriterium gestrichen statt offen. **D2** — Geltungsbereich auf jede Subtype-Achse erweitert (`entity`/`concept`/`source` tragen alle `subtype_field:` + `layout:`), `source_type` bleibt der ausgearbeitete Fall. **D7** — `instructions sync` fällt aus den Kriterien, weil keine `SKILL.md` berührt wird. Neuer Punkt 4: `kb/sources/COLLECTION.md` benennt die Schleife am `unclassified/`-Fach. Dateiname festgelegt: `instructions/evolve-subtypes.md` (D1). Nicht begonnen — die Umsetzung folgt als eigene Sitzung.
Changelog: Umsetzung abgeschlossen. Alle vier Punkte implementiert (kb-profiles.md, setup-instance.md, neue instructions/evolve-subtypes.md, kb/sources/COLLECTION.md), docs verify/instructions verify/pytest grün, Version auf 4.8.0-beta.9 eskaliert, Changelog-Prosa geschrieben. Alle Akzeptanzkriterien abgehakt bis auf den Publish selbst — der ist auf ausdrückliche Anweisung dieser Sitzung nicht ausgeführt. Neuer § Offen im Body nennt das als letzten Schritt vor stack-close.
**Changelog:** Umsetzung abgeschlossen. Alle vier Punkte implementiert (`kb-profiles.md`, `setup-instance.md`, neue `instructions/evolve-subtypes.md`, `kb/sources/COLLECTION.md`), `docs verify`/`instructions verify`/`pytest` grün, Version auf `4.8.0-beta.9` eskaliert, Changelog-Prosa geschrieben. Alle Akzeptanzkriterien abgehakt bis auf den Publish selbst — der ist auf ausdrückliche Anweisung dieser Sitzung nicht ausgeführt. Neuer § Offen im Body nennt das als letzten Schritt vor `stack-close`.
Changelog: Abschluss-Rewrite, Issue geschlossen. Body auf Vergangenheitsform gebracht: Commit-Tabelle (6b300aa, 7bc5da6), D1–D7 als getroffene und umgesetzte Entscheidungen statt als Vorhaben, § Was gebaut wurde ersetzt § Umzusetzen. Neu gegenüber dem Vorbereitungsstand: der INSTALL.md-Nachzug als zusätzliches, im ursprünglichen Body nicht gefordertes Kriterium — die Datei zählt die Setup-Fragen einzeln auf und hätte die neue unterschlagen; der obligation:-Nebenbefund am new instruction-Scaffolding (bewusst als Notiz, nicht als Issue); die docs/-Veralterungsprüfung (vier Seiten, keine betroffen, mit Begründung je Seite); die Modelle je Phase (dreimal Opus, mit dem Hinweis, dass der angebotene Sonnet-Wechsel zum zweiten Mal in Folge daran scheitert, dass Vorbereitung und Umsetzung dieselbe Sitzung sind — Befund liegt an #50). CI nachgetragen: Runs 202/203 auf 6b300aa beide success, release.yml ohne Release-Schnitt (neuester Release unverändert v4.7.4), Run 204 auf dem Prosa-Nachzug lief beim Schließen noch. § Offen zu #69 als letztem Paket der Vierergruppe.
**Changelog:** Abschluss-Rewrite, Issue geschlossen. Body auf Vergangenheitsform gebracht: Commit-Tabelle (`6b300aa`, `7bc5da6`), D1–D7 als getroffene und umgesetzte Entscheidungen statt als Vorhaben, § Was gebaut wurde ersetzt § Umzusetzen. Neu gegenüber dem Vorbereitungsstand: der `INSTALL.md`-Nachzug als zusätzliches, im ursprünglichen Body nicht gefordertes Kriterium — die Datei zählt die Setup-Fragen einzeln auf und hätte die neue unterschlagen; der `obligation:`-Nebenbefund am `new instruction`-Scaffolding (bewusst als Notiz, nicht als Issue); die `docs/`-Veralterungsprüfung (vier Seiten, keine betroffen, mit Begründung je Seite); die Modelle je Phase (dreimal Opus, mit dem Hinweis, dass der angebotene Sonnet-Wechsel zum zweiten Mal in Folge daran scheitert, dass Vorbereitung und Umsetzung dieselbe Sitzung sind — Befund liegt an #50). CI nachgetragen: Runs 202/203 auf `6b300aa` beide success, `release.yml` ohne Release-Schnitt (neuester Release unverändert `v4.7.4`), Run 204 auf dem Prosa-Nachzug lief beim Schließen noch. § Offen zu #69 als letztem Paket der Vierergruppe.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Aus der Architekturdiskussion vom 2026-09-08. Paket C von vier: A ist #66, B ist #67, D ist #69.
Erledigt und geschlossen am 2026-09-09. Zwei Publishes, ein Kandidat (
4.8.0-beta.9):evolve-subtypes-Instruction,COLLECTION.md6b300aaINSTALL.mdnennt die neue Setup-Frage (Menschendoku-Nachzug)7bc5da6Der Befund, aus dem das Paket entstand
source_typebeschreibt diese Instanz, nicht den Stack. Die sieben Werte (transcript,analysis,article,document,notes,tracker,unclassified) kommen aus einer Wissensbasis. Gegen drei hypothetische Zielinstanzen gestellt, hat die Achse fast nichts Gemeinsames:source_type-EnumZum Vergleich:
fidelityundauthority(#67) sind in allen vier Zeilen dieselben Werte. Das ist die Trennlinie — was aus dem Substrat oder dem Konsumenten folgt, bleibt Stack-Vokabular; eine Inhaltstaxonomie ist ein Default, den eine Instanz übernimmt oder ersetzt.Architektonisch war das längst wahr:
types/source.mdträgtroot: kb,dist_cmd._plan_types()liefert es samt.schema.yamlnur als.templateaus, Schritt 5 vonsetup-instance.mdkopiert es in die Instanz. Was fehlte, war, dass irgendjemand die Frage stellt.instructions/kb-profiles.mdriet imentities-Abschnitt ausdrücklich „Adapt the area list first: it is the part most likely to be wrong for another domain" — und sagte imsources-Abschnitt übersource_typekein Wort.Zweiter Befund, aus #66 mitgenommen: dort steht „Leeren keine benannte Operation war (#68 holt das nach)". Das
unclassified-Fach hatte seit #66 einen beratendenlint-Befund, aber keine Prozedur, die es wieder leert.Die sieben Entscheidungen (Vorbereitung 2026-09-09)
Alle sieben in der Vorbereitungssitzung getroffen, alle sieben unverändert umgesetzt. Vier davon korrigieren den ursprünglichen Body, der gegen den Baum nicht mehr stimmte.
D1 — Dateiname
instructions/evolve-subtypes.md. Muss vonlink-taxonomy.mdklar unterscheidbar sein, undinstructions_cmd.manual_forbidden_references()prüft per Dateinamen-Substring gegen AGENTS.md/CLAUDE.md/jedeSKILL.md— ein generischer Name wäre auch mechanisch riskant gewesen.D2 — Geltungsbereich: jede Subtype-Achse,
source_typeausgearbeitet.entity.md,concept.mdundsource.mdtragen allesubtype_field:undlayout:;comparisonkeins von beidem und fällt heraus. Eine zweite, fast gleichlautende Instruction fürentity_typewäre die Kopie, die Invariante 8 verbietet. Instanz-spezifisch bleibt nur die Drain-Hälfte: einunclassified-Fach hat alleinsources.D3 — Die ≥3-Aufnahmeschwelle steht ausschließlich in der neuen Instruction. Sie existierte nirgends im Baum, nur als Absicht in #66 („die ≥3-Regel aus #68"). Der Floor in
corpus-policy.mdsagt etwas anderes (≥ 1 Seite pro bereits deklariertem Wert) und bleibt, wo er ist — aufgenommen wird bei 3, gehalten wird ab 1, kein Widerspruch.D4 — Die neue Instruction verweist nicht auf
corpus-policy.md. Der ursprüngliche Body sah genau diesen Link vor; er ist unzulässig, weilinstructions/dev/vondist exportgepruned wird undinstructions verifys Boundary-Check jede Referenz von außerhalb nach innen meldet. Die Untrennbarkeitsregel ist stattdessen aus sich selbst begründet (dernotes-Fall aus #66). Ein Entwurf der Umsetzung enthielt den Verweis trotzdem — aufversion-parts.md, in Schritt 4 — und wurde vor dem erstenverifywieder entfernt; die Entscheidung hat also im Lauf tatsächlich gegriffen, statt nur dokumentiert dazustehen.D5 — Der ursprüngliche Punkt 4 war bereits erledigt.
corpus-policy.mdträgt dieunclassified-Floor-Ausnahme seit #66, mit Begründung und Invarianten-3-Bezug. Punkt und Kriterium gestrichen statt offen gelassen.D6 — Die Setup-Frage ist neuer Unterschritt 5 in Schritt 5, hinter dem Terminologie-Schritt. Sie hängt nicht an der Sprachentscheidung: Enum-Werte sind Identifier und folgen keiner KB-Sprache (
kb/CONTRACT.md§ Language and identifiers) — übersetzt wird nur dertitle:einerlayout:-Zeile.D7 — Kein
instructions sync. Es ändert sich keineSKILL.md; eine flache Instruction wird nicht publiziert.instructions verifyist hier der eigentliche Check.Was gebaut wurde
instructions/kb-profiles.md. Dersources-Abschnitt behandeltsource_typejetzt wieentitiesseine Area-Liste: als das, was zuerst anzupassen ist, mit zwei ausformulierten Domänenprofilen (Handball-Verein, Pen-&-Paper) als Anschauung. Dazu die Anleitung, was „übernehmen" konkret heißt — Werteliste ins Enum vontypes/source.schema.yaml, je Wert einelayout:-Zeile intypes/source.md— und die Auflage, den sichtbaren Auffangwert in jedem übernommenen Vorschlag zu behalten, weil ein Subtype-Feld ohne ihn still dendefault:-getriebenen Sammelpunkt aus #66 wiederherstellt. Als Gegenbeispiel im selben Abschnitt:fidelityundauthoritystehen nicht zur Wahl.instructions/setup-instance.md. Neuer Unterschritt 5 in Schritt 5: nach dem Anwendungsgebiet fragen,source_type-Vorschlag ableiten, Enum undlayout:in derselben Bearbeitung setzen — eins ohne das andere lässt einen Wert ohne Zielverzeichnis zurück. Mit der Ansage, dass der Betreiber zu diesem Zeitpunkt null Quellen hat und seine Taxonomie rät, bevor er Material gesehen hat: das Ergebnis ist ein Startpunkt, keine Festlegung, undevolve-subtypes.mdist der Weg, ihn später zu korrigieren.instructions/evolve-subtypes.md,manual: true. Benennt die Schleife, die werkzeugseitig vollständig existierte: Fach sehen (lint,search --field) → Kandidaten lesen → Wert samtlayout:ergänzen →touch --set/move --reconcile→index rebuild/migrate verify. Über alle drei Subtype-Achsen (D2). Zwei Regeln im Body:notes-Default 22 von 29 Source-Seiten.specundimagesind die Gegenbeispiele (beide vorab aufgenommen, beide ein Jahr bei null, beide in #66 gestrichen); eine kleinere Zahl ist nur eine ausdrücklich benannte Ausnahme des Betreibers (trackerbei zwei Seiten), nie ein Grund, die Schwelle selbst zu senken.Dazu die Abgrenzung nach oben: Umbenennen oder Streichen eines Wertes bewegt Seiten und ist eine Korpus-Migration (
migrate-corpus.md), kein Fall dieser Schleife. Und nach unten: das Drainen läuft ohne die ≥3-Schwelle, weil eine Seite im Auffangfach ihr Ziel bereits hat.kb/sources/COLLECTION.md. Dieunclassified/-Zeile nenntevolve-subtypes.mdals Weg, das Fach zu leeren oder das Enum zu erweitern.Menschendoku (
7bc5da6).INSTALL.mdzählt auf, wonachsetup-instance.mdden Betreiber fragt — und dieses Paket hat dort eine Frage hinzugefügt, ohne die die Aufzählung unvollständig gewesen wäre. Neuer Aufzählungspunkt Anwendungsgebiet, mit dem Startpunkt-Vorbehalt, dem Verweis aufevolve-subtypes.mdund der Abgrenzung gegenfidelity/authority.Ein Nebenbefund am Scaffolding
tools/wikitool new instructionschreibtobligation: requiredins Frontmatter, weiltypes/instruction.schema.yamldafür eindefault:trägt. Das Feld gehört fachlich aber nur zu einem Migrationsdokument unterinstructions/migrations/(es steuertmigrate status), und keine der beiden bestehenden Manual-Instructions —kb-profiles.md,german-terminology.md— trägt es. Hier von Hand entfernt. Nichts prüft das: wederdocs verifynochinstructions verifyfragt, ob einobligation:außerhalb vonmigrations/steht. Ob das ein Schema-Fehler ist (Default gehört weg,migrate_cmdliest ohnehinrequiredals Fallback) oder gewollt, ist nicht in diesem Paket entschieden worden — es ist derselbe Mechanismus, den #66 beidefault: notesals Ursache identifiziert hat, eine Ebene höher.Versionsteil
MINOR, geprüft gegen
instructions/dev/version-parts.md. Forward: eine Instanz kopiertinstructions/undtypes/über sich; nichts umbenannt, nichts entfernt, kein Kommando, kein Flag, kein maschinengelesenes Format. Backward: die alte Fassung findet eine zusätzliche Instruction-Datei vor und ignoriert sie. Kein--breaking, kein Migrationsdokument.Kandidat
4.8.0-beta.8→4.8.0-beta.9, derselbe Eintrag in place eskaliert. Der Nachzug7bc5da6ist reine Prosa (INSTALL.md) und bumpt nicht — CI's Versions-Gate ist auf Verhaltensänderungen beschränkt.Verifiziert
pytest1076 grün,docs verifygrün (CHANGES.md documents version 4.8.0-beta.9),instructions verifygrün:21 instruction(s) and 7 skill(s) valid, 14 published copy/copies match their source—evolve-subtypes.mdweder als tot noch als unzulässig verlinkt gemeldet, was beide Hälften dermanual:-Regel gleichzeitig belegt.origin/maingegengelesen statt der Tool-Meldung geglaubt:git rev-parse HEAD origin/mainidentisch auf6b300aa, kein Divergenz-Marker.kb/sources/COLLECTION.md: keinwork/-Lauf, kein Mass-Update-Gate, keinindex rebuildnötig.6b300aa(dem substanziellen Commit): Run 202 (ci.yml) success, Run 203 (release.yml) success ohne Release-Schnitt — neuester Release ist unverändertv4.7.4, genau das Verhalten, dasversion-parts.md§ Kandidatenmodell für ein-beta.Nbeschreibt. Run 204 auf dem Prosa-Nachzug7bc5da6lief beim Schließen noch; er ändert kein Verhalten, und der lokale Vollcheck war für ihn grün.Akzeptanzkriterien
instructions/kb-profiles.mdbehandeltsource_typeimsources-Abschnitt mit zwei ausformulierten Domänenprofilen und benennt es als das, was zuerst anzupassen ist.kb-profiles.mdsagt, dassfidelityundauthoritynicht zur Wahl stehen.instructions/setup-instance.mdSchritt 5 fragt nach dem Anwendungsgebiet, leitet einensource_type-Vorschlag ab, setzt Enum undlayout:gemeinsam, behältunclassifiedund sagt, dass das Ergebnis ein Startpunkt ist.instructions/evolve-subtypes.mdexistiert, trägtmanual: true, und führt beide Hälften: Fach leeren und Vokabular erweitern.migrate-corpus.mdab.instructions/dev/(D4) — ein Entwurf hatte einen, er wurde vor dem erstenverifyentfernt.kb/sources/COLLECTION.md,kb-profiles.mdundsetup-instance.mderwähnt und aus keinerSKILL.md, keiner AGENTS.md und keiner CLAUDE.md verlinkt; perinstructions verifybelegt.docs verify,instructions verifyundpytestgrün.--minorauf4.8.0-beta.9, Prosa im bestehenden Kandidateneintrag, ohne--breaking, ohne Migrationsdokument.— bereits in #66 erledigt (D5).corpus-policy.mdnimmtunclassifiedvom Subtype-Floor ausINSTALL.mdnennt die neue Setup-Frage. Ohne das hätte die Aufzählung dessen, wonach das Setup fragt, eine Frage unterschlagen.docs/-Veralterung geprüftKeine der vier Seiten ist durch dieses Paket veraltet.
ownership-and-templates.mdführt dieroot: kb-Type-Specs bereits als.template-gestützt und instanzeigen — dieses Paket wendet die Eigentümerlinie an, statt sie zu verschieben, und ist damit ein Beleg für die Seite, keine Korrektur an ihr.pipeline-rationale.md,version-model.mdundwhy-gates-are-code.mdberührt es nicht.README.mdbleibt ebenfalls korrekt: seine Zeile zusetup-instance.mdist eine bewusst unvollständige Kurzfassung („git init, author identity, an optional remote, and the first commit") und nennt weder Konventionen noch Personalization, wird durch eine weitere Frage also nicht falsch — anders alsINSTALL.md, das die Fragen einzeln aufzählt und deshalb nachgezogen wurde.Modelle je Phase
Design, Versionsteil und Boundary-Beurteilung (D1–D7, Vorbereitungssitzung): Opus. Mechanischer Mittelteil (die vier Dateien, Bump, Changelog-Prosa): ebenfalls Opus — der Wechsel auf Sonnet wurde am Ende der Vorbereitung angeboten und nicht vollzogen, weil die Umsetzung direkt in derselben Sitzung startete. Abschlussphase (
stack-close, dieser Body, diedocs/-Prüfung, derINSTALL.md-Nachzug): Opus. Alle drei Phasen auf demselben Modell; die mittlere teurer als nötig, die beiden ungeprüften Phasen auf dem Modell, das sie verlangen. Zweites Paket in Folge mit demselben Muster (#66 auch) — der angebotene Wechsel scheitert reproduzierbar daran, dass Vorbereitung und Umsetzung dieselbe Sitzung sind, was #50 als Befund bereits offen hat.Was daraus offen weiterläuft
obligation:-Nebenbefund oben ist bewusst nicht zu einem Issue gemacht worden, sondern hier notiert: er ist ein Ein-Zeilen-Verdacht am Schema, kein Arbeitspaket, und gehört nachinstructions/dev/issue-tracking.md§ Incoming stubs erst ausgearbeitet, wenn ihn jemand aufgreift.evolve-subtypes.mdsteht aus:unclassifiedsteht auf dieser Instanz bei 0 Seiten, es gibt also nichts zu drainen. Die Instruction ist damit geschrieben, aber nicht an echtem Material gelaufen.Changelog: Body auf den Vorbereitungsstand umgeschrieben, gegen den Baum geprüft (2026-09-09). Neu: § Entscheidungen mit D1–D7, § Versionsteil (MINOR, Kandidat
4.8.0-beta.8bleibt offen und eskaliert in place), § Prüfstand mit den vorab gemessenen Zahlen. Vier Korrekturen am alten Text: D4 — der vorgesehene Link aufinstructions/dev/corpus-policy.mdist unzulässig, weilinstructions verifys Boundary-Check ihn als in einer verteilten Instanz dangelnd meldet; die Untrennbarkeitsregel wird stattdessen aus sich selbst begründet. D5 — der frühere Punkt 4 (corpus-policy.mdnimmtunclassifiedvom Subtype-Floor aus) ist seit #66 erledigt, Punkt und Kriterium gestrichen statt offen. D2 — Geltungsbereich auf jede Subtype-Achse erweitert (entity/concept/sourcetragen allesubtype_field:+layout:),source_typebleibt der ausgearbeitete Fall. D7 —instructions syncfällt aus den Kriterien, weil keineSKILL.mdberührt wird. Neuer Punkt 4:kb/sources/COLLECTION.mdbenennt die Schleife amunclassified/-Fach. Dateiname festgelegt:instructions/evolve-subtypes.md(D1). Nicht begonnen — die Umsetzung folgt als eigene Sitzung.Changelog: Umsetzung abgeschlossen. Alle vier Punkte implementiert (
kb-profiles.md,setup-instance.md, neueinstructions/evolve-subtypes.md,kb/sources/COLLECTION.md),docs verify/instructions verify/pytestgrün, Version auf4.8.0-beta.9eskaliert, Changelog-Prosa geschrieben. Alle Akzeptanzkriterien abgehakt bis auf den Publish selbst — der ist auf ausdrückliche Anweisung dieser Sitzung nicht ausgeführt. Neuer § Offen im Body nennt das als letzten Schritt vorstack-close.Changelog: Abschluss-Rewrite, Issue geschlossen. Body auf Vergangenheitsform gebracht: Commit-Tabelle (
6b300aa,7bc5da6), D1–D7 als getroffene und umgesetzte Entscheidungen statt als Vorhaben, § Was gebaut wurde ersetzt § Umzusetzen. Neu gegenüber dem Vorbereitungsstand: derINSTALL.md-Nachzug als zusätzliches, im ursprünglichen Body nicht gefordertes Kriterium — die Datei zählt die Setup-Fragen einzeln auf und hätte die neue unterschlagen; derobligation:-Nebenbefund amnew instruction-Scaffolding (bewusst als Notiz, nicht als Issue); diedocs/-Veralterungsprüfung (vier Seiten, keine betroffen, mit Begründung je Seite); die Modelle je Phase (dreimal Opus, mit dem Hinweis, dass der angebotene Sonnet-Wechsel zum zweiten Mal in Folge daran scheitert, dass Vorbereitung und Umsetzung dieselbe Sitzung sind — Befund liegt an #50). CI nachgetragen: Runs 202/203 auf6b300aabeide success,release.ymlohne Release-Schnitt (neuester Release unverändertv4.7.4), Run 204 auf dem Prosa-Nachzug lief beim Schließen noch. § Offen zu #69 als letztem Paket der Vierergruppe.