From eb8742635c353db01f80c49ca6f564c81998326d Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Fri, 28 Aug 2026 05:09:00 +0000 Subject: [PATCH] docs: apply cross-model doc review fixes for v1.72.0.0 docs/skills.md: restore the /ship closing line above the new subsection. BROWSER.md: ToC label matches the heading; BROWSE_STATE_FILE env row documents the new dir-hardening refusal + one-time warning. CHANGELOG: correct the hasher precedence wording (sha256sum first, shasum fallback) and the fs-caps count (14 test files, verified against the diff). Co-Authored-By: Claude Fable 5 --- BROWSER.md | 4 ++-- CHANGELOG.md | 4 ++-- docs/skills.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/BROWSER.md b/BROWSER.md index 8962a5dbb..d2e83fda0 100644 --- a/BROWSER.md +++ b/BROWSER.md @@ -49,7 +49,7 @@ $B connect # headed Chromium + Side Panel extension 5. [Snapshot system + ref-based selection](#snapshot-system) 6. [Browser-skills runtime](#browser-skills-runtime) 7. [Domain-skills (per-site agent notes)](#domain-skills) -8. [Real-browser mode (`$B connect`)](#real-browser-mode) — including [`--headed` + `--proxy` + `--navigate` (v1.28.0.0)](#headed-mode--proxy--browser-native-downloads-v12800) and [Aside and third-party drives (v1.72.0.0)](#aside-and-third-party-drives-v17200) +8. [Real-browser mode (`$B connect`)](#real-browser-mode) — including [`--headed` + `--proxy` + `--navigate` (v1.28.0.0)](#headed-mode--proxy--browser-native-downloads-v12800) and [Aside and third-party drives (v1.72.0.0+)](#aside-and-third-party-drives-v17200) 9. [Side Panel + sidebar agent](#side-panel--sidebar-agent) 10. [Pair-agent — remote agents over an ngrok tunnel](#pair-agent) 11. [Authentication + tokens](#authentication) @@ -1269,7 +1269,7 @@ the global `~/.gstack/browser-skills/foo/` only inside project-a. |----------|---------|-------------| | `BROWSE_PORT` | 0 (random 10000–49151) | Fixed port for the HTTP server (debug override) | | `BROWSE_IDLE_TIMEOUT` | 1800000 (30 min) | Idle shutdown timeout in ms | -| `BROWSE_STATE_FILE` | `.gstack/browse.json` | Path to state file | +| `BROWSE_STATE_FILE` | `.gstack/browse.json` | Path to state file. Its parent dir gets owner-only (0700) hardening only when gstack owns it — shared sticky dirs (`/tmp`, `/var/tmp`), foreign-owned dirs, and symlinked dirs are left untouched with a one-time warning (v1.72.0.0+) | | `BROWSE_SERVER_SCRIPT` | auto-detected | Path to `server.ts` | | `BROWSE_CDP_URL` | (none) | Set to `channel:chrome` for real-browser mode | | `BROWSE_CDP_PORT` | 0 | CDP port (used internally) | diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a0be6e19..ef5d39f69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,11 +41,11 @@ The next time a skill says "you need a Duffel test token," it can just go get it ### Fixed - `restrictDirectoryPermissions` no longer chmods shared sticky directories (`/tmp`, `/var/tmp`), foreign-owned directories, symlinked state dirs, or world-writable mounts when running as root; refusals warn once per process instead of failing silent, owned-but-unreadable dirs still self-repair, and the check-then-act race is closed with fd-anchored fstat/fchmod. -- `gstack-config resolve-user-slug` exited 127 on Linux distros without perl's `shasum` whenever a git email was set; both hashing call sites now fall back to `sha256sum`. +- `gstack-config resolve-user-slug` exited 127 on Linux distros without perl's `shasum` whenever a git email was set; both hashing call sites now resolve `sha256sum` first and fall back to `shasum -a 256`. - A path-validation test assumed `/etc/crontab` exists (absent on Amazon Linux and minimal Fedora); it now uses `/etc/passwd`. ### For contributors -- `test/helpers/fs-caps.ts`: functional capability probes (`canRevokeWrites`, `canRevokeReads`) replace uid-0-only guards in 13 chmod-based tests, so suites skip honestly on CAP_DAC_OVERRIDE containers instead of asserting revocations the kernel ignores. +- `test/helpers/fs-caps.ts`: functional capability probes (`canRevokeWrites`, `canRevokeReads`) replace uid-0-only guards across 14 chmod-based test files, so suites skip honestly on CAP_DAC_OVERRIDE containers instead of asserting revocations the kernel ignores. - Five `tpa-*` entries registered across `E2E_TOUCHFILES`/`E2E_TIERS` with template-level deps, the eval matrix row carries `tier: gate`, and `eval:bg:periodic`'s detach timeout rose to 36000s to cover the grown periodic shard census (floor-enforced by test). ## [1.71.0.0] - 2026-08-27 diff --git a/docs/skills.md b/docs/skills.md index 2316915ea..eed985272 100644 --- a/docs/skills.md +++ b/docs/skills.md @@ -659,14 +659,14 @@ Every `/ship` run builds a code path map from your diff, searches for correspond `/ship` checks the [Review Readiness Dashboard](#review-readiness-dashboard) before creating the PR. If the Eng Review is missing, it asks — but won't block you. Decisions are saved per-branch so you're never re-asked. +A lot of branches die when the interesting work is done and only the boring release work is left. Humans procrastinate that part. AI should not. + ### Third-party web actions (v1.72.0.0+) Sometimes the release work leaves the terminal: registering an API key, creating a vendor account, wiring a webhook or OAuth app. Instead of handing you a manual step list, `/ship` (and `/spec`, `/office-hours`, `/land-and-deploy`, `/setup-deploy`) offers to drive the browser for you. The recommended driver is the Aside AI browser when it's installed — it acts across your real logged-in sessions, which is exactly what vendor dashboards need. gstack's own visible browser (`$B` headed mode with handoff for sign-in) is the fallback on every platform. The consent rules are strict and pin-tested: one explicit question per task naming the exact site and actions, no standing permission, no auto-install ever (on a Mac without Aside you get one download pointer — aside.com, macOS 15+ — once per task). Passwords, payment, CAPTCHAs, and identity verification stay yours; Apple credential creation is never a drive target in any skill. A captured secret never appears in chat — it lands in an owner-only file and gets verified with one read-only API call before gstack claims success. -A lot of branches die when the interesting work is done and only the boring release work is left. Humans procrastinate that part. AI should not. - --- ## `/land-and-deploy`