perf(skills): optimize sleeps and modularize duplication with multi-agent consensus PASS

- OP-1: Implement reactive _wait_session_gone in lib.sh and stop_session.sh with set -e || true guard
- OP-2: Event-driven MQTT subscribe handshake with sub_pid liveness in delegate-job
- OP-3: Replace CPU time.sleep(0.5) spin with threading.Event wait in reconcile.sh
- OP-4: Define mam_tmux dispatcher targeting resolved _REAL_TMUX_PATH to prevent recursion
- OP-6 & OP-7: Add token variables and bash version source check in lib.sh
- Integrate approved optimization plan and PASS review reports from all agents
This commit is contained in:
2026-07-11 10:08:41 +09:00
parent 25de01eaad
commit 7eeb4b709a
11 changed files with 1148 additions and 24 deletions
@@ -116,7 +116,23 @@ cmd_submit() {
>"$logf" 2>&1 &
local sub_pid=$!
echo "subscriber pid: $sub_pid (log: $logf)"
sleep 1 # give the subscriber time to CONNACK + SUBSCRIBE before the agent runs
# Wait for the subscriber to CONNACK + SUBSCRIBE (reactive handshake)
local sub_ready=0
for ((i = 0; i < 25; i++)); do
if kill -0 "$sub_pid" 2>/dev/null; then
if grep -q '^SUBSCRIBED ' "$logf" 2>/dev/null; then
sub_ready=1
break
fi
else
echo "ERROR: subscriber died early (pid=$sub_pid, check $logf)" >&2
exit 1
fi
sleep 0.2
done
if [ "$sub_ready" -ne 1 ]; then
echo "WARNING: subscriber subscribe handshake timed out — falling back to proceed" >&2
fi
# 3) run the agent (or print the command for dry-run / missing binary)
local pub="$PY $SCRIPT_DIR/scripts/publish_event.py --registry-dir $REGISTRY_DIR --job $JOB_ID"
@@ -202,7 +218,23 @@ Task: $PROMPT"
>"$logf" 2>&1 &
local sub_pid=$!
echo "subscriber pid: $sub_pid (log: $logf)"
sleep 1
# Wait for the subscriber to CONNACK + SUBSCRIBE (reactive handshake)
local sub_ready=0
for ((i = 0; i < 25; i++)); do
if kill -0 "$sub_pid" 2>/dev/null; then
if grep -q '^SUBSCRIBED ' "$logf" 2>/dev/null; then
sub_ready=1
break
fi
else
echo "ERROR: subscriber died early (pid=$sub_pid, check $logf)" >&2
exit 1
fi
sleep 0.2
done
if [ "$sub_ready" -ne 1 ]; then
echo "WARNING: subscriber subscribe handshake timed out — falling back to proceed" >&2
fi
# Format instruction block
local pub="$PY $SCRIPT_DIR/scripts/publish_event.py --registry-dir $REGISTRY_DIR --job $JOB_ID"
@@ -185,8 +185,13 @@ def main(argv=None) -> int:
if rc != 0:
logger.warning("broker disconnected (rc=%s); will retry reconnect", reason_code)
def on_subscribe(_c, _u, mid, granted_qos, _props=None):
for topic in subscribed_topics:
print(f"SUBSCRIBED {topic}", flush=True)
client.on_connect = on_connect
client.on_disconnect = on_disconnect
client.on_subscribe = on_subscribe
client.reconnect_delay_set(min_delay=1, max_delay=16)
mqtt_common.with_retry(
lambda: client.connect(config.host, config.port, config.keepalive),