Mantyl.devDocumentation · mantyl 0.2

Mantyl in CI

A passport generated once at handover proves that moment. A passport regenerated on every push is a ledger: evidence that accumulates for the whole life of the project. The CI surface is the same CLI, run non-interactively, with GitHub-native outputs.

The action

One step runs the full pipeline: repository scan, checks executed in the runner’s Docker, passport generation, and a job summary in the Checks area. The job fails when checks fail, which is the point of running it in CI.

- uses: jopli11/mantyl-cli@v0
Outputs: verdict (passed, failed, no-sandbox), passport-digest, check counts and contradicted-claim counts, usable in later steps. The passport and reports upload as a workflow artifact.

Or without the action: npx mantyl ci anywhere. Exit codes are the contract: 0 all executed checks passed, 4 at least one failed, 5 no sandbox was available (checks record as skipped, never fake-passed). Add .mantyl/ to your .gitignore; passports are artefacts, not commits.

Attestations: the passport as a signed statement

At handover points (a release, a tag, the delivery itself) the passport can be sealed as an in-toto statement in a DSSE envelope, the same shapes GitHub’s own artifact attestations use. The subject digest is recomputed from the document, so a passport altered after generation cannot be attested, and the statement names its verdict and the verification policy it speaks to. mantyl attest signs with your own key pair (create one with mantyl attest --generate-keys, publish the public half where your recipients look), and your recipient runs mantyl receive --attestation attestation.json --attestation-key your-key.pem to bind the envelope to the exact passport in their hands. Every failure names itself; a provenance failure exits 6.

Mantyl Verified from CI

A passed run can request the paid independent verification without leaving the workflow: the action submits with verified: true and exits immediately, and the job summary carries the checkout link. Pair the run to your account first: generate a CI token on your delivery console, store it as a repository secret named MANTYL_CI_TOKEN, and every submission from that workflow lands on your console automatically. The token carries identity only; it never pays for anything, and a paid run still goes through its checkout.

The badge dates its evidence

Hosted passports serve a README badge. Signal yellow stays reserved for a signed Mantyl Verified accreditation, and past sixty days the badge carries the passport’s generation month, so stale proof looks stale at a glance instead of radiating week-one confidence forever. Regenerating and republishing on release keeps it current.

Verification policies are public documents

Every signature names the policy it was judged under, and every policy version is an immutable public document at /policies/<id>/<version>, served as canonical JSON whose SHA-256 equals its advertised digest. What default@1 requires, and what it deliberately does not attest, is stated in full there: fetch it, hash it, hold us to it.

Generated with care, not certainty claims · mantyl.devnpm: mantyl