From 252e22ec80806a896b9de848f337749fce00f2d4 Mon Sep 17 00:00:00 2001 From: vitya Date: Fri, 11 Sep 2026 23:31:37 +0300 Subject: [PATCH] =?UTF-8?q?fix(browser-operator):=20PID=20=D0=B0=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=B4=D1=8B=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE?= =?UTF-8?q?=20=D0=BD=D0=B0=D1=81=D1=82=D0=BE=D1=8F=D1=89=D0=B8=D0=B9=20(/p?= =?UTF-8?q?roc/$$/winpid),=20driver.lock=20=D1=80=D1=83=D0=BA=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8=20=D0=BD=D0=B5=20=D1=82=D1=80=D0=BE=D0=B3=D0=B0=D1=82?= =?UTF-8?q?=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/browser-operator.skill | Bin 4072 -> 4464 bytes skills/browser-operator/SKILL.md | 13 +++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dist/browser-operator.skill b/dist/browser-operator.skill index 7f03cf55def544e4d982bec95fbe5826e51dea48..0d045959946449a42a9831aac6bece530ff91680 100644 GIT binary patch delta 4418 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 diff --git a/skills/browser-operator/SKILL.md b/skills/browser-operator/SKILL.md index ddb2a95..e5a84cb 100644 --- a/skills/browser-operator/SKILL.md +++ b/skills/browser-operator/SKILL.md @@ -47,11 +47,20 @@ description: > ```bash BL="$HOME/.config/browser-harness/bin/browser-lease.sh" -bash "$BL" acquire --holder "pi:$$" --ttl 900 --pid $$ --tool browser # 0 = взял, 3 = занято, 2 = ошибка +HOLD="manual:$$" # метка держателя +MYPID="$(cat /proc/$$/winpid 2>/dev/null || echo 0)" # НАСТОЯЩИЙ windows-PID +bash "$BL" acquire --holder "$HOLD" --ttl 900 --pid "$MYPID" --tool browser # 0 = взял, 3 = занято, 2 = ошибка # … работа … -bash "$BL" release --holder "pi:$$" +bash "$BL" release --holder "$HOLD" ``` +**PID — только настоящий.** MSYS `$$` это НЕ windows-PID: по нему живость аренды врёт +(мёртвый держатель выглядит живым, живой — мёртвым). В bash бери `/proc/$$/winpid`, +в pi/Node — `process.pid`; не знаешь — передай `0` («неизвестен», живость решит TTL). + +**`driver.lock` руками не трогай** (в том числе пустой или «битый» — это окно чужой +записи): отбор мёртвой аренды делает CLI по `ts`/TTL/мёртвому PID. Чужую аренду не снимай. + Контракт аренды (формат файла, TTL, кого связывать): вики mappa `concepts/browser-lease-contract`.