docs: INSTALL.md auf das oeffentliche Repo umgestellt, Weg D fuer die private Instanz
CI / verify (push) Successful in 45s
CI / verify (push) Successful in 45s
Files changed: - INSTALL.md
This commit is contained in:
+51
-21
@@ -1,10 +1,11 @@
|
|||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
Dieses Dokument richtet sich an Menschen. Es gibt drei Wege: ein **Release herunterladen**
|
Dieses Dokument richtet sich an Menschen. Es gibt vier Wege: ein **Release herunterladen**
|
||||||
(der normale Weg zu einer neuen Instanz), eine Distribution **selbst exportieren**, oder
|
(der normale Weg zu einer neuen Instanz), eine Distribution **selbst exportieren**, **dieses
|
||||||
**dieses Repo klonen** (Torbens persönliche Wiki, samt Inhalt). Der agent-seitige Ablauf steckt
|
Repo klonen** (Testbett und Demo, samt Beispielkorpus), oder eine **private Instanz mit diesem
|
||||||
in `instructions/`; hier stehen nur die menschlichen Teile - für die vollständige
|
Repo als Upstream** aufsetzen. Der agent-seitige Ablauf steckt in `instructions/`; hier stehen
|
||||||
Kommandoreferenz siehe [tools/CONTRACT.md](tools/CONTRACT.md).
|
nur die menschlichen Teile - für die vollständige Kommandoreferenz siehe
|
||||||
|
[tools/CONTRACT.md](tools/CONTRACT.md).
|
||||||
|
|
||||||
## Voraussetzungen
|
## Voraussetzungen
|
||||||
|
|
||||||
@@ -16,19 +17,22 @@ Kommandoreferenz siehe [tools/CONTRACT.md](tools/CONTRACT.md).
|
|||||||
## Weg A: Release herunterladen
|
## Weg A: Release herunterladen
|
||||||
|
|
||||||
Der kürzeste Weg zu einer eigenen Instanz - kein Checkout dieses Repos nötig. Jedes Release
|
Der kürzeste Weg zu einer eigenen Instanz - kein Checkout dieses Repos nötig. Jedes Release
|
||||||
trägt genau einen `dist export`-Baum plus eine Prüfsumme. Das Repo ist derzeit privat, der
|
trägt genau einen `dist export`-Baum plus eine Prüfsumme. Das Repo ist öffentlich, der Download
|
||||||
Download braucht also ein Gitea-Token mit Lesezugriff (siehe
|
braucht also weder Konto noch Token:
|
||||||
[Konfiguration](#konfiguration)):
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
BASE=https://gitea.nehmer.net/torben/chemenu/releases/download/v<version>
|
BASE=https://gitea.nehmer.net/torben/chemenu/releases/download/v<version>
|
||||||
curl -LO -H "Authorization: token $WIKITOOL_UPDATE_TOKEN" $BASE/chemenu-stack-<version>.tar.gz
|
curl -LO $BASE/chemenu-stack-<version>.tar.gz
|
||||||
curl -LO -H "Authorization: token $WIKITOOL_UPDATE_TOKEN" $BASE/chemenu-stack-<version>.tar.gz.sha256
|
curl -LO $BASE/chemenu-stack-<version>.tar.gz.sha256
|
||||||
sha256sum -c chemenu-stack-<version>.tar.gz.sha256
|
sha256sum -c chemenu-stack-<version>.tar.gz.sha256
|
||||||
tar xzf chemenu-stack-<version>.tar.gz
|
tar xzf chemenu-stack-<version>.tar.gz
|
||||||
cd chemenu-stack-<version>
|
cd chemenu-stack-<version>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Die Prüfsumme ist nicht Zierde: Sie ist das Einzige, was einen unterbrochenen Download von
|
||||||
|
einem vollständigen unterscheidet, und `sha256sum -c` muss `OK` sagen, bevor irgendetwas
|
||||||
|
entpackt wird.
|
||||||
|
|
||||||
Danach weiter mit Schritt 2 aus Weg B: den Agenten
|
Danach weiter mit Schritt 2 aus Weg B: den Agenten
|
||||||
[instructions/setup-instance.md](instructions/setup-instance.md) ausführen lassen. Der
|
[instructions/setup-instance.md](instructions/setup-instance.md) ausführen lassen. Der
|
||||||
entpackte Baum ist bereits eine Distribution - Schritt 1 (`dist export`) entfällt.
|
entpackte Baum ist bereits eine Distribution - Schritt 1 (`dist export`) entfällt.
|
||||||
@@ -82,10 +86,14 @@ Zwei Schritte, von denen nur der erste rein menschlich ist:
|
|||||||
|
|
||||||
## Weg C: Dieses Repo klonen
|
## Weg C: Dieses Repo klonen
|
||||||
|
|
||||||
Für Torbens Instanz selbst, oder einen Fork davon samt Inhalt:
|
Für die Arbeit am Stack selbst, oder um sich den mitgelieferten Korpus als begehbares Beispiel
|
||||||
|
anzusehen. Was hier liegt, ist ein **Testbett und eine Demo**, keine produktive Wissensbasis:
|
||||||
|
rund 170 Seiten, die den Stack selbst dokumentieren - Gates, Lint, Versionierung, Suche, das
|
||||||
|
Wiki-Muster. Wer eigenes Wissen sammeln will, nimmt Weg A oder B und fängt mit einem leeren
|
||||||
|
`kb/` an.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <repo-url>
|
git clone https://gitea.nehmer.net/torben/chemenu.git
|
||||||
cd chemenu
|
cd chemenu
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -102,6 +110,21 @@ Checkout* beschreibt und nicht das Repo. Sie ist optional; wer sie anlegt, spart
|
|||||||
folgenden Session die Fragen nach Harness, MCP-Servern und Remote. Vorlage:
|
folgenden Session die Fragen nach Harness, MCP-Servern und Remote. Vorlage:
|
||||||
`ENVIRONMENT.md.template`, Ablauf: Schritt 5 in `instructions/bootstrap.md`.
|
`ENVIRONMENT.md.template`, Ablauf: Schritt 5 in `instructions/bootstrap.md`.
|
||||||
|
|
||||||
|
## Weg D: Private Instanz mit diesem Repo als Upstream
|
||||||
|
|
||||||
|
Die Kombination aus A und C: eine eigene, nicht öffentliche Instanz, die weiterhin
|
||||||
|
Stack-Updates von hier zieht - per `git merge` statt per Tarball, also mit echtem
|
||||||
|
Drei-Wege-Merge statt `cp -r`.
|
||||||
|
|
||||||
|
Das ist der Weg mit dem höchsten Einsatz, weil ein Checkout dann zwei Remotes hat und git beim
|
||||||
|
Push nicht unterscheidet, welcher welcher ist. Ein falsches `--remote` legt privaten Inhalt auf
|
||||||
|
ein öffentliches Repo, und ein Force-Push holt das nicht zurück - die Objekte bleiben per SHA
|
||||||
|
abrufbar, bis auf dem Server die Reflogs verfallen.
|
||||||
|
|
||||||
|
Dagegen gibt es das **Publish-Remote-Gate**, und die Anleitung setzt es an die Stelle, an der
|
||||||
|
es wirkt: *vor* dem ersten `publish`. Vollständiges Vorgehen:
|
||||||
|
[instructions/private-instance.md](instructions/private-instance.md).
|
||||||
|
|
||||||
## Version und Updates
|
## Version und Updates
|
||||||
|
|
||||||
Jede Instanz trägt die Version des **Stacks** (Werkzeuge, Typen, Instruktionen, Contracts) -
|
Jede Instanz trägt die Version des **Stacks** (Werkzeuge, Typen, Instruktionen, Contracts) -
|
||||||
@@ -199,22 +222,23 @@ behält Schema und Shape.
|
|||||||
| `WIKI_AUTHOR` | Override für den Autornamen neuer Source-Seiten | `git config user.name` - fehlt beides, bricht `new` mit `ERROR` ab |
|
| `WIKI_AUTHOR` | Override für den Autornamen neuer Source-Seiten | `git config user.name` - fehlt beides, bricht `new` mit `ERROR` ab |
|
||||||
| `WIKITOOL_SESSION_ID` | Scopt das Iteration-Budget-Gate auf eine Aufgabe statt auf ein Terminal | Parent-Process-ID (siehe [instructions/session-setup.md](instructions/session-setup.md)) |
|
| `WIKITOOL_SESSION_ID` | Scopt das Iteration-Budget-Gate auf eine Aufgabe statt auf ein Terminal | Parent-Process-ID (siehe [instructions/session-setup.md](instructions/session-setup.md)) |
|
||||||
| `WIKITOOL_UPDATE_URL` | Release-Feed, den `version check` abfragt | Wert aus `.wikitool-release.json`, sonst der Feed der Ursprungs-Instanz |
|
| `WIKITOOL_UPDATE_URL` | Release-Feed, den `version check` abfragt | Wert aus `.wikitool-release.json`, sonst der Feed der Ursprungs-Instanz |
|
||||||
| `WIKITOOL_UPDATE_TOKEN` | Gitea-Token für den Release-Feed | keiner - **aber das Ursprungs-Repo ist derzeit privat, also wird ein Token gebraucht** (siehe unten) |
|
| `WIKITOOL_UPDATE_TOKEN` | Gitea-Token für den Release-Feed | keiner - gegen `torben/chemenu` nicht nötig, nur für einen privaten Fork (siehe unten) |
|
||||||
|
|
||||||
**Privates Ursprungs-Repo.** `torben/chemenu` ist nicht öffentlich lesbar. Gitea
|
**Gegen das Ursprungs-Repo braucht es kein Token.** `torben/chemenu` ist öffentlich lesbar;
|
||||||
antwortet anonymen Aufrufern für ein unsichtbares Repo mit demselben `404` wie für ein gar
|
`version check` und der Download in Weg A funktionieren ohne Konfiguration.
|
||||||
nicht existierendes - ein fehlendes Release und ein fehlender Zugriff sehen also identisch aus.
|
|
||||||
Für `version check` (und für den Download in Weg A) braucht es deshalb ein Gitea-Token mit
|
**Für einen privaten Fork schon.** Wer den Stack in ein eigenes, nicht öffentliches Repo legt
|
||||||
Lesezugriff:
|
und `WIKITOOL_UPDATE_URL` auf dessen Feed zeigen lässt, stößt auf eine Eigenheit, die man
|
||||||
|
kennen sollte: Gitea antwortet anonymen Aufrufern für ein unsichtbares Repo mit demselben
|
||||||
|
`404` wie für ein gar nicht existierendes. Ein fehlendes Release und ein fehlender Zugriff
|
||||||
|
sehen dann identisch aus - „kein Update gefunden" wäre in dem Fall schlicht gelogen. Dagegen
|
||||||
|
hilft ein Gitea-Token mit Lesezugriff:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export WIKITOOL_UPDATE_TOKEN="<gitea-token>"
|
export WIKITOOL_UPDATE_TOKEN="<gitea-token>"
|
||||||
tools/wikitool version check
|
tools/wikitool version check
|
||||||
```
|
```
|
||||||
|
|
||||||
Wird das Repo öffentlich geschaltet, entfällt das Token ersatzlos - der Feed ist dann anonym
|
|
||||||
lesbar und `version check` funktioniert ohne Konfiguration.
|
|
||||||
|
|
||||||
## Verifikation
|
## Verifikation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -259,6 +283,12 @@ tools/wikitool instructions verify
|
|||||||
sondern die Aufforderung, die Ausgabe einem Menschen zu zeigen: sie enthält die vollständige
|
sondern die Aufforderung, die Ausgabe einem Menschen zu zeigen: sie enthält die vollständige
|
||||||
Dateiliste und die exakte `--confirm <token>`-Zeile, die nach Freigabe veröffentlicht.
|
Dateiliste und die exakte `--confirm <token>`-Zeile, die nach Freigabe veröffentlicht.
|
||||||
Details: [instructions/gates.md](instructions/gates.md).
|
Details: [instructions/gates.md](instructions/gates.md).
|
||||||
|
- **`publish` endet mit Exit-Code 42 (Publish-Remote-Gate)** - dieser Checkout hat eine
|
||||||
|
`.wikitool-remotes.json`, und das angesteuerte Remote steht nicht darin. Ebenfalls kein
|
||||||
|
Fehler: Die Ausgabe nennt die Push-URL, an die geschrieben würde, und die erlaubten. Anders
|
||||||
|
als beim Mass-Update-Gate gibt es hier **keinen Token und keine Flagge** - stimmt das Ziel
|
||||||
|
wirklich, trägt der Mensch dessen URL selbst in die Datei ein. Ein Agent, der die Datei
|
||||||
|
anfasst, um an der Verweigerung vorbeizukommen, öffnet ein Gate aus eigenem Antrieb.
|
||||||
- **Ich will am Tool-Stack selbst weiterarbeiten (nicht nur Wiki-Inhalt betreiben)** - eine neue
|
- **Ich will am Tool-Stack selbst weiterarbeiten (nicht nur Wiki-Inhalt betreiben)** - eine neue
|
||||||
Instanz hat dafür keinen Weg: `dist export` lässt `instructions/dev/` (Stack-Entwicklung,
|
Instanz hat dafür keinen Weg: `dist export` lässt `instructions/dev/` (Stack-Entwicklung,
|
||||||
inkl. der vendorten `commonplace/`-Wissensbasis) bewusst und dauerhaft weg, ohne
|
inkl. der vendorten `commonplace/`-Wissensbasis) bewusst und dauerhaft weg, ohne
|
||||||
|
|||||||
Reference in New Issue
Block a user