Product Specifications
Browse technical specifications and schemas
File Tree
Open Agent Passport Conformance
Overview
This document defines the conformance requirements for Open Agent Passport (OAP) implementations. Conformance ensures interoperability and security across different implementations.
Conformance Levels
Basic Conformance
Basic conformance requires:
- Schema validation: Validate passports against
passport-schema.json - Decision generation: Generate decisions matching
decision-schema.json - Signature verification: Verify Ed25519 signatures on decisions
- Error handling: Return standardized error codes
Full Conformance
Full conformance requires all basic conformance requirements plus:
- Policy evaluation: Implement policy pack evaluation logic
- JCS canonicalization: Use RFC 8785 for canonicalization
- Key resolution: Resolve keys via
/.well-known/oap/jwks.json - Suspend semantics: Implement 30-second global invalidation
- Performance: Meet performance requirements (see below)
Implementation Requirements
Passport Validation
Implementations MUST:
- Validate schema: Ensure passport matches
passport-schema.json - Check required fields: Verify all required fields are present
- Validate formats: Check UUID, date-time, and enum formats
- Verify assurance: Ensure assurance level is valid
- Check status: Validate status transitions (draft → active → suspended/revoked)
Status State Machine
draft → active → suspended → active
↓ ↓ ↓
revoked revoked revoked
Decision Generation
Implementations MUST:
- Generate decision_id: Create unique UUID v4 for each decision
- Include all required fields: Populate all required decision fields
- Set expiration: Set
expires_atbased on policy and context - Compute digest: Calculate
passport_digestusing SHA-256(JCS(passport)) - Sign decision: Create Ed25519 signature over JCS-canonicalized decision
- Set kid: Include proper key identifier
Policy Evaluation
Implementations MUST:
- Load policy pack: Retrieve policy pack by ID
- Validate context: Check context against policy requirements
- Check capabilities: Verify passport has required capabilities
- Validate limits: Ensure operation within configured limits
- Check assurance: Verify assurance level meets minimum requirement
- Check regions: Validate operation is allowed in request region
- Generate reasons: Create appropriate reason codes and messages
Signature Verification
Implementations MUST:
- Parse signature: Extract Ed25519 signature from decision
- Resolve key: Fetch public key using
kidand/.well-known/oap/jwks.json - Canonicalize: Apply JCS canonicalization to decision payload
- Verify signature: Use Ed25519 to verify signature
- Check expiration: Ensure decision hasn't expired
- Validate digest: Verify passport digest matches
Error Handling
Implementations MUST:
- Return standard codes: Use normative error codes from specification
- Include context: Provide relevant context in error messages
- Log errors: Log all errors for debugging and monitoring
- Handle gracefully: Don't expose internal implementation details
Standard Error Codes
oap.invalid_context- Context data is invalidoap.unknown_capability- Capability not recognizedoap.limit_exceeded- Operation exceeds limitsoap.currency_unsupported- Currency not supportedoap.region_blocked- Operation not allowed in regionoap.assurance_insufficient- Assurance level too lowoap.passport_suspended- Passport is suspended/revokedoap.idempotency_conflict- Idempotency key conflictoap.policy_error- Policy evaluation error
Performance Requirements
Response Times
Implementations SHOULD meet these performance targets:
- Passport verification: ≤ 100ms (95th percentile)
- Policy evaluation: ≤ 100ms (95th percentile)
- Decision generation: ≤ 300ms (95th percentile)
- Signature verification: ≤ 50ms (95th percentile)
Throughput
Implementations SHOULD support:
- Decision rate: ≥ 1000 decisions/second
- Concurrent requests: ≥ 100 concurrent requests
- Cache hit rate: ≥ 95% for passport lookups
Scalability
Implementations SHOULD:
- Horizontal scaling: Support multiple instances
- Load balancing: Distribute load across instances
- Caching: Implement multi-level caching
- Database optimization: Use appropriate indexes and queries
Test Requirements
Conformance Tests
Implementations MUST pass all conformance tests:
- Schema validation tests: Test valid and invalid passports
- Decision generation tests: Test decision creation and validation
- Signature tests: Test signature creation and verification
- Policy tests: Test policy pack evaluation
- Error handling tests: Test error conditions and responses
- Performance tests: Test response times and throughput
Test Vectors
Test vectors are provided in spec/conformance (the conformance/ directory of aporthq/aport-spec):
- Passport examples: Valid and invalid passport samples
- Context data: Policy evaluation context samples
- Expected decisions: Expected decision outputs
- Signature tests: Signature creation and verification tests
Seven packs also ship fixtures under policies/: deliverable.task.complete.v1, finance.payment.charge.v1, finance.payment.refund.v1, finance.transaction.execute.v1, governance.data.access.v1, legal.contract.review.v1, media.image.generate.v1.
Suite Status (2026-09-24)
The suite is Candidate entry criterion 3 (see VERSION.md) and does not pass it today, which is one of the reasons the specification is still a Working Draft:
spec/conformance/cases/holds cases for two packs under their pre-rename ids,payments.refunds.v1anddata.export.v1. The packs were renamed on 2025-10-08.node test-runner.js(simple mode) passed 5 of 5; it does not check pack ids against the registry.tsx src/runner.tsfailed 5 of 5 with "Unknown policy pack".- 20 of 22 registered packs have no cases in the suite.
decision-schema.jsoncannot be satisfied as written (see the Status section of oap-spec.md), so any schema check of a decision fails until it is fixed.
Bringing the suite to green means renaming the case directories to the current pack ids, making test-runner.js check those ids so the two runners agree, and fixing the decision schema. Criterion 3 asks only that the suite run against the current registry and pass; cases for the remaining 20 packs are a Final criterion. Because the text is a Working Draft, none of this is constrained by a maturity rule.
Running Tests
# Install dependencies (from spec/conformance)
pnpm install
# Run all tests
pnpm test
# Run one currently present legacy case id (until the cases are renamed)
pnpm test --pack payments.refunds.v1
# Simple JavaScript runner
pnpm run test:simple
How a passing suite feeds a release (tag, publish, announce, deprecation window) is described under "How the Spec Is Released" in VERSION.md.
Security Requirements
Cryptographic Security
Implementations MUST:
- Use Ed25519: Use Ed25519 for all signatures
- Secure random: Use cryptographically secure random for UUIDs
- Key management: Implement secure key storage and rotation
- HTTPS: Use HTTPS for all network communication
- Certificate validation: Validate TLS certificates properly
Data Protection
Implementations MUST:
- Encrypt sensitive data: Encrypt passports and decisions at rest
- Access controls: Implement proper access controls
- Audit logging: Log all security-relevant events
- Data retention: Implement appropriate data retention policies
Interoperability
Standard Compliance
Implementations MUST:
- Follow specifications: Implement all normative requirements
- Use standard formats: Use standard JSON and UUID formats
- Support standard capabilities: Support all standard capabilities
- Handle extensions: Gracefully handle unknown fields and capabilities
Cross-Implementation Testing
Implementations SHOULD:
- Test with other implementations: Verify interoperability
- Share test results: Publish conformance test results
- Report issues: Report interoperability issues
- Contribute tests: Contribute additional test cases
Certification
Certification is not available while OAP 1.0 is a Working Draft. Implementations may run the tests for editor feedback and interoperability development, but they must not claim OAP conformance until the specification reaches Candidate or Final status.
Self-Certification (Candidate or Final Only)
Once the text is Candidate or Final, implementations can self-certify by:
- Running conformance tests: Pass all required tests
- Documenting compliance: Document conformance to requirements
- Publishing results: Publish test results publicly
- Maintaining compliance: Keep implementation up to date
Third-Party Certification
For higher assurance after Candidate or Final status, implementations can seek third-party certification:
- Security audit: Independent security review
- Performance testing: Independent performance validation
- Compliance review: Independent conformance verification
- Certification mark: Use official OAP certification mark
Compliance Monitoring
Continuous Monitoring
Implementations SHOULD:
- Monitor performance: Track response times and throughput
- Monitor errors: Track error rates and types
- Monitor security: Track security events and anomalies
- Monitor compliance: Track conformance to requirements
Reporting
Implementations SHOULD:
- Regular reports: Publish regular compliance reports
- Incident reporting: Report security incidents promptly
- Update notifications: Notify users of updates and changes
- Deprecation notices: Provide advance notice of deprecations