Skip to content

docs: publish the sponsorship rule set (SPONSORS.md + README section) - #3910

Merged
lidge-jun merged 2 commits into
devfrom
sponsors/readme-base
Sep 7, 2026
Merged

docs: publish the sponsorship rule set (SPONSORS.md + README section)#3910
lidge-jun merged 2 commits into
devfrom
sponsors/readme-base

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Summary

Publishes the sponsorship rule set so a sponsor, a contributor, and a README visitor all read the same terms.

  • SPONSORS.md: two tiers. Main is reserved for organizations that train or host their own models and gets the single banner slot above the table, first mention in the README login/provider lines, and picker priority. Standard is for relays and gateways and gets a table row (logo ~150px + thanks line + ~80-word blurb published verbatim), a built-in preset near the top of the provider picker marked as a sponsor, a providers-page entry, and maintenance (preset fixed when a release breaks it, issues triaged first, no SLA). Pricing by inquiry, rising after 20,000 stars with early sponsors locked in. Contact via X, the Discord #sponsors channel, and the sponsorship mailbox. A "what sponsors do not get" section keeps routing defaults, security review, and user data off the table.
  • README.md: a ### Sponsors block directly under Quick start (before the Docker Compose details) with an empty Main banner slot and an empty Standard table. Sponsor rows land on their own branches after their agreements are paid, so this PR carries rules only, no names.
  • readme/README.*.md (7 locales): one linking line before the section that follows Quick start, so a sponsor change stays a single English edit.
  • scripts/privacy-scan.ts: allows the published contact address only in SPONSORS.md and README.md; the same address in any other file still fails. tests/ci-workflows/privacy-scan-meta-key.test.ts proves both sides against the real scanText.

Verification

  • bun run privacy:scan — passed
  • bun run typecheck — passed
  • bun test tests/ci-workflows/privacy-scan-meta-key.test.ts tests/ci-workflows/repo-hygiene.test.ts tests/ci-workflows/docs-bun-source-requirement.test.ts — 21 pass, 0 fail
  • Full suite NOT RUN locally (pushed with --no-verify); CI on this head is the gate.
  • Discord invite discord.gg/JEaPEtkHwh verified against the Discord invite API: no expiry, lands in #welcome of the OpenCodex server.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Summary by CodeRabbit

  • Documentation

    • Added sponsorship guidelines covering Main and Standard tiers, eligibility, pricing inquiries, application details, and sponsorship boundaries.
    • Added sponsorship information and links across translated README versions.
    • Added placeholders for sponsor banners, listings, and tables in the main README.
    • Included the sponsorship guidelines in published package contents.
  • Tests

    • Added coverage ensuring sponsorship contact details are permitted only in approved documentation locations.

Two tiers: Main for model developers (banner slot above the table, first
mention in the login/provider lines, picker priority) and Standard for
relays/gateways (table row, built-in preset near the top of the picker
marked as a sponsor, providers-page entry, preset maintenance and issue
triage priority, no SLA). Pricing by inquiry, rising after 20,000 stars
with early sponsors locked in. Contact via X, the Discord #sponsors
channel, and the sponsorship mailbox.

README gains the section directly under Quick start with an empty Main
banner slot and an empty Standard table; sponsor rows land on their own
branches. The seven translated READMEs get a one-line link so a sponsor
change stays a single English edit.

privacy:scan allows the published contact address only in SPONSORS.md
and README.md; the same address anywhere else still fails, with a test
proving both sides.
@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner September 7, 2026 13:41
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 7, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-07T13:48:30.309613Z 9e2f5c8 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 7, 2026
@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Team

Run ID: b918dc77-c478-47e3-a8c3-6ecdd4d69916

📥 Commits

Reviewing files that changed from the base of the PR and between 9e2f5c8 and 321f93f.

📒 Files selected for processing (3)
  • README.md
  • SPONSORS.md
  • package.json

Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review.


📝 Walkthrough

Walkthrough

Adds a two-tier sponsorship program, documents its rules and placement, links translated READMEs to the policy, packages the policy file, and restricts the sponsorship contact to approved files.

Changes

Sponsorship program

Layer / File(s) Summary
Sponsorship policy and README presentation
SPONSORS.md, README.md, package.json
Defines Main and Standard sponsorship tiers, placement, pricing, application requirements, exclusions, README sponsor placeholders, and npm package inclusion.
Translated README notices
readme/README.*.md
Adds localized sponsorship notices with links to SPONSORS.md.
Sponsorship contact privacy validation
scripts/privacy-scan.ts, tests/ci-workflows/privacy-scan-meta-key.test.ts
Allows the sponsorship contact only in SPONSORS.md and README.md, with coverage for allowed and disallowed paths.

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

