Make agent-authored changes show exact evidence before merge.

GitPin is an agent-delivery assurance gate. It checks that material pull-request changes are covered by named claims and exact committed line hashes. Policy comes from the trusted base branch; evidence comes from the pull-request head.

Read-only. Base-trusted. Full SHAs. No arbitrary command execution.

gitpin BASE POLICY · HEAD EVIDENCE

Synthetic PR gate walkthrough

  1. 1
    Material path enters the diffLoading artifact…
  2. 2
    Required coverage is missing

    FAIL Loading artifact…

  3. 3
    Pin the exact committed line
    Loading artifact…Loading artifact…
  4. 4
    Rerun with complete coverage

    PASS Loading artifact…

Loading deterministic walkthrough…

Loading static walkthrough summary…

Review question

Did the agent cover every material file it changed?

Every material changed path must map to a named claim.

Verified
Coverage is checked against the merge-base diff.
Review value
Reviewers can see which claims cover which files.
Boundary
GitPin does not judge whether a claim is semantically true.

Evidence set 8e44b735…be61

How it works in three steps

Pull-request loop: diff → claim → exact evidence → required check.

GitPin compares the merge-base diff with a committed evidence manifest, then re-checks every locator against the exact base or head commit. It verifies evidence integrity—not whether a claim is semantically true.

1 Trust policy from base

schemaVersion: 1
manifestPath: .gitpin/change-evidence.json
coverage:
  include: ["**"]
policyChanges: block
Merge-base diff Cover · Verify

2 Cover material changes

claim → changed paths → exact locators

3 Require the check

docs/architecture.md:42 990c830d58cc68d63901985e5234ed3137819802

A deliberately narrow trust boundary.

Read the architecture
Read-only gate
GitPin never writes, commits, executes repository commands, or changes repository state.
Base-trusted policy
A pull request cannot weaken the policy used to judge itself.
Sensitive paths blocked
Environment files, credentials, keys, tokens, and secrets fail closed.
Dirty work excluded
Local answers come from committed HEAD, with stale documentation signaled.
Evidence, not truth theater
The report says a locator was verified; it never claims semantic proof.

Require evidence before merge.

First commit the base policy and evidence manifest from the setup guide. Then add the released Action with read-only permissions and make its evidence job a required check.

Open the complete setup guide

name: GitPin Evidence Gate
on:
  pull_request:

permissions:
  contents: read

jobs:
  evidence:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
        with: { fetch-depth: 0 }
      - uses: shmindmaster/gitpin@v0.6.3
        with:
          base-sha: ${{ github.event.pull_request.base.sha }}
          head-sha: ${{ github.event.pull_request.head.sha }}

Keep retrieval local with the optional MCP server for Claude Code, Codex, Cursor, Windsurf, Zed, and Continue.

Local evidence remains lightweight

  • pin.catalog
  • pin.search_docs
  • pin.search_code
  • pin.prove
  • pin.verify
  • pin.prove_set
  • pin.verify_set
  • pin.get_doc
  • pin.read
  • pin.analyze
  • pin.inspect
  • pin.compare

MIT licensed. Built in public.
Contributions backed by repeatable validation.