Skip to content

GW-036: Add cross-platform, cancellation, soak, fuzz, and mutation tests #45

Description

@trippyogi

Outcome

Add the release-candidate reliability suite: cross-platform coverage, cancellation and partial-run behavior, long-running soak tests, parser/provider fuzzing, and targeted mutation testing for decision-critical code.

The goal is to prove that Gitworthy remains safe and recoverable under interruption, malformed hostile input, repeated use, and platform differences—not merely that ordinary unit cases pass on one machine.

Why this matters

Gitworthy consumes untrusted repository, issue, archive, and provider data while running inside agent workflows. Rare parser failures, cancellation races, platform path differences, stale locks, or untested decision branches can undermine the 1.0 trust promise.

Scope

  • Run supported test/package flows on Linux, macOS, and Windows with Node 22+.
  • Test platform paths, process signals/cancellation equivalents, subprocess handling, file permissions, atomic rename/locking behavior, symlinks, and line endings.
  • Add cancellation tests for HTTP, git, npm archive inspection, scan, hunt, replay, store writes, and MCP requests.
  • Add soak scenarios for repeated check/hunt/recheck/store/capture cycles, warm caches, restarts, and interrupted writes.
  • Add property/fuzz tests for refs, URLs, JSON/provider payloads, policy parsing, issue text/path extraction, tar entries, store records, and fixture schemas.
  • Add targeted mutation testing around the central decision policy, hard-SKIP invariants, mandatory-check coverage, redaction, archive/path safety, and migration logic.
  • Define deterministic CI subsets and scheduled/manual extended suites.
  • Preserve artifacts and minimized repro cases for every failure.

Non-goals

  • No claim of formal verification.
  • No unbounded random fuzzing in ordinary PR CI.
  • No platform support beyond what is documented for 1.0.
  • No mutation-score target that rewards testing trivial code over decision-critical behavior.

Dependencies and readiness

Acceptance criteria

  • Quality and package-smoke suites pass on Linux, macOS, and Windows for supported Node versions.
  • Cancellation leaves typed partial results where appropriate and no corrupt store/index/capture state.
  • Repeated soak runs show no unbounded temp files, locks, cache growth, descriptor leaks, or memory growth beyond documented bounds.
  • Fuzz/property tests cover every hostile-input boundary and preserve minimized regressions.
  • Mutation testing exercises decision policy branches and demonstrates tests fail when hard-SKIP/error/coverage rules are inverted or removed.
  • Extended suites are reproducible with documented seeds, durations, and environment data.
  • Secrets are redacted from failures, artifacts, and fuzz corpora.
  • All failures either produce a regression test or an explicitly accepted risk before RC.

Tests and validation

  • OS matrix for lint, typecheck, build, unit, frozen eval, package smoke, and MCP self-test.
  • Signal/cancellation matrix by operation and platform.
  • Store lock/atomic-write/crash-recovery tests across processes.
  • Archive path traversal, symlink/hardlink, size, entry, compression, and timeout fuzz cases.
  • Git object/tree/path and provider-response fuzz cases.
  • Decision-policy mutation set focused on definitive versus heuristic findings and mandatory failures.
  • 1-hour and overnight soak profiles with documented expected budgets.

Likely implementation areas

  • CI workflows and scheduled/manual jobs.
  • Test helpers for cancellation, process isolation, temp HOME/data/cache, and resource observation.
  • Fuzz/property corpora under test/security and contracts/provider tests.
  • Mutation configuration and scoped target list.
  • Reliability report artifacts for RC review.

Compatibility and safety

Do not loosen safety limits merely to make fuzz or soak suites green. Platform-specific behavior must be documented in the public support matrix or fixed before release.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions