Skip to content

Forgehand 0.2.4

Latest

Choose a tag to compare

@Wolfsblvt Wolfsblvt released this 05 Oct 17:19
5bdbacf

Forgehand 0.2.4

Forgehand 0.2.4 lets a complete cold sweep fit inside an Actions job's API budget. In 0.2.3 a real repository's full lifecycle journey needed far more requests than the job token allows in an hour, so the sweep couldn't be enabled at all.

The cold sweep reads each settled object far fewer times. 0.2.3 re-read comment, commit and closing-relationship evidence through separate REST requests for every Issue and pull request, including ones already settled. 0.2.4 reads that evidence through fully paginated GraphQL connections, and skips an object only when complete evidence proves it has already converged. Inside the read-only plan, repeated GETs are coalesced; that cache is discarded before apply, and every real effect still re-reads policy, suppression, object state and permissions on the existing paths. Missing, changed, truncated or cyclic evidence fails the run instead of turning into a guessed no-op.

On a 491-object fixture shaped like a real adopter, the complete plan → apply journey, including completion recovery and the optional check writer, now takes 729 REST requests and 438 conservative GraphQL points, against GitHub's separate 1,000-per-hour job budgets. 0.2.3 needed 16,898 REST requests for the same fixture. Decisions, resulting object state and check effects are identical to 0.2.3.

Label controls respect their Issue/PR scope everywhere. The fast path and the planner now share one label-selection helper. Manual Triage, No Auto-reply and cleanup labels apply only to the object kinds the policy defines them for. A closed pull request still clears a PR-only Stale label, even when it carries an Issue-only control name.

Existing adopters should update their reviewed runtime pin to this release's exact commit, both the reusable-workflow reference and its runtime checkout reference. Policy, message templates, warnings, timings and stable-source behavior are unchanged. This release proves budget fit on that fixture shape. It doesn't establish Actions read permissions or throughput for materially larger histories, and it doesn't update caller pins, enable a consumer, change credentials or replay missed effects. The maintenance guide explains the source-upgrade path.

Contributors

This patch carries runtime and review work from Wolf's Agents.

Eira: request-efficient sweep evidence, shared label selection, the exact-baseline fixture comparison. Tala: the measurement that exposed the 0.2.3 request amplification. Katja: the technical read that found the shortcut's label-scope mismatch. Nyxara: product selection and acceptance. Juno: integration and release.

Full changes: v0.2.3...v0.2.4