Migrating from Manual Approval Flows
If your codebase already has ad-hoc approval logic —input() prompts, Slack confirmation bots, or custom approval middleware — Attesta can replace them with a unified, auditable framework.
Before: Manual Approval Patterns
- Inline input()
- Custom Decorator
- Slack Bot
After: Attesta
1
Install Attesta
2
Replace Inline Prompts
Replace manual Attesta now handles the approval prompt, risk scoring, minimum review time enforcement, and audit logging — all automatically.
input() calls with the @gate decorator:3
Replace Custom Decorators
If you had a homegrown approval decorator, replace it with
@gate:4
Replace Slack Bots
If you had a custom Slack approval bot, replace it with an Attesta
SlackRenderer:5
Handle AttestaDenied
Replace your custom error handling with
AttestaDenied:6
Add Configuration
Create an Then load it:
attesta.yaml to centralize your policy:attesta.yaml
Migration Checklist
Migrating Between Attesta Versions
v0.x to v1.0 (Current)
Attesta follows semantic versioning. The v0.x series is the initial release; v1.0 will be the first stable API.Breaking Changes to Watch For
- Import Paths
- Configuration Format
- Challenge Map Keys
Imports were consolidated in v0.1.0. If you are upgrading from an earlier pre-release:The package was renamed from
gatekeeper-ai to attesta. Update all imports.Upgrade Procedure
1
Update the Package
2
Check for Deprecation Warnings
Run your test suite with warnings enabled:Attesta emits
DeprecationWarning for legacy features that will be removed in a future version.3
Update Configuration Format
If you are still using the flat YAML format, migrate to the rich format. Use
from_config() — it auto-detects both formats, so you can migrate incrementally.4
Verify Audit Chain Continuity
After upgrading, verify that the existing audit chain is still intact:
5
Update Trust Engine Storage
If you are using persistent trust storage, the TrustEngine will load existing data automatically. No manual migration is needed for trust profiles.
6
Run the Full Test Suite
Timeout Policy Migration Notes (fail_mode)
Recent releases wire policy.fail_mode and policy.timeout_seconds directly into
runtime gate behavior (Python and TypeScript SDKs).
For challenge timeouts:
Example:
TIMED_OUT, audit your
policy config before upgrading and explicitly set fail_mode: deny.
Upgrading Domain Profiles
Domain profiles encode industry-specific risk patterns, sensitive terms, and compliance references. When regulations change or your domain knowledge evolves, you need to update them.Updating a Custom Profile
Custom profiles registered withregister_preset() are loaded at runtime. Update your profile definitions and re-register to apply changes. To upgrade:
attesta.yaml
Overriding Profile Fields
If you need to customize a registered profile, load the preset and modify specific fields:Creating a Custom Profile
For complete control, create a profile from scratch:Merging Profiles
When your organization spans multiple regulatory domains, merge profiles:attesta.yaml
Profile Version Tracking
Track profile versions in your configuration for reproducibility:attesta.yaml
Migration Support Matrix
Quick Start
Get started with Attesta from scratch
Configuration
Full YAML configuration reference