Skip to content

feat(prs-556): make ABI trust posture an explicit policy - #457

Open
pepe-anchor wants to merge 1 commit into
mainfrom
prs-556-core-policy
Open

feat(prs-556): make ABI trust posture an explicit policy#457
pepe-anchor wants to merge 1 commit into
mainfrom
prs-556-core-policy

Conversation

@pepe-anchor

Copy link
Copy Markdown
Contributor

Replaces #440. Same branch, same single commit, same base. #440 was still the last
live member of GitHub stack #445, whose other four entries (#441 closed, #442/#443/#444
merged into their parent branches) are all dead. That stale membership locked #440's
base against retargeting and kept advertising a stack topology that no longer exists.
#440 had no comments and no reviews.

Why am I making this PR?

The parser currently makes ABI trust decisions per-request, meaning a caller can opt into leniency by omitting a signature. The trust posture should be a deploy-time choice, fixed at startup and auditable in the TVC manifest.

What am I changing?

Add MetadataTrustPolicy enum (AcceptUnsigned | RequireAllowlistedSigner) and SignerAllowlist to visualsign::signing. No Default impl, a deployment must explicitly state which posture it runs. Marked #[non_exhaustive] so future posture variants are safe.

What is the Linear ticket?

PRS-556

What are the rollback steps?

Revert the commit. No wire-format or API changes at this layer.

Is this change backwards compatible?

Yes. No existing callers are broken, MetadataTrustPolicy has no Default impl so every construction site is explicit.

Does this require cross-team/service coordination?

No.

How do I know it works as designed? Which tests exercise this code?

Existing signing.rs unit tests cover SignerAllowlist construction and policy accessors.

Verified at this commit: cargo clippy --all-targets -- -D warnings clean, cargo fmt --check clean. The ubuntu CI job passed on this exact commit under #440 (run 31109841752).

Add MetadataTrustPolicy enum (AcceptUnsigned | RequireAllowlistedSigner)
and SignerAllowlist to visualsign::signing. No Default impl — a deployment
must state which posture it runs. Mark enum #[non_exhaustive].
Copilot AI lite review requested due to automatic review settings August 6, 2026 18:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces an explicit, deploy-time ABI metadata trust posture in visualsign::signing by making MetadataTrustPolicy explicitly non-default and preparing it for future expansion.

Changes:

  • Updates MetadataTrustPolicy docs to reflect a deploy-time (startup) trust posture decision.
  • Marks MetadataTrustPolicy as #[non_exhaustive] to allow adding future posture variants.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +130 to +133
/// Because the choice lives on the parser's cmdline (for the enclave binary, in
/// the `pivotArgs` of the signed TVC manifest), a signer can verify out of band
/// which posture the deployment they are signing against actually runs, instead
/// of trusting a per-request signal or a log line that no one sees.
Comment on lines +153 to +155
/// Marked `#[non_exhaustive]` so a third posture can be added without breaking
/// downstream crates that match on this enum. Every match today lives in this
/// module; consumers only construct variants.
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.

2 participants