Skip to content

Prepare the package page for the repository going public - #1

Merged
alkaz-nodemaven merged 2 commits into
mainfrom
publication-readiness
Sep 4, 2026
Merged

Prepare the package page for the repository going public#1
alkaz-nodemaven merged 2 commits into
mainfrom
publication-readiness

Conversation

@alkaz-nodemaven

@alkaz-nodemaven alkaz-nodemaven commented Sep 4, 2026

Copy link
Copy Markdown
Member

Everything here was held back while nodemaven-python was internal, where a link into it answers 404 to anyone not signed in.

The ordering constraint, and it is the only risky part

Measured 2026-09-04, while this repository is still internal:

  • the CI badge fetched from shields.io renders tests: repo or workflow not found;
  • https://github.com/nodemaven/nodemaven-python and .../issues both 404 anonymously, although both paths exist when authenticated.

So this merges with the visibility flip or after it, never before. Landing it first puts a broken badge and a dead link on the PyPI page, which is the exact thing the flip is supposed to fix. That is CEO rule 1 territory.

None of it reaches PyPI without a release. PyPI bakes [project.urls] into each uploaded distribution and never re-reads the repository, and the long description is the README of the distribution that was uploaded. The 0.1.2 page will not change when this merges or when visibility flips; it changes at 0.1.3.

What is in it

  • pyproject.toml: Source and Issues in [project.urls].
  • README, quickstart: the first live request now goes through any proxy, using Provider plus host=/port=. Nothing in the library changed - the capability shipped in 0.1.0 and the README buried it in the last section. Verified 2026-09-04 against the 0.1.2 wheel from PyPI in a clean venv with NODEMAVEN_* stripped: 7 of 7 cases, including credentials read from a file-defined gateway's own env prefix. This removes account issuance from the three-developer quickstart test.
  • README, Parameters: a table for the shipped gateway with the dates each value set was measured on, plus Errors. Names are validated, values mostly are not, and that is now said outright rather than implied.
  • README: CI badge restored, absolute blob/main/LICENSE link, a link to the benchmark harness the retry claim is measured on, and three stale claims corrected in place with a note on what each looked like from the inside.
  • CHANGELOG.md, new, written from the tags and the PyPI upload records rather than from memory. It records that norotate never shipped in any release: both the addition and the removal sat between the 0.1.1 and 0.1.2 tags.
  • ci.yml: a ci-ok job that is green only when every matrix job is. A required status check is matched by name, so the six matrix-derived names go stale the moment the Python version list changes and block every PR until somebody edits the ruleset. It carries if: always() and an explicit test of needs.test.result, because a skipped required check counts as passing.
  • Docstrings for the two public members that had none: Provider.is_measured and Proxy.provider. Public API coverage is 22/22.

Checks run locally

25 tests pass in a clean venv on 3.13; twine check PASSED on both wheel and sdist; both workflows parse; no broken in-page anchors; no Cyrillic and no em-dashes in any tracked file. The only failing links are the three nodemaven-python URLs above, by design.

Not in it, queued for 0.1.3

  • type belongs in known_params. The published SDK refuses it, and we probed it working from the VPS on 2026-08-26 with a negative control: a junk value answers 407 while an unimplemented name answers 200, and type=mobile drew T-Mobile three times plus Cellco and AS7018 where type=residential and the unset arm drew wireline only. The SDK currently blocks selecting the mobile half of what we sell. It is the exact mirror of the norotate mistake, in the other direction.
  • SOCKS5, on which nothing has been measured yet.
  • The version bump itself, and swapping the six matrix contexts in the main ruleset for ci-ok once this is on main.

Summary by cubic

Prepares the nodemaven package page for the repository becoming public by adding Source/Issues metadata, working README links and a CI badge, a changelog, clearer gateway and error documentation, and the two missing public API docstrings. The quickstart now demonstrates a live request through any proxy instead of implying a NodeMaven account is required; this is documentation-only, and runtime behavior is unchanged.

CI

  • Adds ci-ok, which passes only when every matrix job succeeds and prevents required-check names from drifting as Python versions change.

Rollout

  • Merge this with the visibility flip or afterward; before then, the new GitHub links and badge fail for anonymous users.
  • Publish a new release after merging because PyPI will not update the existing 0.1.2 metadata or README automatically.

Written for commit 3a1e9ed. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Documentation
    • Expanded the README with offline and custom-provider setup guidance, parameter and error references, gateway configuration examples, benchmark information, and licensing details.
    • Added a comprehensive changelog covering prior releases and publishing practices.
    • Clarified provider measurement status and proxy behavior in the public API documentation.
  • Chores
    • Added public repository and issue links to project metadata.
    • Added a stable CI status check that reports whether the complete test suite passes.

