provenance

module
v0.1.0-alpha.35 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 21, 2026 License: Apache-2.0

README

Provenance public toolkit

Public contracts and clients for submitting, inspecting, testing, releasing, and independently verifying Minecraft plugin artifacts.

Repository areas

  • packages/cli-go: four-verb CLI and offline verifier.
  • packages/action: immutable bundled GitHub Action submission client.
  • packages/api-client: generated public API client.
  • packages/config-schema: configuration schema package and validators.
  • packages/runner-protocol: generated TypeScript runner protocol package.
  • packages/test-fixtures: Paper test and hostile-sandbox fixtures.
  • packages/typescript-sdk: supported TypeScript SDK.
  • packages/verification: attestation verification tooling.
  • packages/verification-go: offline Go envelope and artifact verification, supplied with a trusted public key and caller-owned byte reader.
  • plugins/paper-probe: trusted Paper lifecycle and command probe.
  • schemas: authoritative JSON Schemas.
  • proto: authoritative public runner protocol.
  • gen/proto: generated Go runner protocol module.
  • examples/consumption: complete buildable public/private submission examples.

Contract development

Install the pinned toolchain with pnpm install --frozen-lockfile, then run pnpm check. The check builds the public packages, validates and normalizes the golden configuration fixtures, validates and independently verifies the attestation vectors, and formats, lints, and snapshots the runner protocol.

The authoritative contract sources live under schemas, proto, and openapi. The public HTTP path/operation inventory is checked separately from the OpenAPI document so endpoint groups cannot silently disappear. pnpm generate reproduces the Protobuf stubs and the typed fetch client; generated artifacts must never be edited directly.

Protobuf generation uses local Go plugins pinned to protoc-gen-go v1.36.12 and protoc-gen-go-grpc v1.6.2, alongside the locked TypeScript generator. pnpm generate bootstraps them into a fresh temporary directory with the Go toolchain in .go-version; no Buf remote-generation quota or credentials are required. A cold bootstrap still needs access to the Go module proxy/checksum service (and toolchain download if absent); this is not an offline cold build.

pnpm-lock.yaml is generated only by the pinned pnpm release and is validated with a frozen install in CI; general-purpose formatters do not rewrite it.

Paper fixtures and the trusted lifecycle probe use the checked-in Gradle wrapper. pnpm check compiles and tests the probe, builds and hash-verifies all 14 benign and hostile fixture JARs, and runs the focused fork-pid-bomb unit suite. These checks never execute hostile payloads. The Paper API dependency graph is locked, and its mutable upstream snapshot is additionally pinned by content hash. Actual hostile execution requires -Dprovenance.fixture.hostile.enabled=true inside a disposable, resource-limited Plan 03 runner.

Contract releases

New manually dispatched vMAJOR.MINOR.PATCH contract releases produce seven archives from the reviewed main tip (inventory schema 2): the configuration schema and parser, attestation schema and verifier, runner protocol sources and bindings, OpenAPI document, Paper metadata inspector, generated TypeScript API client, and supported TypeScript SDK. Historical inventory schema 1 remains six archives/nine assets and is independently tested; no old release is rewritten. Every archive embeds a manifest of its files, source paths, sizes, and SHA-256 digests. The release also includes an aggregate manifest and checksum file, plus a deterministic SPDX 2.3 JSON SBOM covering every file in all seven archives and every Node.js and Go runtime dependency selected by the lockfiles. That is ten assets with nine checksum entries (the checksum file excludes itself). The SDK ships the existing generated/configuration/verification packages under their original identities with tested local file references. This is archive-only alpha distribution, not an npm registry publication. See the supported SDK installation and explicit trust guide.

Builds require a clean output directory, explicit version and 40-character source commit, and an RFC 3339 UTC timestamp derived from that commit:

pnpm check
pnpm run release:contracts --version 1.2.3 --source-commit "$COMMIT" --created-at 2026-08-30T00:00:00Z
pnpm run release:verify --version 1.2.3 --consumers

The manual workflow validates its SemVer input before installing dependencies, pins the build to the reviewed main SHA, reruns the complete repository check, and validates every extracted archive with isolated, offline consumers. A separate privileged job downloads that immutable workflow artifact, independently verifies it without executing archive code, creates or safely reuses the annotated tag, reconciles only missing assets in a matching draft, and never overwrites a conflicting or published release. The release manifest and release notes explicitly declare schema, OpenAPI, protocol, CLI, Action, and SDK compatibility. The workflow uses only the repository GITHUB_TOKEN and GitHub's OIDC identity to create SLSA build-provenance attestations for all release assets and a dedicated SPDX SBOM attestation for the seven archives; no publishing secret is required. The CLI has a separate Linux distribution workflow, and the Action is consumed at an accepted immutable source commit, not from these contract archives. Actual publication is established only by inspecting downloaded release assets. After downloading a release, verify its checksum file and GitHub attestations:

sha256sum --check provenance-contracts-1.2.3.sha256
gh attestation verify provenance-config-schema-1.2.3.tar.gz --repo bwmp-dev/provenance
gh attestation verify provenance-config-schema-1.2.3.tar.gz --repo bwmp-dev/provenance --predicate-type https://spdx.dev/Document

License

Licensed under the Apache License, Version 2.0. See LICENSE.

Directories

Path Synopsis
gen
proto module
proto
provenance/runner/v1/terminal-evidence-v2 command
Independent canonical/digest check of the closed-ASCII synthetic vector.
Independent canonical/digest check of the closed-ASCII synthetic vector.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL