Sync agent-facing contract to v0.9 and refresh adoption surfaces#49
Merged
pengfei-threemoonslab merged 4 commits intomainfrom May 7, 2026
Merged
Sync agent-facing contract to v0.9 and refresh adoption surfaces#49pengfei-threemoonslab merged 4 commits intomainfrom
pengfei-threemoonslab merged 4 commits intomainfrom
Conversation
Multiple agent-facing files (llms.txt, .well-known metadata, the Claude skill, slash command, FAQ, examples README, bootstrap prompt) referenced report schema v0.7/v0.8 as current and instructed agents to gate on summary.status. Current schema is v0.9 and the gating signal has been release_decision.decision since v0.8 — coding agents reading the stale files would build baseline-blind release gates. Contract sync: - Add docs/agent-contract-current.md as the single source of truth that other agent surfaces link to instead of restating the contract. - Update llms.txt, .well-known/agents-shipgate.json, the skill, slash command, FAQ, prompt (canonical + skill-bundled), and examples README to point at v0.9 and lead with release_decision.decision. - Add tests/test_public_surface_contract.py to fail PRs that drift from the current contract on any of the public agent surfaces. README and Action adoption funnel: - Promote the Release Evidence Packet to a first-class output bullet and surface it in the 60-second demo's expected output (was missing from README entirely). - Add a "See it block a PR" section linking the three Golden PRs (also previously unreferenced from README). - Drop the duplicated Quickstart section; fold alt installs into Scan your repo. - Replace the partial CI snippet with the full advisory workflow (with permissions, pr_comment, timeout, version pin). - Make the Action PR comment idempotent via a sticky marker (listComments + updateComment) so re-runs update in place instead of spamming the PR. - Add CI-mode and packet-artifact lines to the comment template. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- action.yml: paginate the listComments lookup for the sticky-marker
upsert. Single-page (per_page=100) lookup silently regressed to
append-on-rerun once a PR had >100 earlier comments before
Shipgate's first scan. Use github.paginate so the marker lookup
walks all pages. Added test_action_pr_comment_paginates_listcomments_lookup
to pin the behavior.
- README.md: drop the "idempotent (updates in place on re-runs)"
promise from the GitHub Action section. The pinned @v0.8.0 tag's
action.yml still calls createComment; the upsert ships with this
branch but isn't released yet, so the README would mislead users
copying the workflow today. The same idempotence note is removed
from examples/github-actions/README.md for the same reason.
- README.md: replace the fabricated 60-second demo output with what
the CLI actually prints (Decision/Blockers/Counts/Reports lines)
and drop the SARIF and `agents-shipgate-reports/` artifact claims —
the fixture command writes report.{md,json} + packet.{md,json,html}
to a temp directory, not SARIF and not the standard reports dir.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…utt-27aca8 # Conflicts: # README.md # action.yml # examples/github-actions/README.md # skills/agents-shipgate/SKILL.md
Cosmetic-only: the assertion failure docstring still cited
packet-schema.v0.1.json after the v0.2 bump landed in the merge
commit. The assertion itself ("packet" in schemas) is version-
agnostic and was passing — no behavior change.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Contract sync. Multiple agent-facing files (
llms.txt,.well-known/agents-shipgate.json,skills/agents-shipgate/SKILL.md,.claude/commands/shipgate.md,docs/faq.md,prompts/add-shipgate-to-repo.md,examples/github-actions/README.md) referenced report schema v0.7/v0.8 as current and instructed agents to gate onsummary.status. Current schema is v0.9 and the gating signal has beenrelease_decision.decisionsince v0.8 — coding agents reading these files would build baseline-blind release gates. Updated each file to point at v0.9 and lead withrelease_decision.decision. Addeddocs/agent-contract-current.mdas the single source of truth that other surfaces link to instead of restating the contract. Addedtests/test_public_surface_contract.py(33 parametrized assertions) so PRs that drift from the contract on any public surface fail CI.README adoption funnel. The Release Evidence Packet (first-class output per STABILITY.md) and the three Golden PRs (
examples/golden-prs/) were entirely absent from the README. Promoted both: packet now has its own bullet under "What it produces" plus an expected-output block in the 60-second demo; new "See it block a PR" section links the Golden PRs. Dropped the duplicated Quickstart section (its alt-install methods are folded into "Scan your repo"). Replaced the partial CI snippet with the full advisory workflow (permissions,pr_comment, timeout, version pin).Action PR comment idempotent.
action.ymlpreviously calledgithub.rest.issues.createComment()on every run, appending a fresh comment each time and spamming PRs. Now uses a<!-- agents-shipgate-pr-comment -->sticky marker pluslistComments+updateCommentupsert. Template also gains a CI-mode line ("this PR would fail CI" / "this PR is not blocked by Shipgate") and explicit packet-artifact pointers.examples/github-actions/README.mdoutputs section reordered: v0.8+ outputs (decision,blocker_count,review_item_count,ci_would_fail) lead; legacy outputs are explicitly labeled.Type
The Action change (PR-comment upsert) is the only behavior change; everything else is documentation-shaped.
Verification
CI is authoritative for
python -m ruff check .,python -m compileall -q src tests, andpython -m pytest.Additional local checks run:
python -m pytest— 459 passed (including the 33 new contract-drift assertions and 4 new action-metadata assertions).python -m ruff check .— clean.node --checkon the inline JS inaction.yml's github-script step — parses without error.grepforreport-schema.v0.[78]across*.md/*.txt/*.json/*.yml— only matches are in CHANGELOG (historical),docs/INDEX.md(frozen-reference labels), anddocs/agent-contract-current.md(frozen-reference list). No agent-facing surface advertises a stale schema as current.grepforsummary.status— every mention sits next to a 'legacy / baseline-blind / v0.7 compat' marker per the new drift test.Release-readiness notes
docs/checks.md(no check changes in this PR)STABILITY.md(no schema changes in this PR; this PR makes existing surfaces match what STABILITY.md already specifies)Reviewer notes
pr_comment_mode: create|upsert|offknob can layer on later without breaking this default.skills/agents-shipgate/prompts/add-shipgate-to-repo.mdis byte-identical to the canonicalprompts/add-shipgate-to-repo.mdper the existingtest_prompt_byte_identical_across_locationsparity test.agents-shipgate demoalias,examples/before-after/example, dedicated Codex/Cursor docs, scan-sidenext_actions[],agents-shipgate diff. None contract-affecting; spin up separate PRs when needed.🤖 Generated with Claude Code