gstack’s browser moves to Chromium 156, and /ship stops pushing merge conflicts

42 minutes ago

gstack's browser moves to Chromium 156, closing a macOS sandbox escape, and /ship now refuses to push leftover merge conflict markers. Also: housekeeping checks before every push, guard passes reused at the same tree, a new merge-direct policy, review depth set by what code does, scoped re-checks after small changes, "Use when" descriptions for /investigate, /review, /qa and /verify, and a finished /ship no longer blocking gstack-upgrade. Covers gstack 1.94.15.0 to 1.95.4.0 (35 releases, 2026-11-03 to 2026-11-04), for Claude Code users. Changelog: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md Pregate and guards: https://github.com/garrytan/gstack/blob/main/docs/pregate.md Ship policy: https://github.com/garrytan/gstack/blob/main/docs/ship-policy.md gstack: https://github.com/garrytan/gstack

Ask about this presentation

Chapters

  1. 0:00Chromium 156
  2. 0:1102 Pushes
  3. 0:12Conflict markers
  4. 0:27Guards before push
  5. 0:42Guard reuse
  6. 0:53merge: direct
  7. 1:0603 Reviews
  8. 1:07Review depth
  9. 1:22More risk classes
  10. 1:34Scoped re-check
  11. 1:46Receipts survive
  12. 2:0004 Skills
  13. 2:01Use when
  14. 2:16Contract check
  15. 2:28Earn its place
  16. 2:4205 Fewer stops
  17. 2:43Upgrade lease
  18. 2:57False stops
  19. 3:09Where to start
