Files
mantra-kmp/.gitea/workflows
Kgothatso Ngako 9f09f48133 build: make the conformance audit part of check, and gate the branch on it
Phase 8, the first two items. The audit has existed since phase 0 and has been
run by hand at the end of every phase since, which is exactly the arrangement it
was written to end: a budget nobody checks at the moment the number moves is a
number that drifts.

**`:composeApp:m3Audit`, wired into `check`.** It shells out to
`docs/scripts/m3-audit.sh --check` and fails the build when a budget is exceeded
or a floor is undercut. Verified to bite: adding one `Color(0xFFAABBCC)` to
`LoadingScreen.kt` reports `hardcoded Color outside theme/ 1 over budget 0` and
takes the build down with it.

The task declares the script and the ui source tree as inputs and a marker file
as its output, so it is up-to-date-able rather than re-running on every `check`.
On a machine with no bash it warns and skips instead of failing, because a build
that dies for a reason unrelated to the change under it teaches people to pass
`-x`.

**A Gitea Actions workflow**, since the remote is a Gitea 1.25 instance. Two
jobs, deliberately:

- `budgets` is grep over the source tree -- no gradle, no android SDK, no
  submodules, no network. This job is the reason the audit is a shell script
  rather than a gradle plugin, and it should stay runnable on a bare container.
- `tests` needs a compiler and therefore the whole composite chain: four levels
  of submodule and a cross-compile of secp256k1's C sources, so a cold run is
  minutes rather than seconds. Split out so a runner can be pointed at `budgets`
  alone where that is all the capacity there is. Its two non-obvious steps carry
  the reasons at the site -- `submodules: recursive` or configuration fails with
  `Project with path ':library' not found`, and the android SDK is needed even
  for a jvm-only test run because `:secp256k1-kmp:jni:android` is in the graph.

**The workflow is unverified**, and that is worth saying plainly: this repository
has had no CI of any kind, so there is no runner registered to try it against. The
syntax is valid and the commands are the ones used by hand throughout this work.
The gradle task is the half that is proven, and it is the half that runs on every
developer machine regardless.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 08:19:57 +02:00
..