File-Split aus capture-session auch für reguläre Ingests in Betracht ziehen #61
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?
Ingests haben jetzt zwei Größenachsen: Volumen (wie viel Material) und Breite (wie viele Gegenstände eine Quelle trägt). Die einzelne, thematisch breite Quelle fiel bisher durch beide Raster.
Umgesetzt in
5.0.0-beta.19, Commitsf93d14b(Instructions),e068982(types/source.md-Nachzug) und44cca62(Version-Bump dafür).Was der Stub wollte, und was daraus wurde
Der Stub schlug vor, den Schnitt-Mechanismus aus
capture-session.md§ 1 auf reguläre Ingests zu übertragen: eine Quelle in mehrere Sources aufteilen. Das ist nicht umgesetzt worden, und zwar begründet - zwei Regeln schließen es aus:raw/hält eine Datei "exactly as received" (raw/CONTRACT.md§ Rules). Eine promotete Datei wird nie nachträglich geteilt.types/source.md; geprüft vonprovenance.duplicate_raw_file_owners()). Mehrere thematische Source-Seiten über einer Datei ließen bei einer neuen Edition niemanden zuständig zurück.Der Schnitt vor
raw acceptbleibt unberührt - das ist, wascapture-session§ 1 tut, und er ist nur möglich, weil das Transkript dort noch nicht existiert. Diese Abgrenzung steht jetzt in § 1 selbst.Der Befund, der die Umsetzung bestimmt hat
Messung am 2026-09-11 über alle 29 Source-Seiten (Median
entities:+concepts:= 6):Source - LLM Wiki v2trägt 30 Gegenstände aus einer Rohdatei. Der vermutete Schaden - eine vage Source-Seite - trat nicht ein: alle 26 Concepts haben eine Seite, die Breite wurde vollständig nachgezogen. Der Schaden sitzt eine Ebene tiefer und ist bimodal: 14 der 30 Subjektseiten liegen unter 150 Wörtern (dünnste 71-78), die übrigen bei 541-1.294, gegen einen Korpus-Median von 485. Eine Stub-Kohorte aus einem Durchgang. Keine andere Quelle im Korpus hat eine - bei 18 Gegenständen sind es null.Daher die Schwelle bei ~20 und nicht am 75.-Perzentil (9): ein Auslöser, der auf schadensfreien Seiten feuert, wird ignoriert. Die Schwelle ruht auf einem Schadenspunkt und ist entsprechend vorläufig.
Abgleich mit
commonplace/kb/Stützt den Verzicht auf den Source-Split unabhängig vom Befund aus dem Baum:
notes/short-composable-notes-maximize-combinatorial-discovery.mdbegründet "One claim, one note" ausschließlich mit Co-Loading für Entdeckung - das gilt der Library-Schicht (kb/entities/,kb/concepts/), nicht der Evidenz-Schicht.notes/title-as-claim-enables-traversal-as-reasoning.md§ "Where it breaks": ein Mehr-Aussagen-Dokument ist Referenz ("see X"), nicht Prämisse ("since X"). Eine Source-Seite war nie Prämisse - Breite schadet ihrer Rolle deshalb nicht. Das erklärt, warum der vorhergesagte Schaden ausblieb.notes/artifacts-produced-from-sources-need-lineage-recorded-at-the-source.md: Forward-Lineage muss den Betreiber unterbrechen. Genau das leistet "eine Rohdatei, ein Besitzer"; die Forschung erreicht die Sperre auf eigenem Weg.notes/a-functioning-kb-needs-a-workshop-layer-not-just-a-library.mdverlangt für Arbeit in Bewegung eine Workshop-Schicht. Beides zeigt auf die Subjektseiten und aufwork/- deckt sich mit der Messung.Entschieden
(b1): Der Breiten-Auslöser löst Verarbeitungsdisziplin aus, keinen Dateisplit. Was gebaut wurde:
ingest-large-tree§ When to run trennt Volumen- und Breiten-Auslöser; die Schwelle (~20 Entities und Concepts zusammen) steht dort und nur dort.wiki-ingestSchritt 7 trägt die Regel, die der Extract beliefert: ein Gegenstand bekommt eine Seite, wenn die Quelle Material für eine trägt. Sonst Wikilink von der Source-Seite plus Zeile unter## Not Extracted.wiki-ingestSchritt 2 verweist auf die Schwellenliste, statt die Zahlen zu wiederholen - die bisherige Dopplung der Volumen-Zahlen über zwei Dateien ist damit weg (Invariante 8).types/source.md:## Not Extractedist jetzt auf beiden Achsen Pflicht, undentities:+concepts:> ~20 steht als Gegenstück zum bestehendenraw_files:-Signal.(b2) ausgelagert nach #94 - ein
lint-Befund gegen die Stub-Kohorte. Eigene Schwellenwertfrage (Wortzahl ist ein grober Proxy für Substanz), eigene Werkzeugänderung, plus die 14 bestehenden dünnen Seiten als Korpusarbeit.Akzeptanzkriterien
wiki-ingestSchritt 2 nennt neben dem Volumen-Auslöser einen Breiten-Auslöser mit konkreter Zahl und sagt, wohin er führt.lintmeldet unverändert keinen doppelt beanspruchten Rohpfad.ingest-large-tree.md§ Scope nachgezogen - "This is about volume, not difficulty" ist jetzt "about size, on the two axes § When to run names".capture-session.md§ 1 undwiki-ingestverweisen darauf; die Schwellenzahlen stehen nur noch in § When to run.docs verifyundinstructions verifylaufen sauber; keine berührte Instruction trägt eine Issue-Referenz.types/source.mdkam nach dem ersten Publish und brauchte seinen eigenen - siehe § CI unten.Verifiziert
Lokal vor jedem Publish:
tools/wikitool docs verify(55 Kommandos, 38 TOC-Regionen, 65 ausgelieferte Dokumente ohne Issue-Referenz),tools/wikitool instructions verify(22 Instructions, 7 Skills, 14 veröffentlichte Kopien deckungsgleich), vollepytest-Suite (1195 passed),docs toc --applyundinstructions syncfür die generierten Regionen.CI: Run 248 (
f93d14b) grün, Run 249 (e068982) rot, Run 250/251 (44cca62) nach dem Fix.CI: die Version Gate hat den Nachzug erwischt
Der zweite Commit zog
types/source.mdnach, ohneVERSIONzu bewegen - für eine Sitzung, die das als Dokumentationsnachzug las, abertypes/gehört zu dem, wasdist exportals Verhalten ausliefert. Die Version Gate in.gitea/workflows/ci.ymlprüft genau das (^(tools/|types/|instructions/|AGENTS\.md$|[^/]+/CONTRACT\.md$)gegengithub.event.before) und schlug in Run 249 fehl.Der Befund ist keine Lücke, sondern die Gate bei der Arbeit: die Doku-Nachzugsphase aus
stack-closeSchritt 3 landet regelmäßig in genau diesen Pfaden, und sie liegt nach dem Bump der eigentlichen Änderung. Behoben mit44cca62(version bump --patch,5.0.0-beta.18→beta.19).Nachbemerkung
docs/why-gates-are-code.md§ "Numbers that come from measurement, not intuition" argumentiert, eine Schwelle in Prosa werde "read once and remembered loosely", während eine im Code von jedem Aufruf getestet wird. Die ~20 stehen in Prosa. Das ist kein Widerspruch zur Entscheidung hier - ein Auslöser vor dem Lesen lässt sich nicht mechanisch prüfen -, aber es ist genau das Argument für #94: die Beobachtungsseite gehört in den Code.Stub wörtlich, vor der Ausarbeitung (
status/incoming, angelegt 2026-09-04):Changelog: Stub gegen den Baum geprüft und ausgearbeitet. Befund: zwei Schnitt-Mechanismen existieren bereits (
capture-session.md§ 1 themengetrieben,ingest-large-tree.mdvolumengetrieben), die Lücke ist die thematisch breite Einzelquelle. Der Mechanismus ist nicht 1:1 übertragbar -raw/-Immutabilität und die lint-geprüfte Regel "Eine Raw-Datei, ein Besitzer" schließen sowohl den Dateisplit nachraw acceptals auch mehrere Source-Seiten über einer Raw-Datei aus. Die daraus folgende Betreiberfrage (ist eine thematisch breite Source-Seite überhaupt ein Defekt?) steht im Body offen, bewusst unbeantwortet. Labels nachgezogen:area/kb,kind/decision,prio/planned,size/L(offene Designfrage vor dem ersten Commit);status/incomingentfernt. Titeltippfehler korrigiert.File-Split aus capture-session eventuell auch für reguläte Ingests in Betracht ziehento File-Split aus capture-session auch für reguläre Ingests in Betracht ziehenChangelog: Vertieft um eine Korpus-Messung und den Abgleich mit
commonplace/kb/.Neu: § "Befund aus dem Korpus" und § "Abgleich mit
commonplace/kb/". Korrigiert: die ursprünglich offene Betreiberfrage ("ist eine thematisch breite Source-Seite ein Defekt?") ist durch Messung beantwortet - nein.Source - LLM Wiki v2trägt 30 Gegenstände aus einer Raw-Datei, aber alle 26 Concepts haben Seiten; der Schaden sitzt statt dessen in einer Stub-Kohorte auf der Subjektebene (12 von 26 Seiten mit 71-101 Wörtern gegen einen Korpus-Median von 485), dielintnicht sieht. Die Entscheidungsfrage ist entsprechend eine Ebene tiefer neu gestellt: (b1) nur Verarbeitungsdisziplin gegen (b2) Disziplin plus Lint-Befund. Akzeptanzkriterien auf den neuen Auslöser umgeschrieben, Kriterium zuingest-large-tree.md§ Scope und zum Versions-Bump ergänzt. § Belege benennt Messdatum und Quelle der Zahlen.Der
commonplace-Abgleich stützt den Verzicht auf einen Source-Split unabhängig vom Baum-Befund: Atomizität ist dort mit Co-Loading für Entdeckung begründet und gilt damit der Library-Schicht (kb/entities/,kb/concepts/), nicht der Evidenz-Schicht; ein Mehr-Aussagen-Dokument ist pertitle-as-claimReferenz statt Prämisse, weshalb Breite seiner Rolle nicht schadet; und die Forward-Lineage-Forderung erreicht "Eine Raw-Datei, ein Besitzer" auf eigenem Weg.Changelog: Abschluss. Entscheidung gefallen und im Body als Entscheidung ausformuliert: (b1) - Breite löst Verarbeitungsdisziplin aus, keinen Dateisplit; Schwelle ~20 Gegenstände, begründet aus der Messung (Stub-Kohorten treten nur beim 30-Fall auf, bei 18 sind es null). (b2) ist als #94 ausgelagert. Alle sechs Akzeptanzkriterien abgehakt, Verifikation benannt. Neu gegenüber dem vorigen Stand:
types/source.mdkam als Nachzug dazu (## Not Extractedauf beiden Achsen Pflicht,entities:+concepts:-Signal), und die bisherige Dopplung der Volumen-Schwellen zwischenwiki-ingestSchritt 2 undingest-large-treeist beim Umbau entfallen. Nachbemerkung zur Prosa-gegen-Code-Spannung ausdocs/why-gates-are-code.mdergänzt - sie ist das Argument für #94.Umgesetzt in
5.0.0-beta.18, Commitsf93d14b(Instructions, Changelog, Version) unde068982(types/source.md-Nachzug).Changelog: CI-Nachtrag. Run 249 (
e068982) war rot - die Version Gate, weil dertypes/source.md-Nachzug aus der AbschlussphaseVERSIONnicht bewegt hatte. Behoben mit44cca62(version bump --patch,5.0.0-beta.19). Body entsprechend korrigiert: Versionsangabe und Commit-Liste, ein neuer § "CI: die Version Gate hat den Nachzug erwischt", CI-Runs in § Verifiziert benannt, und das Bump-Kriterium sagt jetzt, dass es zwei Bumps waren und warum.