raw rename: eine Rohdatei bewegen, ohne dass die Referenz zwischendurch ins Leere zeigt
#16
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?
Abgespalten von #14, das mit
touch --set/--add/--removein 1.4.0 geschlossen wurde. Übrig bleibt der Teil, dentouch --setnicht abdeckt: wenn nicht der Wert, sondern die Datei sich bewegt.Was jetzt geht, und wo die Lücke bleibt
Seit 1.4.0 ist der Umzug zweistufig machbar:
Das ist ungleich besser als vorher — vorher gab es keinen Weg außer der Handeditierung. Aber zwischen Schritt 1 und Schritt 2 zeigt
raw_files:ins Leere.lintundsources coveragewürden den Zustand korrekt alsBroken raw_files referencesmelden, wenn in diesem Moment jemand prüft.Bei mehreren referenzierenden Seiten wächst das Fenster mit jeder.
sources trace --raw <pfad>sagt zwar, welche Seiten betroffen sind, aber die Reihenfolge und Vollständigkeit hängen dann daran, dass niemand abbricht — genau die Sorte Handarbeit, gegen die der Rest des Stacks gebaut ist.Vorschlag
wikitool raw rename <alt> <neu>, das dengit mvund jede referenzierende Source-Seite in einem Schritt macht:Vorbild ist
wikitool renamefür Seiten: es bewegt die Datei und zieht jede Referenz nach, undpage-lifecycle.mdschreibt vor, es zu benutzen statt von Hand zu verschieben. Fürraw/fehlt das Gegenstück.Offene Fragen für die Umsetzung
raw_files:(tools/chemenu/provenance.pyhat die Logik fürbroken_raw_refsundduplicate_raw_file_ownersschon), oder sollsources tracedie eine Quelle der Wahrheit sein?lintführtduplicate_raw_file_ownersals eigenen Befund.raw renamesollte den Zustand nicht stillschweigend erzeugen und nicht daran scheitern, wenn er schon besteht — vermutlich: alle Owner nachziehen und die Mehrfachbelegung melden.raw/CONTRACT.mdroutet nacharticles/,documents/,notes/,assets/. Eine Datei vonnotes/nachdocuments/zu bewegen ist derselbe Vorgang und sollte mitkommen. Prüfen, dass das Ziel unterraw/liegt.git mv, oder auch ein einfachesmv? Eine noch nicht committete Rohdatei ist git unbekannt. Vermutlich:git mvversuchen, bei „not under version control" aufmvzurückfallen und das melden.sources rebuild-indexautomatisch anhängen oder dem Aufrufer überlassen? Die anderen Kommandos überlassen es ihm; Konsistenz spricht dafür, es nicht zu tun, sondern in der Abschlussmeldung daran zu erinnern.raw/ist unveränderlich; hier geht es allein darum, dass ein Pfad sich ändert, während der Inhalt derselbe bleibt.Abgrenzung
Kein allgemeiner
raw-Unterbefehlsbaum. Ein Kommando, ein Zweck.Akzeptanzkriterien
raw renamebewegt die Datei und zieht jede referenzierende Source-Seite nach; zwischen beidem existiert kein Zustand, in dem eine Referenz ins Leere zeigt.--dry-runzeigt die vollständige Liste der betroffenen Seiten, ohne etwas zu schreiben.5426a6e: eine Rohdatei mit Komma im Namen, eine referenzierende Source-Seite.tools/CONTRACT.mdfür Kommando und Fehlerkontrakt;docs verifyerzwingt beide Richtungen.instructions/page-lifecycle.mderwähnt den Rohdatei-Fall oder verweist ausdrücklich hierher. Heute grenzt sein Scope-Abschnitt nur gegen Contracts, Instructions und Type-Specs ab und schweigt zuraw/.Hinweis zur Priorität
Anders als #14 gibt es hier keinen Datenverlust und keine Sackgasse — der Weg existiert, er ist nur zweistufig und kurz unsauber. Deshalb kein
prio/blocking.Geprüft 2026-09-04 (#29): pfadseitig sauber, kein
wiki_tools- oderllm-wiki-test1-Vorkommen.provenance.pyist zur Eindeutigkeit auftools/chemenu/provenance.pyausgeschrieben (Datei existiert),instructions/page-lifecycle.mdundraw/CONTRACT.mdexistieren unverändert. Der Hinweis zur Priorität nannte noch das abgeschaffteprio/1-Schema und heißt jetztprio/blocking. Damit ist dieses Issue im Rename-Durchgang abgehakt und braucht keinen dritten.torben referenced this issue2026-09-01 20:00:00 +00:00
Hat seit 2026-09-01 einen Abnehmer: #32 (Ingest-Queue) braucht ein
wikitool raw accept, das eine Datei aus einer Quarantäne nachraw/befördert — alsogenau die Mechanik, um die es hier geht (eine Rohdatei bewegen, ohne dass die Referenz
zwischendurch ins Leere zeigt), nur mit einer Verzeichnisgrenze davor.
Wer #16 baut, sollte die Mechanik so schneiden, dass
acceptsie mitbenutzen kann,statt sie später ein zweites Mal zu schreiben.
torben referenced this issue2026-09-04 19:25:03 +00:00
Aus der Sitzung 2026-09-04 zur Ordnerorganisation: #56 (
page move) ist bewusst kein Geschwister von diesem Issue, obwohl die Titel gleich klingen.Der Grund ist die Identität. In
raw/ist sie der Pfad — deshalb steht sie als String inraw_files:, deshalb braucht es hier die Rückwärtssuche über referenzierende Seiten, den Mehrfach-Owner-Fall und die Vermeidung des Fensters, in dem eine Referenz ins Leere zeigt. Inkb/ist sie der Stem (kb_scan.load_kb_pagesschlüsselt darüber), und Wikilinks,[^cite-id]und die Frontmatter-Arrays lösen über den Titel auf. Einpage movebewegt deshalb eine Datei und zieht nichts nach — der gesamte Aufwand dieses Issues entfällt dort.Gemeinsam bleibt genau ein Kleinstprimitiv, das hier ohnehin schon als offene Frage steht: „
git mvversuchen, bei not under version control aufmvzurückfallen und das melden". Wer zuerst gebaut wird, schreibt es; der zweite benutzt es. Keine Blockade in beide Richtungen, keine gemeinsame Umsetzung.Zweiter Berührungspunkt, der wirklich einer ist: #58 (
incoming/+raw accept) braucht die Mechanik dieses Issues vollständig — Beförderung ist derselbe Vorgang wie Umbenennung, nur mit einem Ziel außerhalb des Eingangs. Und der dort offene Punkt „was passiert mit den 29 flach liegenden Bestandsdateien" ist ohne dieses Kommando nicht beantwortbar. Damit hat #16 jetzt zwei Abnehmer statt nur #32.Korrektur zum Kommentar vom 2026-09-04 20:56 — beide Hälften gelten nach der Umsetzung von #58 (4.8.0-beta.3,
36d2128) nicht mehr:raw acceptbefördert eine Datei, die noch keine Seite referenziert; Rückwärtssuche, Mehrfach-Owner-Fall und das Referenzfenster entfallen im Normalfall ersatzlos. Der eine Fall, der eine referenzierte Datei bewegt (--page, Wachstum von einer auf mehrere Dateien), benutztprovenance.source_pages_by_raw_file— die Inversion existierte längst und trägt schonduplicate_raw_file_owners.Was bleibt: das Kleinstprimitiv „
git mvversuchen, bei not under version control aufmvzurückfallen". Auch das ist nach #58 kleiner als gedacht —raw acceptbenutzt schlichtPath.rename(), wiepage_ops.rename_command/move_commandes schon tun, weil die Quelle inincoming/per Definition nie getrackt ist undpublishsgit add -Aeine inhaltsgleiche Bewegung ohnehin als Rename erkennt. Wer #16 baut, entscheidet also neu, obgit mvüberhaupt gebraucht wird, statt es aus diesem Issue zu erben.Ebenfalls neu: die
raw-Kommandogruppe existiert jetzt (tools/chemenu/commands/raw_cmd.py,cli.py),raw renamehängt sich also nur noch ein, statt sie anzulegen.torben referenced this issue2026-09-11 09:34:27 +00:00