Merge gate and change selection
requiredpath scoped
Detect Changed Areas selects layer jobs for ordinary pull requests. Repo Hygiene always runs; CI Required Gate and Extended Quality Required Gate reject failed or cancelled selected prerequisites and accept intentional path skips. Compliance-affecting paths also select WAP Compliance and Status Drift.
- Proves
- The required repository-wide checks and both aggregate gates ran, and every layer selected for the diff completed successfully.
- Does not prove
- A skipped layer was retested. Pushes to main, manual CI, and repository-owned Dependabot pull requests deliberately run the full matrix.
Run locallypnpm verify
Native WaveNav engine
requiredpath scoped
Rust parser, runtime, navigation, focus, scripting, layout, render, fixture, and failure-path tests run under the engine coverage gate when engine paths change. The Extended Quality aggregate also selects zero-warning Clippy for engine changes.
- Proves
- Native engine behavior is deterministic for the tested inputs and meets the configured line and function coverage floors.
- Does not prove
- The WASM binding, browser host, transport path, or an unselected normative clause behaves correctly.
Run locallycd engine-wasm/engine && cargo test
Native/WASM boundary and executable stories
requiredpath scoped
wasm-pack boundary tests, Rust-derived DTO drift checks, story-schema tests, and Playwright flows for the host sample and real Waves frontend.
- Proves
- Selected parity-critical state, render, trace, script, and host-session behavior survives the WASM boundary and works through production-built web surfaces.
- Does not prove
- Every native API has a live differential twin. Waves stories use a deterministic in-memory fetch adapter, not native Tauri transport or Kannel.
Run locallypnpm test:story all
Transport codecs, fixtures, and replay
requiredpath scoped
Lowband unit and integration tests cover WSP/WBXML codecs, deterministic mapped fixtures, constrained WDP delivery, WCMP behavior, and byte-exact interop replay seeds.
- Proves
- The selected synthetic and source-mapped packets produce fixed outcomes through transport-owned decode, mapping, reassembly, and replay paths.
- Does not prove
- All bearers, live network timing, general WSP/WTP activation, or full transport conformance. Conditional replay seeds remain scaffolding where the active profile says so.
Run locallymake test-rust-transport && make test-transport-fixtures
Tauri host and browser frontend
requiredpath scoped
Tauri Rust library coverage exercises commands, engine flow, wrappers, and fetch adapters. Local Vitest covers frontend state and presentation; GitHub CI owns the platform-sensitive coverage threshold. Type, lint, format, capability, permission, and command-schema checks guard the host boundary.
- Proves
- The tested native command adapters and frontend behavior agree with generated contracts and configured coverage floors.
- Does not prove
- A packaged desktop window, platform accessibility bridge, real remote gateway, or every operating-system integration was exercised.
Run locallypnpm --dir browser run tauri:generated:check && pnpm --dir browser/frontend test
Contracts, schemas, ledgers, and Atlas drift
requiredpath scoped
Rust-owned TypeScript projections, Tauri schemas, story manifests, Atlas JSON Schemas, transport evidence references, requirement/status rollups, and the WAP knowledge graph are regenerated or validated against committed inputs. CI exposes a path-aware WAP Compliance and Status Drift job.
- Proves
- Consumers and projections match their canonical active sources, references resolve, ordering is stable, and generated views have not silently drifted.
- Does not prove
- A graph edge, passing schema, ticket status, or prose acceptance statement is executable implementation evidence.
Run locallypnpm wap-compliance:check && pnpm --dir docs-portal run test:data
Kannel real-stack smoke
on demand
Extended requires an already-running Kannel/WML stack, then exercises transport and browser-host smoke paths against it. The same real-stack lane is available through a manual GitHub workflow.
- Proves
- One real gateway path can fetch, hand off, load, render, and navigate the smoke scenario across process and protocol boundaries.
- Does not prove
- Broad gateway interoperability, production reliability, every transport profile, or a required pull-request gate.
Run locallypnpm verify:extended
Engine fuzzing
scheduledon demand
A weekly and manually configurable cargo-fuzz lane sends bounded arbitrary WML input to the engine target and retains crash artifacts.
- Proves
- The executed corpus and mutations did not expose a crash, hang beyond the configured timeout, or sanitizer-detected failure.
- Does not prove
- Exhaustive safety, semantic correctness, or WAP/WML conformance.
Run locallycd engine-wasm/engine && cargo +nightly fuzz run engine_wml_fuzzer
Rendered accessibility
requiredpath scoped
The Full and selected Change profiles run production-built Chromium checks for axe, target geometry, visible focus, overflow, and 200 percent layouts. GitHub repeats the gate for browser frontend and its engine, contract, and build inputs.
- Proves
- The production-built deterministic browser surface meets the asserted web accessibility behaviors at configured window sizes.
- Does not prove
- Device compatibility, native macOS announcement timing, platform-drawn chrome quality, or an accessibility certification.
Run locallypnpm --dir browser/frontend run test:accessibility:rendered
Browser stability baseline
scheduledadvisoryon demandmanual
The weekly/manual workflow records startup, input, navigation, window, and keyboard behavior with 20 runs by default. Extended reports a bounded three-run signal as advisory. Packaged macOS VoiceOver remains a separate manual observation.
- Proves
- Deterministic behavior assertions passed and the run retained reference-environment latency samples and screenshots.
- Does not prove
- A release performance budget, cross-device timing guarantee, or native accessibility behavior. Recorded latency has no pass/fail threshold.
Run locallyWAVES_BASELINE_RUNS=20 pnpm test:baseline:waves
CodeQL and dependency security
requiredscheduledon demand
Pull requests run JavaScript/TypeScript, Rust, and Go CodeQL plus dependency review and Rust, Node, and Go advisory audits. Code scanning and audits also run weekly and on demand.
- Proves
- The configured static queries and current advisory databases found no merge-blocking result in the scanned source and dependency graph.
- Does not prove
- Absence of vulnerabilities, runtime exploit resistance, or security of excluded generated/build paths and unmodeled environments.
Run locallycargo audit && pnpm audit --audit-level high && govulncheck ./...
Builds, deploys, and releases
requiredpath scopedon demand
Selected pull requests build product surfaces. Main-path changes rebuild and deploy the marketing site, simulator, and Atlas; milestone releases manually rebuild and package source and site artifacts.
- Proves
- The selected static applications and release bundles assemble successfully from pinned manifests and can be published by the configured workflow.
- Does not prove
- Passing product behavior, standards conformance, deployment availability after the workflow, or approval to promote a planned profile.
Run locallypnpm build:node && pnpm --dir docs-portal run build
Story coverage advisory and manual evidence
advisorymanual
The story-coverage report names examples without adjacent executable flows but never fails the build. Manual checklists cover only gaps that automation cannot observe and must name their environment and scope.
- Proves
- Known story gaps are visible, and a recorded manual run can support only the observations it explicitly captured.
- Does not prove
- Prose testing criteria, a ticket marked done, or an example file by itself is executable coverage. An unrecorded manual intention is no evidence at all.
Run locallypnpm --dir engine-wasm/host-sample run examples:story-coverage