Skip to content

feat: contribute-for-credits program (landing + /contribute + pricing) [early access]#262

Merged
abrichr merged 1 commit into
mainfrom
feat/contribute-for-credits
Jul 26, 2026
Merged

feat: contribute-for-credits program (landing + /contribute + pricing) [early access]#262
abrichr merged 1 commit into
mainfrom
feat/contribute-for-credits

Conversation

@abrichr

@abrichr abrichr commented Jul 21, 2026

Copy link
Copy Markdown
Member

Coordinated early-access rollout — hold for final program approval

This is the public website surface for the data-for-credits target state. The underlying Cloud mechanism is inert and OFF by default until the versioned contribution terms, named de-identification standard and attestation, jurisdiction scope, and curation path are active. Nothing in this PR enables uploads or claims customer data has been collected.

Public surfaces

  1. Landing-page section after the adoption block, framed as strengthening the shared hardening corpus.
  2. Dedicated /contribute page with the local sanitize → exact-byte approval → validated ingest → credits lifecycle and the existing contact intake.
  3. Pricing callout that extends the monthly run allowance rather than creating a pay-with-data tier.

Binding copy contract

  • raw recordings never leave the contributor boundary
  • only a locally reviewed, hash-bound derivative is eligible
  • the contributor organization must attest that it meets the named de-identification standard in the versioned terms; sanitization alone is not presented as a legal determination
  • contributors can stop future contributions at any time; accepted contributions remain governed by the terms version approved at submission
  • service credits only, never cash or per-record pricing
  • early access/request access, never available today

Verification

  • npm test: 117 tests pass, including two new contribution-copy regression tests
  • the page remains statically renderable
  • GitHub CI is authoritative while the owning Netlify team remains quota-blocked; the Netlify failures occur before source build

Hold merge until the coordinated program copy and terms are approved together. The code path remains fail-closed and OFF by default.

@netlify

netlify Bot commented Jul 21, 2026

Copy link
Copy Markdown

Deploy Preview for cosmic-klepon-3c693c ready!

Name Link
🔨 Latest commit 949c91c
🔍 Latest deploy log https://app.netlify.com/projects/cosmic-klepon-3c693c/deploys/6a665ad0b33b640009e425c1
😎 Deploy Preview https://deploy-preview-262--cosmic-klepon-3c693c.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

abrichr added a commit that referenced this pull request Jul 21, 2026
Carry the deploy-preview un-ignore (see #263) on this branch so PR #262
gets a live rendered preview. The Free-plan quota that forced the
#261 skip is gone now that the site is on the Pro/Personal plan.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM
@abrichr

abrichr commented Jul 21, 2026

Copy link
Copy Markdown
Member Author

Pausing this PR after launch-path review.

The current diff is a well-structured public explanation and request-access surface, but it does not ship the target-state contributor product: there is no accepted contribution agreement, contribution/approval path, credit ledger, or usage-cap application. Publishing an “Early access / there is no upload flow today” page would add a temporary waitlist-style promise to the sales surface.

The work is preserved on this branch. Resume it when the actual mechanism can land with the page: versioned terms, hash-bound approved-derivative intake, eligibility validation, auditable credit issuance, and control-plane application of credits. Until then it is intentionally outside the launch critical path.

@abrichr
abrichr marked this pull request as draft July 21, 2026 12:43
@abrichr

abrichr commented Jul 21, 2026

Copy link
Copy Markdown
Member Author

Closing for launch focus while preserving the branch and history. This surface promises earned run-cap credits before the versioned terms, corpus-specific destination policy and intake, eligibility rules, idempotent credit ledger, entitlement update, and actual cap application exist. It also trails current main and would fragment the live Cloud / Evaluate / Try locally funnel. Rebuild this as one coherent product, legal, billing, and evidence train after the mechanism works end to end.

@abrichr abrichr closed this Jul 21, 2026
@abrichr abrichr reopened this Jul 26, 2026
…) [early access]

Rebuilt on current main after the launch-focus close, addressing the
closing objections within what is truthful today:

- /contribute now carries an explicit Program status and eligibility
  section: the contribution path is versioned-terms-gated and off by
  default until a finalized terms version is active, eligibility requires
  the named-standard attestation, contributions are curated, and no
  customer or patient data has been collected through this program.
- Contributor leads use a dedicated Netlify form (contributor-program)
  registered in public/form.html, posting over the durable /form.html
  lead path, segmented from the generic contact queue.
- The landing section is re-homed after TrustSummary in the new homepage
  IA (commons/flywheel message in the trust cluster) so it does not
  interrupt the qualification funnel narrative.
- The pricing callout is re-applied to the current Pricing component as
  the chosen Option A callout under the tiers.
- Regression tests lock the binding framing: no sell/monetize-your-data
  language, no per-record price, early-access-only status, form-name
  parity between runtime submit and Netlify definition, and no em dashes.

The Cloud mechanism (consent record, credit ledger, contribution rows)
is merged and inert, unreachable until an operator sets
CONTRIBUTION_CREDITS_ENABLED and a real CONTRIBUTION_TERMS_VERSION.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM
@abrichr
abrichr force-pushed the feat/contribute-for-credits branch from 8ca25da to 949c91c Compare July 26, 2026 19:06
@abrichr

abrichr commented Jul 26, 2026

Copy link
Copy Markdown
Member Author

Reopened and finished per founder instruction, rebuilt on current main (post-#275/#301/#302 homepage IA). Addressing each objection from the launch-focus close:

  1. "No accepted contribution agreement / versioned terms": the terms remain unfinalized by design, and the page now discloses that on itself. /contribute carries a dedicated "Program status and eligibility" section stating the contribution path is versioned-terms-gated and off by default until a finalized terms version is active, that acceptance records the exact terms version and timestamp, and that no customer or patient data has been collected through this program. The promise-before-terms objection is converted into disclosed status, which is the early-access pattern the binding framing brief prescribes.

  2. "No contribution/approval path, credit ledger, or usage-cap application": the mechanism exists and is merged in openadapt-cloud feat(stats): add PyPI download statistics visualization #103 (consent record, idempotent credit ledger, contribution rows over already-approved hash-bound sanitized derivatives). It ships inert and unreachable until an operator sets CONTRIBUTION_CREDITS_ENABLED plus a real CONTRIBUTION_TERMS_VERSION. The page never claims a live upload flow; copy is request-access only.

  3. "Temporary waitlist-style promise on the sales surface": intake is no longer a generic contact reuse. A dedicated Netlify form (contributor-program) is registered in public/form.html and posted over the durable /form.html lead path, so contributor leads are segmented and durable, same pattern as workflow-qualification.

  4. "Trails current main / would fragment the live funnel": rebuilt on current origin/main. The landing section is re-homed after TrustSummary (trust/open-source cluster) and stays out of the hero, the commercial offer, and the closing qualification CTA. The pricing callout is re-applied to the current Pricing component as the chosen Option A callout. Stale /#pricing anchor fixed to /pricing.

Regression tests (tests/contributeProgram.test.js) lock the framing contract: no sell/monetize-your-data language, no per-record price, early-access-only status, runtime/Netlify form-name parity, and no em dashes. Full npm run build (prebuild tests, 138 pass) is green locally.

@abrichr
abrichr marked this pull request as ready for review July 26, 2026 19:09
@abrichr
abrichr merged commit 1f3d066 into main Jul 26, 2026
9 checks passed
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