Skip to content

trust roots: a manifest-declared policy pack outside policies/** must be a trust root #1075

Open

Description

@pengfei-threemoonslab

Deferred by the engineering-review implementation loop from #1074 (issue #1024).

Problem

The trust-root glob table in src/agents_shipgate/core/trust_roots.py:28-58 covers policies/** and the other fixed paths, but a policy pack the manifest declares elsewhere (checks.policy_packs naming, for example, rules/org.yaml) is not a trust root. A PR that edits only that file produces no TRUST-ROOT-TOUCHED finding and can come back mergeable / complete. This is pre-existing on origin/main; #1074 adds trust-root classification for an in-repo --diff-from, --baseline and --policy-pack passed on the command line, but not for packs declared in the manifest.

Evidence

Proposed fix

Treat every path the manifest binds as policy input (checks.policy_packs, and any other manifest-declared policy or baseline path) as a trust root with class policy, resolved against the base manifest, so a PR cannot un-declare a pack and edit it in the same change. Regression test with a pack outside policies/**. CHANGELOG bullet; STABILITY note for the broadened trust-root set (fingerprints for newly covered paths are new, existing ones must not move).

Acceptance criteria

  • A PR editing a manifest-declared pack outside policies/** fires TRUST-ROOT-TOUCHED (class policy) and is not mergeable without human review.
  • A PR that removes the declaration and edits the file is judged against the base declaration.
  • Goldens and existing fingerprints unchanged.

Source

Engineering review 2026-10-12 follow-up (PR #1074 implementer note). Tracked in #1060.

Activity

  1. added
    bugSomething isn't working
    P1Next after P0; blocks other work or ships a misleading result
    area:verifyverify / preview orchestration and SHIP-VERIFY-* checks
    engineering-reviewFiled from the 2026-10-12 comprehensive engineering review
    on Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Next after P0; blocks other work or ships a misleading resultarea:verifyverify / preview orchestration and SHIP-VERIFY-* checksbugSomething isn't workingengineering-reviewFiled from the 2026-10-12 comprehensive engineering review

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions