Skip to content

chore: CI lint and docs jobs, Credo, Dependabot, and Hex package polish - #5

Merged
schainks merged 2 commits into
mainfrom
chore/ci-and-package-hygiene
Oct 12, 2026
Merged

schainks merged 2 commits into
mainfrom
chore/ci-and-package-hygiene

Conversation

@schainks

Copy link
Copy Markdown
Owner

Stacked on #2; GitHub retargets this to main once #2 merges.

Borrowed from how Ecto, Req and the Jido packages are set up, so the repo looks familiar to Elixir developers. No public API changes.

CI

  • Test matrix: Elixir 1.18 / OTP 27 (the floor), 1.20 / 28, and now 1.20 / 29.
  • Lint job: mix deps.get --check-locked, mix format --check-formatted, mix deps.unlock --check-unused, mix compile --warnings-as-errors, mix credo --strict.
  • Docs job: mix docs --warnings-as-errors and mix hex.build, so a broken release package shows up in the PR.

Code

credo --strict is clean. Its complexity checks prompted three refactors, each covered by the existing 55 tests:

  • Provider.resolve/1 is table-driven for the three hosted providers (TypeSafe, OpenRouter, OpenAI), with clauses for Cloudflare and compatible.
  • HTTP classifies each response ({:done, result} or {:retry, retry_after, error}) separately from the retry loop.
  • Wire.OpenAIDecisions encodes one question type per clause.

Packaging and tooling

  • ex_doc is only in a :docs env, which is preferred for mix docs and mix hex.publish.
  • The Hex package links the changelog on hexdocs.
  • Dependabot, weekly, for mix and GitHub Actions.
  • run.sh moved to scripts/run.sh and described as an optional Docker helper. It also picks the :docs env for docs and hex.publish.

Verified locally

Tests 55/55, strict Credo, format, warnings-as-errors, deps.get --check-locked in test/dev/docs, deps.unlock --check-unused, docs --warnings-as-errors, hex.build.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GCRzC1xV9gCW4bf7LzBGcB

schainks and others added 2 commits October 11, 2026 01:31
Brings the repo in line with what Ecto, Req and the Jido packages do:

- CI: test matrix adds Elixir 1.20 / OTP 29; separate lint job (lockfile
  checks, format, unused deps, warnings-as-errors, credo --strict) and docs job
  (docs --warnings-as-errors, hex.build); deps.get --check-locked everywhere
- Credo (dev/test) with --strict clean: provider resolution is table-driven,
  HTTP response classification is split from the retry loop, and the OpenAI
  question encoder has one clause per type; behaviour unchanged (55 tests)
- ex_doc only in a :docs env (preferred for docs and hex.publish)
- Hex package links the changelog on hexdocs
- Dependabot for mix and GitHub Actions
- run.sh moved to scripts/run.sh as an optional Docker helper

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GCRzC1xV9gCW4bf7LzBGcB
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GCRzC1xV9gCW4bf7LzBGcB
@schainks
schainks changed the base branch from feat/openai-decisions to main October 12, 2026 17:26
@schainks
schainks merged commit f1f51fb into main Oct 12, 2026
5 checks passed
@schainks
schainks deleted the chore/ci-and-package-hygiene branch October 12, 2026 17:30
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