noya-cli 0.0.18

Command-line tools for noyalib (noyafmt, noyavalidate)
Documentation
# SPDX-FileCopyrightText: 2026 Noyalib
# SPDX-License-Identifier: MIT OR Apache-2.0

name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  workflow_dispatch:

permissions:
  contents: read
  pull-requests: read

concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

jobs:
  cargo-deny:
    uses: sebastienrousseau/noyalib/.github/workflows/shared-cargo-deny.yml@05d8856df421bfdec5f96c61f9b76700655fe7b1
  cargo-vet:
    uses: sebastienrousseau/noyalib/.github/workflows/shared-cargo-vet.yml@05d8856df421bfdec5f96c61f9b76700655fe7b1
  cargo-machete:
    uses: sebastienrousseau/noyalib/.github/workflows/shared-cargo-machete.yml@bbf0b9ca4930398a4984c78deccb91002c15d13b
  reuse-lint:
    uses: sebastienrousseau/noyalib/.github/workflows/shared-reuse.yml@c98a9451a7349913f83668d83c0149443e6f1216
  docs-strict:
    uses: sebastienrousseau/noyalib/.github/workflows/shared-rustdoc-strict.yml@05d8856df421bfdec5f96c61f9b76700655fe7b1
  verify-signatures:
    uses: sebastienrousseau/noyalib/.github/workflows/shared-verify-signatures.yml@05d8856df421bfdec5f96c61f9b76700655fe7b1
  test-matrix:
    uses: sebastienrousseau/noyalib/.github/workflows/shared-test-matrix.yml@05d8856df421bfdec5f96c61f9b76700655fe7b1

  # ── A+ rigor parity with the core ──────────────────────────────────
  coverage-gate:
    # The reusable logic in `src/lib.rs` is at 100 %. Coverage is
    # measured at regions 91.4 / functions 100 / lines 89.6; the
    # residual gap is entirely defensive `Err(e) =>` arms in the two
    # binaries (parse/format failures that are unreachable because
    # Phase-1 `load_all_as` already validated syntax, plus stdin/stdout
    # I/O-failure arms). Forcing coverage on those is the assert-free-
    # test anti-pattern the project forbids, so the floor is set at the
    # honest testable ceiling — high enough to catch a real regression,
    # not so high it demands covering unreachable code.
    uses: sebastienrousseau/noyalib/.github/workflows/shared-coverage.yml@00ee7b90ca45138ad331387dae0d846799b8ab91
    with:
      ignore-filename-regex: 'build\.rs$'
      fail-under-functions: 96
      fail-under-lines: 88
      fail-under-regions: 90

  msrv-core:
    # Verifies the declared 1.86.0 floor actually builds.
    uses: sebastienrousseau/noyalib/.github/workflows/shared-msrv-core.yml@00ee7b90ca45138ad331387dae0d846799b8ab91
    with:
      toolchain: "1.86.0"