rtb-forge 0.7.1

Release-provider abstractions and backends (GitHub, GitLab, Bitbucket, Gitea, Codeberg, Direct) plus an async git-operations Repo built on gix. Part of the phpboyscout Rust toolkit.
Documentation
Feature: rtb-forge — Repo read paths (walk / diff / blame)
  v0.5 commits 2 and 2b. Downstream tools need to walk the commit
  graph (release-note summarisation), compare tree states
  (scaffolder regeneration drift detection), and attribute lines
  to commits (audit / code-review tools).

  Scenario: W1 — walk(HEAD) yields commits newest-first
    Given a 3-commit linear-history fixture authored by "alice"
    When I walk "HEAD"
    Then the walked commit messages are "third", "second", "initial" in order

  Scenario: W2 — walk(range) excludes commits before the lower bound
    Given a 3-commit linear-history fixture authored by "alice"
    When I walk "HEAD~2..HEAD"
    Then the walked commit messages are "third", "second" in order

  Scenario: W3 — walk(bad-revspec) surfaces RevspecNotFound
    Given a 3-commit linear-history fixture authored by "alice"
    When I attempt to walk "no-such-rev"
    Then the call fails with RepoError::RevspecNotFound for "no-such-rev"

  Scenario: D1 — diff between two commits surfaces structured changes
    Given a 3-commit linear-history fixture authored by "alice"
    When I diff "HEAD~2" and "HEAD~1"
    Then the diff contains "README.md" as Modified
    And the diff contains "LICENSE" as Added

  Scenario: D2 — diff captures deletions
    Given a 3-commit linear-history fixture authored by "alice"
    When I diff "HEAD~1" and "HEAD"
    Then the diff contains "README.md" as Deleted
    And the diff contains "CHANGELOG.md" as Added

  Scenario: BL1 — blame attributes lines to the introducing commit
    Given a 3-commit linear-history fixture authored by "alice"
    When I blame "LICENSE" at "HEAD"
    Then every line is attributed to "alice"
    And every line maps to the commit at "HEAD~1"