Mutantenstufe der Plankritik nach der Pruefung vom 2026-09-28: Netzsperre per unshare, ungepufferte Ausgabe, Zeitlimit je Mutant 120 s, Aufraeumen bei SIGTERM, Modus-Zeile, mutanten_status, Faelle und Treiberfall 35
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
bc9b4f4497
commit
b1ad461acf
8 files changed
+336
-49
No files matched your search
@@ -9,6 +9,24 @@
|
||||
# Grenze meldet die Zeile ZEITGRENZE, die bis dahin gefahrenen Mutanten stehen in der Ausgabe.
|
||||
# Beide Pfade sind Windows-Pfade (auch Kurznamen wie PASCAL~1),
|
||||
# die dieses Skript selbst mit wslpath in WSL-Pfade umwandelt.
|
||||
#
|
||||
# Nachbesserung 2026-09-28 (Pruefbericht vom selben Tag, Befunde 1 bis 4, 7):
|
||||
# - Netzsperre: mutanten_lauf.py laeuft in einem eigenen Netz-Namensraum
|
||||
# (unshare --map-current-user --net). Gemessen in WSL Debian als Benutzer claude
|
||||
# (util-linux 2.41.5): UID innen bleibt 1000 wie aussen, nur Schnittstelle lo, jeder
|
||||
# Verbindungsversuch nach aussen (etwa 127.0.0.1:8144, wo das Dashboard lauscht) scheitert.
|
||||
# Fehlt unshare ohne Netz, bricht das Skript vorher ab statt einen ungesperrten Mutantenlauf
|
||||
# still durchzulassen.
|
||||
# - Ungepufferte Ausgabe: python3 -u, damit bei einer Zeitgrenze die bis dahin gefahrenen
|
||||
# Mutanten wirklich in der Ausgabe stehen.
|
||||
# - Zeitlimit je Mutant: ZEITLIMIT_S (Vorgabe 120 s, kleiner als BUDGET_S) geht als --zeitlimit
|
||||
# an mutanten_lauf.py; B1 mit 74 Mutanten brauchte 168 s gesamt, rund 2 s je Mutant.
|
||||
# - Modus-Zeile vor dem Lauf ("modus: voll" / "modus: muster (...)"), damit die Linse weiss, ob
|
||||
# ueberhaupt ein Mutant gefahren ist.
|
||||
# - Aufraeumen bei SIGTERM: timeout -k 15 schickt nach der Frist noch ein SIGKILL hinterher, falls
|
||||
# mutanten_lauf.py nach dem SIGTERM nicht rechtzeitig endet; sein eigener SIGTERM-Handler setzt
|
||||
# die Zieldatei vorher zurueck und raeumt seine Temp-Ordner auf.
|
||||
# - chmod 700 auf die Kopie der Kopie direkt nach dem Kopieren.
|
||||
set -u
|
||||
|
||||
KOPIE_WIN="${1:-}"
|
||||
@@ -25,6 +43,17 @@ if [ "$MODUS" != "voll" ] && [ "$MODUS" != "muster" ]; then
|
||||
exit 2
|
||||
fi
|
||||
BUDGET_S="${BUDGET_S:-540}"
|
||||
ZEITLIMIT_S="${ZEITLIMIT_S:-120}"
|
||||
|
||||
if ! [ "$ZEITLIMIT_S" -lt "$BUDGET_S" ] 2>/dev/null; then
|
||||
echo "MUTANTEN_LAUF_FEHLER: ZEITLIMIT_S ($ZEITLIMIT_S) muss kleiner sein als BUDGET_S ($BUDGET_S)"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if ! unshare --map-current-user --net true 2>/dev/null; then
|
||||
echo "MUTANTEN_LAUF_FEHLER: unshare ohne Netz nicht moeglich"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
KOPIE=$(wslpath -u "$KOPIE_WIN")
|
||||
PLANORDNER=$(wslpath -u "$PLANORDNER_WIN")
|
||||
@@ -48,14 +77,20 @@ TMPKOPIE=$(mktemp -d /tmp/plankritik-mut-XXXXXX)
|
||||
trap 'rm -rf "$TMPKOPIE"' EXIT
|
||||
|
||||
cp -a "$KOPIE/." "$TMPKOPIE/"
|
||||
chmod 700 "$TMPKOPIE"
|
||||
find "$TMPKOPIE" -name __pycache__ -type d -prune -exec rm -rf {} +
|
||||
|
||||
MUSTER_SCHALTER=""
|
||||
if [ "$MODUS" = "muster" ]; then
|
||||
MUSTER_SCHALTER="--nur-muster"
|
||||
echo "modus: muster (nur Musterpruefung, kein Mutant gefahren)"
|
||||
else
|
||||
echo "modus: voll"
|
||||
fi
|
||||
|
||||
timeout "$BUDGET_S" python3 /mnt/d/Claude/.vault-tools/plan-kopie/mutanten_lauf.py --wurzel "$TMPKOPIE" --mutanten "$MUTANTEN_TOML" $MUSTER_SCHALTER
|
||||
timeout -k 15 "$BUDGET_S" unshare --map-current-user --net \
|
||||
python3 -u /mnt/d/Claude/.vault-tools/plan-kopie/mutanten_lauf.py \
|
||||
--wurzel "$TMPKOPIE" --mutanten "$MUTANTEN_TOML" --zeitlimit "$ZEITLIMIT_S" $MUSTER_SCHALTER
|
||||
EXITCODE=$?
|
||||
if [ "$EXITCODE" -eq 124 ]; then
|
||||
echo "ZEITGRENZE: Mutantenlauf nach $BUDGET_S s abgebrochen; Mutanten ohne Zeile oben sind nicht gefahren"
|
||||
|
||||
Reference in new issue
Block a user