postman-bootstrap
Build a release gate that proves a modernized system still behaves like the one it replaced.
Rewrites, ports and framework upgrades are graded on whether the new code compiles, lints and starts. None of that is a claim about behavior. This records what the original system actually did, before it changes, and turns that recording into a gate your CI runs against the replacement.
pip install postman-bootstrap
Python 3.11+. The base install pulls PyYAML and nothing else.
The shape of it
Run it on the pre-transform checkout. That ordering is the whole idea: governance and contract tests can be rebuilt from code at any time, but the original system's behavior survives only in what you captured before it changed.
postman-bootstrap scan --repo . # stack, routes, legacy interface class
postman-bootstrap init --repo . --api-name "Orders" --legacy-interface http_service
postman-bootstrap capture-plan --repo . # which cases are worth recording
postman-bootstrap review --repo . # what the plan covers, and what it does not
postman-bootstrap capture --repo . --boot # record what the original answers
postman-bootstrap build-gate --repo . # emit the gate and its CI
postman-bootstrap check --repo . # run it
You end up with a postman/ directory and a ci/gate.sh in your repository:
| OpenAPI 3.1 spec | what the estate's contract is |
| Governance ruleset | whether that contract is well-formed |
| Golden corpus | what the pre-transform system actually did |
| Regression suite | whether the new system matches it, case by case |
| Contract tests | whether each endpoint honors its own contract |
| Environments | baseline, target, mock |
Any of them failing exits non-zero. That is the gate.
What it is careful about
The gate does not depend on this package. ci/gate.sh runs Python against the helper
scripts written beside it, plus the Postman CLI and Spectral. Once the gate exists it is
files in your repository, and it keeps working whether or not you ever install this again.
Comparison starts exact. Every suppression is recorded in the manifest rather than applied quietly, because a gate that was widened until it went green is not evidence.
Coverage is reported honestly. gate-status names the operations reached only by
cases that errored, the documented codes no case reaches, and the operations whose success
body is asserted against nothing. A captured case is not a covered case, and a case count
is not coverage.
A system with no HTTP surface still works. postman-bootstrap shim generates a thin
HTTP facade over a library, batch job, or CLI, emitted as readable source so you can check
that it projects the code rather than reinterpreting it.
Optional extras
pip install "postman-bootstrap[mcp]" # MCP server over the same core, for an agent to drive
pip install "postman-bootstrap[agent]" # the Bedrock agent runtime
Both are deliberately optional. The base install is the CLI, and it needs no model, no AWS account, and no Postman key. A Postman API key is only required to mirror the result into a live workspace; without one every file is still emitted and the gate still runs.
Licence
Apache-2.0. Built by Postman Field Engineering.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file postman_bootstrap-0.11.1.tar.gz.
File metadata
- Download URL: postman_bootstrap-0.11.1.tar.gz
- Upload date:
- Size: 975.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e023f03d02342a23ea70753b36b9bfc2bb52b615df0ea47c6194b5f7a4b124e9
|
|
| MD5 |
d0953220004f49509259878471a36e60
|
|
| BLAKE2b-256 |
8b24008e2f6fde16678ec5a33e61c168c8aa5d018052d8fe3d894bba0834f58f
|
Provenance
The following attestation bundles were made for postman_bootstrap-0.11.1.tar.gz:
Publisher:
tag.yml on postman-eng/postman-bootstrap-agent-aws-transform
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
postman_bootstrap-0.11.1.tar.gz -
Subject digest:
e023f03d02342a23ea70753b36b9bfc2bb52b615df0ea47c6194b5f7a4b124e9 - Sigstore transparency entry: 2675989160
- Sigstore integration time:
-
Permalink:
postman-eng/postman-bootstrap-agent-aws-transform@661f4f79135d711902a36211f2019019e2b75059 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/postman-eng
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
tag.yml@661f4f79135d711902a36211f2019019e2b75059 -
Trigger Event:
push
-
Statement type:
File details
Details for the file postman_bootstrap-0.11.1-py3-none-any.whl.
File metadata
- Download URL: postman_bootstrap-0.11.1-py3-none-any.whl
- Upload date:
- Size: 451.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
067e03a73b3864178f0fbe29edc6c6be47fe9c115b2b9f397c32046153a5c49d
|
|
| MD5 |
163f0dc6c0e34654b599c5a525630600
|
|
| BLAKE2b-256 |
85dc183166dd5d65b87e68fc6d3bf84a4a30dbf8a3a153d3cf60c941ff741fe4
|
Provenance
The following attestation bundles were made for postman_bootstrap-0.11.1-py3-none-any.whl:
Publisher:
tag.yml on postman-eng/postman-bootstrap-agent-aws-transform
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
postman_bootstrap-0.11.1-py3-none-any.whl -
Subject digest:
067e03a73b3864178f0fbe29edc6c6be47fe9c115b2b9f397c32046153a5c49d - Sigstore transparency entry: 2675989180
- Sigstore integration time:
-
Permalink:
postman-eng/postman-bootstrap-agent-aws-transform@661f4f79135d711902a36211f2019019e2b75059 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/postman-eng
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
tag.yml@661f4f79135d711902a36211f2019019e2b75059 -
Trigger Event:
push
-
Statement type: