Skip to content

Prepare the v0.4.0 public API and release gate - #111

Merged
korya merged 2 commits into
masterfrom
korya-release-v0-4-0-readiness
Aug 31, 2026
Merged

Prepare the v0.4.0 public API and release gate#111
korya merged 2 commits into
masterfrom
korya-release-v0-4-0-readiness

Conversation

@korya

@korya korya commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Problem

The v0.4.0 API and release gate still have ambiguous result states and gaps that could mislead consumers or publish unverified code.

A custom assertion can currently produce an Outcome containing both a failure and an error, while jq-over-invalid-JSON reports different assertion families on its outcome and evaluation error. The response documentation also calls partial bytes complete after a read failure. Separately, the tag workflow tests the CLI but not the reusable package, omits vulnerability scanning, and still carries the older Go toolchain and unfinished release metadata.

Solution

Normalize the result contract and complete the release gate, toolchain, documentation, and changelog in one readiness change.

flowchart TD
    Check["Assertion.Check"] -->|"nil, nil"| Pass["Outcome: passed"]
    Check -->|"Failure, nil"| Fail["Outcome: failure only"]
    Check -->|"nil, error"| Error["Outcome: error only"]
    Check -->|"Failure, error from invalid custom assertion"| Error
    Error --> Kind["EvaluationError.Kind = Assertion.Kind"]
Loading

Evaluation errors now use the assertion family consistently, including jq assertions that fail during JSON decoding. Client.Do treats an error as authoritative when a custom assertion violates the interface contract, so its public outcomes remain mutually exclusive. The body-read contract now explicitly distinguishes partial encoded bytes returned with a top-level error from complete decoded bytes returned after success.

The release workflow reruns the library race suite, CLI E2E suite, and govulncheck ./... before publishing. Go is pinned to 1.26.7, matrix setup selects exactly one setup-go version input, and the v0.4.0 changelog and download example are finalized. This PR prepares the release but does not create a tag or publish artifacts.

No visual change: this affects the Go API contract, tests, documentation, and CI workflows.

Other Changes

  • Document the current unbounded response buffering with a link to the follow-up issue.
  • Move the intentional 2xx-or-3xx redirect behavior from the known-issues suite into normal E2E regression coverage.
  • Cover every new normalization branch; the helper is at 100% and total library statement coverage is 99.7%.
  • Pass just pre-push, govulncheck ./..., just release-snapshot, just release-notes v0.4.0, and actionlint locally.

Related:

🤖 Generated with Claude Code

korya and others added 2 commits August 30, 2026 21:47
Guarantee that Client outcomes contain either a failure or an evaluation error,
never both, and stamp evaluation errors with the assertion family. Clarify that
a body-read error leaves partial encoded bytes and no decoded payload.

Co-Authored-By: OpenAI Codex (GPT-5) <noreply@openai.com>
Pin Go 1.26.7, strengthen the tag gate with library race tests and govulncheck,
and finalize the v0.4.0 documentation. Split setup-go inputs by matrix leg and
move the resolved redirect behavior out of the known-issues suite.

Co-Authored-By: OpenAI Codex (GPT-5) <noreply@openai.com>
@korya
korya marked this pull request as ready for review August 31, 2026 02:03
@korya
korya merged commit e39b7f8 into master Aug 31, 2026
8 checks passed
@korya
korya deleted the korya-release-v0-4-0-readiness branch August 31, 2026 02:08
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