Skip to main content

postman-bootstrap

Build a release gate that proves a modernized system still behaves like the one it replaced.

Rewrites, ports and framework upgrades are often graded on whether the new code compiles, lints and starts. None of that is a claim about behavior. This package records what the original system actually did, before it changes, and turns that recording into a gate your CI runs against the replacement.

Before you start

Run the bootstrap on an untouched pre-transform checkout. Governance and contract tests can be rebuilt from code later; the original system's behavior survives only in what you capture before it changes.

The common prerequisites are:

Install them without cloning this package's repository:

python3 -m pip install postman-bootstrap
npm install -g postman-cli
npm install -g @stoplight/spectral-cli

Then make every required executable answer before capturing anything:

python3 --version                 # must be 3.11+
postman-bootstrap --version
postman --version
spectral --version

Treat a missing tool as a failed preflight, not as a reduced but successful run. Without the Postman CLI, the collection-based contract and regression checks cannot execute. Without Spectral, governance cannot execute. If you ignore the preflight and run the gate anyway, the affected command normally fails and the verdict is FAILED; it is not evidence of compatibility.

POSTMAN_API_KEY is different: it is optional. It unlocks publishing, mocks, monitors and checks against a live workspace. If you will not supply one, run this after init in the path you choose so those features are out of scope instead of outstanding:

postman-bootstrap set --repo . --decline api_key

The committed-file gate still runs without a key. Never paste a key into the manifest or a command committed to the repository.

Choose one execution path

The four paths produce the same gate. They differ only in who makes the judgment calls and who drives the loop. Choose one; they are alternatives, not four steps to run in order.

Path Who drives it Additional setup Available from the public package?
1. AWS Transform + skill AWS Transform follows a skill emitted into the target repository atx, AWS credentials, and a custom transformation definition supplied by your organization Yes, after that definition exists
2. Bedrock subagents Separate spec, plan and gate-building agents, with operator-owned capture between them pip install "postman-bootstrap[agent]", AWS credentials and Bedrock model access Yes; recommended public path
3. Bedrock orchestrator A deployed chooser delegates the phases An organization-provided AgentCore runtime, invocation path and repository transport Not as a standalone pip workflow
4. Native orchestrator A local model runner chooses and executes restricted phases The repository's native runner and a compatible local model CLI Not installed by the public package

Paths 3 and 4 have no public console entry point today. If an organization provides one, follow its deployment or runner instructions. The explicit CLI workflow below is useful on its own, but it is not a silent substitute for either orchestrator.

Path 1 requires a custom definition

pip install does not create or publish an AWS Transform custom definition. Before the first run, obtain definition source from your organization or workshop facilitator and publish it to the AWS account that will execute the transform:

TRANSFORMATION_NAME=postman-gate-bootstrap

atx --version
atx custom def publish -n "$TRANSFORMATION_NAME" \
  --sd /path/to/definition-source \
  --description "Capture the pre-transform system and build its release gate"

Then initialize the untouched target repository with the skill enabled, and record the exact definition name. Both commands are required:

postman-bootstrap init --repo . \
  --api-name "Orders" \
  --legacy-interface http_service \
  --baseline-url http://127.0.0.1:4000 \
  --boot-command "python3 app.py" \
  --atx-skill

postman-bootstrap set --repo . \
  --transformation-name "$TRANSFORMATION_NAME"

ATX_SHELL_TIMEOUT=3600 atx custom def exec \
  -n "$TRANSFORMATION_NAME" \
  -p . \
  -g file://.aws/atx/exec.bootstrap.yaml \
  --limit 60

The paths, port, boot command and ready endpoint are properties of your application; verify them rather than copying the example blindly. If the definition has not been published in your account, stop there. The generated skill cannot make that account-level prerequisite true.

Recommended path: two short Bedrock sessions

This is the pip-only equivalent of a Part 1 / Part 2 fixture runbook. The first model session authors the contract and capture plan. You review and capture the irreplaceable evidence. The second session builds from that sealed corpus. Capture is deliberately never delegated to the agent that will judge the resulting gate.

Install the optional agent runtime and verify its entry point:

python3 -m pip install "postman-bootstrap[agent]"
postman-bootstrap-author --help

This path also needs AWS credentials with access to the configured Bedrock model. Set an AWS region if your environment does not already provide one:

export AWS_REGION=us-east-1

Part 1: describe, plan and capture the original

First inspect the repository, then initialize it with values a human has verified:

postman-bootstrap scan --repo .

postman-bootstrap init --repo . \
  --api-name "Orders" \
  --legacy-interface http_service \
  --baseline-url http://127.0.0.1:4000 \
  --boot-command "python3 app.py" \
  --ready-path /health

For a database or seed file, add a confirmed reset command with --state-command. For a service whose state exists only in memory, tell replay to restart the service instead:

postman-bootstrap set --repo . --state-mode restart

Now run the installed author. It reads the code, writes an OpenAPI document, chooses business-rule cases, and sets the capture plan. It stops before starting the system:

postman-bootstrap-author --repo .
postman-bootstrap review --repo .
postman-bootstrap gate-status --repo .

Do not replace the author with a bare capture-plan command. With no case file it can only seed happy paths from an existing spec; it cannot infer the negative cases and business rules that make a behavioral oracle useful. If you are supplying your own reviewed spec and case set, the deterministic equivalent is explicit:

postman-bootstrap init --repo . \
  --api-name "Orders" \
  --legacy-interface http_service \
  --baseline-url http://127.0.0.1:4000 \
  --boot-command "python3 app.py" \
  --spec openapi.yaml

postman-bootstrap capture-plan --repo . --cases cases.json
postman-bootstrap review --repo .

cases.json is a JSON array. Every case needs name, method and path; query, headers and body are optional. Put query parameters in query, not after ? in path.

Review is a real approval boundary. The plan is the ceiling on what the gate can catch. Once it is satisfactory, record the untouched system:

postman-bootstrap capture --repo . --boot
postman-bootstrap gate-status --repo .

--boot executes the boot command stored in the manifest. The package will not infer one. Confirm the command, baseline URL and reset behavior before running it so an error response from a misstarted system does not become golden output.

Part 2: build the yardstick and prove it

The second installed session infers response schemas, emits the gate, points its target at the baseline, and runs the corpus self-test:

postman-bootstrap-author --repo . --build

If you want the mechanical build with no model judgment, run the same deterministic stages yourself:

postman-bootstrap infer-schemas --repo .
postman-bootstrap build-gate --repo .

Whichever builder you chose, independently point the ordinary target checks at the original and prove the current corpus replays against the system that produced it:

postman-bootstrap set --repo . --target-url http://127.0.0.1:4000
postman-bootstrap check --repo . --selftest
postman-bootstrap gate-status --repo .

A PASS means every applicable gate step passed. INCOMPLETE means a declared input or proof is still missing, or a required check skipped; it is not a weaker spelling of pass. Fix or explicitly decline the missing input and run the check again.

This first green run proves only that the yardstick works against its own origin. It does not prove that the transformed system is compatible. Keep the original unchanged and available until oracle-integrity and corpus-selftest pass. That is especially important for frozen-snapshot Mode B: after the original is replaced, its evidence cannot be recaptured or honestly reconstructed. Mode C has no replayable original I/O, so the self-test is not an applicable claim there.

Transform, then run the second check

After the transformation, start the replacement, point the gate at its real URL, and run the gate without --selftest:

postman-bootstrap set --repo . --target-url http://127.0.0.1:5000
postman-bootstrap check --repo .
postman-bootstrap gate-status --repo .

This is the release verdict. A green baseline self-test followed by a red target run means the gate worked and found a compatibility change; do not re-record the corpus to make the replacement pass. Begin with exact comparison and add normalization only for a difference a human has established is legitimate and recorded.

What the gate leaves behind

The repository now contains postman/ and ci/gate.sh:

Artifact What it proves
OpenAPI 3.1 spec the contract exposed by the estate
Governance ruleset whether that contract is well formed
Golden corpus what the pre-transform system actually did
Regression suite whether the replacement matches it case by case
Contract tests whether each endpoint honors its contract
Environments the baseline, target and optional mock locations

The generated gate does not depend on this Python package. ci/gate.sh runs the committed collections, environments and helper scripts with the Postman CLI and Spectral. The live Postman workspace, when you choose to publish one, is a projection of those files rather than a second source of truth.

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

postman_bootstrap-0.15.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

postman_bootstrap-0.15.0-py3-none-any.whl (574.6 kB view details)

Uploaded Python 3

File details

Details for the file postman_bootstrap-0.15.0.tar.gz.

File metadata

  • Download URL: postman_bootstrap-0.15.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for postman_bootstrap-0.15.0.tar.gz
Algorithm Hash digest
SHA256 08c08065d3c27f9b490773f097d4eece8ed4866e40514e9d504feb8c76345cda
MD5 9d381de00d57d222e325036d48730690
BLAKE2b-256 567a171ea63b3c5c1c90c46b74d46298976575e7cec3267bdffe4059ef0a9803

See more details on using hashes here.

Provenance

The following attestation bundles were made for postman_bootstrap-0.15.0.tar.gz:

Publisher: tag.yml on postman-eng/postman-bootstrap-agent-aws-transform

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file postman_bootstrap-0.15.0-py3-none-any.whl.

File metadata

File hashes

Hashes for postman_bootstrap-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 733d097a7b730f579451dde8a3a8a13a7336146f6f13e908a04f639a42d9e774
MD5 c4149e411689723df1dfde9098700d91
BLAKE2b-256 634d2de76f1962f499b9df23ec040e3473cb7f097f42ae5dfa960b98baac7b91

See more details on using hashes here.

Provenance

The following attestation bundles were made for postman_bootstrap-0.15.0-py3-none-any.whl:

Publisher: tag.yml on postman-eng/postman-bootstrap-agent-aws-transform

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.17.1

2 files

0.17.0

2 files

0.16.0

2 files

This release

0.15.0 This release

2 files

0.14.1

2 files

0.14.0

2 files

0.13.0

2 files

0.12.1

2 files

0.12.0

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.0

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page