@orangecheck/legal 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts","../src/registry.ts","../src/content/clauses.ts","../src/content/protocol.ts","../src/content/me.ts","../src/content/vault.ts","../src/content/fleet.ts","../src/content/index.ts","../src/build.ts","../src/markup.tsx","../src/components.tsx","../src/security.tsx"],"names":["terms","privacy","COMMERCIAL_NOTE","jsx","Link","React","jsxs"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @orangecheck/legal — family-wide constants.\n *\n * These resolve `[[TOKEN]]` placeholders in authored content. Changing a value\n * here updates every generated document on every site at the next package\n * version bump — that is the whole point of the engine.\n */\n\n/**\n * The entity of record.\n *\n * ── PENDING INCORPORATION ──────────────────────────────────────────────────\n * No formal entity is registered yet. Until one is, documents operate under\n * the bare name \"OrangeCheck\" and the Delaware-law / AAA-arbitration clauses\n * are written as forward-looking (see the dispute-resolution clause).\n *\n * When the entity is formed, change ONLY the two values below — e.g.\n * LEGAL_ENTITY = 'OrangeCheck, Inc.'\n * LEGAL_ENTITY_LONG = 'OrangeCheck, Inc., a Delaware corporation'\n * — rebuild, and publish. Every Terms/Privacy page family-wide updates.\n */\nexport const LEGAL_ENTITY = 'OrangeCheck';\nexport const LEGAL_ENTITY_LONG = 'OrangeCheck (OCHK), an unincorporated project';\n\n/** True while no formal entity exists — gates a forward-looking note. */\nexport const ENTITY_PENDING = true;\n\nexport const CONTACT_GENERAL = 'hello@ochk.io';\nexport const CONTACT_SECURITY = 'security@ochk.io';\nexport const CONTACT_PRIVACY = 'hello@ochk.io';\n\n/** Governing-law surface, referenced by the shared dispute-resolution clause. */\nexport const GOVERNING_LAW_STATE = 'Delaware, United States';\nexport const ARBITRATION_SEAT = 'Wilmington, Delaware, United States';\n\n/** Token table applied by `buildDoc`. Site-specific tokens are merged on top. */\nexport const GLOBAL_TOKENS: Record<string, string> = {\n ENTITY: LEGAL_ENTITY,\n ENTITY_LONG: LEGAL_ENTITY_LONG,\n CONTACT: CONTACT_GENERAL,\n SECURITY_CONTACT: CONTACT_SECURITY,\n PRIVACY_CONTACT: CONTACT_PRIVACY,\n GOVERNING_LAW: GOVERNING_LAW_STATE,\n ARBITRATION_SEAT,\n};\n","/**\n * @orangecheck/legal — site registry.\n *\n * Maps each consuming site to its legal profile and token context. The nine\n * `protocol`-profile sites (ochk.io umbrella, six verb sites, docs, analytics)\n * deliberately do NOT host their own pages — their footers link to ochk.io,\n * and the protocol document on ochk.io is authored to govern the whole\n * non-custodial family. Only the three commercial products self-host, because\n * each describes money flows the protocol document cannot truthfully cover.\n */\n\nimport type { SiteContext } from './types';\nimport { CONTACT_GENERAL, CONTACT_SECURITY } from './constants';\n\nexport const LEGAL_SITES: Record<string, SiteContext> = {\n www: {\n slug: 'www',\n profile: 'protocol',\n host: 'ochk.io',\n product: 'OrangeCheck',\n productShort: 'OrangeCheck',\n contact: CONTACT_GENERAL,\n securityContact: CONTACT_SECURITY,\n selfHosted: true,\n },\n me: {\n slug: 'me',\n profile: 'me',\n host: 'me.ochk.io',\n product: 'me.ochk.io',\n productShort: 'me.ochk.io',\n contact: CONTACT_GENERAL,\n securityContact: CONTACT_SECURITY,\n selfHosted: true,\n },\n vault: {\n slug: 'vault',\n profile: 'vault',\n host: 'vault.ochk.io',\n product: 'OC Vault',\n productShort: 'Vault',\n contact: CONTACT_GENERAL,\n securityContact: CONTACT_SECURITY,\n selfHosted: true,\n },\n fleet: {\n slug: 'fleet',\n profile: 'fleet',\n host: 'fleet.ochk.io',\n product: 'OrangeCheck Fleet',\n productShort: 'Fleet',\n contact: CONTACT_GENERAL,\n securityContact: CONTACT_SECURITY,\n selfHosted: true,\n },\n};\n\n/** Sites that share the protocol document hosted on ochk.io (no own pages). */\nexport const PROTOCOL_LINKED_SITES = [\n 'attest',\n 'lock',\n 'vote',\n 'stamp',\n 'agent',\n 'pledge',\n 'docs',\n 'analytics',\n] as const;\n\nexport function getSiteContext(slug: string): SiteContext {\n const ctx = LEGAL_SITES[slug];\n if (!ctx) {\n throw new Error(\n `@orangecheck/legal: unknown site \"${slug}\". ` +\n `Known self-hosting sites: ${Object.keys(LEGAL_SITES).join(', ')}.`,\n );\n }\n return ctx;\n}\n\n/**\n * Resolve the footer href for a legal document on a given site.\n *\n * Self-hosting sites get a local path (`/terms`); every other site points at\n * the canonical protocol document on ochk.io. One helper, so no site ever\n * hand-rolls a legal link again.\n */\nexport function legalHref(siteSlug: string, kind: 'terms' | 'privacy' | 'security'): string {\n const ctx = LEGAL_SITES[siteSlug];\n if (ctx?.selfHosted) return `/${kind}`;\n return `https://ochk.io/${kind}`;\n}\n","/**\n * @orangecheck/legal — shared core clause library.\n *\n * Sections here are byte-identical across every profile once tokens resolve.\n * Profiles import them by name and arrange them around profile-specific\n * sections. Anything that genuinely differs per product (overview, fees,\n * data collection, money movement) is NOT here — it lives in the profile file.\n */\n\nimport type { Section } from '../types';\n\n/* ─────────────────────────── TERMS ─────────────────────────── */\n\nexport const eligibility: Section = {\n id: 'eligibility',\n heading: 'eligibility',\n blocks: [\n {\n kind: 'bullets',\n items: [\n 'You must be at least 13 (or the age of digital consent in your jurisdiction)',\n 'You must have the legal capacity to enter into a binding contract',\n 'You must not be prohibited from using the Service under applicable law',\n 'You must comply with all applicable laws and regulations',\n ],\n },\n ],\n};\n\nexport const acceptableUse: Section = {\n id: 'acceptable-use',\n heading: 'acceptable use',\n hint: 'permitted · prohibited',\n blocks: [\n { kind: 'subhead', text: 'prohibited — illegal' },\n {\n kind: 'bullets',\n items: [\n 'Any unlawful purpose',\n 'Violating any applicable laws or regulations',\n 'Fraud, money laundering, or financial crimes',\n 'Infringing intellectual property rights',\n ],\n },\n { kind: 'subhead', text: 'prohibited — harmful' },\n {\n kind: 'bullets',\n items: [\n 'Harass, threaten, or harm others',\n 'Impersonate any person or entity',\n 'Misrepresent your identity or affiliation',\n 'Assert control of a Bitcoin address, identity, or handle you do not control',\n ],\n },\n { kind: 'subhead', text: 'prohibited — technical abuse' },\n {\n kind: 'bullets',\n items: [\n 'Interfere with or disrupt the Service or its servers',\n 'Attempt unauthorized access to any account, system, or data',\n 'Automated scraping or harvesting without permission',\n 'Introduce viruses, malware, or malicious code',\n 'Circumvent security features or rate limits',\n ],\n },\n {\n kind: 'para',\n text: 'We reserve the right to investigate and act against anyone who violates these prohibitions — including terminating access and reporting to law enforcement.',\n },\n ],\n};\n\nexport const intellectualProperty: Section = {\n id: 'intellectual-property',\n heading: 'intellectual property',\n blocks: [\n { kind: 'subhead', text: \"[[ENTITY]]'s rights\" },\n {\n kind: 'para',\n text: 'The Service and its content (excluding user-generated content) are protected by copyright, trademark, patent, and other IP laws — including the OrangeCheck name, logos, branding, site design, software, code, algorithms, and documentation.',\n },\n { kind: 'subhead', text: 'your license' },\n {\n kind: 'para',\n text: 'You receive a limited, non-exclusive, non-transferable, revocable license to access and use the Service subject to these Terms. You may not sell, sublicense, or use the Service to build a competing product.',\n },\n { kind: 'subhead', text: 'your content' },\n {\n kind: 'para',\n text: 'You retain ownership of content you submit (feedback, support requests, integration material). You grant us a worldwide, non-exclusive, royalty-free license to operate and improve the Service using that content. You are responsible for your content.',\n },\n { kind: 'subhead', text: 'open source' },\n {\n kind: 'para',\n text: 'OrangeCheck protocol specifications and the `@orangecheck/*` packages are released under open-source licenses (MIT unless stated otherwise). Those portions are governed by their own license terms; these Terms govern the hosted service.',\n },\n ],\n};\n\nexport const limitationOfLiability: Section = {\n id: 'liability',\n heading: 'limitation of liability',\n hint: 'maximum legal cap',\n blocks: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL [[ENTITY]], ITS AFFILIATES, OFFICERS, DIRECTORS, EMPLOYEES, AGENTS, LICENSORS, CONTRIBUTORS, OR SUPPLIERS BE LIABLE FOR ANY DAMAGES ARISING OUT OF OR RELATED TO THE SERVICE, THESE TERMS, OR YOUR USE OR INABILITY TO USE THE SERVICE — WHETHER BASED ON CONTRACT, TORT (INCLUDING NEGLIGENCE), STATUTE, INDEMNITY, OR ANY OTHER LEGAL THEORY — EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.',\n },\n { kind: 'subhead', text: 'excluded damages' },\n {\n kind: 'para',\n text: 'This exclusion covers, without limitation: **direct**, indirect, incidental, special, consequential, exemplary, punitive, reliance, and cover damages; and **loss of Bitcoin, sats, cryptocurrency, tokens, assets, funds, private keys, seed phrases, passwords, data, profits, revenue, goodwill, reputation, business opportunity, anticipated savings, or use**.',\n },\n { kind: 'subhead', text: 'hard cap' },\n {\n kind: 'para',\n text: 'If, notwithstanding the above, a court of competent jurisdiction finds [[ENTITY]] liable to you, our **aggregate liability for all claims arising out of or related to the Service or these Terms is capped at the greater of (a) US$100 or (b) the total amount you actually paid [[ENTITY]] in the twelve (12) months immediately preceding the event giving rise to the claim**.',\n },\n { kind: 'subhead', text: 'essential purpose · jurisdictional floor' },\n {\n kind: 'para',\n text: 'These limitations form an essential basis of the bargain and apply even if a limited remedy fails of its essential purpose. Some jurisdictions do not allow certain exclusions; there, the limitations apply to the maximum extent permitted by law and the remainder of these Terms stays in full force.',\n },\n ],\n};\n\nexport const indemnification: Section = {\n id: 'indemnification',\n heading: 'indemnification',\n blocks: [\n {\n kind: 'para',\n text: \"You agree to indemnify, defend, and hold harmless [[ENTITY]] and its affiliates from any claims, liabilities, damages, losses, costs, and expenses (including reasonable attorneys' fees) arising from:\",\n },\n {\n kind: 'bullets',\n items: [\n 'Your use or misuse of the Service',\n 'Your violation of these Terms',\n 'Your violation of any law or regulation',\n 'Your violation of any third-party rights',\n 'Content you submit or share',\n 'Your negligence or willful misconduct',\n ],\n },\n ],\n};\n\nexport const termination: Section = {\n id: 'termination',\n heading: 'termination',\n blocks: [\n {\n kind: 'para',\n text: '**Your right:** stop using the Service at any time. **Our right:** suspend or terminate access with or without cause or notice — including if you violate these Terms, pose a security or legal risk, or we discontinue the Service.',\n },\n { kind: 'subhead', text: 'effect of termination' },\n {\n kind: 'bullets',\n items: [\n 'Your right to use the Service immediately ceases',\n 'We may delete your account and operational data (subject to legal requirements)',\n 'Content already published to public networks (Bitcoin, Nostr) cannot be deleted by [[ENTITY]]',\n 'Surviving sections: intellectual property, disclaimers, liability, indemnification, governing law, dispute resolution',\n ],\n },\n ],\n};\n\nexport const changesToTerms: Section = {\n id: 'changes',\n heading: 'changes',\n blocks: [\n { kind: 'subhead', text: 'to the service' },\n {\n kind: 'para',\n text: 'We may modify, suspend, or discontinue the Service at any time, with or without notice. We are not liable for any modification, suspension, or discontinuation.',\n },\n { kind: 'subhead', text: 'to these terms' },\n {\n kind: 'bullets',\n items: [\n 'We will update the \"last updated\" date',\n 'For material changes, we will provide notice on the website (and by email where we hold one)',\n 'Changes become effective when posted',\n 'Continued use after changes constitutes acceptance',\n ],\n },\n ],\n};\n\nexport const disputeResolution: Section = {\n id: 'disputes',\n heading: 'dispute resolution',\n hint: 'informal → arbitration',\n blocks: [\n { kind: 'subhead', text: 'informal resolution' },\n {\n kind: 'para',\n text: 'Before filing a claim, contact us at [[CONTACT]] to attempt to resolve the dispute informally.',\n },\n { kind: 'subhead', text: 'arbitration · class-action waiver · jury waiver' },\n {\n kind: 'callout',\n emphatic: true,\n text: 'DISPUTES ARISING OUT OF OR RELATED TO THESE TERMS OR THE SERVICE SHALL BE RESOLVED BY FINAL AND BINDING INDIVIDUAL ARBITRATION, EXCEPT AS SPECIFIED BELOW. YOU AND [[ENTITY]] EXPRESSLY WAIVE THE RIGHT TO A TRIAL BY JURY AND THE RIGHT TO PARTICIPATE IN ANY CLASS, COLLECTIVE, CONSOLIDATED, MASS, OR REPRESENTATIVE ACTION. ARBITRATION IS ON AN INDIVIDUAL BASIS ONLY.',\n },\n {\n kind: 'bullets',\n items: [\n 'Administered by the American Arbitration Association under its then-current Commercial or Consumer Arbitration Rules (whichever applies)',\n 'Seat of arbitration: [[ARBITRATION_SEAT]] — or, at either party’s election, conducted remotely by video',\n 'Single neutral arbitrator; decision final and binding, enforceable in any court of competent jurisdiction',\n 'The arbitrator — not any court — decides threshold questions of arbitrability, including the validity and scope of this clause',\n ],\n },\n { kind: 'subhead', text: 'exceptions to arbitration' },\n {\n kind: 'bullets',\n items: [\n 'Small-claims court actions (if eligible and filed individually)',\n 'Injunctive or equitable relief to protect intellectual property or confidential information',\n 'Any claim that cannot lawfully be arbitrated under applicable law',\n ],\n },\n { kind: 'subhead', text: 'one-year limit to bring claims' },\n {\n kind: 'para',\n text: 'To the fullest extent permitted by law, any claim arising out of or relating to the Service or these Terms must be commenced **within one (1) year** after it accrues, or it is permanently barred.',\n },\n { kind: 'subhead', text: 'opt-out of arbitration' },\n {\n kind: 'para',\n text: 'You may opt out by sending written notice to [[CONTACT]] within 30 days of first using the Service, including your name, the date you first used the Service, and a clear statement that you wish to opt out. Opting out does not affect the class-action or jury-trial waivers.',\n },\n { kind: 'subhead', text: 'governing law' },\n {\n kind: 'para',\n text: 'These Terms are governed by the laws of the State of [[GOVERNING_LAW]], without regard to conflict-of-law principles, and, where applicable, the U.S. Federal Arbitration Act (9 U.S.C. §§ 1–16). For users in the EEA, UK, or Switzerland, mandatory consumer-protection laws of your country of residence may apply and nothing here overrides those rights.',\n },\n { kind: 'subhead', text: 'entity of record' },\n {\n kind: 'callout',\n text: 'OrangeCheck is, at the date of this document, operated as the unincorporated project \"[[ENTITY_LONG]]\". References to \"[[ENTITY]]\" mean that project and the operators acting on its behalf; upon formation of a formal legal entity, that entity becomes the party of record and these Terms — including the arbitration and governing-law provisions — bind it as successor without further notice.',\n },\n ],\n};\n\nexport const miscellaneous: Section = {\n id: 'miscellaneous',\n heading: 'miscellaneous',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'entire agreement',\n v: 'these terms + the privacy policy are the entire agreement and supersede any prior agreement on the same subject',\n },\n {\n k: 'severability',\n v: 'if a provision is invalid or unenforceable it is severed and the remainder stays in full force',\n },\n {\n k: 'waiver',\n v: 'failure to enforce a provision is not a waiver of the right to enforce it later',\n },\n {\n k: 'assignment',\n v: 'you may not assign these terms without our consent; we may assign freely in a merger, acquisition, or sale of assets',\n },\n {\n k: 'no agency',\n v: 'nothing here creates a partnership, joint venture, employment, agency, or fiduciary relationship',\n },\n {\n k: 'force majeure',\n v: 'we are not liable for delays or failures caused by events beyond our reasonable control — including network failures, Nostr relay outages, Bitcoin network conditions, government action, or natural disaster',\n },\n {\n k: 'notices',\n v: 'to you via email, the Service, or the website; to us at [[CONTACT]]',\n },\n {\n k: 'electronic acceptance',\n v: 'your use of the Service is electronic acceptance of these terms under applicable e-signature laws',\n },\n ],\n },\n { kind: 'subhead', text: 'sanctions, export controls, and prohibited jurisdictions' },\n {\n kind: 'para',\n text: 'You represent and warrant that you are not, and are not acting on behalf of, any person or entity that is:',\n },\n {\n kind: 'bullets',\n items: [\n 'Located in, organized under the laws of, or ordinarily resident in any country or territory subject to comprehensive U.S., U.N., E.U., or U.K. sanctions',\n \"Identified on the U.S. Treasury OFAC Specially Designated Nationals list, Consolidated Sanctions List, or any other U.S. government restricted-party list\",\n 'Identified on any U.K. HMT, E.U., U.N., or other applicable consolidated sanctions list',\n 'Otherwise subject to a sanctions, export-control, or anti-terrorism restriction that would prohibit your use of the Service',\n ],\n },\n {\n kind: 'para',\n text: 'You agree to comply with all applicable export-control laws, including the U.S. Export Administration Regulations. A breach of this section is a material breach of these Terms.',\n },\n ],\n};\n\n/* ─────────────────────────── PRIVACY ─────────────────────────── */\n\nexport const privacyRights: Section = {\n id: 'your-rights',\n heading: 'your rights',\n hint: 'access · correction · deletion',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'access & portability',\n v: 'request a copy of your personal information in a machine-readable format',\n },\n {\n k: 'correction',\n v: 'request correction of inaccurate or incomplete information',\n },\n {\n k: 'deletion',\n v: 'request deletion of personal information we hold (data published to public networks cannot be deleted by us — see retention)',\n },\n {\n k: 'objection',\n v: 'object to or restrict processing in certain circumstances',\n },\n {\n k: 'withdraw consent',\n v: 'withdraw consent where consent is the legal basis for processing',\n },\n ],\n },\n { kind: 'para', text: 'To exercise any right, email [[PRIVACY_CONTACT]]. We respond within 30 days.' },\n ],\n};\n\nexport const privacyRegional: Section = {\n id: 'regional-rights',\n heading: 'regional rights',\n hint: 'ccpa · gdpr · uk · other',\n blocks: [\n { kind: 'subhead', text: 'california (ccpa / cpra)' },\n {\n kind: 'bullets',\n items: [\n 'Right to know the categories of personal information collected',\n 'Right to delete and to correct your personal information',\n 'Right to opt out of sale or sharing — we do not sell or share personal information',\n 'Right to limit use of sensitive personal information — we do not collect sensitive PI as defined by the CPRA',\n 'Right to non-discrimination for exercising your rights',\n ],\n },\n { kind: 'subhead', text: 'europe (gdpr) & united kingdom (uk gdpr)' },\n {\n kind: 'bullets',\n items: [\n {\n k: 'legal basis',\n v: 'consent, contract performance, legitimate interests (security, abuse prevention, service improvement), and legal obligations',\n },\n {\n k: 'your rights',\n v: 'access, rectification, erasure, restriction, portability, objection, and withdrawal of consent',\n },\n {\n k: 'supervisory authority',\n v: 'right to lodge a complaint with your local EU/EEA data-protection authority, or the UK ICO',\n },\n {\n k: 'eu/uk representative',\n v: 'if and when required, we will designate an Article 27 representative and publish the details here',\n },\n ],\n },\n { kind: 'subhead', text: 'other jurisdictions' },\n {\n kind: 'para',\n text: 'If you reside in a jurisdiction with a comprehensive privacy law — including Brazil (LGPD), Canada (PIPEDA / Law 25), Australia, Japan (APPI), South Korea (PIPA), Switzerland (FADP), or any U.S. state privacy law — you have the equivalent rights of access, correction, deletion, portability, and objection. Email [[PRIVACY_CONTACT]] and we will honour applicable rights under the law of your residence.',\n },\n ],\n};\n\nexport const privacyChildren: Section = {\n id: 'childrens-privacy',\n heading: \"children's privacy\",\n blocks: [\n {\n kind: 'para',\n text: '[[PRODUCT]] is not intended for children under 13 (or the applicable age of digital consent in your jurisdiction). We do not knowingly collect personal information from children. If you believe we have, email [[PRIVACY_CONTACT]] immediately and we will delete it.',\n },\n ],\n};\n\nexport const privacyTransfers: Section = {\n id: 'international-transfers',\n heading: 'international transfers',\n blocks: [\n {\n kind: 'para',\n text: 'OrangeCheck is operated from the United States. If you access [[PRODUCT]] from elsewhere, your information may be transferred to, stored, and processed in the US or other countries where our service providers operate. For users in the EEA, UK, or Switzerland, we rely on appropriate safeguards for international transfers.',\n },\n ],\n};\n\nexport const privacyChanges: Section = {\n id: 'policy-changes',\n heading: 'changes to this policy',\n blocks: [\n {\n kind: 'bullets',\n items: [\n 'We will update the \"last updated\" date above',\n 'For material changes, we will provide prominent notice on the website',\n 'Continued use after changes constitutes acceptance',\n ],\n },\n ],\n};\n\n/* Security disclosure content lives in the standalone `<SecurityDisclosure>`\n * component (src/security.tsx), not in the document engine. */\n","/**\n * @orangecheck/legal — `protocol` profile.\n *\n * The non-custodial family: the ochk.io umbrella, the six verb sites\n * (attest, lock, vote, stamp, agent, pledge), docs.ochk.io, and\n * analytics.ochk.io. Free, no money movement, no custody. This is a refresh\n * of the long-standing ochk.io documents — narrowed so it no longer purports\n * to govern the commercial products, which now carry their own Terms.\n */\n\nimport type { DocSpec } from '../types';\nimport {\n acceptableUse,\n changesToTerms,\n disputeResolution,\n eligibility,\n indemnification,\n intellectualProperty,\n limitationOfLiability,\n miscellaneous,\n privacyChanges,\n privacyChildren,\n privacyRegional,\n privacyRights,\n privacyTransfers,\n} from './clauses';\n\nconst COMMERCIAL_SCOPE_NOTE =\n 'These Terms govern the **non-custodial** OrangeCheck family: [ochk.io](https://ochk.io), the verb sites — OC Attest, OC Lock, OC Vote, OC Stamp, OC Agent, OC Pledge — and [docs.ochk.io](https://docs.ochk.io). The commercial products **me.ochk.io**, **vault.ochk.io**, and **fleet.ochk.io** each publish their own Terms; these Terms do not govern your use of those products.';\n\nconst terms: DocSpec = {\n kind: 'terms',\n eyebrow: 'terms',\n title: 'Terms of service',\n description:\n 'These Terms govern your access to and use of the OrangeCheck website, protocol reference sites, and documentation. By using OrangeCheck, you agree to be bound by these Terms.',\n metaTitle: 'Terms of Service — OrangeCheck',\n metaDescription:\n 'The terms and conditions for using OrangeCheck. Non-custodial service provided as-is. You are responsible for your wallet and private keys.',\n effective: '2025-09-30',\n updated: '2026-05-15',\n preamble: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'By accessing or using OrangeCheck, you agree to be bound by these Terms. If you do not agree, do not use the Service. These Terms contain a binding-arbitration, class-action, and jury-trial waiver, important limitations on liability, and specific acknowledgements about the public, permanent, and irrevocable nature of anything you publish.',\n },\n { kind: 'callout', text: COMMERCIAL_SCOPE_NOTE },\n ],\n sections: [\n {\n id: 'overview',\n heading: 'overview',\n hint: 'what orangecheck does / does not',\n blocks: [\n { kind: 'subhead', text: 'what orangecheck does' },\n {\n kind: 'para',\n text: 'OrangeCheck is a family of **non-custodial** protocols and reference tools that let you create cryptographic proof-of-stake artifacts using Bitcoin message signatures (BIP-322), bind self-asserted handles to them, optionally publish them to decentralized Nostr relays, and discover and verify artifacts created by others.',\n },\n { kind: 'subhead', text: 'what orangecheck does not' },\n {\n kind: 'bullets',\n items: [\n 'Take custody of your Bitcoin, private keys, or wallet credentials',\n 'Broadcast Bitcoin transactions on your behalf',\n 'Provide financial, investment, or legal advice',\n 'Guarantee the accuracy of blockchain data from third-party sources',\n ],\n },\n { kind: 'subhead', text: 'non-custodial nature' },\n {\n kind: 'para',\n text: '**You are solely responsible for** your wallet, keys, device security, and what you sign. We cannot recover lost keys, reverse signatures, or access your funds.',\n },\n ],\n },\n {\n id: 'publication-risks',\n heading: 'publication risks · your acknowledgement',\n hint: 'public, permanent, irrevocable',\n blocks: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'AN ORANGECHECK ENVELOPE IS A SIGNED, PUBLIC ARTIFACT THAT PERMANENTLY LINKS A BITCOIN ADDRESS TO EVERY HANDLE YOU ASSERT. BY CREATING OR PUBLISHING ONE, YOU EXPRESSLY ACCEPT THE RISKS BELOW. WE ARE NOT RESPONSIBLE FOR THE CONSEQUENCES OF YOUR DECISION TO PUBLISH.',\n },\n { kind: 'subhead', text: 'specific risks you accept' },\n {\n kind: 'bullets',\n items: [\n {\n k: 'deanonymization',\n v: 'an envelope binds your address to your handles; chain analysis can then link your other addresses, counterparties, and spending patterns. you cannot un-bind once published.',\n },\n {\n k: 'wealth advertisement',\n v: 'public sat values combined with real-name handles may make you a target for phishing, theft, or coercion. we recommend pseudonymous handles and modest bonds. your personal safety is your responsibility.',\n },\n {\n k: 'irrevocability',\n v: 'envelopes published to Nostr relays are replicated across independent operators. OrangeCheck cannot delete, edit, or revoke Nostr events.',\n },\n {\n k: 'handle spoofing',\n v: 'identity bindings are self-asserted; any user can claim any string. relying parties must verify ownership out-of-band.',\n },\n ],\n },\n ],\n },\n eligibility,\n {\n id: 'account',\n heading: 'account & sign-in',\n hint: 'sign-in optional',\n blocks: [\n {\n kind: 'para',\n text: 'Most of the Service works without registration. An optional **Sign in with Bitcoin** flow opens a session keyed to a Bitcoin address you prove control of via BIP-322 — no password, no email. A session is a server-side row plus an `httpOnly + Secure + SameSite=Lax` cookie, revoked when you sign out or the cookie expires.',\n },\n {\n kind: 'para',\n text: 'If you use sign-in, you are responsible for the security of the device and wallet you sign with. Anyone with your keys can open a session in your name.',\n },\n ],\n },\n acceptableUse,\n intellectualProperty,\n {\n id: 'third-parties',\n heading: 'third parties',\n hint: 'blockchain · nostr · wallets · relying parties',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'blockchain data',\n v: 'verification relies on third-party APIs (mempool.space, Esplora, or your own node). we do not guarantee accuracy or availability.',\n },\n {\n k: 'nostr network',\n v: 'decentralized relays operated by third parties. published data is replicated outside our control and may persist indefinitely.',\n },\n {\n k: 'wallet software',\n v: 'browser, mobile, desktop, and hardware wallets are third-party software we do not audit or endorse. a malicious wallet could sign something other than what is displayed.',\n },\n {\n k: 'relying parties',\n v: 'platforms, relays, and integrators independently decide whether to trust any OrangeCheck artifact. OrangeCheck is not a party to, and accepts no liability for, those decisions.',\n },\n {\n k: 'api / sdk consumers',\n v: 'calling a hosted endpoint or using an `@orangecheck/*` package is use of the Service and subject to these Terms; the packages are separately MIT-licensed.',\n },\n ],\n },\n ],\n },\n {\n id: 'fees',\n heading: 'fees',\n hint: 'free',\n blocks: [\n {\n kind: 'para',\n text: 'The protocol sites and documentation are free to use. You are responsible for Bitcoin network fees on any transactions you initiate and for your own ISP and wallet-provider costs. Paid functionality, if introduced, will be announced with advance notice; the commercial products **me.ochk.io**, **vault.ochk.io**, and **fleet.ochk.io** carry their own pricing and Terms.',\n },\n ],\n },\n {\n id: 'disclaimers',\n heading: 'disclaimers & warranties',\n hint: 'as-is · no warranty of any kind',\n blocks: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'THE SERVICE IS PROVIDED \"AS IS\" AND \"AS AVAILABLE\", WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY LAW, ORANGECHECK DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, AND STATUTORY — INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, AND ACCURACY.',\n },\n { kind: 'subhead', text: 'not financial, legal, or compliance advice' },\n {\n kind: 'para',\n text: 'Nothing OrangeCheck provides — artifacts, metrics, scores, identity bindings, or other output — is financial, investment, legal, tax, KYC, AML, sanctions, or regulatory-compliance advice. Obtain independent professional advice before relying on the Service for any decision.',\n },\n { kind: 'subhead', text: 'regulatory status · not a money services business' },\n {\n kind: 'para',\n text: 'The protocol sites do not transmit, transfer, exchange, convert, issue, redeem, or custody any virtual currency, fiat currency, security, or other asset. They sign and verify cryptographic messages; they do not move value. Accordingly, with respect to the protocol sites, OrangeCheck does not hold itself out as a Money Services Business or money transmitter under the U.S. Bank Secrecy Act, a Virtual Asset Service Provider under the FATF Recommendations, a Crypto-Asset Service Provider under the EU MiCA Regulation, a broker-dealer, a payment or e-money institution, a bank, or a regulated identity provider.',\n },\n { kind: 'subhead', text: 'use at your own risk' },\n {\n kind: 'para',\n text: 'YOU ASSUME ALL RISK from your use of the Service. Verify anything load-bearing independently. Features labelled \"beta\", \"experimental\", or \"preview\" carry even fewer guarantees and may change or be removed at any time.',\n },\n ],\n },\n limitationOfLiability,\n indemnification,\n {\n id: 'termination',\n heading: 'termination',\n blocks: [\n {\n kind: 'para',\n text: '**Your right:** stop using the Service at any time. **Our right:** suspend or terminate access with or without cause or notice. On termination, your right to use the Service ceases; artifacts you created may remain publicly accessible and data published to Nostr cannot be deleted by OrangeCheck. The intellectual-property, disclaimer, liability, indemnification, governing-law, and dispute provisions survive.',\n },\n ],\n },\n changesToTerms,\n disputeResolution,\n miscellaneous,\n ],\n summary:\n 'summary: non-custodial service provided as-is. you are responsible for your wallet and private keys. disputes resolved via binding arbitration. commercial products have their own terms.',\n};\n\nconst privacy: DocSpec = {\n kind: 'privacy',\n eyebrow: 'privacy',\n title: 'Privacy policy',\n description:\n 'How OrangeCheck handles data and privacy across the non-custodial protocol family. Non-custodial by design, minimal collection, no account required.',\n metaTitle: 'Privacy Policy — OrangeCheck',\n metaDescription:\n 'How OrangeCheck handles data and privacy. Non-custodial by design, minimal data collection, no account required, privacy-preserving analytics only.',\n effective: '2025-09-30',\n updated: '2026-05-15',\n preamble: [\n {\n kind: 'callout',\n text: 'This policy covers the **non-custodial** OrangeCheck family — [ochk.io](https://ochk.io), the six verb sites, and [docs.ochk.io](https://docs.ochk.io). The commercial products me.ochk.io, vault.ochk.io, and fleet.ochk.io publish their own privacy policies covering the additional data their products handle.',\n },\n ],\n sections: [\n {\n id: 'principles',\n heading: 'our principles',\n hint: 'non-custodial, minimal, transparent',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'non-custodial',\n v: 'we never take custody of your Bitcoin or keys; cryptographic operations happen in your wallet or browser',\n },\n {\n k: 'minimal collection',\n v: 'only what is necessary to provide the Service; no user profiles, no cross-web tracking',\n },\n {\n k: 'optional account',\n v: 'most of the Service needs no sign-in; the optional Sign in with Bitcoin flow is keyed to a public address — no email, no password',\n },\n {\n k: 'transparency',\n v: 'plain-language policy; ask us anything at [[PRIVACY_CONTACT]]',\n },\n ],\n },\n ],\n },\n {\n id: 'what-we-dont-do',\n heading: \"what we don't do\",\n blocks: [\n {\n kind: 'bullets',\n items: [\n 'No custody of funds and no access to private keys',\n 'No account required for the core service',\n 'No selling or renting of personal information, ever',\n 'No targeted advertising and no cross-site tracking',\n 'No third-party analytics trackers — privacy-preserving analytics only',\n ],\n },\n ],\n },\n {\n id: 'information-we-collect',\n heading: 'information we collect',\n hint: 'scoped, minimal',\n blocks: [\n { kind: 'subhead', text: 'information you provide' },\n {\n kind: 'para',\n text: '**Bitcoin addresses and signatures** are processed client-side to generate a cryptographic proof; this data is public by design. **Identity bindings** you add are included in the signed message and are public. **Contact information** is collected only if you email us for support, solely to respond. **Sign-in sessions** store a minimal account row keyed by your verified Bitcoin address plus session rows with a random id, source IP, a user-agent hash, and timestamps — no password, no email.',\n },\n { kind: 'subhead', text: 'automatically collected' },\n {\n kind: 'bullets',\n items: [\n { k: 'ip address', v: 'security, rate limiting, service delivery' },\n { k: 'browser/device', v: 'compatibility and UX optimization' },\n { k: 'pages visited', v: 'aggregate, to improve the Service' },\n ],\n },\n { kind: 'subhead', text: 'cookies & analytics' },\n {\n kind: 'para',\n text: 'Essential cookies are required for the Service to function; a preference cookie stores your theme. We use [Plausible Analytics](https://plausible.io/privacy) — cookie-free, no personal data, aggregate statistics only. No advertising or tracking cookies.',\n },\n ],\n },\n {\n id: 'how-we-use',\n heading: 'how we use information',\n blocks: [\n {\n kind: 'bullets',\n items: [\n 'Generate and verify cryptographic proofs and serve verification pages',\n 'Detect and prevent abuse, spam, and denial-of-service attacks',\n 'Fix bugs, optimize performance, and improve the Service',\n 'Provide technical support',\n ],\n },\n ],\n },\n {\n id: 'retention',\n heading: 'data retention',\n hint: '90d logs · permanent public artifacts',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'public artifacts',\n v: 'permanent and publicly shareable; data published to Nostr cannot be deleted by OrangeCheck',\n },\n {\n k: 'technical logs',\n v: 'server logs retained 90 days for security and debugging, then auto-deleted',\n },\n {\n k: 'session rows',\n v: 'live up to 30 days (cookie max-age) or until revoked; idle accounts with no session activity for 24 months are deleted automatically',\n },\n {\n k: 'support emails',\n v: 'retained as long as necessary; deleted on request',\n },\n ],\n },\n ],\n },\n {\n id: 'data-security',\n heading: 'data security',\n hint: 'reasonable safeguards · no warranty',\n blocks: [\n {\n kind: 'bullets',\n items: [\n 'HTTPS encryption for all data in transit',\n 'Secure hosting with regular security updates',\n 'Rate limiting and abuse monitoring',\n ],\n },\n {\n kind: 'para',\n text: 'No method of transmission or storage is 100% secure. We use reasonable measures but **do not warrant the security of your data and are not liable for unauthorized access, loss, or theft** — see the [Terms of Service](/terms). If we become aware of a breach of personal data we hold, we will notify affected users and any competent supervisory authority as required by applicable law, including the 72-hour window under Article 33 of the UK & EU GDPR.',\n },\n ],\n },\n privacyRights,\n privacyTransfers,\n privacyRegional,\n privacyChildren,\n privacyChanges,\n ],\n summary:\n 'summary: minimal data, privacy-preserving analytics, never custody of funds, user control of information.',\n};\n\nexport const protocolProfile = { terms, privacy };\n","/**\n * @orangecheck/legal — `me` profile.\n *\n * me.ochk.io: a consumer Bitcoin-backed identity that pays users in sats.\n * Federation-custodied by default, self-custody graduation, no KYC. This is\n * the only profile where value flows TO the user, so the money, custody, and\n * regulated-activity sections are rendered as counsel-review stubs per the\n * \"structure + stubs\" directive — the surrounding contract is complete.\n */\n\nimport type { DocSpec } from '../types';\nimport {\n acceptableUse,\n changesToTerms,\n disputeResolution,\n eligibility,\n indemnification,\n intellectualProperty,\n limitationOfLiability,\n miscellaneous,\n privacyChanges,\n privacyChildren,\n privacyRegional,\n privacyRights,\n privacyTransfers,\n} from './clauses';\n\nconst COMMERCIAL_NOTE =\n '**me.ochk.io is a commercial product operated by OrangeCheck.** It is distinct from the non-custodial OrangeCheck protocol sites; the Terms at [ochk.io/terms](https://ochk.io/terms) do not govern me.ochk.io. These Terms do.';\n\nconst terms: DocSpec = {\n kind: 'terms',\n eyebrow: 'terms',\n title: 'Terms of service',\n description:\n 'The terms governing your use of me.ochk.io — a Bitcoin-backed identity that pays you in sats. Federation-custodied by default, self-custody graduation, no KYC.',\n metaTitle: 'Terms of Service — me.ochk.io',\n metaDescription:\n 'Terms of service for me.ochk.io: a Bitcoin-backed identity that pays users in sats. Federation custody, graduation to self-custody, no KYC.',\n effective: '2026-05-15',\n updated: '2026-05-15',\n preamble: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'By accessing or using me.ochk.io, you agree to be bound by these Terms. If you do not agree, do not use the Service. These Terms contain a binding-arbitration, class-action, and jury-trial waiver and important limitations on liability.',\n },\n { kind: 'callout', text: COMMERCIAL_NOTE },\n ],\n sections: [\n {\n id: 'overview',\n heading: 'overview',\n hint: 'what me.ochk.io is',\n blocks: [\n {\n kind: 'para',\n text: 'me.ochk.io is an identity you use to sign in across participating sites (\"integrators\"). When an integrator records a billable event for an action you authorize, a share of the fee flows back to you in sats. Your identity is anchored in Bitcoin, verifiable offline, and portable across the OrangeCheck family.',\n },\n {\n kind: 'para',\n text: 'me.ochk.io is **not a bank, exchange, broker, or wallet provider.** It is an identity and reputation service with an attached cashback mechanism. OrangeCheck does not hold your funds — see section on custody below.',\n },\n ],\n },\n {\n id: 'accounts',\n heading: 'accounts & identity',\n hint: 'two sign-in paths',\n blocks: [\n {\n kind: 'para',\n text: 'You may create an identity two ways: **BIP-322** (you sign with your own Bitcoin wallet — full self-custody) or **email-OTP** (a one-time code; a federation-custodied wallet provisions in your browser). Both produce a stable, opaque `did:oc` identifier. No password is ever stored.',\n },\n {\n kind: 'para',\n text: 'You are responsible for the security of the wallet, device, email account, or recovery mnemonic associated with your identity. Anyone with your keys or recovery factor can act as you. OrangeCheck cannot recover an account, reverse a sign-in, or restore a lost key or mnemonic.',\n },\n ],\n },\n eligibility,\n {\n id: 'earning',\n heading: 'earning sats',\n hint: 'cashback on billable events',\n blocks: [\n {\n kind: 'stub',\n text: 'The economics of earning sats on me.ochk.io — how billable events generate cashback, the fee split between you, the integrating site, federation operators, and OrangeCheck, the timing of credits, and the conditions under which earnings may be withheld, delayed, clawed back, or reversed (including for suspected abuse or wash-trading) — are being finalized for publication before general availability. Until then, earning behavior is governed by the published abuse limits in the section below and the descriptions on /how and /earn. This section will be completed following review by counsel.',\n },\n ],\n },\n {\n id: 'custody',\n heading: 'custody & graduation',\n hint: 'federation-custodied · self-custody exit',\n blocks: [\n {\n kind: 'para',\n text: 'me.ochk.io is **non-custodial with respect to OrangeCheck**: OrangeCheck holds no private keys and no federation key shares, and cannot move your funds. BIP-322 users hold their own wallet. For email-OTP users, a Fedimint **federation** — run by independent guardian operators, never OrangeCheck — holds funds under a threshold scheme. You may **graduate** to full self-custody at any time.',\n },\n {\n kind: 'stub',\n text: 'The complete custody disclosure — the federation threshold model and its failure modes, what each guardian can and cannot do, the durability of your balance if a federation or OrangeCheck ceases operations, the mechanics and timing of graduation, and the allocation of risk between you, the federation, and OrangeCheck — is being finalized for publication before general availability. The honest current-state engineering account is published at /security. This section will be completed following review by counsel.',\n },\n ],\n },\n {\n id: 'fees-payouts',\n heading: 'fees, payouts & taxes',\n blocks: [\n {\n kind: 'stub',\n text: 'Platform fees, payout mechanics and minimums, supported payout rails, currency-conversion handling, and the allocation of tax-reporting and tax-payment responsibility for sats you receive are being finalized for publication before general availability. You are advised that cashback received may be taxable income in your jurisdiction and that you are responsible for your own tax compliance. This section will be completed following review by counsel.',\n },\n ],\n },\n {\n id: 'no-kyc',\n heading: 'no kyc, no pii',\n blocks: [\n {\n kind: 'para',\n text: 'me.ochk.io **does not perform Know-Your-Customer checks** and does not require your legal name, government ID, or physical address. Sybil resistance is achieved through protocol composition — BIP-322 sat-bond attestation, paid-action history, and integrator-defined gates — not identity verification. You must not use me.ochk.io to evade a KYC, AML, or sanctions obligation that applies to you elsewhere.',\n },\n ],\n },\n {\n id: 'abuse-limits',\n heading: 'abuse, sybil resistance & rate limits',\n blocks: [\n {\n kind: 'para',\n text: 'me.ochk.io publishes its abuse limits openly so legitimate users can see they are well below them. The canonical, current values are on the [/security](/security) page. Activity that exceeds a review threshold may be held for human review; activity assessed as sybil farming, wash-trading, or collusion between an integrator and a user may have earnings withheld or reversed and the identity suspended.',\n },\n {\n kind: 'bullets',\n items: [\n 'Do not operate multiple identities to multiply new-account bonuses',\n 'Do not collude with an integrating site to manufacture billable events',\n 'Do not script or automate actions to inflate earnings',\n 'Do not misrepresent a real user action as authorized when it was not',\n ],\n },\n ],\n },\n acceptableUse,\n {\n id: 'integrators',\n heading: 'integrators & relying parties',\n blocks: [\n {\n kind: 'para',\n text: 'Sites that integrate me.ochk.io receive a **per-integrator scoped identifier** for you, not your master identity — they cannot correlate you across sites unless you explicitly grant a scope. Integrators independently decide whether and how to trust your identity, including whether to admit, gate, or reject you. OrangeCheck is not a party to, and accepts no liability for, an integrator’s decisions or an integrator’s own terms, pricing, or conduct.',\n },\n ],\n },\n intellectualProperty,\n {\n id: 'disclaimers',\n heading: 'disclaimers & warranties',\n hint: 'as-is · regulatory status',\n blocks: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'THE SERVICE IS PROVIDED \"AS IS\" AND \"AS AVAILABLE\", WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY LAW, ORANGECHECK DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, AND STATUTORY — INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, AND ACCURACY.',\n },\n {\n kind: 'para',\n text: 'Nothing me.ochk.io provides is financial, investment, legal, or tax advice. me.ochk.io does not guarantee any level of earnings; cashback depends on integrator activity outside OrangeCheck’s control.',\n },\n { kind: 'subhead', text: 'regulatory status' },\n {\n kind: 'stub',\n text: 'me.ochk.io facilitates cashback that is custodied and disbursed by independent Fedimint federations; OrangeCheck does not itself custody, transmit, or take possession of user funds. The full regulatory analysis of this arrangement — including OrangeCheck’s position under the U.S. Bank Secrecy Act money-transmission rules, the FATF Recommendations, the EU MiCA Regulation, and applicable U.S. state money-transmitter regimes, and the corresponding licensing posture — is being prepared and will be published before general availability. This section will be completed following review by counsel.',\n },\n ],\n },\n limitationOfLiability,\n indemnification,\n {\n id: 'termination',\n heading: 'termination',\n blocks: [\n {\n kind: 'para',\n text: '**Your right:** stop using me.ochk.io at any time; you may delete your identity from `/me/settings`. **Our right:** suspend or terminate access with or without cause, including for abuse or legal risk. Before deletion you should sweep any federation-custodied balance to self-custody (the graduate flow) — anchored events on Bitcoin and Nostr-published envelopes are immutable and cannot be deleted by OrangeCheck. The disclaimer, liability, indemnification, governing-law, and dispute provisions survive.',\n },\n ],\n },\n changesToTerms,\n disputeResolution,\n miscellaneous,\n ],\n summary:\n 'summary: an identity that pays you in sats. orangecheck holds no keys and no funds. money, custody, fee, and regulatory terms are being finalized — see the marked sections.',\n};\n\nconst privacy: DocSpec = {\n kind: 'privacy',\n eyebrow: 'privacy',\n title: 'Privacy policy',\n description:\n 'How me.ochk.io handles your data: no KYC, no PII required, a per-integrator scoped identity, and a documented, falsifiable account of every record OrangeCheck stores.',\n metaTitle: 'Privacy Policy — me.ochk.io',\n metaDescription:\n 'me.ochk.io privacy policy. No KYC, no PII required, per-integrator scoped identity, and a full account of what OrangeCheck stores.',\n effective: '2026-05-15',\n updated: '2026-05-15',\n preamble: [\n {\n kind: 'callout',\n text: 'me.ochk.io’s product is identity that pays you; its privacy posture is what makes it distinct from Sign in with Google. For a side-by-side comparison you can falsify, see [the privacy comparison](/privacy-compare).',\n },\n ],\n sections: [\n {\n id: 'at-a-glance',\n heading: 'at a glance',\n hint: 'no kyc · no pii · scoped identity',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'no kyc',\n v: 'me.ochk.io never collects your legal name, government ID, or physical address',\n },\n {\n k: 'no pii at signup',\n v: 'you sign up with a Bitcoin signature or an email/phone one-time code — your choice',\n },\n {\n k: 'scoped identity',\n v: 'integrating sites receive a per-site identifier, not your master identity; they cannot correlate you across sites',\n },\n {\n k: 'no advertising',\n v: 'no third-party ad identity, no behavioural ad targeting, no data sale — ever',\n },\n {\n k: 'deletable',\n v: 'you can permanently revoke your identity from /me/settings',\n },\n ],\n },\n ],\n },\n {\n id: 'what-oc-stores',\n heading: 'what orangecheck stores',\n hint: 'metadata only · none enables fund movement',\n blocks: [\n {\n kind: 'para',\n text: 'The list below is what an auditor would find in OrangeCheck’s production infrastructure. Every item is metadata; none of it lets OrangeCheck sign on your behalf.',\n },\n {\n kind: 'bullets',\n items: [\n {\n k: 'account row',\n v: 'opaque did_oc, optional display name and Nostr npub, timestamps. The underlying email is encrypted at rest; a BIP-322 address is stored plaintext (it is already public on-chain). No password hash, no private key, no mnemonic.',\n },\n {\n k: 'session record',\n v: 'the session JWT id, account id, and issue/revoke timestamps. The session token itself lives only as a cookie in your browser.',\n },\n {\n k: 'event envelopes',\n v: 'per billable event: a content-addressed, signed record of what was authorized, by whom, and the fee breakdown. Used to route cashback.',\n },\n {\n k: 'custody-state envelopes',\n v: 'a record of each federation ⇄ self-custody transition (graduation), surfaced on your own identity timeline.',\n },\n {\n k: 'public anchors',\n v: 'OpenTimestamps proofs and Nostr-published event roots — public by design, verifiable against Bitcoin without OrangeCheck online',\n },\n ],\n },\n ],\n },\n {\n id: 'scoped-identity',\n heading: 'per-integrator identity & scopes',\n blocks: [\n {\n kind: 'para',\n text: 'Each integrating site receives a deterministic **scoped subject** derived from your master identity and that site’s project key. Scoped subjects are stable per-site (the integrator recognizes a returning user) but unlinkable across sites (two integrators cannot collude to correlate you). An integrator only ever receives your master Bitcoin address, email, or attestation tier if you **explicitly grant that scope** for that site — each scope is opt-in, per-site, and revocable at any time from `/me/identity`.',\n },\n {\n kind: 'para',\n text: 'Integrators never receive your event history with other sites, your wallet balance, your connected-sites list, or any cross-integrator data, regardless of scopes granted.',\n },\n ],\n },\n {\n id: 'cross-site-graph',\n heading: 'the cross-site events graph',\n hint: 'honest current state',\n blocks: [\n {\n kind: 'para',\n text: 'OrangeCheck’s billing engine necessarily knows which user earned which cashback across integrating sites — that join is how the right wallet is credited. Today that linkage exists in plain storage on me.ochk.io infrastructure; OrangeCheck commits, as a **policy** matter enforced by access controls and audit logging, not to build cross-site behavioural profiles. A per-integrator blinded-identifier design that removes the linkage architecturally is active research and not yet shipped. We disclose this honestly rather than overclaim.',\n },\n ],\n },\n {\n id: 'cookies',\n heading: 'cookies',\n blocks: [\n {\n kind: 'para',\n text: 'Two cookies. `oc_session` — the Ed25519-signed session token issued by ochk.io (HttpOnly, Secure, SameSite=Lax, Domain=.ochk.io). `oc_theme` — your dark/light preference, not auth-bearing. No tracking cookies, no advertising IDs, no third-party pixels. Page analytics use [Plausible](https://plausible.io/privacy) — cookie-free, no PII, aggregate only.',\n },\n ],\n },\n {\n id: 'how-we-use',\n heading: 'how we use information',\n blocks: [\n {\n kind: 'bullets',\n items: [\n 'Route cashback to the correct identity and wallet',\n 'Detect and prevent sybil farming, wash-trading, and abuse',\n 'Operate sign-in and verification across the OrangeCheck family',\n 'Fix bugs, improve the Service, and respond to support requests',\n ],\n },\n ],\n },\n {\n id: 'retention',\n heading: 'data retention',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'event & rebind envelopes',\n v: 'retained as the canonical earnings and custody-state record; anchored copies on Bitcoin and Nostr are immutable',\n },\n {\n k: 'technical logs',\n v: 'retained 90 days for security and debugging, then auto-deleted',\n },\n {\n k: 'session records',\n v: 'retained until the session is revoked or expires',\n },\n {\n k: 'account row',\n v: 'deleted on request via the account-deletion flow, subject to the immutability of anchored data',\n },\n ],\n },\n ],\n },\n {\n id: 'data-security',\n heading: 'data security',\n blocks: [\n {\n kind: 'para',\n text: 'HTTPS in transit; emails encrypted at rest; access to production data is allowlisted and audit-logged. No method of storage is perfectly secure — we use reasonable measures but do not warrant security; see the [Terms of Service](/terms). If we become aware of a breach of personal data we hold, we will notify affected users and any competent supervisory authority as required by applicable law.',\n },\n ],\n },\n privacyRights,\n {\n id: 'deletion',\n heading: 'identity & account deletion',\n blocks: [\n {\n kind: 'para',\n text: 'From `/me/settings → advanced → delete` you can permanently revoke your OrangeCheck identity. A federation-custodied balance must be swept to your own wallet first (the graduate flow). OrangeCheck deletes the operational records it holds about you; events already anchored to Bitcoin headers or published to Nostr are immutable public records of fee flows and cannot be deleted by anyone.',\n },\n ],\n },\n privacyTransfers,\n privacyRegional,\n privacyChildren,\n privacyChanges,\n ],\n summary:\n 'summary: no kyc, no pii required, a per-integrator scoped identity, and a documented account of every record orangecheck stores.',\n};\n\nexport const meProfile = { terms, privacy };\n","/**\n * @orangecheck/legal — `vault` profile.\n *\n * vault.ochk.io: an end-to-end-encrypted secrets vault sold as paid SaaS.\n * Client-side AES-256-GCM; OrangeCheck stores opaque ciphertext only and\n * cannot read vault contents. Payment is inbound-only Lightning — no fund\n * custody — so the stubs cover pricing, refunds, and lifetime-entitlement\n * durability rather than money movement.\n */\n\nimport type { DocSpec } from '../types';\nimport {\n acceptableUse,\n changesToTerms,\n disputeResolution,\n eligibility,\n indemnification,\n intellectualProperty,\n limitationOfLiability,\n miscellaneous,\n privacyChanges,\n privacyChildren,\n privacyRegional,\n privacyRights,\n privacyTransfers,\n} from './clauses';\n\nconst COMMERCIAL_NOTE =\n '**OC Vault is a commercial product operated by OrangeCheck**, available at vault.ochk.io. It is distinct from the non-custodial OrangeCheck protocol sites; the Terms at [ochk.io/terms](https://ochk.io/terms) do not govern OC Vault. These Terms do.';\n\nconst terms: DocSpec = {\n kind: 'terms',\n eyebrow: 'terms',\n title: 'Terms of service',\n description:\n 'The terms governing your use of OC Vault — an end-to-end-encrypted secrets vault. Client-side encryption; OrangeCheck stores ciphertext only and cannot read your data.',\n metaTitle: 'Terms of Service — OC Vault',\n metaDescription:\n 'Terms of service for OC Vault (vault.ochk.io): an end-to-end-encrypted secrets vault. Client-side encryption, Lightning payment, no fund custody.',\n effective: '2026-05-15',\n updated: '2026-05-15',\n preamble: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'By accessing or using OC Vault, you agree to be bound by these Terms. If you do not agree, do not use the Service. These Terms contain a binding-arbitration, class-action, and jury-trial waiver and important limitations on liability.',\n },\n { kind: 'callout', text: COMMERCIAL_NOTE },\n ],\n sections: [\n {\n id: 'overview',\n heading: 'overview',\n hint: 'what oc vault is',\n blocks: [\n {\n kind: 'para',\n text: 'OC Vault stores passwords, one-time-password seeds, API keys, notes, and small files. Every item is **encrypted client-side** in your browser under a vault key that never leaves your control. When you sync to the cloud, OrangeCheck stores an opaque encrypted blob — **OrangeCheck cannot read your vault contents, item names, or item types.**',\n },\n {\n kind: 'para',\n text: 'OC Vault is built on the OC Lock protocol. It is **not** a custodial service for funds and does not take possession of any cryptocurrency.',\n },\n ],\n },\n {\n id: 'accounts',\n heading: 'accounts',\n blocks: [\n {\n kind: 'para',\n text: 'Your identity is a Bitcoin address you prove control of via BIP-322. No email or password is required. You are responsible for the security of the wallet you sign with and of the vault key that encrypts your data.',\n },\n ],\n },\n {\n id: 'plans-billing',\n heading: 'plans, payment & billing',\n hint: 'lightning · inbound only',\n blocks: [\n {\n kind: 'para',\n text: 'OC Vault offers a free tier and paid tiers purchased with Bitcoin over the Lightning Network. OrangeCheck **receives** payment and never sends funds to users; OC Vault holds no custodial balance for you.',\n },\n {\n kind: 'stub',\n text: 'The full commercial terms for paid tiers — current pricing, what each tier includes, billing cycle and renewal behavior, the refund and cancellation policy, proration, and the consequences of non-renewal for stored data — are being finalized for publication. Current pricing is shown on /pricing. This section will be completed following review by counsel.',\n },\n ],\n },\n {\n id: 'lifetime',\n heading: 'lifetime entitlements',\n blocks: [\n {\n kind: 'stub',\n text: 'OC Vault offers a one-time \"lifetime\" tier. The precise meaning of \"lifetime\" — the entitlement’s duration and scope, what happens to it on a change of ownership or discontinuation of the Service, and OrangeCheck’s commitments for data export and continuity if the Service winds down — is being finalized for publication. This section will be completed following review by counsel.',\n },\n ],\n },\n {\n id: 'your-data',\n heading: 'your data & encryption',\n hint: 'you hold the only key',\n blocks: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'ORANGECHECK CANNOT READ, RECOVER, OR RESET YOUR VAULT. IF YOU LOSE YOUR VAULT KEY AND ALL RECOVERY FACTORS, YOUR ENCRYPTED DATA IS PERMANENTLY UNRECOVERABLE — BY YOU AND BY US. THIS IS THE INTENDED SECURITY PROPERTY, NOT A DEFECT.',\n },\n {\n kind: 'para',\n text: 'You are solely responsible for safeguarding your vault key and any recovery material, for the lawfulness of what you store, and for maintaining your own independent backups of anything critical.',\n },\n ],\n },\n acceptableUse,\n intellectualProperty,\n {\n id: 'third-parties',\n heading: 'third parties',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'payment processing',\n v: 'Lightning payments are processed via a self-hosted BTCPay Server; we do not guarantee the availability of the Lightning Network',\n },\n {\n k: 'storage / hosting',\n v: 'encrypted blobs are stored with third-party infrastructure providers; they receive ciphertext only',\n },\n ],\n },\n ],\n },\n {\n id: 'disclaimers',\n heading: 'disclaimers & warranties',\n hint: 'as-is · no warranty',\n blocks: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'THE SERVICE IS PROVIDED \"AS IS\" AND \"AS AVAILABLE\", WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY LAW, ORANGECHECK DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, AND STATUTORY — INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND ACCURACY — AND DOES NOT WARRANT THAT THE SERVICE WILL BE UNINTERRUPTED OR THAT STORED DATA WILL BE FREE FROM LOSS.',\n },\n {\n kind: 'para',\n text: 'Maintain your own backups of anything critical. The encryption design that prevents OrangeCheck from reading your data also prevents OrangeCheck from recovering it.',\n },\n ],\n },\n limitationOfLiability,\n indemnification,\n eligibility,\n changesToTerms,\n disputeResolution,\n miscellaneous,\n ],\n summary:\n 'summary: end-to-end encrypted; orangecheck stores ciphertext only and cannot recover your vault. pricing, refund, and lifetime-entitlement terms are being finalized — see the marked sections.',\n};\n\nconst privacy: DocSpec = {\n kind: 'privacy',\n eyebrow: 'privacy',\n title: 'Privacy policy',\n description:\n 'How OC Vault handles data. End-to-end encrypted by design — OrangeCheck stores opaque ciphertext and cannot read your vault, item names, or item types.',\n metaTitle: 'Privacy Policy — OC Vault',\n metaDescription:\n 'OC Vault privacy policy. End-to-end encrypted; OrangeCheck stores ciphertext only and cannot read your vault contents.',\n effective: '2026-05-15',\n updated: '2026-05-15',\n sections: [\n {\n id: 'principles',\n heading: 'our principles',\n hint: 'zero-knowledge by design',\n blocks: [\n {\n kind: 'para',\n text: 'OC Vault is designed so that OrangeCheck cannot read your data. Encryption and decryption happen in your browser. What OrangeCheck stores is an opaque, double-encrypted blob with no readable item names, types, or contents.',\n },\n ],\n },\n {\n id: 'what-we-collect',\n heading: 'information we collect',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'identity address',\n v: 'the Bitcoin address you sign in with — public on-chain already; no email, no name',\n },\n {\n k: 'payment records',\n v: 'for paid tiers: the Lightning invoice id, sats paid, tier, and entitlement expiry. No card number, no billing address',\n },\n {\n k: 'encrypted blobs',\n v: 'opaque ciphertext keyed to your identity address — OrangeCheck cannot decrypt it',\n },\n {\n k: 'technical data',\n v: 'IP address and request metadata, for security and rate limiting',\n },\n ],\n },\n ],\n },\n {\n id: 'what-we-cannot-see',\n heading: 'what we cannot see',\n blocks: [\n {\n kind: 'bullets',\n items: [\n 'The contents of any vault item',\n 'The names, titles, or types of your items',\n 'How many items you store or how often you use them',\n 'Your vault key or any recovery material',\n ],\n },\n ],\n },\n {\n id: 'cookies',\n heading: 'cookies & analytics',\n blocks: [\n {\n kind: 'para',\n text: 'Essential cookies only, plus a theme preference. Page analytics use [Plausible](https://plausible.io/privacy) — cookie-free, no PII, aggregate only. No advertising or tracking cookies.',\n },\n ],\n },\n {\n id: 'retention',\n heading: 'data retention',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'encrypted blobs',\n v: 'retained while your account is active; deleted on account deletion',\n },\n {\n k: 'payment records',\n v: 'retained as required for accounting and entitlement verification',\n },\n {\n k: 'technical logs',\n v: 'retained 90 days, then auto-deleted',\n },\n ],\n },\n ],\n },\n {\n id: 'data-security',\n heading: 'data security',\n blocks: [\n {\n kind: 'para',\n text: 'Client-side AES-256-GCM encryption, HTTPS in transit, and a server that only ever holds ciphertext. No method of storage is perfectly secure — we use reasonable measures but do not warrant security; see the [Terms of Service](/terms). Because of the encryption design, a compromise of OrangeCheck infrastructure exposes ciphertext, not your secrets.',\n },\n ],\n },\n privacyRights,\n privacyTransfers,\n privacyRegional,\n privacyChildren,\n privacyChanges,\n ],\n summary:\n 'summary: end-to-end encrypted; orangecheck stores ciphertext only and cannot read your vault contents.',\n};\n\nexport const vaultProfile = { terms, privacy };\n","/**\n * @orangecheck/legal — `fleet` profile.\n *\n * fleet.ochk.io: enterprise managed infrastructure on top of OC Agent and\n * OC Pledge. B2B; bills via Stripe and Lightning; holds operator PII\n * (email, billing address) and an SLA commitment. Stubs cover billing, the\n * SLA document, sub-processor list, and the enterprise MSA / DPA.\n */\n\nimport type { DocSpec } from '../types';\nimport {\n acceptableUse,\n changesToTerms,\n disputeResolution,\n eligibility,\n indemnification,\n intellectualProperty,\n limitationOfLiability,\n miscellaneous,\n privacyChanges,\n privacyChildren,\n privacyRegional,\n privacyRights,\n privacyTransfers,\n} from './clauses';\n\nconst COMMERCIAL_NOTE =\n '**OrangeCheck Fleet is a commercial product operated by OrangeCheck**, available at fleet.ochk.io. It is distinct from the non-custodial OrangeCheck protocol sites. Where an Enterprise customer has executed a separate Master Services Agreement, that agreement controls; otherwise these Terms govern.';\n\nconst terms: DocSpec = {\n kind: 'terms',\n eyebrow: 'terms',\n title: 'Terms of service',\n description:\n 'The terms governing use of OrangeCheck Fleet — enterprise managed infrastructure for OC Agent and OC Pledge. No custody of customer keys or funds.',\n metaTitle: 'Terms of Service — OrangeCheck Fleet',\n metaDescription:\n 'Terms of service for OrangeCheck Fleet (fleet.ochk.io): enterprise managed infrastructure for OC Agent and OC Pledge. No custody of keys or funds.',\n effective: '2026-05-15',\n updated: '2026-05-15',\n preamble: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'By accessing or using OrangeCheck Fleet, you agree to be bound by these Terms on behalf of yourself and any organization you represent. If you do not agree, do not use the Service. These Terms contain a binding-arbitration, class-action, and jury-trial waiver and important limitations on liability.',\n },\n { kind: 'callout', text: COMMERCIAL_NOTE },\n ],\n sections: [\n {\n id: 'overview',\n heading: 'overview',\n hint: 'what fleet is',\n blocks: [\n {\n kind: 'para',\n text: 'OrangeCheck Fleet is managed infrastructure for organizations deploying AI agents under the OC Agent and OC Pledge protocols. Fleet issues, scopes, and revokes agent delegations, records action receipts, and produces auditable evidence bundles.',\n },\n {\n kind: 'para',\n text: 'Fleet holds **no customer private keys, no customer funds, and no custodial wallet of any kind.** Signing happens in the customer’s wallet; bonded reputation stake is an attestation of unspent funds, never escrow. Fleet operates no token or points balance.',\n },\n ],\n },\n {\n id: 'accounts',\n heading: 'accounts & operators',\n blocks: [\n {\n kind: 'para',\n text: 'A customer account is operated by one or more authorized individuals. You are responsible for the acts and omissions of everyone you authorize, for keeping credentials secure, and for ensuring the individuals you authorize have authority to bind your organization.',\n },\n ],\n },\n {\n id: 'plans-billing',\n heading: 'plans, billing & payment',\n hint: 'stripe + lightning',\n blocks: [\n {\n kind: 'para',\n text: 'Fleet offers a free Community tier and paid Pro and Enterprise tiers. Paid tiers are billed in either Bitcoin (Lightning) or US dollars (card / ACH via Stripe, our payment processor).',\n },\n {\n kind: 'stub',\n text: 'The full commercial terms — current pricing, what each tier includes, the billing cycle, overage rates and metering, taxes, renewal and cancellation behavior, and the refund policy — are being finalized for publication. Current pricing is shown on /pricing. Card and ACH payments are processed by Stripe under Stripe’s own terms. This section will be completed following review by counsel.',\n },\n ],\n },\n {\n id: 'service-levels',\n heading: 'service levels',\n hint: 'uptime · support response',\n blocks: [\n {\n kind: 'stub',\n text: 'Fleet’s service-level commitments — target uptime, the support-response times by tier, the measurement methodology, exclusions, and any service credits — are being finalized and will be published as a referenced Service Level Agreement. Until then, support-response targets are described on /pricing. This section will be completed following review by counsel.',\n },\n ],\n },\n {\n id: 'customer-data',\n heading: 'customer data',\n blocks: [\n {\n kind: 'para',\n text: 'Fleet holds operator account metadata (email, billing address, plan tier), the public Bitcoin addresses you bind agents to, OC Agent action envelopes, OpenTimestamps proofs, and operational logs (90-day retention). Fleet does **not** hold raw action inputs beyond hashes unless you opt in. Processing of personal data is described in the [Privacy Policy](/privacy).',\n },\n {\n kind: 'stub',\n text: 'Enterprise customers that process personal data through Fleet may require a Data Processing Agreement. A standard DPA, including the sub-processor list and the international-transfer mechanism, is being finalized and will be made available to Enterprise customers. This section will be completed following review by counsel.',\n },\n ],\n },\n acceptableUse,\n intellectualProperty,\n {\n id: 'enterprise-msa',\n heading: 'enterprise agreements',\n blocks: [\n {\n kind: 'stub',\n text: 'Enterprise-tier customers may execute a Master Services Agreement that supplements or supersedes these Terms — covering negotiated SLAs, the DPA, security commitments, self-hosting, indemnities, and liability terms specific to the engagement. The standard MSA template is being finalized. Where an executed MSA exists, it controls over any conflicting provision of these Terms. This section will be completed following review by counsel.',\n },\n ],\n },\n {\n id: 'confidentiality',\n heading: 'confidentiality',\n blocks: [\n {\n kind: 'para',\n text: 'Each party may receive non-public information of the other. The receiving party will use it only to perform under these Terms, protect it with at least reasonable care, and not disclose it except to personnel and contractors bound by comparable obligations. This does not apply to information that is public, independently developed, or rightfully received from a third party.',\n },\n ],\n },\n {\n id: 'disclaimers',\n heading: 'disclaimers & warranties',\n hint: 'as-is · compliance posture',\n blocks: [\n {\n kind: 'callout',\n emphatic: true,\n text: 'EXCEPT AS EXPRESSLY STATED IN AN EXECUTED MASTER SERVICES AGREEMENT, THE SERVICE IS PROVIDED \"AS IS\" AND \"AS AVAILABLE\", WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY LAW, ORANGECHECK DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, AND STATUTORY — INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, AND ACCURACY.',\n },\n {\n kind: 'para',\n text: 'Any compliance certification described as \"in progress\" (including SOC 2) is a statement of intent, not a warranty, until completed and the report issued. Fleet does not provide legal, financial, or regulatory-compliance advice.',\n },\n ],\n },\n limitationOfLiability,\n indemnification,\n eligibility,\n {\n id: 'termination',\n heading: 'termination',\n blocks: [\n {\n kind: 'para',\n text: '**Your right:** stop using Fleet and cancel a paid plan as described in the billing terms. **Our right:** suspend or terminate access for non-payment, breach, or legal or security risk. On termination you may export your action envelopes and audit bundles, which verify offline independently of Fleet. The confidentiality, disclaimer, liability, indemnification, governing-law, and dispute provisions survive.',\n },\n ],\n },\n changesToTerms,\n disputeResolution,\n miscellaneous,\n ],\n summary:\n 'summary: managed agent infrastructure with no custody of customer keys or funds. billing, sla, dpa, and the enterprise msa are being finalized — see the marked sections.',\n};\n\nconst privacy: DocSpec = {\n kind: 'privacy',\n eyebrow: 'privacy',\n title: 'Privacy policy',\n description:\n 'How OrangeCheck Fleet handles personal data — operator account information and the metadata required to run managed agent infrastructure. No customer keys, no customer funds.',\n metaTitle: 'Privacy Policy — OrangeCheck Fleet',\n metaDescription:\n 'OrangeCheck Fleet privacy policy. Operator account data and orchestration metadata only; no customer keys, no customer funds, no raw action inputs.',\n effective: '2026-05-15',\n updated: '2026-05-15',\n preamble: [\n {\n kind: 'callout',\n text: 'This policy covers personal data OrangeCheck processes as a **controller** for the Fleet account relationship — operator and billing information. Where Fleet processes personal data **on a customer’s behalf** as a processor, the customer’s Data Processing Agreement governs that processing.',\n },\n ],\n sections: [\n {\n id: 'what-we-collect',\n heading: 'information we collect',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'operator account data',\n v: 'the email address and name of authorized operators',\n },\n {\n k: 'billing information',\n v: 'billing address and plan tier; card and ACH details are collected and held by Stripe, our payment processor, not by OrangeCheck',\n },\n {\n k: 'orchestration metadata',\n v: 'public Bitcoin addresses you bind agents to, OC Agent action envelopes, and OpenTimestamps proofs',\n },\n {\n k: 'operational logs',\n v: 'request and SLA-accounting logs sufficient for abuse response, retained 90 days',\n },\n ],\n },\n {\n kind: 'para',\n text: 'Fleet does not collect customer private keys, customer funds, or raw action inputs beyond hashes (unless a customer opts in).',\n },\n ],\n },\n {\n id: 'how-we-use',\n heading: 'how we use information',\n blocks: [\n {\n kind: 'bullets',\n items: [\n 'Provision and operate managed agent infrastructure',\n 'Bill paid plans and account for service levels',\n 'Detect and respond to abuse and security incidents',\n 'Provide support and communicate service notices',\n ],\n },\n ],\n },\n {\n id: 'sub-processors',\n heading: 'sub-processors',\n blocks: [\n {\n kind: 'para',\n text: 'Fleet relies on a small set of sub-processors — including a payment processor (Stripe) and hosting and infrastructure providers.',\n },\n {\n kind: 'stub',\n text: 'The complete, current sub-processor list — each provider, its role, and its processing location — together with the mechanism for advance notice of changes is being finalized and will be published and referenced from the Data Processing Agreement. This section will be completed following review by counsel.',\n },\n ],\n },\n {\n id: 'cookies',\n heading: 'cookies & analytics',\n blocks: [\n {\n kind: 'para',\n text: 'Essential cookies for authentication and a theme preference. Page analytics use [Plausible](https://plausible.io/privacy) — cookie-free, no PII, aggregate only. No advertising or tracking cookies.',\n },\n ],\n },\n {\n id: 'retention',\n heading: 'data retention',\n blocks: [\n {\n kind: 'bullets',\n items: [\n {\n k: 'operational logs',\n v: 'retained 90 days, then auto-deleted',\n },\n {\n k: 'account & billing records',\n v: 'retained for the life of the account and as required for accounting, tax, and audit obligations',\n },\n {\n k: 'action envelopes',\n v: 'retained for the life of the account; exportable by the customer at any time',\n },\n ],\n },\n ],\n },\n {\n id: 'data-security',\n heading: 'data security',\n blocks: [\n {\n kind: 'para',\n text: 'HTTPS in transit, access controls on production data, and a bounded blast radius by design — Fleet structurally cannot hold customer keys or funds. A SOC 2 examination is in progress; until the report is issued it is a statement of intent, not a warranty. We use reasonable measures but do not warrant security; see the [Terms of Service](/terms). We notify affected customers and any competent authority of a personal-data breach as required by applicable law.',\n },\n ],\n },\n privacyRights,\n privacyTransfers,\n privacyRegional,\n privacyChildren,\n privacyChanges,\n ],\n summary:\n 'summary: operator and billing data plus orchestration metadata; no customer keys, no customer funds. card payments are held by stripe. dpa and sub-processor list are being finalized.',\n};\n\nexport const fleetProfile = { terms, privacy };\n","/** @orangecheck/legal — profile registry consumed by `buildDoc`. */\n\nimport type { DocKind, DocSpec, LegalProfile } from '../types';\nimport { protocolProfile } from './protocol';\nimport { meProfile } from './me';\nimport { vaultProfile } from './vault';\nimport { fleetProfile } from './fleet';\n\nexport const PROFILES: Record<LegalProfile, Record<DocKind, DocSpec>> = {\n protocol: protocolProfile,\n me: meProfile,\n vault: vaultProfile,\n fleet: fleetProfile,\n};\n","/**\n * @orangecheck/legal — document builder.\n *\n * `buildDoc(site, kind)` is the single entry point a site page calls. It picks\n * the profile spec, interpolates `[[TOKEN]]` placeholders from global + site\n * context, numbers the sections, and returns a fully resolved `LegalDoc`. Pure\n * and synchronous, so it can run at module scope in a page file.\n */\n\nimport type { Block, BulletItem, DocKind, DocSpec, LegalDoc, Section } from './types';\nimport { GLOBAL_TOKENS } from './constants';\nimport { getSiteContext } from './registry';\nimport { PROFILES } from './content';\n\nconst TOKEN_RE = /\\[\\[([A-Z_]+)\\]\\]/g;\n\nfunction fill(text: string, tokens: Record<string, string>): string {\n return text.replace(TOKEN_RE, (match, key: string) => tokens[key] ?? match);\n}\n\nfunction fillBullet(item: BulletItem, tokens: Record<string, string>): BulletItem {\n if (typeof item === 'string') return fill(item, tokens);\n return { k: fill(item.k, tokens), v: fill(item.v, tokens) };\n}\n\nfunction fillBlock(block: Block, tokens: Record<string, string>): Block {\n switch (block.kind) {\n case 'para':\n case 'subhead':\n case 'stub':\n return { ...block, text: fill(block.text, tokens) };\n case 'callout':\n return { ...block, text: fill(block.text, tokens) };\n case 'bullets':\n return { ...block, items: block.items.map((i) => fillBullet(i, tokens)) };\n }\n}\n\nfunction fillSection(section: Section, tokens: Record<string, string>, index: number): Section {\n return {\n ...section,\n num: String(index + 1).padStart(2, '0'),\n heading: fill(section.heading, tokens),\n hint: section.hint ? fill(section.hint, tokens) : undefined,\n blocks: section.blocks.map((b) => fillBlock(b, tokens)),\n };\n}\n\nfunction fillSpec(spec: DocSpec, tokens: Record<string, string>): DocSpec {\n return {\n ...spec,\n eyebrow: fill(spec.eyebrow, tokens),\n title: fill(spec.title, tokens),\n description: fill(spec.description, tokens),\n metaTitle: fill(spec.metaTitle, tokens),\n metaDescription: fill(spec.metaDescription, tokens),\n preamble: spec.preamble?.map((b) => fillBlock(b, tokens)),\n sections: spec.sections.map((s, i) => fillSection(s, tokens, i)),\n summary: spec.summary ? fill(spec.summary, tokens) : undefined,\n };\n}\n\n/** Build a fully resolved legal document for one site. */\nexport function buildDoc(siteSlug: string, kind: DocKind): LegalDoc {\n const ctx = getSiteContext(siteSlug);\n const spec = PROFILES[ctx.profile][kind];\n const tokens: Record<string, string> = {\n ...GLOBAL_TOKENS,\n PRODUCT: ctx.product,\n PRODUCT_SHORT: ctx.productShort,\n HOST: ctx.host,\n CONTACT: ctx.contact,\n SECURITY_CONTACT: ctx.securityContact,\n };\n return {\n ...fillSpec(spec, tokens),\n site: ctx.slug,\n profile: ctx.profile,\n };\n}\n","/**\n * @orangecheck/legal — minimal inline markup.\n *\n * Authored legal strings stay plain text but may use a tiny, well-bounded\n * markup so emphasis and links survive the data model:\n * **bold** → emphasised foreground text\n * `code` → monospace\n * [label](https://…) → external anchor (new tab)\n * [label](mailto:…) → mail anchor\n * [label](/path) → internal Next <Link>\n */\n\nimport React from 'react';\nimport Link from 'next/link';\n\nconst INLINE_RE = /(\\*\\*[^*]+\\*\\*|`[^`]+`|\\[[^\\]]+\\]\\([^)]+\\))/g;\nconst LINK_RE = /^\\[([^\\]]+)\\]\\(([^)]+)\\)$/;\n\nexport function renderInline(text: string): React.ReactNode {\n const parts = text.split(INLINE_RE);\n return parts.map((part, i) => {\n if (!part) return null;\n\n if (part.startsWith('**') && part.endsWith('**')) {\n return (\n <strong key={i} className=\"text-foreground font-semibold\">\n {part.slice(2, -2)}\n </strong>\n );\n }\n\n if (part.startsWith('`') && part.endsWith('`')) {\n return (\n <code key={i} className=\"font-mono text-[0.95em]\">\n {part.slice(1, -1)}\n </code>\n );\n }\n\n const link = LINK_RE.exec(part);\n if (link) {\n const label = link[1] ?? '';\n const href = link[2] ?? '';\n if (/^https?:\\/\\//.test(href)) {\n return (\n <a\n key={i}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary underline\"\n >\n {label}\n </a>\n );\n }\n if (href.startsWith('mailto:')) {\n return (\n <a key={i} href={href} className=\"text-primary underline\">\n {label}\n </a>\n );\n }\n return (\n <Link key={i} href={href} className=\"text-primary underline\">\n {label}\n </Link>\n );\n }\n\n return <React.Fragment key={i}>{part}</React.Fragment>;\n });\n}\n","/**\n * @orangecheck/legal — render components.\n *\n * `<LegalDocument>` turns a resolved `LegalDoc` into a page body. It renders\n * its own header, the effective/updated bar, every section, and the trailing\n * summary — so a consuming site page only supplies `<Seo>` and a container.\n * Styling uses the family's shared design tokens (`primary`, `muted-foreground`,\n * `card`, `border`, `warning`, `font-display`, `font-mono`), so the same\n * component renders natively on every .ochk.io site.\n */\n\nimport type { Block, BulletItem, LegalDoc, Section } from './types';\nimport { renderInline } from './markup';\n\nfunction Para({ text }: { text: string }) {\n return <p className=\"text-muted-foreground\">{renderInline(text)}</p>;\n}\n\nfunction SubHead({ text }: { text: string }) {\n return (\n <h3 className=\"font-display text-primary mt-6 mb-2 text-xs font-bold tracking-widest uppercase\">\n {renderInline(text)}\n </h3>\n );\n}\n\nfunction Bullets({ items }: { items: BulletItem[] }) {\n return (\n <ul className=\"divide-y border font-mono text-xs\">\n {items.map((item, i) => {\n if (typeof item === 'string') {\n return (\n <li key={i} className=\"flex items-start gap-3 px-4 py-2.5\">\n <span className=\"text-primary mt-0.5 flex-shrink-0\">{'>>'}</span>\n <span className=\"text-muted-foreground\">{renderInline(item)}</span>\n </li>\n );\n }\n return (\n <li key={i} className=\"flex flex-wrap items-start gap-x-4 gap-y-1 px-4 py-2.5\">\n <span className=\"text-primary w-40 flex-shrink-0 font-bold tracking-widest uppercase\">\n {item.k}\n </span>\n <span className=\"text-muted-foreground flex-1\">{renderInline(item.v)}</span>\n </li>\n );\n })}\n </ul>\n );\n}\n\nfunction Callout({ text, emphatic }: { text: string; emphatic?: boolean }) {\n return (\n <div className=\"border-primary/30 bg-primary/[0.03] border px-4 py-3 font-mono text-xs leading-relaxed\">\n <span className=\"text-primary mr-2\">{emphatic ? '!! ' : '§ '}</span>\n <span className={emphatic ? 'text-foreground font-medium' : 'text-foreground'}>\n {renderInline(text)}\n </span>\n </div>\n );\n}\n\n/**\n * A section the family has not finalised. Rendered as an unmissable,\n * warning-toned notice — honest to users (these surfaces are pre-GA) and\n * impossible for whoever finalises the money/custody/SLA terms to overlook.\n */\nfunction Stub({ text }: { text: string }) {\n return (\n <div className=\"border-warning/40 bg-warning/[0.05] border px-4 py-3.5 font-mono text-xs leading-relaxed\">\n <div className=\"text-warning mb-1.5 font-bold tracking-widest uppercase\">\n {'§ pending · counsel review'}\n </div>\n <p className=\"text-muted-foreground\">{renderInline(text)}</p>\n </div>\n );\n}\n\nfunction BlockView({ block }: { block: Block }) {\n switch (block.kind) {\n case 'para':\n return <Para text={block.text} />;\n case 'subhead':\n return <SubHead text={block.text} />;\n case 'bullets':\n return <Bullets items={block.items} />;\n case 'callout':\n return <Callout text={block.text} emphatic={block.emphatic} />;\n case 'stub':\n return <Stub text={block.text} />;\n }\n}\n\nfunction SectionView({ section }: { section: Section }) {\n return (\n <section className=\"border-t py-10\">\n <div className=\"mb-6 flex flex-wrap items-baseline gap-x-3 gap-y-1\">\n <span className=\"font-display text-primary text-sm font-bold tabular-nums\">\n [{section.num}]\n </span>\n <span className=\"font-display text-lg font-bold tracking-wider uppercase\">\n {section.heading}\n </span>\n {section.hint && (\n <span className=\"text-muted-foreground font-mono text-[11px]\">\n {'// '}\n {section.hint}\n </span>\n )}\n </div>\n <div className=\"max-w-3xl space-y-4 font-mono text-sm leading-relaxed\">\n {section.blocks.map((b, i) => (\n <BlockView key={i} block={b} />\n ))}\n </div>\n </section>\n );\n}\n\nexport interface LegalDocumentProps {\n doc: LegalDoc;\n}\n\n/** Renders a complete legal document body (header → sections → summary). */\nexport function LegalDocument({ doc }: LegalDocumentProps) {\n return (\n <article>\n <header className=\"pt-2 pb-4\">\n <div className=\"font-display text-primary mb-3 text-xs font-bold tracking-widest uppercase\">\n {'§ '}\n {doc.eyebrow}\n </div>\n <h1 className=\"font-display text-3xl font-bold tracking-tight sm:text-4xl\">\n {doc.title}\n </h1>\n <p className=\"text-muted-foreground mt-4 max-w-3xl text-sm leading-relaxed\">\n {renderInline(doc.description)}\n </p>\n </header>\n\n <div className=\"flex flex-wrap gap-x-6 gap-y-1 border-b pb-4 font-mono text-[11px]\">\n <span>\n <span className=\"text-muted-foreground tracking-widest uppercase\">\n effective:{' '}\n </span>\n <span className=\"text-foreground tabular-nums\">{doc.effective}</span>\n </span>\n <span>\n <span className=\"text-muted-foreground tracking-widest uppercase\">\n last updated:{' '}\n </span>\n <span className=\"text-foreground tabular-nums\">{doc.updated}</span>\n </span>\n </div>\n\n {doc.preamble && doc.preamble.length > 0 && (\n <div className=\"mt-6 space-y-3\">\n {doc.preamble.map((b, i) => (\n <BlockView key={i} block={b} />\n ))}\n </div>\n )}\n\n <div className=\"mt-2\">\n {doc.sections.map((s) => (\n <SectionView key={s.id} section={s} />\n ))}\n </div>\n\n {doc.summary && (\n <p className=\"text-muted-foreground mt-10 border-t pt-6 font-mono text-[11px]\">\n {'// '}\n {doc.summary}\n </p>\n )}\n </article>\n );\n}\n","/**\n * @orangecheck/legal — shared security-disclosure block.\n *\n * Security pages stay bespoke per product (each describes a different custody\n * and data posture), but the *vulnerability-disclosure mechanics* should be\n * identical family-wide. Drop `<SecurityDisclosure>` into any bespoke\n * `/security` page to get a consistent \"how to report / what to expect\" block.\n */\n\nexport interface SecurityDisclosureProps {\n /** Security contact mailbox. */\n securityContact?: string;\n /** Heading shown above the block. Pass `null` to omit. */\n heading?: string | null;\n}\n\nexport function SecurityDisclosure({\n securityContact = 'security@ochk.io',\n heading = 'responsible disclosure',\n}: SecurityDisclosureProps) {\n return (\n <div className=\"font-mono text-sm leading-relaxed\">\n {heading && (\n <h2 className=\"font-display text-foreground mb-4 text-lg font-bold tracking-wider uppercase\">\n {heading}\n </h2>\n )}\n\n <div className=\"border-primary/30 bg-primary/[0.03] mb-4 border px-4 py-3 text-xs leading-relaxed\">\n <span className=\"text-primary mr-2\">{'!! '}</span>\n <span className=\"text-foreground\">\n Don&apos;t open public GitHub issues for exploitable bugs. Public disclosure\n before a fix ships puts everyone using the protocol at risk.\n </span>\n </div>\n\n <p className=\"text-muted-foreground mb-4\">\n Email{' '}\n <a\n href={`mailto:${securityContact}`}\n className=\"text-primary underline decoration-dotted underline-offset-3\"\n >\n {securityContact}\n </a>{' '}\n — use PGP for highly sensitive findings; the fingerprint and key are published at{' '}\n <a\n href=\"https://github.com/orangecheck/.github/blob/main/SECURITY.md\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary underline\"\n >\n github.com/orangecheck/.github/SECURITY.md\n </a>\n . Alternatively, open a private GitHub security advisory on the most relevant{' '}\n <code className=\"text-[0.95em]\">orangecheck/*</code> repository.\n </p>\n\n <ul className=\"divide-y border text-xs\">\n {(\n [\n ['acknowledgement', 'within 72 hours of receipt'],\n [\n 'triage',\n 'within 7 days — whether we agree it is a vulnerability, the severity assigned, and a target fix date',\n ],\n [\n 'coordinated disclosure',\n 'we credit you (unless you prefer anonymity) and publish an advisory once the fix ships',\n ],\n [\n 'bounty',\n 'no paid bounty program yet — the ecosystem is young; we are grateful for responsible disclosure',\n ],\n ] as const\n ).map(([k, v]) => (\n <li key={k} className=\"flex flex-wrap items-start gap-x-4 gap-y-1 px-4 py-2.5\">\n <span className=\"text-primary w-44 flex-shrink-0 font-bold tracking-widest uppercase\">\n {k}\n </span>\n <span className=\"text-muted-foreground flex-1\">{v}</span>\n </li>\n ))}\n </ul>\n </div>\n );\n}\n"]}