deploy: „fertig" wird erst beim Deploy „in Produktion" (D30)
Der mitgelieferte Werkbaum-Plan behauptete [^] für Funktionen, die nur auf der
automatisch deployten Pages-Instanz lagen, nicht auf werkbaum.javagil.de
(manueller Deploy, D16). Ausgerechnet das Dokument, das den Stand beschreiben
soll, war ungenau — und „Was ist neu?" (D28) meldete Dinge als live, die es
dort nicht waren.
Die Unterscheidung gibt es längst: SPEC §4 trennt [x] fertig von [^] in
Produktion. Der Plan hat sie für sich selbst nie benutzt. Konvention ab jetzt:
beim Mergen [x], der Deploy befördert — nur er weiß, wann die Aussage wahr wird.
- scripts/promote-shipped.sh schreibt Statusboxen am Zeilenanfang von [x] auf
[^] und hält das als eigenen Commit fest (-n zeigt nur, -y ohne Rückfrage).
Bricht ab, wenn die Plandatei uncommittete Änderungen hat; committet nur
diesen einen Pfad; pusht nicht.
- deploy-prod.sh ruft es als Schritt 0 auf (--no-promote schaltet es ab) und
warnt, wenn HEAD noch nicht auf origin liegt — der Footer-Versionslink zeigt
sonst auf einen Commit, den GitHub nicht kennt.
Warum ein Commit und kein Rewrite beim Bauen: Ein Rewrite macht GENAU EINE
Installation ehrlich; Pages untertriebe dauerhaft und die Neu-Anzeige wäre dort
für immer stumm. Der Commit wird von beiden Pipelines gesehen (Pages beim Push,
prod beim rsync), das Artefakt bleibt inhaltsgleich mit dem Repo — die
vorhandenen sed-Regeln (D16) fassen nur Pfade und Version an, Infrastruktur,
kein Rewrite dessen, was das Dokument aussagt. Außerdem Präzedenzfall D16:
VERSION per bewusstem Bump-Commit, „vollständig aus dem Repo reproduzierbar".
Einmalige Nachholung, exakt statt geschätzt: Der Footer der stabilen Instanz
verlinkt den deployten Commit (4061362); alles danach ist dort nicht drin. Es
sind GENAU ZWEI Knoten — „Optional nodes" (D29) und „Show what is new since
your last visit" (D28) —, nicht das Dutzend, das ich vorher grob geschätzt
hatte. Beide stehen jetzt auf [x] und leuchten beim nächsten Prod-Deploy als
neu auf. Eine Demotion [^]→[x] löst kein Falschleuchten aus: freshProdSet
meldet nur Knoten, die JETZT [^] sind (test-abgedeckt).
Umfang: nur example-werkbaum.werkbaum. Die übrigen Beispieldateien sind
erfunden und sagen nichts über ein Deployment aus.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
56c18cb8cb
commit
6836352e84
@@ -197,6 +197,23 @@ repository, while the **version number** links to that exact commit
|
||||
"GitHub Actions". The repo must be **public** for this (GitHub Pages via Actions
|
||||
is only available for private repos on a paid plan).
|
||||
|
||||
### Stable instance
|
||||
|
||||
`scripts/deploy-prod.sh` mirrors a badge-free production build to a server over
|
||||
SSH (target in `.env`, template `.env.example`). Unlike Pages this is a
|
||||
**deliberate** step, so it is also the moment a feature actually goes live.
|
||||
|
||||
The script therefore starts by running `scripts/promote-shipped.sh`, which turns
|
||||
`[x]` (done) into `[^]` (in production) in `docs/examples/example-werkbaum.werkbaum`
|
||||
— the shipped plan describing Werkbaum itself — and records that as its own
|
||||
commit. The convention is: mark a finished feature `[x]` when it is merged and
|
||||
let the deploy promote it. That keeps the plan honest on both instances and
|
||||
keeps the "what's new" highlighting meaningful. Skip it with `--no-promote`; see
|
||||
[docs/DECISIONS.md](docs/DECISIONS.md) D30.
|
||||
|
||||
The commit is **not** pushed automatically — run `git push` afterwards, or the
|
||||
footer version link points at a commit GitHub does not know yet.
|
||||
|
||||
## License
|
||||
|
||||
MIT — see [LICENSE](LICENSE). © 2026 Michael Hönnig. The bundled IBM Plex fonts
|
||||
|
||||
Reference in New Issue
Block a user