Engineering

Release evidence and auditability

What Otukan records for every protected mobile release, who can write it, and how auditors trace a build back to its approved protection profile.

  • Android
  • iOS
  • Flutter
  • React Native
  • Every build explained

    Each protected release carries a record of what went in, which protection was applied, who approved it and what the tests showed.

  • Written once, read often

    The protection step and your approvers add entries; nobody rewrites them later. Corrections appear as new entries beside the old ones.

  • Kept on your side

    Evidence lives in your environment next to your release artefacts, under the access rules your auditors already accept.

What the evidence record contains

One record per protected build, built from entries each owner adds at their handoff.

  • Input and output fingerprints

    Digests of the artefact that entered the protection step and of the protected artefact that left it, so the two are provably linked.

  • Approval trail

    Which profile version was applied, who approved it and when, with the approval tied to that exact version.

  • Run history with failures

    Failed and retried protection runs stay in the record, each linked to the attempt that finally produced the build.

  • Release lineage

    Each build points to the one it replaced, so the last known good release and its profile are one lookup away.

How a record is built

  1. Approval entry

    Your owners approve a profile version; the approval is stored against that version.

  2. Protection entry

    The protection step adds input and output digests, versions and its log.

  3. Signing entry

    Your release owner adds the certificate fingerprint and the protected artefact digest that was signed.

  4. Test entry

    QA attaches the protected-build results for the flows that matter.

  5. Release entry

    The rollout decision closes the record and links it to the previous release.

Evaluate release evidence by asking one question of any build in users’ hands: can we show what protection it carries, who approved that, and how it was tested? Otukan answers it with an evidence record for every protected release, for Android and iOS apps built natively or with Flutter or React Native. Each owner adds an entry at their handoff, entries are added rather than rewritten, and the record stays in your environment. This page covers who may write evidence, what each handoff contributes and how the record handles failures and rollbacks. Judging a release against a regulation remains your auditors’ task.

Authority

Who writes which entry

Evidence is only as strong as the rules about who can add it. Otukan’s record separates the writers, so the identity that produces a build is not the one that approves or releases it.

WriterEntry it addsRights it needs
Protection step identityInput and output digests, Otukan version, profile version, step logAdd entries for the run it performed
Profile approversApproval of a named profile versionAdd approvals; no access to build outputs
Release ownerSigning certificate fingerprint, rollout decisionAdd signing and release entries
QA teamProtected-build test resultsAdd test entries
Auditors and reviewersNoneRead the record

Artefact inputs and secret handling

The record describes artefacts without containing sensitive material. It stores digests rather than binaries, and the fingerprint of the signing certificate rather than any key. On Android with Play App Signing, the record can hold both your upload certificate fingerprint and the app signing certificate fingerprint that Google uses for the copies users install, so reviewers see which certificate actually reached devices. On iOS, it holds the fingerprint of the distribution certificate your team signed the upload with; App Store processing then re-signs the copies users download.

Retention

Keep each record for at least as long as the build it describes can still be installed on users’ devices, then for whatever period your own policy sets. Older app versions stay in use long after a new one ships, and a question about one of them is only answerable if its record survives.

Sequence

Each handoff leaves evidence before the next stage starts. A record with a missing entry is visible as incomplete.

HandoffWhat the next owner receivesEvidence left behind
Approval to protectionAn approved profile versionApprover, time and profile version
Protection to signingA protected artefactInput and output digests, Otukan version, log
Signing to testingA signed, protected buildCertificate fingerprint, digest of the protected input, build number
Testing to releasePass or fail per flowResults for install, update, sign-in and sensitive flows
Release to productionA rollout decisionStage, date and link to the previous release

Signing changes the artefact, so its digest changes too. The signing entry therefore names the protected artefact digest it started from, and a reviewer can trace the signed build back to the protection run rather than to an unprotected copy of the same version.

The order of these stages and their entry conditions are set out on protection lifecycle.

Operations

Failures and retries

A failed protection run is evidence too. Otukan keeps it in the record with its log and the inputs it was given. A retry is added as a new entry linked to the failed one, so a reviewer sees that the build went through two attempts and why, rather than a clean history that hides the problem.

Versioning

Two identifiers anchor every record: the profile version your owners approved and the Otukan version your pipeline pinned. When either changes, the next record shows the change and the approval that allowed it, which answers the reviewer’s usual question of what differs between this release and the last one.

Rollback

A store cannot restore an earlier binary, so recovery means halting the rollout and shipping a higher version number. The halted release keeps its record, marked with the decision. The replacement build gets a new record linked to the faulty release and to the last known good one. Anyone reading the history later sees the whole sequence in order, with each decision attributed.

What a reviewer can answer from the record

  • Which protection profile did the build installed on a given date carry?
  • Who approved that profile, and when?
  • Was the signed build the one that left the protection step?
  • Which flows were tested on the protected build before it shipped?
  • Which release came before it, and why was it replaced?

For how evidence fits the product as a whole, return to mobile app security. Setting release criteria from expected signals is covered on security validation.

Common questions

  • Does the evidence record contain secrets or user data?

    No. It holds digests, version identifiers, approvals, logs from the protection step, the fingerprint of the signing certificate and your test results. Private keys, pipeline tokens and production data stay out of it, which is what lets you share the record with internal auditors or a reviewer without widening access to anything sensitive.

  • Can the evidence help with an audit or a regulatory review?

    It gives your team facts to present: which protection a release carried, who approved it and how it was tested. The assessment itself stays with your auditors and your compliance owners. Otukan's engineers help you map the record's fields to the questions your reviewers ask, so the evidence arrives in a shape they can use.

  • What does the record show for a release that was rolled back?

    The halted or paused release keeps its record, marked with the rollout decision. The fix is a new build with a higher version number and its own record, linked to both the faulty release and the last known good one, so a reviewer can follow what happened in order.

Answer the auditor with a record

Tell us your platforms, how you release, and which reviews or audits your mobile releases go through. We do not ask for binaries, signing keys, audit reports or production data.

Or request a technical demo