@@ -42,6 +42,10 @@ nix develop
4242cargo build --release
4343```
4444
45+ The dev shell also provides a [ ` just ` ] ( https://github.com/casey/just ) task
46+ runner — run ` just ` to list recipes (` just build ` , ` just test ` , ` just lint ` ,
47+ ` just dogfood ` , ` just ci ` , …).
48+
4549## Quick start
4650
4751``` sh
@@ -546,7 +550,7 @@ the GitHub Release matching the runner's OS/arch (fast: a tarball download, no
546550compilation), and falls back to `cargo install --git` from source when no
547551prebuilt asset exists for that platform. The release automation
548552([`.github/workflows/release.yml`](.github/workflows/release.yml)) publishes
549- prebuilt binaries for Linux (x86_64, aarch64) and macOS (x86_64, arm64) on every
553+ prebuilt binaries for Linux (x86_64, aarch64) and macOS (arm64) on every
550554release and keeps `v1`-named assets in step with the floating `v1` tag, so `@v1`
551555gets the fast path on those platforms. The step's exit code is the verdict, so a
552556failing scenario fails the job.
@@ -639,21 +643,35 @@ nix develop --command "$PITTY_BIN" run e2e/scenarios/positive # must exit 0
639643nix develop --command "$PITTY_BIN" run e2e/scenarios/meta # must exit 0
640644` ` `
641645
642- CI runs these tiers plus the residual `#[ignore]` PTY tests on **both Linux and
643- macOS as required gates** via `nix develop` — a macOS PTY regression blocks
644- merges. The meta tier asserts inner exit via `expect_exit`'s deadline form so
645- the macOS gate stays non-flaky despite slower PTY teardown. See
646- [`.github/workflows/ci.yml`](.github/workflows/ci.yml).
647-
648- # # Supply-chain scanning
649-
650- A separate [Socket](https://socket.dev) workflow
651- ([`.github/workflows/socket.yml`](.github/workflows/socket.yml)) scans the
652- dependency manifests (`Cargo.toml` / `Cargo.lock`) for malicious or risky
653- crates. It needs a `SOCKET_SECURITY_API_KEY` repository (or org) Actions secret;
654- without it the scan step is skipped (so pull requests from forks, which cannot
655- see the secret, do not fail). Its actions are pinned to commit SHAs because this
656- is the one workflow where a secret is in scope.
646+ CI runs these tiers — plus a `samples/` tier exercising the `matrix` and `bench`
647+ subcommands, and the residual `#[ignore]` PTY tests — on **both Linux and macOS
648+ as required gates** via `nix develop`, so a macOS PTY regression blocks merges.
649+ The meta tier asserts inner exit via `expect_exit`'s deadline form so the macOS
650+ gate stays non-flaky despite slower PTY teardown. See
651+ [`.github/workflows/ci.yml`](.github/workflows/ci.yml). Locally, `just dogfood`
652+ runs all three tiers and `just ci` reproduces the full gate set.
653+
654+ # # Security scanning
655+
656+ Two scanners guard the repository :
657+
658+ - **Secret scanning (gitleaks).** A pre-commit hook (via
659+ [lefthook](https://github.com/evilmartians/lefthook), installed automatically
660+ by the nix dev shell) runs `gitleaks git --staged` on every commit, so a
661+ secret is caught before it lands. The authoritative gate is the `gitleaks` job
662+ in [`.github/workflows/ci.yml`](.github/workflows/ci.yml), which scans full
663+ history on push (and the PR range on pull requests) — the hook is bypassable
664+ with `git commit --no-verify`, so CI is the backstop. Both read the in-repo
665+ [`.gitleaks.toml`](.gitleaks.toml), which extends gitleaks' default ruleset
666+ and deliberately ships no broad allowlist.
667+ - **Supply-chain scanning (Socket).** A separate
668+ [Socket](https://socket.dev) workflow
669+ ([`.github/workflows/socket.yml`](.github/workflows/socket.yml)) scans the
670+ dependency manifest (`Cargo.toml`) for malicious or risky crates. It needs a
671+ ` SOCKET_SECURITY_API_KEY` repository (or org) Actions secret; without it the
672+ scan step is skipped (so pull requests from forks, which cannot see the
673+ secret, do not fail). Its actions are pinned to commit SHAs because this is a
674+ workflow where a secret is in scope.
657675
658676# # License
659677
0 commit comments