Skip to content

feat(paseo): bump pinned Paseo CLI to 0.12.0 - #504

Merged
wz-gsa merged 1 commit into
mainfrom
feat/paseo-0.12.0
Oct 19, 2026
Merged

wz-gsa merged 1 commit into
mainfrom
feat/paseo-0.12.0

Conversation

@basiliskus

Copy link
Copy Markdown
Contributor

Summary

Bumps the paseo acq kit from Paseo 0.10.2 to 0.12.0: PASEO_CLI_VERSION in spec.yaml and the fallback default in paseo-start.sh.

0.11.0 and 0.12.0 fix OpenCode v2 under Paseo, which matters now that the opencode kit installs v2 in every OpenCode sandbox: agents stuck after a dismissed question or denied permission (getpaseo/paseo#6177, #6188), multi-select answers (#6149), daemon OOM on long v2 streams (#6262), and HTTP 500s instead of Paseo tool errors (#6519, #7183). 0.11.0 also fixes paseo daemon status reporting a running daemon as stopped after the host wakes from sleep (#6279).

The daemon launch surface the kit uses (paseo daemon run, paseo daemon restart, the config.json settings) is unchanged. The release notes' breaking changes don't touch the kit: paseo plugin add owner/repo installs from the registry (0.11), paseo run --background is deprecated in favor of --no-wait, and paseo permit allow|deny exit non-zero when the daemon doesn't confirm (0.12).

Verification

  • Paseo node tests (16/16) and validate-kits.py --strict pass.
  • Live RUN_ACQ=1 kit verify (msb 0.7.8, acq 4.0.2): all checks pass.
  • Downstream, with a team kit and the opencode kit at 2.0.30 on devenv-shell:1.0.0: Paseo 0.12.0 ran an OpenCode 2.0.30 agent with the team config, and the session survived a backup, a wiped opencode.db, and a restore, then answered a follow-up.
  • Seen once: on first acq run, the wrapper's paseo daemon restart --timeout 30 reported failure and the kit fell back to the supervisor respawn, which worked; the daemon log shows the restart went through. A manual paseo daemon restart afterwards succeeded in under 4 s.

Eligibility & Accountability

  • I am a federal employee or contractor (PRs merge with @GSA-TTS/agentic-coding-team code-owner approval; eligibility is attested here, not authenticated).
  • I understand this change and can explain it in my own words — I am the author of record and accountable for it.
  • By opening this PR, I attest I have the right to release this work under the repository's CC0-1.0 dedication.

AI Assistance Disclosure

  • AI tools were used in this contribution.
  • I verified all AI-generated content.

Update the two-value version pin (PASEO_CLI_VERSION in spec.yaml and the
fallback default in paseo-start.sh) from 0.10.2 to 0.12.0.

0.11.0 and 0.12.0 fix OpenCode v2 under Paseo, which the opencode kit
installs since 2.0.22: agents stuck after a dismissed question or denied
permission (#6177, #6188), first-run v2 failures, multi-select answers
(#6149), daemon OOM on long v2 streams (#6262), and HTTP 500s instead of
Paseo tool errors (#6519, #7183). 0.11.0 also fixes `paseo daemon status`
reporting a running daemon as stopped after the host wakes (#6279).

Release notes reviewed: the daemon launch surface this kit uses
(`paseo daemon run`, `daemon restart`, config.json settings) is
unchanged. The breaking changes don't touch the kit: `paseo plugin add
owner/repo` now installs from the registry (0.11), `paseo run
--background` is deprecated for `--no-wait`, and `paseo permit
allow|deny` exit non-zero when unconfirmed (0.12).

Verification: paseo node tests (16/16), validate-kits.py --strict, and
the live RUN_ACQ=1 verify (msb 0.7.8, acq 4.0.2) pass.
@basiliskus
basiliskus requested a review from a team as a code owner October 19, 2026 16:34

@wz-gsa wz-gsa left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI-assisted review (OpenCode), verified independently against head 1646a82c5fb484d5594ff70d5c8396ae74533671.

Approving. I reviewed this in an isolated worktree and verified every load-bearing claim by execution rather than by reading the release notes.

Verified

Pin consistency. All three live occurrences agree at 0.12.0: spec.yaml:189, and the comment plus _ver default at files/home/paseo-start.sh:35,81. A repo-wide sweep for 0.10.2 returns only the historical CHANGELOG.md:59 release entry.

Publication and integrity. @getpaseo/[email protected] is published and resolvable, latest, 2026-10-19T06:48:31Z. The kit's integrity chain is unchanged from 0.10.2: version pin, registry.npmjs.org over the proxy, npm's own dist.integrity. There is no npm provenance attestation for either 0.12.0 or 0.10.2, so nothing regressed.

Cited breaking changes do not reach the kit. Grepping the whole kit, plugin, --background, no-wait, and permit have zero invocation sites. The only CLI calls are paseo daemon config set, paseo daemon run, paseo daemon restart, and paseo --version.

Daemon surface. I unpacked both tarballs and diffed them. commands/daemon/{start,status,stop,reload,pair,config,local-daemon,index}.js, daemon-worker.js, daemon-instance.js, daemon-config-store.js, auth.js, and utils/client.js are byte-identical, and the HTTP route table is unchanged. The three settings asserted in paseo-assert-daemon-config.mjs still parse and default identically.

Offline gates. validate-kits.py --strict 10 kits plus 2 templates, paseo node tests 16/16, kit scripts/verify 8/8, validate_repo.py, INDEX/CATALOG --check, scan_unsafe_shell.py, and pytest scripts/ 483 passed. Markdown lint is unmeasured here because .github/linters/node_modules is absent and I could not install offline; CI covers it and is green 7/7.

Two corrections to the PR body, neither blocking

commands/daemon/restart.js is not unchanged. It has one substantive delta: the replacement-worker status probe moved from timeout: Math.min(1000, remaining()) to timeout: remaining(). The CLI surface is unchanged, so the claim holds in spirit. This delta matters for your observed flake, and it points the right way, see below.

0.12.0 unconditionally loads twelve bundled plugins at daemon boot, before the pluginsEnabled gate that governed this in 0.10.2. Three of them reach api.openai.com, code.claude.com, and opencode.ai, which the kit's allowlist does not permit, so the proxy resets them. Residual risk is low: the sandbox holds no Claude, Codex, or OpenCode-Go credentials, USAi injects via env rather than auth.json, the relay is already disabled, and each plugin start is individually caught and logged. I also confirmed empirically that esbuild works under the kit's npm_config_ignore_scripts=true, because the platform binary resolves through script-free optional deps. Worth a documentation note so the next reader does not re-derive it.

On the intermittent restart failure

Your one-off is consistent with a known mechanism, and 0.12.0 is the fix side of it. restart.js confirms by reconnecting and comparing worker PIDs; under 0.10.2 that status probe was capped at one second while daemon status enumerates every provider through PATH resolution. On a cold first boot that cap is easy to exceed, producing RESTART_NOT_CONFIRMED even though the restart landed, which is exactly what you saw. 0.12.0 raises the cap to the full remaining deadline, so this should get less frequent rather than more.

The residual edge is in the kit's fallback, not in Paseo: files/home/paseo-agent-shim:131-146 kills every non-marker paseo daemon run and unlinks paseo.pid whenever the CLI reports failure. When the restart actually succeeded, that tears down a healthy worker. It is bounded and self-healing, and you observed the recovery, but in a sandbox with a live agent session it would kill that session. Pre-existing and not introduced here.

Suggested follow-ups, not changes to this PR

  1. Document the always-on bundled-plugin layer at 0.12.0, the three out-of-allowlist hosts, and the verified esbuild-under---ignore-scripts behavior.
  2. Harden the paseo-agent-shim fallback to confirm the daemon is genuinely wedged before the kill-and-unlink path.
  3. Add a validator assertion that spec.yaml's PASEO_CLI_VERSION equals the paseo-start.sh fallback default. Nothing currently enforces the documented two-value edit.

I did not run the live RUN_ACQ=1 path; no acq or msb backend is available in this environment, so your live verification is the only end-to-end evidence and I take it as reported.

@wz-gsa
wz-gsa merged commit 0c5258e into main Oct 19, 2026
7 checks passed
@wz-gsa
wz-gsa deleted the feat/paseo-0.12.0 branch October 19, 2026 19:23
wz-gsa pushed a commit that referenced this pull request Oct 20, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.14.0](v1.13.0...v1.14.0)
(2026-10-19)


### Features

* **paseo:** bump pinned Paseo CLI to 0.12.0
([#504](#504))
([0c5258e](0c5258e))


### Bug Fixes

* **acq-kits:** bump opencode kit to OpenCode 2.0.30
([#499](#499))
([c9d2281](c9d2281))
* **acq-kits:** give verify scripts a "could not check" verdict state
([#460](#460))
([306906a](306906a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
mogul pushed a commit to GSA-TTS/agentic-coding-quickstart that referenced this pull request Oct 21, 2026
## Summary

Moves `PATTERNS_KIT_REF` from v1.12.0 (`56d1f5f`) to
agentic-coding-patterns v1.15.0 (`f3c6acb`), so the built-in kit bundle
picks up:

- **opencode kit → OpenCode 2.0.30**
(GSA-TTS/agentic-coding-patterns#499). OpenCode 2.0.0–2.0.29 ignore
config `instructions` (anomalyco/opencode#51341, fixed in 2.0.30), so a
sandbox on an image without a baked OpenCode (`devenv-shell`, or the
`devenv-shell` default proposed in #584) currently runs the bundled
2.0.22 and silently drops `instructions`-based conventions.
- **paseo kit → Paseo 0.12.0** (GSA-TTS/agentic-coding-patterns#504):
fixes for OpenCode v2 under Paseo (daemon OOM on long v2 streams,
multi-select answers, HTTP 500s instead of tool errors) and the
host-sleep daemon-status fix.
- **Kit verify scripts gain a "could not check" verdict**
(GSA-TTS/agentic-coding-patterns#460); it only affects kit verify
output.

Also v1.13.0: usai-provider's host-side catalog normalizer (#436), the
paseo identity-gate script (#453), and the team-kit and personal-kit
templates under `acq-kits/examples/`. None changes what acq applies by
default beyond the two kits above.

Also v1.15.0: refreshed usai-provider model catalog
(GSA-TTS/agentic-coding-patterns#519,
GSA-TTS/agentic-coding-patterns#484), the OpenDesign opt-in kit
(GSA-TTS/agentic-coding-patterns#438), and the provider-neutral input
contract (GSA-TTS/agentic-coding-patterns#518). acq's provider-facts
loader reads `provider-facts/usai.env`, which v1.15.0 does not change.

The doc examples and Bats assertions that spell the pin move with it.
KNOWN_FAILURE_MODES §9 now names 2.0.30 as the version the kit installs
and notes its 15-minute default `chunkTimeout` (the timeout message and
retry limits are unchanged from 2.0.22).

## Verification

On the v1.15.0 pin:

- Focused Bats: `135-configure`, `95-kit-ref-persistence`,
`36-agent-catalog`, `50-kit-list-completeness` (63/63)
- markdownlint on the changed docs

On the earlier v1.14.0 pin (not re-run for v1.15.0):

- `npm run lint:md`
- `RUN_ACQ=1 scripts/verify-backends --only msb` on macOS, msb 0.7.8: 16
passed, 1 skipped (playbook fetch, no `gh` login), run with `TMPDIR` set
to its resolved `/private/var/...` path to get past an unrelated create
failure that also hits `main` (#594)
- Downstream, with this pin on msb 0.7.8 and
`ACQ_IMAGE=devenv-shell:1.0.0`: a team kit's end-to-end verify passed
71/71 (OpenCode 2.0.30 runs and loads `instructions`); with the paseo
kit added, Paseo 0.12.0 drove an OpenCode 2.0.30 agent that received the
team `instructions`, and its sessions survived a backup, `acq rm`,
recreate and restore

## Rollback

Revert this PR to restore the v1.12.0 bundle.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants