gh shim: adopt Plexus's not-sent pre-read refusals (fixtures at fec01fef)
Stacked on #1181 (refusal explanations), which is in the merge queue. Until #1181 merges, this diff also shows its commits.
Plexus changed its contract at fec01fef: a bot write that fails before anything reaches GitHub now comes back as a refusal marked "not sent". Before, it came back as "outcome unknown". This PR adopts that contract.
Fixtures: the README and all 27 reply fixtures are vendored byte for byte at Plexus fec01fefcd8aee8a5e25ced70585ecb12a7d8685, with per-file SHA-256 in PROVENANCE.md. The 144 request fixtures stay at 0025bdf6, and the .gitattributes LF pinning is kept. All 27 replies are decoded and validated. The 18 that AFT supports today run through the real shim. The nine merge-queue vectors are listed in one constant until the merge-queue shim change (#1125) lands. They are byte-identical to the vectors at the pin #1125 uses.
Behavior:
- Not-sent refusals stop immediately. The exceptions are
transport_unknownandlease_expiredpre-reads, which get at most one retry with the same nonce within the original deadline, so Plexus replays rather than writes twice. - Changed:
retry_same_nonce: truewithnot_sentno longer triggers an automatic retry forrequest_deadline_exceeded. Those replies now stop immediately. Already-sent legs keep their existing "undetermined" warning. - Unchanged: a write with
outcome_unknownstill never resends, and prior-write partial reporting stays as it was. - Wording: no new agent-visible text. Both new reasons use the approved generic "The GitHub read did not finish." Reason-specific sentences are proposed separately for operator approval.
Verification: 12-core Linux shim library tests and wire goldens, plus the Windows compile check.
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Adopts Plexus's new not-sent pre-read refusal contract so bot writes that fail before reaching GitHub are reported as refusals rather than unknown outcomes.
Behavior
- Not-sent refusals stop immediately, except
transport_unknownandlease_expiredpre-reads get one same-nonce retry within the original deadline. request_deadline_exceededwithnot_sentno longer retries whenretry_same_nonceis true.outcome_unknownwrites still never resend; partial posted-step reporting is unchanged.
Fixtures
- Vendors the README and 27 reply fixtures at the updated Plexus reply pin; the 144 request fixtures stay at the previous pin. Nine merge-queue replies are listed together and remain fixture-only until merge-queue routing lands.