Show transcript
  1. gstack's browser now runs Chromium 156, closing a macOS sandbox escape that Chromium 151 still had. Your next setup or gstack upgrade downloads it.

    Slide text
    gstack logo

    gstack’s browser moves to Chromium 156, and /ship stops pushing merge conflicts

    Chromium 151 Chromium 156
    Fixes CVE-2026-106378, a macOS sandbox escape. Your next ./setup or /gstack-upgrade downloads the new browser.
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.31.0
  2. Pushes.

    Slide text
    02
    Pushes
    What /ship checks before code leaves your machine
  3. A new guard reads every line your branch adds and stops the push on a leftover conflict marker, even one inside a template string that still passes its tests. Markdown blocks showing git output are skipped.

    Slide text

    /ship refuses to push leftover merge conflict markers

    <<<<<<< a line that starts with it
    ======= a line that is exactly it
    >>>>>>> a line that starts with it
    Markdown blocks that show git output are skipped. A conflict inside a bash or ts block is still refused.
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.95.2.0
  4. /ship now runs the cheap checks, stale generated files and the repo's own guards, before every push. A failing one prints its fix and pushes nothing. In gbrain, checks like these turned 64 of 93 heads red.

    Slide text

    Housekeeping checks now run before every push, not after a CI round

    regen · generated files are freshonly for the files the branch touched
    guards · the repo’s own checksa failure stops the push and prints its fix
    gbrain had 64 of 93 red heads from checks like these.
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.27.0
  5. When a guard's exact command already passed at the same tree, /ship carries that pass instead of running it again. Where the test suites are guards, that saves about six minutes a ship.

    Slide text

    A check that already passed at this exact tree doesn’t run again

    GUARD: check-quick carried from CI
    GUARD: play-through reused local pass, same tree
    GUARD: assets runs
    About six minutes saved per /ship where the suites are guards. The pull request that adds a mapping can’t carry from it.
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.17.0
  6. A new ship policy, merge direct, lands each ready pull request at the commit that went green, with no merge train. It refuses unless every check there passed and GitHub calls the pull request clean.

    Slide text

    New: merge each pull request at its own green head

    .gstack/ship-policy.json
    "merge": "direct"
    no merge train no stamp commit no extra CI round
    Refuses unless the receipt is bound to that commit, every check is green and GitHub calls the PR clean.
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.95.0.0
  7. Reviews.

    Slide text
    03
    Reviews
    How deep /ship reads, and when it reads again
  8. Any executable now counts as code, whatever its name or folder, so a script called prune in a logs folder gets read for risk. Across main's last 200 commits, three reviews went from light to full.

    Slide text

    /ship sets review depth by what a file does, not what it is called

    scripts/logs/prune run log code
    An exec bit, a symlink or a #! first line makes a file code. Paths naming seal, custody or egress get full review.
    0 reviews went lighter
    6 gained a risk class
    3 went from light to full
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.95.1.0
  9. Code that spends money, eval scorers, and docs that could print a secret now count as risk and get every reviewer. A risk class you declare yourself can only raise the depth.

    Slide text

    More diffs now get /ship’s full reviewer panel

    code that reserves, binds or settles spend risk class money
    eval scorers, judges and gradersnew risk class eval
    docs that can print a credential an Authorization header, a bearer value, a key-shaped literal
    --declare-risk adds a class the matchers missed. A declaration only raises the depth.
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.30.0
  10. Touch a few lines after review, and /ship can hand that diff to one reader and keep your receipt. A rebased branch, or more than twenty changed paths, still needs a full ship.

    Slide text

    A small change after review gets one reader instead of a second /ship

    RECEIPT_CARRY_PRODUCT_CHANGED
    RECHECK: eligible packet ≤ 400 lines
    Rebased branches, retargeted stacks and more than 20 changed product paths still need /ship.
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.41.0
  11. A stacked parent landing on main, a base merge beside reviewed lines, or a switch to a changelog fragment no longer sends unchanged code back for review.

    Slide text

    Three changes that no longer throw away a reviewed receipt

    a stacked PR’s parent squash-merges 1.94.15.0 · 1.94.21.0
    a base merge lands next to a reviewed hunk 1.94.39.0
    the PR moves to a changelog fragment 1.94.38.0
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.15.0 · 1.94.21.0 · 1.94.38.0 · 1.94.39.0
  12. Skills.

    Slide text
    04
    Skills
    When a skill opens, and what it must finish
  13. Claude Code's catalog shows only a skill's first sentence, so four skills now lead with when to use them. With that sentence, GPT-6.1 Sol opened /investigate nearly three times as often.

    Slide text

    /investigate, /review, /qa and /verify now open with “Use when”

    “Use when a test fails, code errors or output is wrong: find the root cause, then fix it.”
    GPT-6.1 Sol opens /investigate, before
    9.5%
    with the when-clause
    27.0%
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.22.0
  14. The contract hook, still off by default, no longer counts an install as running the tests, waits while agents are still working, and prints a waive command that actually runs.

    Slide text

    The skill contract check got stricter and quieter

    installs and builds no longer count as a test runbun install, go build, node --version · 1.94.33.0
    waits while Agent dispatches are still runningchecks again after 10 minutes · 1.94.33.0
    the waive command names its full path, so it runs1.94.35.0 · 1.94.36.0
    Both hooks stay off by default.
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.33.0 · 1.94.35.0 · 1.94.36.0
  15. A new principle says every skill, step and default must prove it helps on frontier models. The first fair test found /investigate made no difference on Opus 5.5, so it is a candidate to cut.

    Slide text

    Every part of gstack now has to show it helps

    /investigate no effect, a candidate to cut measured on Opus 5.5 only
    3 parts with a fair test under way
    14 more with a test proposed
    A new skill, step or default needs evidence on frontier models, or an owner and a dated plan to measure it.
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.29.0
  16. Fewer stops.

    Slide text
    05
    Fewer stops
    /ship and gstack-upgrade stop refusing real work
  17. The lease each skill takes was never released, so a finished /ship blocked gstack upgrade for two hours. Now the skill's end closes its run. A run another session still holds keeps blocking.

    Slide text

    A finished /ship no longer blocks gstack-upgrade for two hours

    before UPGRADE_BUSY · 120 minutes
    now gstack-lease list · idle
    A run another session still has open keeps blocking.
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.19.0
  18. Three false stops are gone: real files named probe flagged as scratch, lane names with a space going missing, and a ten-minute test limit preflight couldn't raise.

    Slide text

    Three /ship refusals that stopped real work are gone

    probe.py and temporal-*.test.ts no longer fail as scratch files1.94.23.0
    a lane named pnpm lint no longer goes missing after it carries1.94.25.0
    --timeout now reaches the pregate, past the 600 s default1.94.28.0
    Browser Pushes Reviews Skills Fewer stops
    garrytan/gstack · CHANGELOG.md · 1.94.23.0 · 1.94.25.0 · 1.94.28.0
  19. If you run gstack with Claude Code on a Mac, I would upgrade today for the browser fix alone. Every change is in the gstack changelog.

    Slide text

    Upgrade on a Mac for the Chromium 156 fix first

    It closes a macOS sandbox escape in the browser gstack drives.
    garrytan/gstack · CHANGELOG.md
    Every change, with its setup notes, is in gstack’s changelog.
    garrytan/gstack · CHANGELOG.md · 1.94.31.0

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built with ❤️ in New York