Six of these were held back while nodemaven-python was internal, where a
link into it answers 404 to anyone not signed in.

- pyproject: Source and Issues added to [project.urls]. PyPI bakes that
  table into each uploaded distribution and never re-reads it, so these
  reach the existing 0.1.2 page through a release and never through the
  visibility flip. The same is true of everything below that touches the
  README, which is the long description.
- README: the quickstart now makes its first live request through ANY
  proxy, using Provider plus host= and port=. Nothing in the library
  changed - the capability shipped in 0.1.0 and the README buried it in
  the last section. Verified 2026-09-04 against the 0.1.2 wheel from PyPI
  in a clean venv with NODEMAVEN_* stripped from the environment: 7 of 7
  cases pass, including credentials read from a file-defined gateway's own
  env prefix.
- README: a Parameters table for the shipped gateway carrying the dates
  the values were measured on, and an Errors table. Names are validated,
  values mostly are not, and that is now said outright.
- README: the CI badge, an absolute LICENSE link, and the benchmark
  harness the retry claim is measured on.
- CHANGELOG.md, written from the tags and the PyPI upload records rather
  than from memory. It records that norotate never shipped in any release.
- ci.yml: a ci-ok job that is green only when every matrix job is. A
  required check is matched by name, so the six matrix-derived names go
  stale the moment the Python list changes and block every PR until
  somebody edits the ruleset. It needs if: always() and an explicit test
  of the result, because a SKIPPED required check counts as passing.
- The two public members that had no docstring got one: Provider.is_measured
  and Proxy.provider.

Ordering constraint, measured 2026-09-04 while the repository was still
internal: the CI badge renders "tests: repo or workflow not found" and
both new GitHub URLs 404 anonymously although the paths exist when
authenticated. So this lands with the visibility flip or after it, never
before - otherwise the package page carries a broken badge and a dead
link, which is what the flip is meant to fix.
@coderabbitai

coderabbitai Bot commented Sep 4, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

Next included review available in 51 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: e885bcf2-8aa1-488b-947f-b47586dfe8c4

📥 Commits

Reviewing files that changed from the base of the PR and between 3a1e9ed and 49270e8.

📒 Files selected for processing (2)
  • CHANGELOG.md
  • README.md
ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: 046a40ff-a0ed-486c-ada3-1cdb4e02691a

📥 Commits

Reviewing files that changed from the base of the PR and between c07ba26 and 3a1e9ed.

📒 Files selected for processing (6)
  • .github/workflows/ci.yml
  • CHANGELOG.md
  • README.md
  • pyproject.toml
  • src/nodemaven/providers.py
  • src/nodemaven/proxy.py

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The workflow adds a stable aggregate CI status check. The README and changelog receive expanded usage, gateway, release, and reference documentation. Project metadata and provider and proxy API docstrings now include repository and behavior details.

Changes

Repository maintenance

Layer / File(s) Summary
Aggregate CI status check
.github/workflows/ci.yml
The workflow adds an always-running ci-ok job that evaluates the complete test matrix and fails unless all test jobs succeed.
Public documentation and release metadata
pyproject.toml, README.md, CHANGELOG.md
Project links, quickstarts, parameter and exception references, custom gateway guidance, release history, benchmark links, and license information are updated.
Provider and proxy API documentation
src/nodemaven/providers.py, src/nodemaven/proxy.py
The docstrings describe verified measurement status, gateway definitions, accepted parameters, and provider dialect details.

Estimated code review effort: 2 (Simple) | ~10 minutes


Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Essentials by visiting https://app.coderabbit.ai/settings/billing.

Comment @coderabbitai help to get the list of available commands.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 6 files

You're on the cubic free plan with 2 free PR reviews remaining this month. Upgrade for unlimited reviews.

Re-trigger cubic

Comment thread CHANGELOG.md Outdated
Comment thread README.md Outdated
Both are the same kind of mistake - a sentence that was true of an earlier
draft and was not re-read after the draft grew.

- The Errors table gave ParamError three triggers and there are more. A
  value outside a list the definition declares is refused too, and so are
  the two structural cases: session() on a definition with no session
  parameter, and a definition whose parameter names collide with the
  constructor's own.
- "Names are validated, values are not" is true of the shipped gateway and
  false of the schema. The values key exists and is enforced; NodeMaven's
  definition leaves it empty on purpose, which is a fact about that
  definition rather than about the library.
- The changelog said "all four" over a list of five, and the fifth was held
  back for a reason about a different repository: proxy-benchmark was
  internal until 2026-09-01, this one still is.
@alkaz-nodemaven
alkaz-nodemaven merged commit 469db56 into main Sep 4, 2026
8 checks passed
@alkaz-nodemaven
alkaz-nodemaven deleted the publication-readiness branch September 4, 2026 13:51
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