Repository navigation
Add Signal trust policy profiles - #41
Merged
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds a compact “trust policy profile” abstraction to Signal trust-policy checks, allowing callers to select common policy presets (e.g., established-only, freshness-gated) while keeping existing explicit knobs (allowed statuses / max age) as higher-precedence overrides. It also propagates the resolved profile through single, batch, and per-decision outputs, updates fixtures/docs, and bumps the plugin version for release.
Changes:
- Added
policy_profilefields to trust-policy config/input/subject contracts and surfaced the resolved profile in outputs. - Implemented profile resolution (
allow_new/default,established_only,fresh_30d,reset_only) by mapping profiles onto existing status/freshness gates with explicit overrides taking precedence. - Updated pipeline fixture + tests to exercise profile behavior and bumped plugin metadata/version to
0.32.0.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| testdata/pipelines/signal-trust-reset.yaml | Switches fixture policy checks to policy_profile: established_only and records profile in summary outputs. |
| README.md | Documents policy_profile presets, precedence/override behavior, and fail-closed behavior for unknown profiles. |
| proto/signal.proto | Adds policy_profile to public proto contracts for trust-policy config/input/output and batch/subject/decision messages. |
| plugin.json | Bumps plugin version and download URLs to v0.32.0. |
| Makefile | Bumps default VERSION to 0.32.0. |
| internal/trust_store.go | Introduces profile constants, threads profile through policy-check request/result, and includes profile in batch policy ref hashing. |
| internal/trust_policy_test.go | Adds coverage for profile resolution, explicit overrides, unknown profile fail-closed, freshness gating, and batch behavior. |
| internal/steps.go | Resolves profiles into effective allowed-status/max-age gates and returns resolved profile via single/batch/decision outputs. |
| internal/contracts/signal.proto | Mirrors proto contract changes for internal generated contracts. |
| internal/contracts/signal.pb.go | Regenerated protobuf Go bindings to include new policy_profile fields/getters. |
Files not reviewed (1)
- internal/contracts/signal.pb.go: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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
policy_profilefields to Signal trust-policy check and batch contractsallow_new,established_only,fresh_30d,reset_only) into existing trust status/freshness gates while preserving explicit overrides0.32.0for releaseVerification
GOWORK=off go test ./internal -run 'TrustPolicy' -count=1failed before proto fields existed with missingPolicyProfilefields/getters\n-GOWORK=off go test ./internal -run 'TrustPolicy|ProviderContracts' -count=1\n-GOWORK=off go test ./... -count=1\n-GOWORK=off go vet ./...\n-make build VERSION=0.32.0\n-make pipeline-test VERSION=0.32.0\n-wfctl plugin validate-contract --for-publish --tag v0.32.0 .\n-wfctl plugin verify-capabilities --binary <tmp-built-0.32.0-binary> .\n-bash /Users/jon/.codex/plugins/cache/autodev-marketplace/autodev/6.5.11/tests/no-machine-paths.sh .\n-git diff --check\n\n## Notes\n-wfctl plugin audit -strict -strict-contracts .still reports existing legacy manifest/static descriptor gaps (legacy_plugin_manifest, 52/57 strict step descriptors, 0/2 trigger descriptors). That is not introduced by this PR and is broader than the profile boundary.\n