Skip to content

ci(§8.3): wire N11.2/N11.3 into gate, fix stale fuzz matrix, add nightly+soak workflows#58

Open
MikeRoss27 wants to merge 2 commits into
mainfrom
dev
Open

ci(§8.3): wire N11.2/N11.3 into gate, fix stale fuzz matrix, add nightly+soak workflows#58
MikeRoss27 wants to merge 2 commits into
mainfrom
dev

Conversation

@MikeRoss27

Copy link
Copy Markdown
Contributor

Summary

Complete CI-tooling half of PLAN-NATIVE-ENGINE.md §8.3 (multi-tiered CI architecture for production hardening). Addresses three concrete bugs found while wiring N11.2/N11.3:

  • ci.yml gate bug: model_based and io_faults tests were passing locally but not executed in CI (missing from explicit --test list).
  • fuzz.yml stale: Referenced sst_decode_structured (removed N8.5) and only covered 5 of 24 real fuzz targets.
  • engine-soak never wired: cargo xtask engine-soak (N7.3) documented "nightly usage" since inception but never in any workflow.

Changes

Fixes

  • ci.yml (gate): Added --test model_based --test io_faults to basemyai-engine test command.
  • fuzz.yml (nightly): Rewritten matrix: 24 targets (one per decoder in fuzz/Cargo.toml), exhaustive list, no sampling.

New workflows

  • nightly.yml (3:30 UTC daily):

    • crash-consistency-long (200 cycles via BASEMYAI_CRASH_CYCLES) on Linux/Windows
    • engine_bench at 100k clair+encrypted, archived as artifact
  • soak-campaign.yml (Sundays 4:00 UTC):

    • Weekly engine-soak across Linux/Windows/macOS (macOS acceptable weekly cost)
    • workflow_dispatch for on-demand 1M-scale runs without paying the 3×cost by default

Env-var override

  • crash_consistency.rs: BASEMYAI_CRASH_CYCLES (default 20, gate unaffected); nightly/soak can override without test file duplication.

Out of scope (documented, not deferred silently)

Key rotation during soak, near-full-disk simulation, handle counting — none has existing engine/xtask instrumentation to wire. Each needs new engine-side code, not CI configuration. Listed in soak-campaign.yml comments as future work.

Testing

  • cargo xtask ci ✅ (gate smoke test)
  • BASEMYAI_CRASH_CYCLES=1 cargo test -p basemyai-engine --features test-util --test crash_consistency ✅ (env var override)
  • All workflows YAML-validated

🤖 Generated with Claude Code

MikeRoss27 and others added 2 commits July 14, 2026 20:59
…ak workflows (§8.3)

Closes the CI-tooling half of PLAN-NATIVE-ENGINE.md §8.3. Three concrete
bugs found and fixed while wiring this, before any new workflow was
written:

- ci.yml's `gate` job lists its --test files individually (no auto
  discovery) and was missing both `model_based` and `io_faults` from the
  previous commit — they were passing locally but dead in CI. Added.
- fuzz.yml's nightly matrix referenced `sst_decode_structured`, removed
  in N8.5, and only covered 5 of the 24 real fuzz targets. Rewritten to
  match fuzz/Cargo.toml exactly, one entry per target.
- `cargo xtask engine-soak` (N7.3) has been documented "nightly usage"
  since it was written but was never wired into any workflow.

New:

- crash_consistency.rs's CYCLES is now overridable via
  BASEMYAI_CRASH_CYCLES (default 20 unchanged, verified the PR gate is
  unaffected) instead of a hardcoded const, so a nightly job can run a
  longer "crash loops prolongés" pass without a second copy of the file.
- nightly.yml: crash-consistency at 200 cycles (Linux+Windows) +
  engine_bench at 100k clear+encrypted, archived as a build artifact.
- soak-campaign.yml (weekly): `cargo xtask engine-soak` on
  Linux/Windows/macOS (macOS deliberately absent from gate/nightly for
  the already-documented 10x Actions-minutes cost; acceptable weekly).
  workflow_dispatch allows an on-demand 1M-scale run without paying that
  cost on the scheduled default.

Deliberately not done this pass, documented as open rather than faked:
key rotation during soak, near-full-disk simulation, handle counting —
none has existing engine/xtask instrumentation to wire up (unlike RSS,
already in EngineStats/engine_bench); each needs new engine-side code,
not CI config.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
A prior Python edit script's text-mode write silently converted this
file to CRLF (Windows default line separator), unlike every other file
in the repo. No content change — normalizes back to LF only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added bug Something isn't working ci storage community labels Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working ci community storage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant