feat: raw accept - incoming/ als abgeleiteter Rohablage-Eingang (schliesst #58)
Files changed: - .gitignore - CHANGES.md - README.md - VERSION - docs/pipeline-rationale.md - instructions/bootstrap.md - instructions/wiki-ingest/SKILL.md - raw/CONTRACT.md - tools/CONTRACT.md - tools/chemenu/cli.py - tools/chemenu/commands/dist_cmd.py - tools/chemenu/commands/docs_verify.py - tools/chemenu/commands/raw_cmd.py - tools/chemenu/tests/test_dist_cmd.py - tools/chemenu/tests/test_docs_verify.py - tools/chemenu/tests/test_raw_cmd.py
This commit is contained in:
+42
-1
@@ -35,7 +35,7 @@ dev-checkout concern - readable here, never shipped as something to parse.
|
||||
|
||||
---
|
||||
|
||||
## 4.8.0-beta.2 - 2026-09-04 - kb/CONTRACT.md: Tiefe 1 als Grenze - Katalog liest nur eine Area-Ebene
|
||||
## 4.8.0-beta.3 - 2026-09-05 - raw accept: incoming/ als abgeleiteter Rohablage-Eingang (schliesst #58)
|
||||
|
||||
**Author:** Torben Nehmer
|
||||
|
||||
@@ -43,6 +43,7 @@ dev-checkout concern - readable here, never shipped as something to parse.
|
||||
- status/incoming: menschliche Stubs werden ausgearbeitet, nie so umgesetzt
|
||||
- page move: eine kb-Seite folgt ihrem Subtype ins Verzeichnis, das ihr Type-Spec berechnet
|
||||
- kb/CONTRACT.md: Tiefe 1 als Grenze - Katalog liest nur eine Area-Ebene
|
||||
- raw accept: incoming/ als abgeleiteter Rohablage-Eingang (schliesst #58)
|
||||
<!-- /wikitool:bumps -->
|
||||
|
||||
Das Label `status/incoming` gibt es seit heute in Gitea: der Mensch legt einen
|
||||
@@ -217,6 +218,46 @@ ausgelieferter Inhalt.
|
||||
|
||||
Schließt #57.
|
||||
|
||||
**`raw accept`** (#58): `raw/CONTRACT.md`s Routing-Tabelle war bislang eine Regel für Menschen —
|
||||
wer eine Datei ablegt, wählt `articles/`/`documents/`/`notes/`/`assets/` selbst, und mehrere
|
||||
Dateien einer logischen Quelle waren im Dateisystem nicht als zusammengehörig erkennbar. Neu ist
|
||||
ein gitignorierter Eingang `incoming/`, der dieselben vier Typverzeichnisse spiegelt: der Mensch
|
||||
klassifiziert nur, indem er dort ablegt, `tools/wikitool raw accept <datei> [<datei> ...]
|
||||
[--page "<Titel>"]` berechnet die Beförderung nach `raw/`.
|
||||
|
||||
Zwei Entscheidungen, gegen die ursprüngliche Skizze im Issue: ein Bundle-Verzeichnis
|
||||
(`raw/<typ>/<stamm>/`, benannt nach der ersten Datei) entsteht erst ab der zweiten Datei, nie
|
||||
einheitlich — damit sind die 29 heute flach liegenden Bestandsdateien keine Ausnahme, sondern
|
||||
bereits die Regelform, und die Frage „was passiert mit dem Bestand" beantwortet sich von selbst.
|
||||
Und der Typ wird über das Eingangs-Unterverzeichnis deklariert, nicht über ein `--type`-Flag: die
|
||||
Erklärung wird abgegeben, wenn der Mensch die Datei in der Hand hat, statt im Moment des
|
||||
`accept`-Aufrufs neu geraten werden zu müssen.
|
||||
|
||||
`--page` deckt den Wachstumsfall ab: erweitert `raw_files:` einer bestehenden Source-Seite und
|
||||
faltet deren schon abgelegte Einzeldatei ins neue Bundle, sobald das die Seite über eine Datei
|
||||
hinaus wachsen lässt — ohne ein Fenster, in dem `raw_files:` ins Leere zeigt. Die dafür nötige
|
||||
Rückwärtssuche und der Mehrfach-Owner-Schutz sind keine neue Mechanik, sondern
|
||||
`provenance.source_pages_by_raw_file`, das `lint` schon für `duplicate_raw_file_owners` benutzt —
|
||||
ein Owner-Konflikt lehnt die Beförderung ab, statt eine andere Seite unbemerkt zu brechen.
|
||||
|
||||
`incoming/` ist für `sources coverage` und `lint` unsichtbar (beide laufen ausschließlich über
|
||||
`config.iter_raw_files(config.RAW_DIR)`), und dass keine Datei dort je committet werden kann, ist
|
||||
über `docs_verify.REQUIRED_IGNORE_CANARIES` bewiesen, nicht nur zugesichert. `RAW_SUBDIRS`
|
||||
(`dist_cmd.py`) bleibt die einzige Quelle der Vier-Verzeichnis-Liste: `docs verify`
|
||||
(`check_raw_subdirs`) hält `raw/CONTRACT.md`s Tabelle jetzt in beiden Richtungen dagegen, und
|
||||
`dist export` sät `incoming/<typ>/.gitkeep` neben `raw/<typ>/.gitkeep`; `instructions/bootstrap.md`
|
||||
legt den Eingang für einen bestehenden Klon nach, da er dort nie aus git kommt.
|
||||
|
||||
Geändert: `tools/chemenu/commands/raw_cmd.py` (neu, `raw accept`), `tools/chemenu/cli.py`,
|
||||
`tools/chemenu/commands/dist_cmd.py` (`RAW_SUBDIRS`-Kommentar, `incoming/*/.gitkeep`),
|
||||
`tools/chemenu/commands/docs_verify.py` (`check_raw_subdirs`, `incoming/`-Ignore-Kanarie),
|
||||
`.gitignore`, `raw/CONTRACT.md`, `tools/CONTRACT.md`, `instructions/bootstrap.md`,
|
||||
`instructions/wiki-ingest/SKILL.md`. MINOR: eine Umsortierung des Bestands wäre die Grenze
|
||||
gewesen, findet aber unter der Bundle-erst-ab-zwei-Regel nicht statt — der Bestand bleibt
|
||||
unangetastet, keine fremde Instanz muss migrieren, vorwärts wie rückwärts reines Überkopieren.
|
||||
|
||||
Schließt #58.
|
||||
|
||||
---
|
||||
|
||||
## 4.7.4 - 2026-09-04 - bootstrap.md nennt den session-id-WARN nach frischem Bootstrap explizit als erwartet
|
||||
|
||||
Reference in New Issue
Block a user