la sesión extra moría por un BYTE 0x01 donde debía ir la retroreferencia del sed
Abrir una segunda sesión fallaba con «Error: ninguna imagen empieza por "\u{1}" — traela con hammer
qorpa pull». El `\u{1}` no era un misterio: la línea que extrae el sha de la imagen tenía un `sed`
con `\1` de reemplazo, y el fichero terminó guardando el BYTE 0x01 literal en su lugar. O sea que
`qorpa create --base` recibía el carácter de control.
Se reemplaza por un `awk` que parte por comillas: no tiene retroreferencias ni nada que otra
herramienta pueda reinterpretar al escribir el fichero. Y si la extracción sale vacía, ahora corta
con un mensaje que nombra el fichero, en vez de pasarle basura a qorpa.
Comprobado: la segunda sesión se crea y arranca (claude-sergio-3, Claude 2.1.240) con la primera
todavía abierta.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -77,7 +77,12 @@ while ! _libre "$_inst"; do
|
|||||||
done
|
done
|
||||||
if [ ! -d "$BASEDIR/$_inst" ]; then
|
if [ ! -d "$BASEDIR/$_inst" ]; then
|
||||||
echo "claude: abro una sesión más ($_inst) — clonando la capa, ~1 s" >&2
|
echo "claude: abro una sesión más ($_inst) — clonando la capa, ~1 s" >&2
|
||||||
_sha=$(sed -n 's/^base = "sha256:\(.*\)"//p' "$BASEDIR/$_base/instance.toml")
|
# ⚠ SIN RETROREFERENCIAS: acá había un `sed` con `\1` y el fichero terminó guardando el
|
||||||
|
# BYTE 0x01 en su lugar, así que el sha salía como el carácter de control y `qorpa create`
|
||||||
|
# moría con «ninguna imagen empieza por "\u{1}"». `awk` parte por comillas y no tiene
|
||||||
|
# nada que una herramienta pueda reinterpretar.
|
||||||
|
_sha=$(awk -F\" '/^base *=/ {sub(/^sha256:/,"",$2); print $2; exit}' "$BASEDIR/$_base/instance.toml")
|
||||||
|
[ -n "$_sha" ] || { echo "claude: no pude leer el sha de la imagen en $BASEDIR/$_base/instance.toml" >&2; exit 1; }
|
||||||
takana qorpa create "$_inst" --base "$_sha" >/dev/null || { echo "claude: no pude crear $_inst" >&2; exit 1; }
|
takana qorpa create "$_inst" --base "$_sha" >/dev/null || { echo "claude: no pude crear $_inst" >&2; exit 1; }
|
||||||
cp "$BASEDIR/$_base/instance.toml" "$BASEDIR/$_inst/instance.toml"
|
cp "$BASEDIR/$_base/instance.toml" "$BASEDIR/$_inst/instance.toml"
|
||||||
rm -rf "$BASEDIR/$_inst/upper"
|
rm -rf "$BASEDIR/$_inst/upper"
|
||||||
|
|||||||
Reference in New Issue
Block a user