Pudu programming language
Menu
Package

@chrismichaelps / pudu-lang-httpclient

Named HTTP clients for Pudu: a client factory, delegating handlers, pooled keep-alive connections, handler lifetimes, logging, and resilience

0.1.1Apache-2.01

InstallClose

CONTRIBUTING.md

Markdown56 lines2.1 KB

GitHub ↗

Contributing to pudu-lang-httpclient

The wiki vault under wiki/ is the source of truth. Read wiki/00-INDEX.md, the architecture map, and the grammar page before changing code, and write or update a module's mirrored page under wiki/src/ before its code.

Branches

  • main holds released versions only. It changes through a pull request from dev.
  • dev is the integration branch.
  • Work happens on feature/<issue>-<slug>, fix/<issue>-<slug>, or docs/<issue>-<slug>, branched from dev and merged back through a pull request.

Commits

Semantic commits that name the issue: feat(transport): add a per-server connection limit refs #12. Types are feat, fix, perf, refactor, test, docs, ci, and chore. Keep each commit to one change; code, tests, and the matching wiki pages move together.

Code

  • Dependencies point inward: the public modules use Domain, which uses Utils and Constants. Domain performs no effects and imports no public module.
  • Only Handlers/Logging, Handlers/Resilience, and Events/Bus import other packages; the client, factory, and transport import none, and no public signature names a mediator type.
  • Every module the package ships is PuduLangHttpClient or lives under src/PuduLangHttpClient/.
  • Every file and exported type starts with a one-line /** @Namespace.Entity.Role — intent */ anchor, and every function and constant carries a short /// comment saying what it answers.
  • No dead code: every declaration has a caller.
  • Keep files under 500 lines.

Checks

Every change passes all of these:

pudu install --locked
pudu check $(find src test tools examples -name '*.pudu')
pudu fmt --check src test tools examples
pudu lint src test tools examples
pudu test test

Suites talk to servers they start on the loopback interface; none needs the network.

Changes to logic also run mutation testing on the files they touch, and no new mutant may survive:

pudu run tools/Mutate.pudu --file src/PuduLangHttpClient/Domain/Uri.pudu --suites test/PuduLangHttpClient/Domain

Pull requests

Open the pull request against dev, describe the behaviour and how it was verified, and link the issue with Closes #N.