Skip to content

docs(terms): the signed commercial terms as drafts; the plans page lists the ways to buy - #28

Merged
HetCreep merged 6 commits into
mainfrom
lwk2-ar-docs
Oct 7, 2026
Merged

HetCreep merged 6 commits into
mainfrom
lwk2-ar-docs

Conversation

@HetCreep

@HetCreep HetCreep commented Oct 7, 2026 •

Copy link
Copy Markdown
Member

What changes

  • TERMS.md carries the signed commercial terms as a draft:
    • the refund floor (an unredeemed key in full within 14 days; a first-period refund deducts the days used; unused credits at the price paid in the same window);
    • the age formula (at least 18, or the local age of consent, whichever is higher);
    • Thai law and courts, with consumer rights preserved;
    • the liability cap (12 months of the product's price, or $100, whichever is higher, to the extent permitted);
    • output ownership, with training by opt-in only;
    • refunds of the unused part when ending without cause;
    • 30 days' notice of a material change;
    • the key limits (2 per order, 4 per account per window, stacking to 36 months, 12-month expiry, non-transferable).
  • The acceptable use and licence terms are sections of TERMS.md.
  • The enforcement process: notice, suspension rather than termination, a window to answer, a written decision, one appeal to a person, and a register. The day counts and the appeal channel are placeholders.
  • A dormant Thai seven-day cancellation clause, which applies only once its legal trigger is met.
  • Every clause that needs counsel is labelled pending legal review. Nothing is linked from the site.
  • PRIVACY.md names the aggregate, cookie-less analytics and adds the age line.
  • web/plans.html gains a "Ways to buy" list: subscription, prepaid time key and prepaid credits, with their rules. The capacity axis is stated as a token quota at 0.4x, 1x, 5x and 10x of Standard, with no quota number. A line says the purchase terms are a draft pending legal review, in English and Thai. Buy buttons stay disabled.
  • scripts/lib/secret-scan.mjs and its test are re-copied byte-for-byte from the canonical source.

Proof

  • The surface check, secret gate and CI roster pass locally.
  • The reviewer traced every clause to its signed source, and checked the Thai and English twins both ways.
  • The scanner copies are hash-equal to their source.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added draft information to the plans page about subscriptions, time keys, usage credits, and token-quota comparisons. Availability and quota amounts are not yet specified.
  • Documentation
    • Updated the draft privacy notice with details about Cloudflare Web Analytics, cookie and security settings, and age eligibility and verification.
    • Added draft terms covering payments, keys and credits, refunds, acceptable use, account enforcement, content and training, and other service conditions. Legal-review placeholders remain.

HetCreep and others added 5 commits October 8, 2026 03:25
…rrect the bot-detection sentence

PRIVACY.md now says the site uses Cloudflare Web Analytics, which counts
visits with no cookie and gives only aggregate statistics (page,
referrer, country, browser) that identify no one, and that an ad-blocker
can make the counts run low. The sentence saying Cloudflare injects a
bot-detection script is replaced: the zone's JavaScript Detections were
switched off on 2026-10-07, re-measured with curl, so "no cookies at
all" is true again. A note records that Bot Fight Mode or Turnstile, if
ever switched on, would set Cloudflare's security cookies and force a
rewording. A short Age section gives the 18-or-local-consent-age formula,
a neutral confirmation at sign-up, no identity image kept, and the
unused-part refund when an account is disabled. All of it is labelled
pending legal review, in English and Thai.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… a dormant Thai cancellation clause

TERMS.md (still a draft, unlinked) now carries the age rule, output
ownership with opt-in-only training, Thai law and courts with consumer
rights preserved, the liability cap, the refund floor and the refund of
the unused part on a no-fault end, 30 days' notice of a change, and the
key limits and expiry. The acceptable-use section gives the due-process
ladder (notice, suspension, a window to answer, a written decision, one
appeal, a register) and the chargeback track on Paddle's side; the day
counts and the appeal channel stay placeholders. The Thai 7-day clause is
written in English and Thai as dormant, with its trigger named and the
current refund rule stated as the live one. Every clause sent to counsel
carries the pending-legal-review marker; the list of prohibited conduct
and the licence for downloadable weights are named as open. CHANGELOG
records the three document changes under Unreleased.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…city ratios

Under the price grid, in English and Thai: the subscription (monthly or yearly, a first-period
refund deducts the days used), the prepaid time key (7, 30, 90 or 365 days, equal to the same
plan for that many days; adds time up to 36 months; an unredeemed key is refundable in full within
14 days and expires 12 months after purchase; 2 per order and 4 per account per sale window or
rolling 30 days; non-transferable, bound to the account on activation) and the prepaid usage
credits (Kolwen's own service only, no transfer, no cash-out, unused credits refundable at the
price paid within 14 days; whether they expire is stated as not yet decided).

The capacity axis is named as token quota with the ratios 0.4x / 1x / 5x / 10x of Standard and
no quota amount. "Nothing here can be bought yet" stays and every buy button stays disabled. The
CSP swaps the plans page's style hash for its new bytes; rules 15 to 17 pass unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… source at 313704e

Both files are byte-for-byte copies of the private repository's origin/main blobs at that
commit (git hash-object: scripts/lib/secret-scan.mjs 270a21a, scripts/secret-scan.test.mjs
bd5b156), so the three copies of the scanner agree again. The scanner tests, the secret-gate
tests and the secret gate pass against the new copy.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…i cancellation clause, and log the plans and scanner changes

web/plans.html (English and Thai) now says the purchase terms are a
draft pending legal review, and the refund and transfer lines carry the
house label. Body text only; no style or script byte changed. In
TERMS.md the Thai twin of the dormant 7-day clause now names the Act and
limits the right to a business that sells directly or through direct
marketing, and its second trigger reads direct-marketing registration
only, matching the English. CHANGELOG lists the Ways to buy card with
the capacity ratios and the scanner re-copy.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: c357ced1-d220-4305-80f5-c3f01abd2354
📥 Commits

Reviewing files that changed from the base of the PR and between 48a064f and eabc6fe.

📒 Files selected for processing (1)
  • PRIVACY.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • PRIVACY.md

Included review availability: This review used your included allowance. 3 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.

📜 Recent review details
⏰ Context from checks skipped due to timeout. (4)
  • GitHub Check: analyze (javascript)
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: Analyze (python)
  • GitHub Check: Workers Builds: kolwen

📝 Walkthrough

Walkthrough

The pull request adds draft purchase options and commercial terms, updates privacy disclosures, and changes secret-scanning rules and tests. It also updates the plans page’s content security policy style hash.

Changes

Purchase and policy disclosures

Layer / File(s) Summary
Commercial terms and enforcement
TERMS.md, CHANGELOG.md
TERMS.md adds draft terms for age, outputs, keys, subscriptions, credits, refunds, termination, enforcement, liability, governing law, and a conditional Thai cancellation right. It retains legal-review notes and placeholders.
Plan purchase options
web/plans.html, web/_headers, CHANGELOG.md
The English and Thai plans pages describe draft subscriptions, time keys, and usage credits, and state plan token-quota ratios. Purchases are described as unavailable. The CSP style hash changes.
Privacy and age disclosures
PRIVACY.md, CHANGELOG.md
The privacy document updates draft-status statements and adds disclosures about Cloudflare protections, Web Analytics, and age checks. It states that provider-side analytics retention remains unknown.

Secret scanner updates

Layer / File(s) Summary
Generic value boundaries and exclusions
scripts/lib/secret-scan.mjs, scripts/secret-scan.test.mjs
Generic scanning now stops values at qualifying closing markup and skips qualifying code-like values and secret environment-variable-name constants. Tests cover the exclusions and control cases that must remain detectable.
GitHub installation-token matching
scripts/lib/secret-scan.mjs, scripts/secret-scan.test.mjs
The github-token pattern adds matching for qualifying ghs_ tokens. Tests cover token contexts and lengths, as well as legacy token matches.
Scanner and Git fixture validation
scripts/secret-scan.test.mjs
Long-line tests measure regex work at two input sizes and retain a timeout guard. Git fixture operations filter inherited GIT_* variables, with tests for planted variables and direct Git calls.

Priority: ➖ Normal

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to eabc6

No issue identified in the supplied changes prevents merging after normal checks.

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

const RAND264 = 'q7Rt2Lk9' + 'Xw4Zp1Mn8Vb3Yc6Dd5Ff0Gg'; // a 30-character random base62 literal

test('a .NET ResX file reference: the closing </value> tag is not part of the public key token before it', () => {
const head = '<value>..' + '\\Resources\\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, Public' + 'KeyToken=';
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview URL: https://lwk2-ar-docs-kolwen.hetcreep.workers.dev (commit eabc6fe)

This URL reflects your latest Preview deployment

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://8e0e12c5-kolwen.hetcreep.workers.dev eabc6fe 2026-10-07T21:07:11.597Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://15b578b0-kolwen.hetcreep.workers.dev 48a064f 2026-10-07T20:54:33.791Z Visit the dashboard ↗

const RAND264 = 'q7Rt2Lk9' + 'Xw4Zp1Mn8Vb3Yc6Dd5Ff0Gg'; // a 30-character random base62 literal

test('a .NET ResX file reference: the closing </value> tag is not part of the public key token before it', () => {
const head = '<value>..' + '\\Resources\\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, Public' + 'KeyToken=';

@coderabbitai coderabbitai 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.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 127a91f0-f0b8-4c39-bad4-540e68652649
📥 Commits

Reviewing files that changed from the base of the PR and between 4b74542 and 48a064f.

📒 Files selected for processing (7)
  • CHANGELOG.md
  • PRIVACY.md
  • TERMS.md
  • scripts/lib/secret-scan.mjs
  • scripts/secret-scan.test.mjs
  • web/_headers
  • web/plans.html

Included review availability: This review used your included allowance. 4 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.

📜 Review details
⏰ Context from checks skipped due to timeout. (1)
  • GitHub Check: Workers Builds: kolwen
🧰 Additional context used
📓 Path-based instructions (9)
This file is a copy of org-canon code that every carrier keeps byte-identical.

⚙️ CodeRabbit configuration file

Files:

  • scripts/lib/secret-scan.mjs
  • scripts/secret-scan.test.mjs
Kolwen's page served from Cloudflare Workers, and its deploy-kit master in .github.

⚙️ CodeRabbit configuration file

Files:

  • web/_headers
  • web/plans.html
A claim about behaviour must match what the code actually does, and any data shown (a version, a model ID, a benchmark figure, a count) must match its authoritative source verbatim.

⚙️ CodeRabbit configuration file

Files:

  • PRIVACY.md
  • TERMS.md
Tests use node:test only, run from an explicit file list that fails on an unlisted or missing file.

⚙️ CodeRabbit configuration file

Files:

  • scripts/secret-scan.test.mjs
Keep a Changelog.

⚙️ CodeRabbit configuration file

Files:

  • CHANGELOG.md
Library modules, and some ship to users.

⚙️ CodeRabbit configuration file

Files:

  • scripts/lib/secret-scan.mjs
Repo gates and CLIs.

⚙️ CodeRabbit configuration file

Files:

  • scripts/lib/secret-scan.mjs
  • scripts/secret-scan.test.mjs
House style is the UNSPACED em dash, an owner ruling, so do not suggest spaced dashes.

⚙️ CodeRabbit configuration file

Files:

  • CHANGELOG.md
  • PRIVACY.md
  • TERMS.md
Context for every file.

⚙️ CodeRabbit configuration file

Files:

  • web/_headers
  • web/plans.html
  • CHANGELOG.md
  • PRIVACY.md
  • scripts/lib/secret-scan.mjs
  • scripts/secret-scan.test.mjs
  • TERMS.md
🪛 GitHub Check: CodeQL
scripts/secret-scan.test.mjs

[warning] 77-77: Missing space in string concatenation
This string appears to be missing a space after 'Public'.

🔇 Additional comments (7)
scripts/lib/secret-scan.mjs (1)

84-91: LGTM!

Also applies to: 151-201, 217-244, 267-272

scripts/secret-scan.test.mjs (2)

69-102: LGTM!


104-300: LGTM!

Also applies to: 397-474, 517-572, 663-668

TERMS.md (1)

6-10: LGTM!

Also applies to: 22-24, 33-52, 54-65, 67-90, 92-107, 109-127, 128-146, 148-172, 174-205

web/plans.html (1)

34-34: LGTM!

Also applies to: 92-105, 110-110, 146-159, 164-164

web/_headers (1)

101-101: LGTM!

PRIVACY.md (1)

104-105: 🔒 Security & Privacy

Disclose the performance metrics collected by Web Analytics.

If the deployed Cloudflare Web Analytics integration uses its performance beacon, update this paragraph to include the page-load timing and Core Web Vitals data that the beacon sends. Otherwise, describe the actual analytics integration and its collected data.

Comment thread PRIVACY.md Outdated
The note on what could end the "no cookies at all" sentence now follows
Cloudflare's own cookie and clearance pages: Bot Fight Mode sets the
__cf_bm cookie, and Turnstile sets cf_clearance only when its
pre-clearance option is enabled. Either one would make the sentence need
rewording. The earlier wording said both settings set both cookies.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@HetCreep
HetCreep merged commit 561adf5 into main Oct 7, 2026
14 checks passed
@HetCreep
HetCreep deleted the lwk2-ar-docs branch October 7, 2026 21:08
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.

2 participants