Skip to content

Document mutation-testing workflow contract tests - #206

Draft
leynos wants to merge 1 commit into
mainfrom
docs/mutation-contract-tests
Draft

Document mutation-testing workflow contract tests#206
leynos wants to merge 1 commit into
mainfrom
docs/mutation-contract-tests

Conversation

@leynos

@leynos leynos commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Summary

Adds a ## Mutation-testing workflow contract tests section to
docs/developers-guide.md, documenting the informational mutation-testing
caller workflow (.github/workflows/mutation-testing.yml, which delegates to
leynos/shared-actions/.github/workflows/mutation-cargo.yml) and the pytest
contract test at tests/workflow_contracts/mutation_testing_test.py that
pins its shape.

The section is placed immediately after the existing "Workflow pins and
Dependabot" section, since it documents a concrete application of that
general shape-only pinning policy, rather than as a new detached top-level
section.

Details

  • Permutation: Rust workspace (weaver's crates live under crates/,
    with no root src/; the caller mutates the whole workspace on manual
    dispatch, using --test-workspace=true so mutants also face dependent
    crates' tests).
  • Contract-test style: the uses: pin is asserted shape-only (USES_RE
    matches ...@[0-9a-f]{40}, no hard-coded SHA — Dependabot bumps freely).
    The with: block, by contrast, is asserted for exact equality against an
    EXPECTED_WITH dict, so any change to paths, exclude-globs, or
    extra-args requires an accompanying test edit. There is no
    pytestmark = pytest.mark.skipif(...) guard on the module — unlike a
    mutmut-based Python repo, weaver's mutation runner is cargo-mutants, so
    there is no sandbox that omits .github/.
  • Local run command documented: make test-workflow-contracts (exists
    in the Makefile and simply invokes
    uv run --with 'pytest>=8' --with 'pyyaml>=6' pytest tests/workflow_contracts -q).
  • Roadmap/execplan tracking: none applies. docs/roadmap.md and
    docs/execplans/* only mention "mutation" in the sense of Weaver's own
    code-mutation/refactor commands, not mutation-testing CI infrastructure.
    No task was ticked or annotated.
  • TOC/cross-link: docs/developers-guide.md has no internal
    section-level table of contents to update. The top-level docs/contents.md
    index already links the whole file (- [Developer's guide] (developers-guide.md)), so no additional cross-link was needed.
  • Docs-lint result: make markdownlint passes (spelling gate, coverage
    gate, and markdownlint-cli2 all clean). Two -ise spellings copied from
    a draft template (summarising, serialises) were caught by the spelling
    gate and corrected to -ize per this repository's oxendict policy before
    the gate passed.

File changed

Test plan

  • make markdownlint (spelling + markdownlint-cli2) — passes
  • Rust/Python test suites — intentionally not run; this is a docs-only
    change per the task brief

Add a section to the developer's guide describing the informational
mutation-testing caller workflow and the pytest contract that pins its
shape: the uses: reference, permissions, concurrency, triggers, and
with: block. Placed after the existing workflow-pins policy section
since it documents that policy's concrete application here.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @leynos, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 139fd9d3-a371-4f9b-9f7f-91b72e4c212d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/mutation-contract-tests

Comment @coderabbitai help to get the list of available commands.

codescene-access[bot]

This comment was marked as outdated.

@codescene-access codescene-access Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No quality gates enabled for this code.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant