source_type ist Instanzsache: Profilkatalog, Setup-Frage und eine manual:-Instruction zum Weiterentwickeln - Paket C #68
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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.