Skip to content

Phase 1: fail closed across verifier evidence paths#274

Open
pengfei-threemoonslab wants to merge 4 commits into
mainfrom
enforce_non_mergeable
Open

Phase 1: fail closed across verifier evidence paths#274
pengfei-threemoonslab wants to merge 4 commits into
mainfrom
enforce_non_mergeable

Conversation

@pengfei-threemoonslab

@pengfei-threemoonslab pengfei-threemoonslab commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR is the Phase 1 trustworthy-candidate hardening pass. It makes non-mergeable verifier states operationally fail closed and closes several evidence paths that could previously degrade silently.

Changes

  • Fail both Agents Shipgate workflows on every non-mergeable verifier verdict:
    • blocked
    • human_review_required
    • insufficient_evidence
    • unknown
  • Emit source warnings for parsed-but-invalid .mcp.json files instead of silently returning an empty tool surface.
  • Treat unrecognized n8n MCP Client selection modes as an unproven wildcard surface and route them to review.
  • Convert enabled plugin validation/runtime failures into source-warning evidence while preserving advisory CLI exit behavior.
  • Fail closed when the verifier cannot collect working-tree diff context.
  • Route semantic diff-reference degradation through the typed evidence action rather than matching CLI command/path strings.
  • Correct the handoff v5 documentation and control.next_action guidance.
  • Update workflow contract tests for the new four-verdict policy and make the help-output assertion robust to Rich line wrapping.

Validation

  • Ruff: passed on all tracked Python files.
  • Generated-schema consistency: passed.
  • Static-adapter suite: 400 passed.
  • Remaining non-performance suite: 3,468 passed, 5 skipped.
  • Committed-tree verification receipt:
    sha256:4e03af1348814cdadf9393dd42c41f3606b8209807be578358069628045e1b78

Trust and release state

The committed-tree verifier completed successfully, but the candidate is intentionally not mergeable without human review:

  • control.state = human_review_required
  • control.must_stop = true
  • gate.merge_verdict = insufficient_evidence
  • Both workflow files are correctly recognized as touched release trust roots.
  • shipgate.yaml#agent_bindings.root still requires a human-reviewed exact source_id and object declaration.

This PR does not suppress findings, lower severity, expand a baseline/waiver, weaken CI, or invent binding/authority evidence.

Required human action before merge

  1. Review the two protected workflow changes as release trust-root changes.
  2. Determine and author the real root binding values in shipgate.yaml#agent_bindings.root; do not infer or auto-fill them.
  3. Rerun:
agents-shipgate verify --base origin/main --head HEAD --json

The resulting verifier artifact remains the authority for merge readiness.

pengfei-threemoonslab and others added 2 commits July 15, 2026 17:06
Expand fail_on_merge_verdicts in both advisory workflows so PRs cannot merge while the verifier reports human review, insufficient evidence, or unknown states.

Co-authored-by: Cursor <cursoragent@cursor.com>
@pengfei-threemoonslab pengfei-threemoonslab changed the title Fail CI on all non-mergeable Shipgate verifier verdicts. Phase 1: fail closed across verifier evidence paths Jul 16, 2026
pengfei-threemoonslab and others added 2 commits July 15, 2026 22:21
Replace the click.utils.strip_ansi dependency with a local helper so the test module loads in CI without a direct click import.

Co-authored-by: Cursor <cursoragent@cursor.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