Skip to content

Pin bundled install snippets to zero-install uvx/pipx run#166

Open
pengfei-threemoonslab wants to merge 2 commits into
mainfrom
claude/exciting-tharp-684942
Open

Pin bundled install snippets to zero-install uvx/pipx run#166
pengfei-threemoonslab wants to merge 2 commits into
mainfrom
claude/exciting-tharp-684942

Conversation

@pengfei-threemoonslab
Copy link
Copy Markdown
Contributor

Summary

  • Pin the bundled adoption-kit/skill install snippets to a zero-install, version-pinned runner (uvx agents-shipgate@0.11.0 / pipx run agents-shipgate==0.11.0) so a coding agent can never silently run a stale PyPI/pipx build. We have seen a global 0.8.0 shadow newer releases — that build has no verify subcommand and writes no verifier.json, which silently breaks the merge gate.
  • Make the remaining pip install / pipx install fallback assert >=0.11.0 and fail loudly (STOP if this prints < 0.11.0), since a plain pipx install is a no-op when an older build already exists.
  • Applied to the install/quickstart steps of prompts/add-shipgate-to-repo.md (the bootstrap "Install the tool" step) and prompts/decide-shipgate-relevance.md (its pipx install mention), kept byte-identical across all 3 copies (prompts/, skills/agents-shipgate/prompts/, adoption-kits/claude-code-skill/prompts/).
  • Bumped the two EXPECTED_CLAUDE_CODE_SKILL_RENDER_SHA256 entries and appended the outgoing render hashes to prior_render_sha256 in the kit metadata (bootstrap_legacy_sha256 left frozen). Pin literals equal the pyproject version (0.11.0), so the Action/pip pin contract tests stay green.

Type

  • Check or risk-model change
  • Input adapter change
  • CLI or GitHub Action behavior
  • Report, schema, or SARIF output
  • Documentation only (bundled agent-facing prompts)

Verification

CI is authoritative for python -m ruff check ., python -m compileall -q src tests, and python -m pytest.

Additional local checks run (.venv interpreter + PYTHONPATH=<worktree>/src):

  • tests/test_prompt_parity.py, tests/test_agent_instructions_renderers.py, tests/test_public_surface_contract.py → exit 0
  • tests/test_agent_instructions_apply.py, tests/test_packaging.py → exit 0
  • ruff check tests/test_agent_instructions_renderers.py → clean

Release-readiness notes

  • No user-code import added to default scan paths
  • No network access added to default scan paths
  • New or changed check IDs are documented in docs/checks.md — n/a, no check IDs changed
  • Report/schema changes are additive or documented in STABILITY.md — n/a, no schema change

🤖 Generated with Claude Code

pengfei-threemoonslab and others added 2 commits June 2, 2026 18:04
The bundled adoption-kit/skill install steps recommended a bare
`pipx install agents-shipgate`, which is a no-op when an older build is
already on PATH. A coding agent could then silently run a stale release
(we have seen 0.8.0) that has no `verify` subcommand and writes no
verifier.json, breaking the merge gate.

Lead the install/quickstart steps with a pinned, zero-install runner
(`uvx agents-shipgate@0.11.0` / `pipx run agents-shipgate==0.11.0`) that
fetches the exact version regardless of any global install, and make the
remaining pip/pipx install fallback assert `>=0.11.0` and fail loudly.

Applied across the 3 byte-identical copies of add-shipgate-to-repo.md
and decide-shipgate-relevance.md (prompts/, skills/, adoption-kits/);
render-hash snapshot bumped and outgoing hashes appended to
prior_render_sha256 (bootstrap_legacy untouched). Pin literals equal the
pyproject version (0.11.0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Address PR review feedback:

- add-shipgate-to-repo.md: define one pinned runner variable in step 1
  (SG="uvx agents-shipgate@0.11.0" / "pipx run agents-shipgate==0.11.0")
  and route every command block through $SG, so copying the prompt
  verbatim can't fall through to a stale PATH binary. The install-onto-
  PATH fallback sets SG=agents-shipgate only after the version floor is
  confirmed.

- decide-shipgate-relevance.md: the decision flow now always runs detect
  through the pinned runner; a bare `agents-shipgate detect` is gated on
  `agents-shipgate --version` confirming >=0.11.0, closing the path where
  a stale installed 0.8.0 answered unguarded.

- test_public_surface_contract.py: add UVX_PIN_PATTERN +
  test_uvx_pins_match_pyproject_version so `uvx agents-shipgate@X.Y.Z`
  literals can't go stale on a pyproject bump, and add
  decide-shipgate-relevance.md (prompts/ + skills/) to ACTION_PIN_FILES.

Re-synced all 3 byte-identical copies and bumped the render-hash snapshot.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant