bijection sdk generate, commits the
configuration and complete lock, and releases ordinary language packages. Consumers
install those packages without producer source. Shared Bijection runtime releases
are separate from customer ontology packages.
Build and release
build renders from the complete lock, packs npm and wheel distributions, compiles
Java using prepared language tools, and seals Go module and OpenAPI artifacts.
Generation is offline; package builds can require dependency downloads unless the
language caches are prepared. The CLI never starts a backend or provisions compute.
publish checks runtime availability and all target coordinates, installs candidates,
publishes the sealed files, downloads them using consumer credentials, and installs
them in fresh applications. It checks shipped examples and client construction
without calling a deployment. Existing identical versions are retained; conflicting
versions are refused.
For a single CI invocation:
run reuses the sealed bundle when its inputs match. Changed inputs
require another output directory. publish never rebuilds. publish --dry-run
validates the bundle and profile and emits a plan without writes or network access;
it does not establish credential permissions or destination availability.
Prepared tools are selected with --node, --npm, --pnpm, --tsc, --python,
--go, --git, --java, --maven, and --aws. Python needs build, hatchling,
Twine, mypy and Pyright installed. The selected tools are recorded in receipts.
No tool bootstrap is performed. Only tools for the selected languages are needed.
Destination profiles
Keep distribution routing separate from the version 4 SDK configuration. The following URLs, repository names and credential references are examples; replace them with existing organization resources. A profile must select exactly the languages in its bundle.runtimeSources
to route a runtime elsewhere, as for the Go example above. Python and Maven indexes
must resolve their normal transitive dependencies; Go’s consumer proxy must also
resolve its runtime. npm’s defaultRegistry controls ordinary dependencies while
the generated customer and runtime scopes use their explicit repositories.
Tokens are environment references, never literal values in the profile. npm uses
bearer authentication; Python and Maven use basic authentication with the supplied
token as password and username (default __token__). Go uses native Git/proxy
credentials. S3 uses native AWS credentials or named profiles. Supply read credentials
independently from publication credentials. HTTPS is required except for loopback
protocol checks. Additional artifact/CDN hosts require explicit downloadHosts.
Supported Maven destinations accept immutable release files at standard Maven2 HTTP
paths. The adapter uploads the existing JAR and original POM with conditional PUTs,
so it can resume a partially uploaded release. Configure the repository to refuse
redeployments. Provider-specific staging services, including services requiring a
separate release API, need their own adapter. Snapshot versions are refused.
Go publication creates a commit and version tag in an existing SDK repository,
without pushing a branch or forcing tags. subdir selects an owned module directory;
tags include that directory prefix. Existing generated files are checked against
their ownership manifest, and unowned files are preserved. Versions 2 and later
retain Go’s /vN module path requirement. S3 uses conditional creation under the
configured prefix and requires list/get permissions for consumer readback.
Identities, recovery and installation evidence
The release directory contains an immutablebundle/manifest.json, sealed sources
and archives, candidate evidence, destination-bound publication journals, and an
installation kit. Its identity binds the generator, producing CLI binary, reviewed
input hashes, contract identities, runtime requirements and final archive hashes.
Go additionally retains native module content sums; equivalent ZIP compression
does not change a Go module’s content identity.
A checksum is an integrity identity, not a publisher signature. Exact direct runtime
pins do not lock every transitive dependency.
Publication is coordinated across targets, but it is not a cross-registry
transaction. An interrupted command retains completed targets and reconciles
uncertain uploads through readback. Re-run publish with the same bundle and
profile to finish. Authentication failures are not treated as missing packages.
Private execution directories are removed; sealed bundles and receipts remain.
An operating-system lock prevents simultaneous commands from owning one bundle.
verify publishes nothing. It downloads and installs exact versions with consumer
credentials. The successful receipt has evidence published_distribution and lists
the executed cases, archive observations, tool versions and cleanup result. It
does not establish deployed ontology behavior. Candidate installation and controlled
registry tests are separate evidence levels.
The generated install/<profile-digest>/ directory contains the exact installation
commands, credential placeholders, registry settings, runtime configuration and
upgrade instructions. Business tokens and deployment URLs are supplied by each
application at runtime. Package installation grants no business authorization.
npm channels and rollback
Publication uses a release-specific npm tag. Updating a consumer channel is explicit and repeats destination verification first:Publish shared runtimes
Bijection release maintainers prepare the npm archive, Python wheel, Go module source and Java JAR/POM using their existing owners. Describe the prepared inputs:dist/runtimes/runtime-catalog.json. A candidate catalog used in source CI carries
candidate identities only; it does not establish real registry availability.
The release engine does not host registries, create repositories or buckets, change
registry access policies, or automatically upgrade consuming applications. Python generation also emits native Conda recipes; see the Python consumer guide for that channel workflow. Standalone CLI/MCP targets use SDK binary builds. The sealed registry workflow here handles TypeScript, Python wheels, Go, Java and OpenAPI.