| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| checksums.txt | 2026-08-03 | 536 Bytes | |
| pinchtab-darwin-amd64 | 2026-08-03 | 29.5 MB | |
| pinchtab-linux-arm64 | 2026-08-03 | 26.7 MB | |
| pinchtab-darwin-arm64 | 2026-08-03 | 27.7 MB | |
| pinchtab-linux-amd64 | 2026-08-03 | 28.9 MB | |
| pinchtab-windows-amd64.exe | 2026-08-03 | 29.4 MB | |
| pinchtab-windows-arm64.exe | 2026-08-03 | 26.9 MB | |
| README.md | 2026-08-03 | 52.0 kB | |
| v0.15.1 source code.tar.gz | 2026-08-03 | 4.1 MB | |
| v0.15.1 source code.zip | 2026-08-03 | 5.2 MB | |
| Totals: 10 Items | 178.5 MB | 0 | |
Changelog
- [90581b] Merge pull request [#609] from dlronray/codex/pinchtab-backlog-20260713
- [d2cecb] Merge pull request [#611] from pinchtab/dependabot/npm_and_yarn/npm/brace-expansion-1.1.16
- [ca73fa] Merge pull request [#612] from pinchtab/dependabot/npm_and_yarn/npm/js-yaml-4.3.0
- [4efcae] Merge pull request [#613] from pinchtab/fix/orchestrator-attach-test-flake
- [d7b16d] Merge pull request [#617] from pinchtab/fix/issue-616-nav-headless-copy
- [e9c095] Merge pull request [#623] from dertbv/nav-timeout-option
- [7d2997] Merge pull request [#624] from pinchtab/feat/improvements
- [980177] Merge pull request [#625] from pinchtab/fix/new-tab-navigation-readiness
- [a61e86] Merge pull request [#626] from pinchtab/fix/cli-errors-and-windows-screenshots
- [90c66e] chore(deps-dev): bump brace-expansion from 1.1.12 to 1.1.16 in /npm
- [90f4bf] chore(deps-dev): bump js-yaml from 4.2.0 to 4.3.0 in /npm
- [9788be] decision: 'scroll down' moves 800px on the CLI and 120px via MCP, and the MCP tool documents no magnitude, so an agent silently gets a sixth of the distance (PIN-233)
- [3fcf58] feat: CLI persists each snapshot's vocabulary token per tab and echoes it on the next action (PIN-084)
- [75fdb2] feat: GET /visible and the capture snapshot's visible field answer… (PIN-188)
- [3ced64] feat: MCP tools carry the snapshot vocabulary token so a superseded ref is refused not mis-resolved (PIN-084)
- [14f4eb] feat: add MCP back, forward and reload tools (PIN-065)
- [baa22c] feat: census-test the isolated-handle ambient-globals rule (PIN-070)
- [679d1f] feat: expose scheduler.maxBatchSize as an operator config key (PIN-192)
- [8d22f5] feat: make a snapshot ref denote a DOM node rather than a row index, so refs survive a change of filter, selector or depth (PIN-090)
- [48b420] feat: make background-tab capture activation configurable via instanceDefaults.captureAllowActivation
- [c5bd81] feat: reclaim quarantined profiles on demand with pinchtab profiles prune (PIN-194)
- [d9b711] feat: report the launched browser binary version on /stealth/status (PIN-074)
- [0e6143] feat: surface quarantined profiles and their total size where operators already look PIN-041
- [01795a] fix(bridge): open new tabs in background to stop foreground focus-steal
- [a338f0] fix: --server redirects the destination but the credential stays ambient, so pointing the CLI at any host sends the local config's server.token to it in cleartext (PIN-247)
- [c65bcc] fix: --server redirects the destination but the credential stays ambient, so pointing the CLI at any host sends the local config's server.token to it in cleartext (PIN-247)
- [a66c6c] fix: -v with a persisted server.logLevel silently does not raise the level, and nothing on screen says why (PIN-104)
- [95d4b0] fix: /box returns frame-relative coordinates for cross-frame refs PIN-032
- [0e3f7b] fix: /network serialises the whole request list twice under entries and items PIN-030
- [d02906] fix: /text default Readability mode can drop 97% of a page and reports truncated:false PIN-012
- [cdf747] fix: CI still hides the failure output section, so the one log that cannot be re-run locally prints bare test names (PIN-164)
- [046dff] fix: CLI claims the server is not running when it is running but unhealthy PIN-015
- [a01b7d] fix: Chrome-backed tests pass their user-data-dir to t.TempDir, so Chrome's post-test writes race the cleanup and red an arbitrary card's gate with 'directory not empty' (PIN-222)
- [1a2cdb] fix: GET /visible reads inline style only, so a fixed-position element styled by a stylesheet reports not visible (PIN-195)
- [14d982] fix: GET /visible reads inline style only, so a fixed-position element styled by a stylesheet reports not visible (PIN-195)
- [9a0c55] fix: MCP fill reports a wrong-typed value as a missing argument, so a model that sends value: 2024 is told to send the value it just sent (PIN-242)
- [d2056c] fix: MCP pinchtab_fill cannot clear a field - it rejects an empty value, while the raw API documents "text": "" as the way to clear (PIN-206)
- [ca96bb] fix: MCP pinchtab_fill silently writes nothing and reports success, because the layer collects value while the bridge action reads text (PIN-120)
- [de3a38] fix: MCP sends browser in the body where the router only reads the query (PIN-069)
- [5fc28b] fix: MCP silently drops maxChars, maxTokens and depth when a client sends them as strings (PIN-046)
- [46d6f5] fix: MCP silently drops numeric arguments sent as strings through the strict accessor (PIN-046)
- [5b81bf] fix: PINCHTAB_PORT is advertised by the CLI but read nowhere, and server has no --port flag PIN-018
- [33f017] fix: POST /record/start answered a bespoke recording_disabled on the bridge mux while the orchestrator front returned screencast_disabled for the same route (PIN-216)
- [aadd35] fix: POST /record/stop and GET /record/status have no capability guard on the bridge mux, so screencast disabled still stops recordings and reports recording state (PIN-244)
- [4bd375] fix: TrimHTML keeps the base64 payload in the CSS quoting the serialiser actually emits and deletes an Italian/Portuguese 'Data:<date>' label, so anchor the rule on the RFC grammar behind one fixture table (PIN-226)
- [fa734e] fix: a blocking JS dialog is diagnosed on one path and misreported on every other, including a wrong remedy and retryable:true that loop forever (PIN-110)
- [d8fdb2] fix: a clip with Scale unset is discarded by CDP and returns the full viewport (PIN-051)
- [d79c81] fix: a config file carrying the refused activity.stateDir key blocks every later config write off a TTY, and the refusal says remove the key while no command removes one (PIN-183)
- [7dafe1] fix: a configured paid solver whose API key is missing is dropped at debug level (PIN-078)
- [4fdd60] fix: a configured-but-keyless solver is rejected as unknown (PIN-082)
- [d9d493] fix: a configured-but-keyless solver is rejected as unknown, and key-gated membership is spelled three times (PIN-082)
- [d4feab] fix: a cookie the browser refused is reported as success to MCP and gives no reason to anyone, because /cookies answers 200 with only counts (PIN-228)
- [ec717a] fix: a cut PostData carries no truncated signal, so a clipped request… (PIN-114)
- [9c5daf] fix: a dashboard config PUT that touches only the port is diffed as a security change, so every edit demands elevation (PIN-071)
- [5e12b1] fix: a failed network export abandons its reserved name, so the obvious file is empty and the next export hides behind a -1 suffix (PIN-050)
- [2000e7] fix: a frame-scoped snapshot and text return child content under the parent's title and URL, with no field disclosing the scope (PIN-208)
- [46cbe8] fix: a malformed numeric MCP argument is silently dropped (PIN-097)
- [e488f2] fix: a measured visible:false is erased from capture payloads by omitempty (PIN-057)
- [6e9365] fix: a misspelled or miscased /action query parameter is still silently dropped, so ?modifers=8 dispatches a plain click and answers 200 (PIN-263)
- [ba31fc] fix: a misspelled or miscased /action query parameter is still silently dropped, so ?modifers=8 dispatches a plain click and answers 200 (PIN-263)
- [b5b244] fix: a ref with a zero backend node id resolves as success in the frame scope (PIN-087)
- [d06551] fix: a renderer that refuses the read-the-view capture fails the whole screenshot instead of falling back to a fresh composite (PIN-140)
- [351fc6] fix: a rotated Windows or Linux persona reports architecture arm on an ARM host, contradicting its own Win64/x86_64 user agent (PIN-199)
- [ea277e] fix: a schema version bump is invisible to the Go tests (PIN-109)
- [953a7b] fix: a scoped /capture returns child content with no disclosure while epoch.frameId names the main frame, and the docs say the two are the same value (PIN-208)
- [c13b1d] fix: a scroll direction aimed at an element was reinterpreted as scroll-into-view, discarding the keyword, the distance and the sign (PIN-233)
- [27e37a] fix: a stale current-tab cache breaks reads and actions after a server restart (PIN-073)
- [e0750c] fix: a stale-ref click that submits a form places the order and then answers 'ref not found and recovery failed', so the natural retry double-submits (PIN-234)
- [ff22ab] fix: a typo in autoSolver.solvers silently changes which solvers run (PIN-068)
- [94c807] fix: a working paid solver is warned as having no API key whenever it does not handle the current page (PIN-089)
- [f747d8] fix: a wrong-typed selector alias is reported as a missing selector and can silently fall through to another target, closing the census gap the review routed back (PIN-242)
- [9d1915] fix: a zero scroll delta scrolls down 120px instead of not scrolling — the refusal was keyed to the flag spelling and lived in the CLI, so scroll 0 and every HTTP caller still hit it (PIN-217)
- [179cfc] fix: activity source filter discards events whose source spelling differs from its log file name
- [dfdd2a] fix: address review feedback on captureAllowActivation defaults and add real-browser regression test
- [3ba9ce] fix: after a browser target crash, action errors report selector problems PIN-025
- [7b3ca6] fix: align cli failure coverage and screenshot docs
- [8d2032] fix: align network/clear e2e tests with the intentional intercept capability gate
- [d02a99] fix: allow cloak doctor cold starts
- [539fbb] fix: an inline-CSS data URI survives TrimHTML and eats the prompt budget (PIN-061)
- [434fba] fix: an installed instance lookup short-circuited the pinchtab.pid check, so a profile held by a second pinchtab was reported idle and deleted (PIN-250)
- [5c4d1c] fix: an off-allowlist click traps the tab in 403 idpi_domain_blocked with no hint that back recovers it (PIN-081)
- [1fe928] fix: an unlisted os/browser pair returns a fingerprint with an empty userAgent (PIN-121)
- [b6808f] fix: an unlisted os/browser pair returns a fingerprint with an empty userAgent and no error (PIN-121)
- [e95a23] fix: an unrecognised --button name is silently reinterpreted as left, so a misspelled right-button action succeeds as a left-button one (PIN-232)
- [f571cc] fix: an unresolvable ref answers 500 retryable:true with the recovery matcher's internal score, while the same ref on a declared submit answers 404 (PIN-238)
- [dede3b] fix: an unsatisfiable drag body answers HTTP 500 marked retryable while the bad-button check in the same handler answers 400, so an agent retries a request that can never succeed (PIN-256)
- [467f4e] fix: audit never collects uncaught JS errors and its summary score is accessibility-only, so a broken page reports ok at 95 (PIN-122)
- [a6bd5f] fix: block SSRF via IPv4 embedded in 6to4 and NAT64 IPv6 addresses
- [6da32a] fix: both Cloudflare title-fallback blocks are unreachable, and the ChallengeType vocabulary has three owners (PIN-128)
- [5c684f] fix: bound clipboard calls and debias IDPI snapshots
- [0519bb] fix: bound the tab-instance cache by wiring the existing reconciler into maintenance
- [77b784] fix: bridge ignores the configured browser target binary and only works when discovery happens to succeed PIN-014
- [6258f7] fix: browser tests skip as chromium-not-installed because they PATH-probe instead of using discovery PIN-023
- [d6e1a1] fix: capability refusal metadata has a second owner in the shorthand front, which is the mechanism that made one route answer two disabled codes, and its fallback invents config keys (PIN-237)
- [3abbe1] fix: capability refusals say 'endpoint' for a feature label, so /storage cites stateExport PIN-031
- [65d95c] fix: capture boundingBox returns the content box while /box and annotate return the border box, so overlays under-cover every bordered element (PIN-119)
- [ec01d0] fix: capture bounds are off by the scroll offset because AnnotateBounds transforms getBoxModel quads the wrong way (PIN-034)
- [b3536e] fix: capture output filenames collide within the same second, silently overwriting earlier images (PIN-050)
- [d3aa82] fix: capture output filenames collide within the same second, silently overwriting earlier images (PIN-050)
- [a5157d] fix: capture output filenames collide within the same second, silently overwriting earlier images (PIN-050)
- [b7a61f] fix: carry sessions.agent through the wire twin and make it addressable from config get/set (PIN-184)
- [30e87a] fix: cdptk annotation rects resolve in the main world, and the frame walk loses offsets from the isolated handle (PIN-062)
- [d0f983] fix: clarify nav headless messaging
- [70972d] fix: click coordinates are read from page-controllable geometry (PIN-063)
- [b642fe] fix: clicking a link returns 409 with no remedy, though the CLI already renders details.hint/remedy PIN-021
- [94dd49] fix: compare --fail-on-diff intermittently reds two identical pages, because brokenAssets is compared by count and a transient failed request on one side alone is indistinguishable from a regression (PIN-240)
- [00d9e9] fix: compare --fail-on-diff passes a staging deploy that introduced an uncaught JS error, while failing one that only logged console.error (PIN-126)
- [111989] fix: config get prints an empty line for a derived key, so nobody can ask where their profiles are kept (PIN-165)
- [20bbd6] fix: config get/set print encryption and captcha API keys in clear
- [9d41b0] fix: config set browser.proxy.username/password/bypassList/geo.* is… (PIN-178)
- [788b8f] fix: config set/get reject the autoSolver and scheduler sections, so documented keys are unreachable from the CLI (PIN-085)
- [6b86f2] fix: confine profile import destinations
- [7a9869] fix: constrain profile import paths
- [6be292] fix: crashes.recent serialises as null while its sibling failures.recent is always an array, and the metrics doc publishes [] for both (PIN-181)
- [642719] fix: daemon start/restart leak raw launchctl errors when the daemon is not installed PIN-013
- [948cb7] fix: daemon stop and uninstall report success for a service that was never installed, because the not-installed guard is a two-name allowlist (PIN-098)
- [4cc56f] fix: daemon stop and uninstall report success for a service that was… (PIN-098)
- [b82f4c] fix: dashboard identifies activity events by request id, dropping and duplicating rows
- [75e120] fix: default /text extraction fuses adjacent fields, so a status code and timestamp return as one unparseable number (PIN-197)
- [2015f0] fix: deferring the config-load diagnostics means a flag error before the emit discards them entirely (PIN-115)
- [80060a] fix: details.remedy means four different things across ten producers, so an agent that executes it mis-runs eight — one validated constructor owns the field, and one undocumented remedy is dropped from the TLS refusal (PIN-193)
- [980384] fix: download -o prints a JSON blob with truncated base64 instead of confirming the saved file (PIN-048)
- [6722fa] fix: drag <from> <to> silently no-ops on HTML5 draggables while the dragX/dragY form works, though the help presents them as equivalent (PIN-130)
- [79da4b] fix: drag ignores --button entirely — the flag is registered, always sent, and never read, so a right-button drag reports success as a left-button drag (PIN-202)
- [d9a83c] fix: drop client-supplied websocket proxy authorization when no instance token is set
- [9f983c] fix: e2e stack captures an empty pinchtab log because every service runs server without --verbose PIN-029
- [525e7e] fix: eliminate data races in session store auth and config accessors
- [59cf08] fix: failed profile import leaves a partial directory that blocks every retry
- [977dd4] fix: find prints nothing at all on no-match, so an agent cannot tell 'no such element' from a failed command (PIN-116)
- [528bae] fix: fingerprint rotate drops all User-Agent Client Hint headers, leaving a UA that claims Edge on Windows with no matching hints (PIN-127)
- [1ae4e9] fix: fingerprint rotate with no os at all is refused, when the host's identity is the obvious answer (PIN-123)
- [e8204c] fix: five command groups exit 0 on an unknown subcommand, so a typo'd cache/cookies/session verb silently no-ops and reports success (PIN-117)
- [09ac3a] fix: five command groups exit 0 on an unknown subcommand, so a typo'd cache/cookies/session verb silently no-ops and reports success (PIN-117)
- [0ca06b] fix: forward the outer request id across every proxy hop so one request is traceable in both logs (PIN-138)
- [abfd2b] fix: four module-wide censuses outside the converted pair still hand-roll their walk, so a nested git worktree reds autosolver, stealth, fileout and cdptk with false positives (PIN-254)
- [a7cc99] fix: fourteen config keys have a real default that config get cannot see, because each default is written inline inside its consumer (PIN-169)
- [0ecc1e] fix: ghost-chrome capped the accessible name on one of five sources while chrome and cloak emit it in full, so a matching key meant different things per provider (PIN-155)
- [f8d7ed] fix: give batch and macro a single per-item writer that carries the paused-tab code and hint (PIN-179)
- [8a4bfe] fix: give cloak doctor targeted repair hints and drop the implied identity check
- [bde4de] fix: guard the post-step intent check in trySemantic with intentTypeOf (PIN-055)
- [338f5a] fix: guard the post-step intent check in trySemantic with intentTypeOf (PIN-055)
- [2485eb] fix: handoff pause blocks clicks but not navigate, reload or back (PIN-049)
- [d97f4a] fix: harden bridge lifecycle and background browser actions
- [7a311f] fix: harden bridge lifecycle edge cases
- [52074e] fix: harden cli errors and windows screenshots
- [0b9a3d] fix: harden config and upload path handling
- [76ddb3] fix: harden navigation timeout handling
- [540d59] fix: harden new-tab navigation readiness
- [ae240c] fix: health error messages cut a non-ASCII response body mid-rune (PIN-060)
- [95ca8c] fix: instance repository aliases caller structs, racing orchestrator status writes
- [29726f] fix: kind=scroll honours a supplied deltaX/deltaY through one shared spelling tolerance (PIN-262)
- [2200f4] fix: leaf commands silently discard stray positional arguments, so a path typed without -o exits 0 having saved somewhere else (PIN-190)
- [fc6e2f] fix: make POST /shutdown actually stop the bridge HTTP listener
- [4242e4] fix: make attach indicator port interpolation safe
- [e9380b] fix: maxChars slices bytes not characters, injecting U+FFFD into /text and /html responses (PIN-022)
- [c33dd2] fix: maxChars slices bytes not characters, injecting U+FFFD into /text and /html responses PIN-022
- [52f1ba] fix: mouse-wheel still scrolls a 120px notch for an explicit zero delta, so the rule scroll enforces has two answers — and the MCP scroll tool routes to wheel (PIN-225)
- [e5950c] fix: name the e2e server log level explicitly instead of borrowing --verbose (PIN-101)
- [5baf1c] fix: name the e2e server log level explicitly instead of borrowing --verbose, whose meaning changed under the logging fix (PIN-101)
- [c00527] fix: name the e2e server log level explicitly instead of borrowing --verbose, whose meaning changed under the logging fix (PIN-101)
- [58c00e] fix: nav and reload hide the landed URL the server already returned (PIN-064)
- [fbfcee] fix: nav hint pushes a session command that errors out when agent sessions are disabled PIN-016
- [d4f4a8] fix: network response bodies are cut at a raw byte offset, returning U+FFFD and undecodable base64 PIN-035
- [e06c8a] fix: no surface can select an empty-valued option, so a dropdown cannot be reset to its placeholder (PIN-209)
- [be0f68] fix: nodeId is read for all nine action tools but declared on three, so six lose discovery and validation (PIN-144)
- [b3a300] fix: nth: is one-based over role/label/testid selectors and zero-based over css/xpath/text, so the documented nth:0 finds nothing on a whole selector family (PIN-163)
- [6abf2d] fix: observability.activity.stateDir is settable and persisted but the runtime discards it, so config set succeeds and changes nothing (PIN-174)
- [69c7ab] fix: on-screen nodes report visible:false on scrolled pages because isVisible is still told the box is document-relative (PIN-039)
- [128e92] fix: one Chrome profile still points at a bare t.TempDir because the census reads only the inline spelling, not the local variable most sites use (PIN-222)
- [cb7475] fix: one unconfirmed dashboard click deletes the live browser's profile directory out from under it and answers 200, and the running flag that would guard it is never assigned (PIN-250)
- [dc8237] fix: os random refuses a linux-only browser while listing it as an available pair (PIN-149)
- [1b5887] fix: page content can close the untrusted-content boundary using case or spacing variants
- [78c08b] fix: pin the navigation pass-through and publish the recovery record only where a click was dispatched (PIN-234)
- [59a970] fix: pinchtab server exits 1 with zero output on startup failure because non-verbose mode discards all logs PIN-017
- [88c0b3] fix: pinchtab_click reads humanize but never declares or forwards it (PIN-118)
- [ac499e] fix: pinchtab_hover forwards a humanize flag actionHover never reads… (PIN-186)
- [899eae] fix: pinchtab_scroll discards a supplied pixels:0 when a direction is present and scrolls the full keyword step instead (PIN-260)
- [dc97bc] fix: positional wrappers over a text: selector index semantic rank, so nth:1 can resolve earlier in the document than nth:0 (PIN-044)
- [97ee5f] fix: postData is published as undecoded base64 concatenated chunk-wise, so decode each entry and join the raw bytes with the cap measuring the decoded body (PIN-145)
- [532770] fix: probe the launched browser and advertise its real version instead of a hardcoded Chrome version (PIN-074)
- [7c489e] fix: proxied responses carry two X-Request-Id values and only one is… (PIN-138)
- [ecaa7c] fix: quarantined profiles accumulate forever: prune older siblings at quarantine time, keeping the most recent per profile (PIN-043)
- [5ad1fa] fix: quarantined profiles accumulate forever: prune older siblings at quarantine time, keeping the most recent per profile (PIN-043)
- [079bed] fix: quarantined profiles keep the original name in profile.json, so four directories share one profile ID PIN-027
- [f18ffc] fix: record stop straight after start discards the recording with 'no frames captured', naming neither the cause nor a remedy (PIN-215)
- [f3bcf4] fix: record why a request failed in all three failure sinks and log 4xx/5xx at a severity an operator can route on (PIN-243)
- [a997e3] fix: refuse an action whose ref carries a superseded snapshot vocabulary token (PIN-084)
- [cc1684] fix: remove the always-true audit interactiveElements.visible field (PIN-059)
- [2797fc] fix: resolve dialog-scoped selector and clip nodes in the isolated world, not the main world (PIN-045)
- [ba2131] fix: restore dialog remediation hint in batch action errors
- [415f4e] fix: retained binary bodies are corrupted because base64Encoded is never set (PIN-056)
- [3d06e4] fix: retained bodies must be byte-exact prefixes, not display-truncated with a fabricated ellipsis (PIN-040)
- [849fa3] fix: return every solver attempt from trySolvers instead of one fabricated entry PIN-008
- [ab5cdd] fix: route.attempts records a phantom accepted entry and misattributes the skipped provider PIN-011
- [4d3550] fix: sanitize page-controlled strings in error details, not just the message
- [bd7f8e] fix: scope E2E_SERVER restore to the retain-body script instead of leaking via EXIT trap
- [5ef2e6] fix: scrape --preview reports 'N page(s) discovered of 0' because totalDiscovered only ever counts sitemap URLs PIN-024
- [076f9b] fix: scrape forwards the HTTP crawler's pre-render recommendations, so the report calls an enriched 2012-char page thin and advises enrichment it already did (PIN-205)
- [3793c5] fix: scrape forwards the HTTP crawler's pre-render recommendations, so the report calls an enriched page thin and advises enrichment it already did (PIN-205)
- [d396b3] fix: screenshot selector is accepted and silently ignored, always returning the full viewport (PIN-033)
- [1ac075] fix: screenshot, pdf and annotate still burn the full 30s timeout on an undiagnosed error when a JS dialog blocks the tab — the visual-export prelude has no dialog guard (PIN-221)
- [08e8c1] fix: scroll -300 is documented twice and never works, and the only workaround silently scrolls the wrong tab (PIN-136)
- [5146c7] fix: scroll -300 is documented twice and never works, and the only workaround silently scrolls the wrong tab (PIN-136)
- [c13a1b] fix: server-mode metrics count only successful requests, so requestsFailed is structurally always 0 (PIN-093)
- [4a6456] fix: server.logLevel is written into every bridge child config and then ignored by the bridge (PIN-099)
- [73fef0] fix: session revoke rejects the token create returns, with a bare 404 that never mentions the session id is a different value (PIN-108)
- [84a418] fix: set geo rejects negative coordinates, so the western hemisphere and everything south of the equator are unreachable (PIN-213)
- [d2f20b] fix: shellSegments treats the & in 2>&1 as a command separator, so a redirect placed before --hide-summary=output hides it from the gotestsum ban (PIN-187)
- [735916] fix: signal blocked scheduler workers on every newly-dequeueable state change
- [200437] fix: six inspect endpoints return 500 for a semantic selector that simply did not match, so an agent reads a bad selector as a server fault (PIN-175)
- [a07d05] fix: snapshot reports a fake 8-char value for empty password fields PIN-020
- [445686] fix: snapshots omit checkbox and radio checked state, so an agent cannot see which options are selected (PIN-102)
- [c19dfb] fix: srccensus threads a file-class argument through the shared walk and never uses it, so TestTree's vacuity floor reports non-test files, and the test pinning that wording passes on a substring (PIN-249)
- [ee5e5d] fix: stale-ref recovery covers a drag's source but not its destination, so drag <from> <to> heals one end and 404s on the other (PIN-203)
- [2a1ed9] fix: starting the server silently rewrites the user config, freezing every default (PIN-071)
- [9afcfa] fix: starting the server silently rewrites the user config, freezing every default (PIN-071)
- [5bc26c] fix: starting the server silently rewrites the user config, freezing every default (PIN-071)
- [feeff2] fix: stop defaulting browser.version to the fallback literal so the persona probes the launched binary (PIN-074)
- [2f7d2e] fix: stop reporting CDP faults as selector-not-match 404s
- [ecd263] fix: strip bidi overrides and zero-width blanks that render text as something else
- [be8456] fix: sweep abandoned agent sessions so their instance bindings are released
- [e73dc4] fix: sweep expired keys from the login attempt limiter instead of retaining them forever
- [519467] fix: synchronize browsersession accessors and make session persist atomic
- [c74a7c] fix: the CLI collapses missing_token and bad_token into one 'Error 401: unauthorized', dropping the code the server sends (PIN-210)
- [6b186e] fix: the CLI collapses missing_token and bad_token into one 'Error 401: unauthorized', dropping the code the server sends, and there is no --token flag to pair with --server (PIN-210)
- [fcf2f1] fix: the CLI cookies namespace offers only clear-all - setting a cookie has no CLI route, while the analogous storage command has full CRUD (PIN-137)
- [62e24e] fix: the GET form of /action decodes no scroll delta and carries no presence flag, so every scroll moves one 120px notch and reports success (PIN-258)
- [1e812b] fix: the GET form of /action silently drops every parameter it cannot decode, so a shift-click sent as a query becomes a plain click reported as success — refuse the request instead of ignoring the field (PIN-261)
- [ec7b2e] fix: the LLM prompt gets unstripped HTML cut mid-rune while the trim helper sits unused PIN-042
- [274af9] fix: the MCP funnel treats HTTP status as the only failure signal, so any endpoint reporting failure inside a 200 reaches the agent as success (PIN-229)
- [e65742] fix: the RuntimeInstance capture path discards every clip, so annotated selector and beyond-viewport screenshots return the full viewport (PIN-051)
- [be291c] fix: the absent-vs-explicit-zero scroll rule is safe only because nothing re-marshals ActionRequest, and no test or tag states that invariant (PIN-236)
- [c7f07a] fix: the ambient-globals census blames the parser when a file leaves scope (PIN-103)
- [7305fc] fix: the bridge ignores server.logLevel, so a configured level dies where faults are diagnosed (PIN-092)
- [501a94] fix: the browser-profile census skips directories by name, so a git worktree inside the repo is walked and its copies are reported as violations against paths that vanish (PIN-231)
- [2e3d25] fix: the capability-refusal remedy omits the required restart, so following it verbatim returns the identical 403 and an agent loops (PIN-124)
- [c3db2c] fix: the cdptk clip builder resolves nodes in the main world, where page script can steer the clip origin (PIN-062)
- [98b5ca] fix: the census AST walk stops descending into a consumed + chain, so… (PIN-154)
- [a8f0a6] fix: the cli e2e asserts scrape schemaVersion 1.0 but the code emits 2.0 (PIN-100)
- [45f583] fix: the config-load debug diagnostics are emitted before the log level is resolved (PIN-106)
- [b4e1a0] fix: the dashboard Profiles page ignores the quarantined and temporary flags the API sends (PIN-066)
- [6fd4c8] fix: the dashboard deletes a profile on one unconfirmed click and swallows the failure, so a destructive action looks identical to a no-op (PIN-252)
- [2ccd58] fix: the delimiter guard that stopped 'Metadata:' being eaten also stopped a data URI opening an element's text content being stripped, so the whole blob survives (PIN-224)
- [321a20] fix: the disabled-refusal census matched only a literal code, so a gate deriving it from routes.Meta shipped without the hint or the restart unseen (PIN-227)
- [e627e6] fix: the docs and MCP schema claim a wrapper over a semantic form ignores its index, but the semantic engine does index in document order (PIN-044)
- [9764fb] fix: the drag docs and comment name the step count as what fires dragstart, when the measured mechanism is the button held on the moves (PIN-130)
- [70c56f] fix: the e2e bridge services run at info while every server runs at debug, so the process holding the CDP session is the quiet one (PIN-152)
- [ffec48] fix: the explicit-config token guard is unreachable on the server path, so a secret is written into an operator-authored config that bridge refuses to touch (PIN-201)
- [2a50af] fix: the fallback notice calls a caller identified by --agent-id anonymous, so it names an adopted tab as newly opened (PIN-131)
- [7bd57a] fix: the five CLI auto-named output files still collide within one second (PIN-158)
- [da89a6] fix: the front door records that a proxied request failed and drops why — the instance's reason now crosses the hop in headers the public boundary strips (PIN-243)
- [6735dd] fix: the ghost-chrome accessible name is cut mid-rune (PIN-107)
- [713662] fix: the ghost-chrome adapter hand-copies five ActionRequest fields and drops HasText, so a legitimate clear is refused on the path nothing pins (PIN-207)
- [1e5fba] fix: the gotestsum guard bans the output summary as a flag field, so a reordered hide-summary list cannot walk past it (PIN-164)
- [554bdb] fix: the module-root walker guard exempted on a mention of srccensus, so a comment explaining a hand-rolled walk satisfied it (PIN-254)
- [0e9220] fix: the module-wide census walks descend into a nested git worktree and report its copies as violations, and the new shared census home is package-scoped so they cannot be converted onto it (PIN-235)
- [f3919f] fix: the nav fallback silently doubles tabs for session-less callers, because it re-posts anonymously and the endpoint contract creates a tab for anonymous callers (PIN-131)
- [51a038] fix: the no-session hint tells users with sessions already enabled to enable them and restart, because one static string serves both states (PIN-112)
- [10caab] fix: the no-session hint tells users with sessions already enabled to enable them and restart, because one static string serves both states (PIN-112)
- [51591a] fix: the reported solver identity is a literal beside a Name() that reads the constant (PIN-078)
- [e11830] fix: the section vocabulary is derived from FileConfig but the… (PIN-204)
- [810e5b] fix: the server discards all logs unless --verbose (PIN-072)
- [f9b5cf] fix: the server discards all logs unless --verbose (PIN-072)
- [e024d9] fix: the server log level is flag-only, so a daemon-installed or auto-started server cannot set it (PIN-092)
- [846f3c] fix: the sessions-disabled remedy prescribes a config set the editor rejects as an unknown field, which is the dead end this family's codes exist to remove (PIN-150)
- [8c51a3] fix: the stale-tab remedy tells the user to retry, but on 'tab handoff/resume/handoff-status' the retry sends an empty tab id and the CLI misdiagnoses it as an outdated server (PIN-220)
- [af0fac] fix: the stealth persona advertises a hardcoded OS version (PIN-076)
- [7f3460] fix: the wait fn evaluate refusal is the one capability 403 with no hint and no remedy, so an agent that hits it has nothing to try (PIN-227)
- [ea4edf] fix: the widened data-URI pattern matched 'data:' inside a word, so 'Metadata:' became 'Meta' (PIN-061)
- [d6230e] fix: three different session-unavailable states all answer with a bare 404, so the CLI prescribes a config edit that cannot work on a bridge (PIN-150)
- [7375a3] fix: treat space-separated : and = as prose, not CSS, in the MCP query heuristic PIN-019
- [e4033e] fix: two shipped docs state guarantees the code does not provide — scroll teaches two directions that never existed, and upload promises a basename reduction that skips Windows-style names (PIN-211)
- [c3da3a] fix: unblock network-intercept e2e checks and reduce chrome-launch flake
- [419736] fix: unescaped paths make the launchd plist and systemd unit malformed
- [b38809] fix: unify text/xpath selector resolution so a first/last/nth wrapper cannot change which element is found (PIN-037)
- [da19b9] fix: unknown config keys are never reported because FileConfig's custom UnmarshalJSON defeats DisallowUnknownFields (PIN-079)
- [038a9f] fix: upload discards the original filename, so every file reaches the page as upload-0.bin and extension-validating forms reject it (PIN-132)
- [886be2] fix: verify cloak browser behavior in doctor
- [9c6f5d] fix: write saved browser state atomically so an interrupted save cannot destroy it
- [f15c7e] nav: expose per-request timeout as a CLI option; raise internal 60s limits so the documented 120s max is reachable
- [dd7d36] refactor: browsersession holds its one mutex across the session-file write, where session.Store deliberately does not (PIN-133)
- [6b92ab] refactor: convert the command package's config-write census to the srccensus home (PIN-105)
- [b30527] refactor: decompose applyFileConfig into per-section appliers
- [399c33] refactor: dedupe CDP evaluate helpers and route bridge document size to cdptk
- [42057d] refactor: delete GetElementCenterJS, its facade wrapper and its test — four cards deferred this deletion to each other and a boundary-census exemption now reads 'dead pending deletion' with nothing pending it (PIN-241)
- [2c1cdf] refactor: delete the dead legacy solver registry and its duplicate Cloudflare solver, which nothing can reach yet every solver refactor still pays for (PIN-147)
- [c61e5c] refactor: delete the dead legacy solver registry and its duplicate… (PIN-147)
- [e62ec4] refactor: delete the stale box-model comment and the dead GetElementCenter (PIN-058)
- [bcf998] refactor: derive guards-down and recommended-defaults capability lists from the canonical table and delete the unwired UpdateSensitiveEndpoints (PIN-200)
- [7de67e] refactor: drop dead MCP streaming path and pin selector-routing heuristic with tests
- [38f78e] refactor: drop the upload comments that restate the endpoint docs and the line below them (PIN-132)
- [14639e] refactor: extract orderSolvers out of trySolvers and test it directly (PIN-054)
- [9d165d] refactor: fold three private copies of the UTF-8 byte-truncate helper into the exported one PIN-036
- [65101e] refactor: give the fallback Chrome version a single owner in browserprobe (PIN-074)
- [a253d6] refactor: give the zero-delta scroll rule one owner and drop the comments restating it (PIN-217)
- [aafe03] refactor: heldButton restates the button vocabulary as two literal cases with a silent left default, so a fourth button would be accepted everywhere and dispatched as left (PIN-248)
- [4e419b] refactor: move the nth selector grammar to its owning package
- [70bfdf] refactor: name both truncation helpers for their policy, so a machine-read field cannot pick the ellipsis by default (PIN-113)
- [41690b] refactor: name the stdout-terminal seam in the nav tests (PIN-077)
- [43441b] refactor: one isolated context per containment check instead of one per node resolve (PIN-166)
- [442aff] refactor: one owner for solver identity strings, and two of the three default solver lists are unguarded (PIN-125)
- [be7556] refactor: one owner for the Chrome user-agent string template, and close the unreduced-version path (PIN-083)
- [869c05] refactor: one owner for the selector prefix vocabulary, and settle the case question while doing it PIN-047
- [ce3370] refactor: one selector-unwrapping recursion behind a scope abstraction, not one per scope kind (PIN-038)
- [6c5c27] refactor: recordingsOutputPath re-implements fileout.ReservePath and drops the removal it has, so a failed close leaves a 0-byte recording (PIN-173)
- [820185] refactor: settle one convention for the source-scanning census guards before a fourth is written (PIN-105)
- [35f632] refactor: single owner for the clip-requires-fromSurface rule (PIN-052)
- [ed006a] refactor: split HandleAction and unify dialog-error translation
- [2c7728] refactor: split trySemantic into plan, execute, and self-heal steps
- [c183de] refactor: strip the narrative comments the save-confirmation dedup added, keeping only the capture/record exclusion rationale (PIN-048)
- [a84d94] refactor: the CLI error remedy hook mutates state from inside the API error formatter (PIN-135)
- [945634] refactor: the SDK mirror guard compares no field types, and excludes two structs on a rationale that does not apply to it (PIN-134)
- [474601] refactor: the ambient-globals census reads Go with go/parser instead of a hand-rolled scanner (PIN-103)
- [914882] refactor: the autoSolver defaults exist in three hand-maintained copies that already disagree (PIN-094)
- [bc23b6] refactor: the first:/last:/nth: grammar is still written twice, now split on parsed-vs-raw instead of scope (PIN-088)
- [a10d7a] refactor: the first:/last:/nth: grammar is still written twice, now split on parsed-vs-raw instead of scope (PIN-088)
- [6a223c] refactor: the scale-0 clip rule is enforced by every producer instead of the one consumer that needs it (PIN-142)
- [958574] refactor: the shared census home excludes test files, so the census whose subject IS tests keeps a private copy of the nested-checkout rule (PIN-246)
- [94a1ce] refactor: tighten the architectureFor comment and drop its bitness overclaim (PIN-199)
- [be8c9d] refactor: two directory-scoped censuses guard the no-overwrite rule, so an auto-naming site in any third package is invisible to both (PIN-168)
- [2ef35a] refactor: two isolated worlds exist for the same rule… (PIN-170)
- [a66fc3] refactor: two more hand-rolled censuses landed after srccensus shipped, and the one guarding reservations covers one of the two routed sites (PIN-176)
- [2fd7ac] test: a catalog row labelled blank key computes its expectation through the function under test, so it passes when the trim it exists to pin is removed (PIN-196)
- [5632c1] test: a credentials-only target proxy must not replace a working parent proxy, pinning applyTargetToRuntime to the server-keyed predicate (PIN-178)
- [79bf53] test: a ghost-chrome static snapshot must keep a ref entry per ref-bearing node (PIN-087)
- [ee8b9d] test: a one-shot ?frameId= read on an unscoped tab publishes the frame disclosure, which nothing pinned (PIN-208)
- [ec440f] test: a third isolated-handle producer would silently leave the ambient-globals census (PIN-070)
- [52a7b1] test: align e2e scenario assertions with current pinchtab behavior
- [acc61e] test: anchor the button doc guard to the backticked accepted name, since a whitespace example satisfied the bare substring (PIN-257)
- [e85a47] test: build the orderSolvers priority fixture per subtest instead of sharing it (PIN-054)
- [243979] test: capping before stripping would drop the interactive markup and no test would notice (PIN-042)
- [60f9e2] test: classify ActionRequest.Vocab as handler-only in the ghost-chrome static conversion census (PIN-084)
- [813582] test: close the census blind spot for a disabled-refusal whose code is a named constant, by keying on the hand-built details map instead of the code spelling (PIN-227)
- [9688e4] test: correct the capture comment to the measured mechanism — favicons carry the override in effect, they do not bypass it (PIN-251)
- [c3b582] test: cover both empty-match branches of the semantic refusal at the HTTP boundary (PIN-175)
- [25623a] test: drop flaky negative background-capture assertion, keep the positive regression test
- [c648f6] test: enumerate the SDK side too, so a mirror added under a name internal/audit does not share cannot be claimed by nothing (PIN-160)
- [b7cec8] test: force the auto-name collision instead of assuming two runs share a second (PIN-218)
- [270631] test: isolate daemon status alias test from the live home directory PIN-013
- [896d97] test: name both accidents defending the by-name lookup, and record that the delete subtest reds against a different mutation (PIN-214)
- [139531] test: name the dead container, the OOM kill and the full Docker disk when an e2e stack starves (PIN-028)
- [f27605] test: name the redacted-URL truncation cases for what they can actually pin (PIN-036)
- [5beab4] test: no guard pins that a capability-gated route refuses on the bridge front, which is why the same screencast gap has now been produced twice (PIN-245)
- [f26605] test: no guard pins that a capability-gated route refuses on the bridge front, which is why the same screencast gap has now been produced twice (PIN-245)
- [44bfba] test: no test can tell the dialog scope from the frame scope for first:/last:/nth: selectors (PIN-086)
- [c1ba02] test: nothing enforces the docs half of the scrape schema-bump checklist (PIN-109)
- [9938eb] test: pin that /capture serialises checked state on the wire, the one surface of the criterion no run had exercised (PIN-102)
- [9757e7] test: pin that BuildSnapshot routes checkedness through the parser, so an unrecognised AX reading cannot reach the wire as an undefined state (PIN-102)
- [7c61c6] test: pin that Windows platformVersion stays a constant, because Chrome reports an API-contract version there (PIN-096)
- [6d123a] test: pin that a negative quarantineKeep fails safe as keep-everything, since a hand-edited config reaches the deleter unwarned (PIN-043)
- [03de19] test: pin that a scroll direction at a target keeps both its wheel routing and a supplied pixels:0 (PIN-260)
- [b28e11] test: pin that dialog-scoped wrapper forms get the node scope, not the frame (PIN-038)
- [1108b1] test: pin that every button the vocabulary advertises reaches the page as its own press code and held mask (PIN-248)
- [62dc51] test: pin that snap+browser routes both the verb and the snapshot to the named instance (PIN-219)
- [859cac] test: pin that the missing-key warning dedup is per-request, not process-wide (PIN-089)
- [dd5267] test: pin that the verbose notice names --log-level as its source after the flag is folded into the config field (PIN-104)
- [e1f6f3] test: pin the 409's recovery disclosure at the wire and spell the stale-ref remedy out as a literal (PIN-234)
- [df8246] test: pin the MCP boolean string-form coercion that landed untested under another task code (PIN-046)
- [d0bd74] test: pin the fromSurface decision itself, which a headless capture cannot distinguish (PIN-051)
- [259454] test: pin the isolated-world frame walk in both cdptk geometry builders (PIN-062)
- [f67972] test: pin the jsError origin mask with a single-line inline-origin fixture the multi-line cases leave redundant (PIN-126)
- [abb9ca] test: pin the operator-facing error string, not just compactBody, on all three health callers (PIN-060)
- [502db6] test: pin the truncation marker in the package that owns the rule (PIN-036)
- [e1d3c2] test: pin the two numeric MCP argument routes the string-form table cannot reach (PIN-046)
- [f85164] test: pin treeSkipDirs['.git'], the only exclusion covering the root's own git subtree, which nestedCheckout must exempt and nothing else asserted (PIN-254)
- [d1118b] test: pin which host value each platform arm reads, since only linux runs the Go suite in CI (PIN-076)
- [bbd460] test: pin which save commands declare --json, so criterion six's unreachability premise reds if one gains the flag (PIN-048)
- [f60d64] test: record that the invalid-UTF-8 follow-up is unfiled rather than filed, so the deletion note cannot be read as evidence of a card (PIN-155)
- [cbb400] test: record the geometry.go census exemption as dead code rather than as the click-point path (PIN-063)
- [7dc2ca] test: report the userAgentData cross-surface check as unrun over insecure http instead of a false disagreement (PIN-074)
- [1d45e1] test: resolve the cdproto/page import name in the capture census, so an aliased CaptureScreenshot cannot skip the fallback unseen (PIN-140)
- [cf39d4] test: rule order inside both intent tables is unpinned, and the mixed-case comment overstates its rows (PIN-128)
- [b392a1] test: sample the const branch in the surface-render guard, so a renderer that drops it cannot be baked into the pin by one -update (PIN-161)
- [1d88ca] test: share the resolveNodeSpellings table so a typed isolated resolve cannot go unseen (PIN-103)
- [d343fe] test: skip the jsErrors golden assertion on cloak, which can't capture uncaught page errors
- [e4bb27] test: stabilize orchestrator attach harness
- [cc2aee] test: state what the agent-block preservation test actually guards, since a marshal that drops the value leaves it green (PIN-184)
- [c3a986] test: state what the failed-key census does not cover, since its comment claimed a new failure spelling lands there and neither guard sees one (PIN-229)
- [1849d3] test: the ChallengeType census matches only the struct-literal spelling, so a revived block can assign the field (PIN-128)
- [9b823c] test: the SDK mirror guard covers one payload struct while eight others agree unguarded (PIN-059)
- [57e8a6] test: the Windows-arm source guard matches a string literal, so the idiomatic PlatformWindows spelling defeats it (PIN-139)
- [bb21f5] test: the argument guard's positive control passes any probe with a… (PIN-162)
- [c70c32] test: the boundary census misses the typed dom.ResolveNode() spelling (PIN-062)
- [7bde90] test: the capture wire tests drive a bounds query key the handler never reads, so the unmeasured case never ran (PIN-057)
- [f9a9bd] test: the clip-to-viewport census matches a receiver named clip, so the same re-open-coding under any other variable name passes unseen (PIN-171)
- [b6dc46] test: the cookie wiring guard was hollowed out by the funnel rule, so pin the four body shapes only the per-tool confirmation refuses (PIN-229)
- [88b5d2] test: the deferred-diagnostics census inspects only the first prologue per file (PIN-115)
- [393fe6] test: the delete subtest is also defended by directory ordering, so record it beside the lookup as not evidence for the rule (PIN-214)
- [bd5914] test: the domain policy on POST /cookies is unguarded, so removing it entirely leaves the whole handlers package green (PIN-239)
- [dd53b3] test: the e2e compose census misses a server service that inherits the image's flagless command (PIN-029)
- [80d68a] test: the gotestsum guard scans single lines of raw source, so a quoted flag value or a backslash continuation hides the output summary unseen (PIN-172)
- [eb5df5] test: the gotestsum guard scans single lines of raw source, so a quoted flag value or a backslash continuation hides the output summary unseen (PIN-172)
- [7eda4c] test: the inconclusive-probe guard authenticated the probe against its own token, so it never produced a 401 (PIN-073)
- [8dbf7f] test: the kind-coverage census reads a hand-listed set, so a new kind without a prefix is invisible (PIN-047)
- [05a37e] test: the legacy adapter's name assertion compares Name() to itself, so a broken Name() ships an empty solver identity (PIN-146)
- [8da4ae] test: the log-level one-owner census reads one file while the rule covers the command package (PIN-092)
- [de942b] test: the mirror guard pins which types are compared but not which tier a pair sits in, so demoting a pair silently disables type comparison (PIN-160)
- [490b56] test: the network URL fixture must straddle the cut to tell the two truncations apart (PIN-107)
- [8a181b] test: the no-precedence guard reads one config file while the rule covers the package (PIN-106)
- [b78f96] test: the one-owner log-level guard checks two command files by name, so a stray SetLevel elsewhere is invisible (PIN-129)
- [8809b9] test: the per-instance metrics route that keeps the layer split honest is pinned by nothing, and endpoints.md still documents the superseded proxy behaviour (PIN-177)
- [346baa] test: the per-tool argument guard defines 'observable effect' as the sentinel value, so a derived effect and a combination-only argument both pass vacuously (PIN-153)
- [e166f6] test: the platform/matrix vocabulary census hardcodes the platform side, so a fourth platform drifts silently and the refusal names the internal key (PIN-156)
- [8775d0] test: the request-body drop reason is stated as a literal, so renaming the scope constant can no longer pass (PIN-114)
- [82d133] test: the rotated client-hints test reads a request the UA override had not reached yet, so a full-suite run intermittently reds with the browser's own HeadlessChrome UA (PIN-251)
- [0655b1] test: the route-level capability refusal is unguarded end to end, so a setting drifting into a broken remedy reds nothing on the path that serves it (PIN-198)
- [158ac3] test: the rule keeping a quarantined profile from claiming the live profile's name and id is load-bearing and unpinned, so a plausible simplification collapses two profiles into one identity (PIN-214)
- [0d4411] test: the scrape schema pin accepts a JSON number where it should require the string (PIN-100)
- [7b6724] test: the state-lock-released guard drives three of five persist sites, so UpdateConfig can write under the lock unnoticed (PIN-159)
- [d2027a] test: the suite failure report drops the assertion and prints only the test name (PIN-111)
- [111cb0] test: the truncation-policy census cannot see a field it does not list (PIN-040)
- [215958] test: the union census reads as comprehensive and the per-tool guard names a tool as a kind (PIN-144)
- [275686] test: the wrapper-arm scope guard checks a hand-listed pair while a third entry point would be unguarded (PIN-086)
- [13ef0d] test: the wrong-type message names the type but nothing pins the remedy, and the helper's comment still describes callers that moved off it (PIN-242)
- [9b772d] test: widen the isolated-world census to the chromedp builder spelling and exempt the screencast world with a checked reason (PIN-170)
- [0ff063] test: writeUnique's close-failure removal is unpinned, and unlike its… (PIN-180)