Merge Risk: ⚪ Minimal · up to 321f9

This change publishes sponsorship terms and README notices, packages the policy document, and permits the published contact address only in the intended files. It does not alter runtime behavior, and no current merge-readiness risk remains.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files. (3 skipped: 3 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the primary change: publishing the sponsorship rules in SPONSORS.md and adding the README sponsorship section.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files. (3 skipped: 3 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sponsors/readme-base

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@lidge-jun

Copy link
Copy Markdown
Owner Author

리뷰 · 우선순위 62 / 80

이 PR은 코드 기능을 새로 넣는 게 아니라, 스폰서십 규칙을 공개 문서로 고정하는 작업이다. 지금 dev HEAD는 f802f7112(#3892, 모델별 pinned reasoning effort)이고, 저장소에는 아직 SPONSORS.md가 없다. 이 브랜치는 그 빈자리를 채운다.

구체적으로는 세 덩어리다. 첫째, 루트에 SPONSORS.md를 새로 둔다. Main(직접 모델을 만드는/호스팅하는 조직)과 Standard(릴레이·게이트웨이·리셀러) 두 티어, 각 티어가 받는 것(배너/표 자리, 프리셋, providers 문서, 이슈 우선 triage, SLA 없음), 가격은 문의제·2만 스타 이전 계약은 요금 고정, 연락 창구(X @claudeebum, Discord #sponsors, jun@lidgeai.com), 그리고 스폰서가 절대 사지 못하는 것(라우팅 기본값, 보안 리뷰 완화, 유저 데이터)을 한 페이지에 모은다. 둘째, 영어 README.md의 Quick start 바로 아래(Docker Compose <details> 앞)에 ### Sponsors 블록을 넣고, Main 배너/Standard 표는 HTML 주석 슬롯만 비워 둔다. 이름 있는 로고 행은 계약 후 별도 브랜치로 온다는 뜻이다. 셋째, readme/README.*.md 일곱 개에는 규칙 페이지로 가는 한 줄 링크만 넣고, scripts/privacy-scan.tsisAllowedEmail에 스폰서 연락 메일을 SPONSORS.mdREADME.md에서만 허용하는 allowlist를 추가한다. 테스트 tests/ci-workflows/privacy-scan-meta-key.test.ts가 허용/거부 양쪽을 실제 scanText로 증명한다.

현재 dev 방향(effort pin, GUI Custom picker order, code-mode, lane D)과 충돌하지 않는다. types.ts/config.ts 분할에도 무관하다. MAINTAINERS.md가 말하는 보안 리뷰·라우팅 중립을 What sponsors do not get에서 다시 박아 둔 점도 제품 정책과 맞다. Discord 초대 discord.gg/JEaPEtkHwh는 만료 없이 OpenCodex 서버 #welcome으로 연결되는 것을 확인했다. 스타 수는 아직 약 13.7k라서 "2만 스타 이전 요금 고정" 문장도 지금 시점과 맞다. 로컬에서 privacy:scan / typecheck / 관련 ci-workflows 테스트 21개가 통과했다고 적혀 있고, CI는 이 리뷰 시점에 아직 pending이다.

다만 문서로 "나중에 줄 것"을 약속한 부분과, 빈 HTML 표가 README에 보이는 부분, 그리고 번역본 한 줄의 위치가 언어마다 다른 점은 머지 전에 한 번 짚고 가는 편이 좋다. 규칙 공개 자체는 바로 가치가 있다.

README.md (Sponsors 표) - <table><tbody><!-- sponsor rows --></tbody></table> 빈 표가 GitHub README에 얇은 빈 박스로 보일 수 있다. Standard 스폰서가 오기 전에는 표 태그 전체를 HTML 주석으로만 두고, 첫 행이 생길 때 표를 여는 쪽이 더 깔끔하다.

SPONSORS.md (Main / Standard 혜택) - "built-in provider picker … marked as a sponsor", "priority ordering"을 약속하지만, 현재 devsrc/providers/registry.ts ProviderDefinition에는 featured?: boolean만 있고 sponsor 배지/정렬 필드는 없다. 이번 PR 범위(규칙만)에서는 괜찮지만, 첫 Standard 스폰서 PR은 README 행만이 아니라 registry/GUI 쪽 코드 작업이 같이 필요하다는 걸 규칙 페이지나 Placement 절에 한 줄로 밝혀 두면 기대를 맞출 수 있다.

SPONSORS.md (Main: README login/provider lines) - Main 배너·Standard 표는 <!-- sponsors:… --> 앵커가 있는데, "Log in once" OAuth 문단·Providers & adapters 요약의 "first mention" 자리에는 같은 앵커가 없다. 나중에 Main 계약이 오면 어디를 고칠지 찾기 어렵다. 영어 README 해당 문단 근처에 주석 앵커를 미리 심어 두는 편이 좋다.

readme/README.*.md - SPONSORS.md는 "Quick start 다음 섹션 앞"에 한 줄이라고 적었지만, 실제 삽입 위치는 언어마다 다르다. fr/tr은 Platforms 앞, ja/ko/ru는 프로바이더 추가 앞, zh-CN/zh-TW는 亮点/亮點 앞이다. 링크만 두는 전략은 맞고, 위치 통일은 필수는 아니다. 다만 문서 문장을 "영어 README와 같은 자리"가 아니라 "각 언어 Quick start(또는 그에 해당하는 블록) 직후"처럼 느슨하게 고치거나, 위치를 영어와 맞추면 나중에 헷갈림이 줄어든다.

scripts/privacy-scan.ts / isAllowedEmail - allowlist가 파일명 SPONSORS.md, README.md 정확 매칭이라 readme/README.ko.md 등에는 같은 주소가 있어도 계속 실패한다. 테스트가 그 경계를 잠갔고, 번역본에는 메일 대신 링크만 둔 설계와도 맞다. 문제 없음.

용어 - MAINTAINERS.md / .github/scripts/pr-sponsored-surface.cjs의 "maintainer-sponsored"(보안 표면 merge 스폰서)와 이번 페이지의 "provider sponsor"는 뜻이 다르다. 기여자 혼동을 줄이려면 SPONSORS.md 맨 위에 "여기 sponsor는 유료 프로바이더 후원이고, PR의 maintainer-sponsored 라벨과는 다르다" 한 줄을 넣어도 된다. 필수는 아니다.

메인테이너의 판단이 필요한 지점

  • 빈 Standard <table>을 지금 공개 README에 둘지, 첫 스폰서 행이 생길 때까지 주석만 둘지
  • picker "sponsor 표시·우선 정렬"을 규칙 문서에 약속으로만 둘지, 첫 스폰서 PR 전에 registry/GUI 스케치를 이슈로 미리 열지
  • Main의 README 본문 first-mention 자리에 HTML 주석 앵커를 이 PR에 같이 넣을지
  • CI(gates/test) 초록을 머지 게이트로 기다릴지(설명에 full suite는 로컬 미실행, --no-verify push)

너의 추천
CI가 초록이면 머지해도 된다. 머지 전에 빈 <table>을 주석 처리할지 한 번만 결정하고, picker sponsor 배지는 "후속 PR에서 registry에 필드를 추가한다"는 한 줄을 SPONSORS.md Placement 또는 Standard 혜택에 적어 기대를 맞추면 충분하다. 이름 있는 스폰서 행·프리셋 코드는 이 PR에 넣지 말고 계약 후 별도 브랜치로 유지하는 현재 분리가 맞다.

이 댓글은 grok-bot이 작성했습니다

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9e2f5c8c75

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread README.md
### Sponsors

Sponsors keep the proxy maintained across every upstream protocol change. Two tiers, one
[rule set](./SPONSORS.md): **Main** is reserved for model developers and takes the banner

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Ship the sponsor rules linked from the packaged README

When users read the README from an installed npm package, this relative link points to a file that is not present: package.json explicitly ships README.md but does not include SPONSORS.md, and npm pack --dry-run --ignore-scripts confirms the latter is omitted. Add SPONSORS.md to the published files or use an absolute repository URL so package users can reach the advertised rule set.

Useful? React with 👍 / 👎.

…ommented until the first row, anchor Main first-mention slots

Review follow-ups on #3910: the packaged README linked a file the tarball
did not carry (package.json files now lists SPONSORS.md); the empty
Standard table is a commented template with an absolute-URL logo
placeholder so the README asset guard stays green; the two README lines
a Main sponsor is promised first mention in carry a
sponsors:main-first-mention comment; SPONSORS.md disambiguates provider
sponsors from the maintainer-sponsored PR label and says the picker
field lands with the first sponsor preset.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant