You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci(cloak): stop the optional cloak image from gating releases
- release job no longer needs build-and-push-cloak; the cloak job is
continue-on-error. A ~200MB Chromium bake per arch (arm64 under QEMU)
must not sit on the critical path of a GitHub Release, and a flake in
an optional layer must not fail a release whose artifact is deva.sh
- cloak holds no agent CLIs and only changes when Dockerfile.cloak,
cloak-entrypoint.sh or CLOAKBROWSER_WRAPPER_VERSION change -- never on
a version bump. Nightly already skipped it for the same reason
- release notes: :cloak is the rolling tag, :vX.Y.Z-cloak may lag
- skill: goto(data:,{domcontentloaded}) not setContent() -- setContent
hangs on a fresh daemon page waiting for a load event that never fires
- dev log records the live proofs that close the 07-21 unverified gap:
RFB 003.008 on :5900, CDP on :9222, connectOverCDP drives the live
browser and the daemon survives client disconnect
Refs #456
echo "- \`ghcr.io/${{ env.IMAGE_NAME }}:${RELEASE_TAG}-cloak\` (published when the non-gating cloak build finishes; it may lag this release)" >> release_notes.md
Copy file name to clipboardExpand all lines: DEV-LOGS.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,14 @@
13
13
- Minimal markdown markers, no unnecessary formatting, minimal emojis.
14
14
- Reference issue numbers in the format `#<issue-number>` for easy linking.
15
15
16
+
# [2026-07-27] Dev Log: cloak release policy + closing the unverified VNC/daemon gap #456
17
+
- Why: two loose ends before shipping. (1) The 2026-07-21 entry left "x11vnc serving RFB and a live daemon inside the built image" unverified — that env couldn't apt-install. (2) release.yml made the GitHub Release `needs` the cloak build, so a ~200MB Chromium bake per arch (arm64 under QEMU) sat on the critical path of every release, including patch releases that touch nothing in that layer.
18
+
- What:
19
+
- Live verification against the built `:cloak` image (wrapper 0.5.2, Chrome 146.0.7680.177): x11vnc answers the RFB handshake on :5900 with `RFB 003.008`; cloak-browserd serves CDP on 127.0.0.1:9222; a separate playwright-core client `connectOverCDP`s, drives a page, and the daemon survives that client's `close()`. Stealth confirmed live: UA spoofs `Windows NT 10.0`, `navigator.webdriver === false`. First probe raced the daemons — both are up ~4s after boot, so poll the ports, don't poll only the display.
20
+
- Agent-facing footgun found while proving it: `page.setContent()` on a fresh daemon page hangs waiting for a `load` event that never fires. `goto('data:text/html,...', {waitUntil:'domcontentloaded'})` is the working equivalent — documented in the skill.
21
+
- Release policy: cloak is an auxiliary image on its own cadence, NOT a general releasable profile. It holds no agent CLIs, and its content only moves when Dockerfile.cloak / cloak-entrypoint.sh / CLOAKBROWSER_WRAPPER_VERSION move — never on a deva.sh version bump. So the cloak job is now `continue-on-error: true` and is OUT of the `release` job's `needs`; release notes present `:cloak` as the rolling tag and mark `:vX.Y.Z-cloak` as possibly lagging. Nightly already skipped cloak for the same reason.
22
+
- Result: all four live proofs pass; `make test-cloak` green. The structural point: an optional 200MB capability layer must never be able to fail the mandatory release artifact. Follow-up filed for the profile registry — profile identity is currently duplicated across deva.sh, Makefile, and three workflows.
- Why: three asks for auth sites in the cloak browser — (1) VNC auto-secured with a password, (2) an always-on browser the agent can drive freely, (3) mount what preserves the whole session to the host. Verified the load-bearing assumption first in a throwaway cloak container: a persistent CloakBrowser launched with `--remote-debugging-port` exposes a CDP endpoint a SEPARATE Playwright client reaches via connectOverCDP, drives, and the browser survives that client disconnecting. So one daemon can back both the human (VNC) and the agent (CDP).
0 commit comments