@orangecheck/legal 0.7.28 → 0.7.30
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.
- package/README.md +8 -6
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +52 -42
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +52 -42
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -3,6 +3,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
3
3
|
|
|
4
4
|
// src/constants.ts
|
|
5
5
|
var LEGAL_ENTITY = "OrangeCheck";
|
|
6
|
+
var BRAND = "OrangeCheck";
|
|
6
7
|
var LEGAL_ENTITY_LONG = "OrangeCheck (OCHK), an unincorporated project";
|
|
7
8
|
var ENTITY_PENDING = true;
|
|
8
9
|
var CONTACT_GENERAL = "contact@ochk.io";
|
|
@@ -11,6 +12,7 @@ var CONTACT_PRIVACY = "contact@ochk.io";
|
|
|
11
12
|
var GOVERNING_LAW_STATE = "Delaware, United States";
|
|
12
13
|
var ARBITRATION_SEAT = "Wilmington, Delaware, United States";
|
|
13
14
|
var GLOBAL_TOKENS = {
|
|
15
|
+
BRAND,
|
|
14
16
|
ENTITY: LEGAL_ENTITY,
|
|
15
17
|
ENTITY_LONG: LEGAL_ENTITY_LONG,
|
|
16
18
|
// For the clauses set in capitals, so the name does not break their case.
|
|
@@ -42,7 +44,9 @@ var LEGAL_SITES = {
|
|
|
42
44
|
productShort: "ochk.app",
|
|
43
45
|
contact: CONTACT_GENERAL,
|
|
44
46
|
securityContact: CONTACT_SECURITY,
|
|
45
|
-
selfHosted: true
|
|
47
|
+
selfHosted: true,
|
|
48
|
+
// ochk.app writes its brand lowercase, as its own pages do (lead ruling, 2026-11-03).
|
|
49
|
+
brand: "orangecheck"
|
|
46
50
|
},
|
|
47
51
|
vault: {
|
|
48
52
|
slug: "vault",
|
|
@@ -149,7 +153,7 @@ var intellectualProperty = {
|
|
|
149
153
|
{ kind: "subhead", text: "[[ENTITY]]'s rights" },
|
|
150
154
|
{
|
|
151
155
|
kind: "para",
|
|
152
|
-
text: "The Service and its content (excluding user-generated content) are protected by copyright, trademark, patent, and other IP laws \u2014 including the
|
|
156
|
+
text: "The Service and its content (excluding user-generated content) are protected by copyright, trademark, patent, and other IP laws \u2014 including the [[BRAND]] name, logos, branding, site design, software, code, algorithms, and documentation."
|
|
153
157
|
},
|
|
154
158
|
{ kind: "subhead", text: "your license" },
|
|
155
159
|
{
|
|
@@ -164,7 +168,7 @@ var intellectualProperty = {
|
|
|
164
168
|
{ kind: "subhead", text: "open source" },
|
|
165
169
|
{
|
|
166
170
|
kind: "para",
|
|
167
|
-
text: "
|
|
171
|
+
text: "[[BRAND]] 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."
|
|
168
172
|
}
|
|
169
173
|
]
|
|
170
174
|
};
|
|
@@ -448,7 +452,7 @@ var privacyTransfers = {
|
|
|
448
452
|
blocks: [
|
|
449
453
|
{
|
|
450
454
|
kind: "para",
|
|
451
|
-
text: "
|
|
455
|
+
text: "[[ENTITY]] 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."
|
|
452
456
|
}
|
|
453
457
|
]
|
|
454
458
|
};
|
|
@@ -674,7 +678,7 @@ var privacy = {
|
|
|
674
678
|
metaTitle: "Privacy Policy \u2014 OrangeCheck",
|
|
675
679
|
metaDescription: "How OrangeCheck handles data and privacy. Non-custodial by design, minimal data collection, no account required, privacy-preserving analytics only.",
|
|
676
680
|
effective: "2025-09-30",
|
|
677
|
-
updated: "2026-
|
|
681
|
+
updated: "2026-11-06",
|
|
678
682
|
preamble: [
|
|
679
683
|
{
|
|
680
684
|
kind: "callout",
|
|
@@ -837,8 +841,8 @@ var privacy = {
|
|
|
837
841
|
v: "only during a Google or GitHub sign-in: HttpOnly; SameSite=Lax; 10 minutes; deleted when the sign-in completes"
|
|
838
842
|
},
|
|
839
843
|
{
|
|
840
|
-
k: "oc_theme \xB7 oc_skin \xB7 oc_motion",
|
|
841
|
-
v: "your light/dark, appearance
|
|
844
|
+
k: "oc_theme \xB7 oc_skin \xB7 oc_motion \xB7 oc_logo",
|
|
845
|
+
v: "your light/dark, appearance, reduced-motion and logo choices (Domain=.ochk.io); not used to identify you. `oc_logo` is set only when you open a page with `?logo=` in its address, and is kept for a year; `?logo=classic` deletes it"
|
|
842
846
|
}
|
|
843
847
|
]
|
|
844
848
|
},
|
|
@@ -1026,16 +1030,16 @@ var privacy = {
|
|
|
1026
1030
|
var protocolProfile = { terms, privacy };
|
|
1027
1031
|
|
|
1028
1032
|
// src/content/me.ts
|
|
1029
|
-
var COMMERCIAL_NOTE = "**ochk.app is a commercial product operated by
|
|
1033
|
+
var COMMERCIAL_NOTE = "**ochk.app 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 ochk.app. These Terms do. Its API is served at me.ochk.io, from the same accounts and records: these Terms govern the Service at either address, and \u201Cochk.app\u201D in them means both.";
|
|
1030
1034
|
var terms2 = {
|
|
1031
1035
|
kind: "terms",
|
|
1032
1036
|
eyebrow: "terms",
|
|
1033
1037
|
title: "Terms of service",
|
|
1034
|
-
description: "The terms governing your use of ochk.app and its API at me.ochk.io \u2014 a Bitcoin-backed identity that
|
|
1038
|
+
description: "The terms governing your use of ochk.app and its API at me.ochk.io \u2014 a Bitcoin-backed identity that will pay you in sats. orangecheck holds what you earn during bring-up and will pay it to a Lightning wallet you choose. No KYC.",
|
|
1035
1039
|
metaTitle: "Terms of Service \u2014 ochk.app",
|
|
1036
|
-
metaDescription: "Terms of service for ochk.app: a Bitcoin-backed identity that
|
|
1040
|
+
metaDescription: "Terms of service for ochk.app: a Bitcoin-backed identity that will pay users in sats. orangecheck holds what users earn during bring-up and will pay it to a Lightning wallet they choose. No KYC.",
|
|
1037
1041
|
effective: "2026-05-15",
|
|
1038
|
-
updated: "2026-
|
|
1042
|
+
updated: "2026-11-03",
|
|
1039
1043
|
preamble: [
|
|
1040
1044
|
{
|
|
1041
1045
|
kind: "callout",
|
|
@@ -1052,26 +1056,26 @@ var terms2 = {
|
|
|
1052
1056
|
blocks: [
|
|
1053
1057
|
{
|
|
1054
1058
|
kind: "para",
|
|
1055
|
-
text: 'ochk.app 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
|
|
1059
|
+
text: 'ochk.app 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 will flow back to you in sats. Your identity works across the orangecheck family. Every paid event on your account has a receipt, signed by us, and anyone holding one and the public key we publish can check its signature offline, without asking us; a receipt sent to Bitcoin for a timestamp also checks against Bitcoin once it is anchored. If you back your account, it is tied to bitcoin you hold, and that bitcoin stays in your wallet.'
|
|
1056
1060
|
},
|
|
1057
1061
|
{
|
|
1058
1062
|
kind: "para",
|
|
1059
|
-
text: "ochk.app is **not a bank, exchange, broker, or wallet provider.** It is an identity and reputation service with an attached cashback mechanism. **During bring-up
|
|
1063
|
+
text: "ochk.app is **not a bank, exchange, broker, or wallet provider.** It is an identity and reputation service with an attached cashback mechanism. **During bring-up orangecheck operates every role in that mechanism, including custody of the balance it will pay you.** That is a stage, not the design \u2014 see the custody section below for what holds today."
|
|
1060
1064
|
}
|
|
1061
1065
|
]
|
|
1062
1066
|
},
|
|
1063
1067
|
{
|
|
1064
1068
|
id: "accounts",
|
|
1065
1069
|
heading: "accounts & identity",
|
|
1066
|
-
hint: "
|
|
1070
|
+
hint: "four ways to sign in",
|
|
1067
1071
|
blocks: [
|
|
1068
1072
|
{
|
|
1069
1073
|
kind: "para",
|
|
1070
|
-
text: "You may create an identity
|
|
1074
|
+
text: "You may create an identity four ways: with **email** (a one-time code), **Google**, **GitHub**, or **a Bitcoin wallet** (you sign with BIP-322 \u2014 full self-custody of your signing key). With email, Google or GitHub you hold no key of your own, so orangecheck holds your signing key. However you sign in, during bring-up orangecheck holds the cashback you accrue; see custody below. Each way produces a stable, opaque `did:oc` identifier. No password is ever stored."
|
|
1071
1075
|
},
|
|
1072
1076
|
{
|
|
1073
1077
|
kind: "para",
|
|
1074
|
-
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.
|
|
1078
|
+
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."
|
|
1075
1079
|
}
|
|
1076
1080
|
]
|
|
1077
1081
|
},
|
|
@@ -1083,22 +1087,22 @@ var terms2 = {
|
|
|
1083
1087
|
blocks: [
|
|
1084
1088
|
{
|
|
1085
1089
|
kind: "stub",
|
|
1086
|
-
text: "The economics of earning sats on ochk.app \u2014 how billable events generate cashback, the fee split between you, the integrating site, federation operators, and
|
|
1090
|
+
text: "The economics of earning sats on ochk.app \u2014 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) \u2014 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 it works](/how) and [the earn page](/earn). This section will be completed following review by counsel."
|
|
1087
1091
|
}
|
|
1088
1092
|
]
|
|
1089
1093
|
},
|
|
1090
1094
|
{
|
|
1091
1095
|
id: "custody",
|
|
1092
|
-
heading: "custody &
|
|
1093
|
-
hint: "orangecheck-held during bring-up \xB7
|
|
1096
|
+
heading: "custody & payouts",
|
|
1097
|
+
hint: "orangecheck-held during bring-up \xB7 paid out to a wallet you choose",
|
|
1094
1098
|
blocks: [
|
|
1095
1099
|
{
|
|
1096
1100
|
kind: "para",
|
|
1097
|
-
text: "Custody depends on how you sign in, and the honest answer differs today from the design.\n\n**If you sign in with BIP-322, you hold your own keys.** They never leave your device.
|
|
1101
|
+
text: "Custody depends on how you sign in, and the honest answer differs today from the design.\n\n**If you sign in with BIP-322, you hold your own keys.** They never leave your device. orangecheck verifies signatures and relays envelopes; it cannot move the funds in your wallet. That is true now and does not change.\n\n**What you earn is a different matter.** Cashback you accrue is a balance orangecheck owes you until it is paid out to the destination you bind. During bring-up orangecheck holds those sats for every user, however they sign in.\n\n**If you sign in with email, Google or GitHub, orangecheck currently holds the key that will pay you.** The design is a Fedimint federation: independent guardians hold the bitcoin under a threshold scheme, and orangecheck\u2019s executor holds your claim on it, as ecash, until it is paid out to a Lightning wallet you choose. That federation does not exist yet: there are no independent guardians today, and during bring-up the signing key for the paying rail is operated by orangecheck. So during this period orangecheck is a custodian, of the signing keys of people who sign in with email, Google or GitHub and of every user\u2019s accrued cashback, and the party that will move the money once payouts open.\n\nWe state that plainly rather than describing the destination as though it were the present. **The live status of the paying rail \u2014 which posture is in force, what bounds it, and what has actually settled \u2014 is published on [the custody page](/custody) and machine-readable at `/api/federations`.** Those surfaces are computed from the system rather than written by hand, so they cannot drift from this document the way a fixed sentence would."
|
|
1098
1102
|
},
|
|
1099
1103
|
{
|
|
1100
1104
|
kind: "stub",
|
|
1101
|
-
text: "The complete custody disclosure \u2014 the federation threshold model and its failure modes, what each guardian can and cannot do, the durability of your balance if a federation or
|
|
1105
|
+
text: "The complete custody disclosure \u2014 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, and the allocation of risk between you, the federation, and orangecheck \u2014 is being finalized for publication before general availability. The honest current-state engineering account is published on the [security page](/security). This section will be completed following review by counsel."
|
|
1102
1106
|
}
|
|
1103
1107
|
]
|
|
1104
1108
|
},
|
|
@@ -1153,7 +1157,7 @@ var terms2 = {
|
|
|
1153
1157
|
blocks: [
|
|
1154
1158
|
{
|
|
1155
1159
|
kind: "para",
|
|
1156
|
-
text: "Sites that integrate ochk.app through its API at me.ochk.io get their own subject id for the events they report, and your Bitcoin address, email or attestation tier only if you grant that scope. Signing in gives every site the same orangecheck id (did:oc), so sites that compare ids can tell it is you. Integrators independently decide whether and how to trust your identity, including whether to admit, gate, or reject you.
|
|
1160
|
+
text: "Sites that integrate ochk.app through its API at me.ochk.io get their own subject id for the events they report, and your Bitcoin address, email or attestation tier only if you grant that scope. Signing in gives every site the same orangecheck id (did:oc), so sites that compare ids can tell it is you. 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\u2019s decisions or an integrator\u2019s own terms, pricing, or conduct."
|
|
1157
1161
|
}
|
|
1158
1162
|
]
|
|
1159
1163
|
},
|
|
@@ -1170,12 +1174,12 @@ var terms2 = {
|
|
|
1170
1174
|
},
|
|
1171
1175
|
{
|
|
1172
1176
|
kind: "para",
|
|
1173
|
-
text: "Nothing ochk.app provides is financial, investment, legal, or tax advice. ochk.app does not guarantee any level of earnings; cashback depends on integrator activity outside
|
|
1177
|
+
text: "Nothing ochk.app provides is financial, investment, legal, or tax advice. ochk.app does not guarantee any level of earnings; cashback depends on integrator activity outside orangecheck\u2019s control."
|
|
1174
1178
|
},
|
|
1175
1179
|
{ kind: "subhead", text: "regulatory status" },
|
|
1176
1180
|
{
|
|
1177
1181
|
kind: "stub",
|
|
1178
|
-
text: "ochk.app is designed so that cashback
|
|
1182
|
+
text: "ochk.app is designed so that independent Fedimint federations hold the bitcoin behind the cashback, while orangecheck\u2019s executor holds each person\u2019s claim on it and pays it out. **Those federations do not exist yet. During bring-up orangecheck itself custodies the cashback every user earns, and will be the one that transmits it**, because it is operating every role in the system in order to prove it works before third parties take any of them. Self-custody (BIP-322) users keep their own keys, which orangecheck never holds; the cashback they accrue is held by orangecheck until it is paid out, as it is for every user. The full regulatory analysis of both the bring-up posture and the designed end state \u2014 including orangecheck\u2019s 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 \u2014 is being prepared and will be published before general availability. This section will be completed following review by counsel."
|
|
1179
1183
|
}
|
|
1180
1184
|
]
|
|
1181
1185
|
},
|
|
@@ -1187,7 +1191,7 @@ var terms2 = {
|
|
|
1187
1191
|
blocks: [
|
|
1188
1192
|
{
|
|
1189
1193
|
kind: "para",
|
|
1190
|
-
text: "**Your right:** stop using ochk.app at any time; you may delete your identity in [your settings](/me/settings). **Our right:** suspend or terminate access with or without cause, including for abuse or legal risk. Deleting your identity does not settle a balance
|
|
1194
|
+
text: "**Your right:** stop using ochk.app at any time; you may delete your identity in [your settings](/me/settings). **Our right:** suspend or terminate access with or without cause, including for abuse or legal risk. Deleting your identity does not settle a balance orangecheck owes you. If your balance is above zero, bind a payout destination and instruct a cash-out before you delete, or contact us. Hashes anchored to Bitcoin and commitments published to Nostr are immutable and cannot be deleted by orangecheck; neither names you. The disclaimer, liability, indemnification, governing-law, and dispute provisions survive."
|
|
1191
1195
|
}
|
|
1192
1196
|
]
|
|
1193
1197
|
},
|
|
@@ -1195,17 +1199,17 @@ var terms2 = {
|
|
|
1195
1199
|
disputeResolution,
|
|
1196
1200
|
miscellaneous
|
|
1197
1201
|
],
|
|
1198
|
-
summary: "summary: an identity that
|
|
1202
|
+
summary: "summary: an identity that will pay you in sats. if you sign in with your own bitcoin wallet, you keep your keys; if you sign in with email, google or github, orangecheck holds the key that will pay you. either way, during bring-up orangecheck holds what you have earned until it is paid out. money, custody, fee, and regulatory terms are being finalized \u2014 see the marked sections."
|
|
1199
1203
|
};
|
|
1200
1204
|
var privacy2 = {
|
|
1201
1205
|
kind: "privacy",
|
|
1202
1206
|
eyebrow: "privacy",
|
|
1203
1207
|
title: "Privacy policy",
|
|
1204
|
-
description: "How ochk.app and its API at me.ochk.io handle your data: no KYC, no PII required, and a documented, falsifiable account of every record
|
|
1208
|
+
description: "How ochk.app and its API at me.ochk.io handle your data: no KYC, no PII required, and a documented, falsifiable account of every record orangecheck stores.",
|
|
1205
1209
|
metaTitle: "Privacy Policy \u2014 ochk.app",
|
|
1206
|
-
metaDescription: "ochk.app privacy policy. No KYC, no PII required, and a full account of what
|
|
1210
|
+
metaDescription: "ochk.app privacy policy. No KYC, no PII required, and a full account of what orangecheck stores.",
|
|
1207
1211
|
effective: "2026-05-15",
|
|
1208
|
-
updated: "2026-
|
|
1212
|
+
updated: "2026-11-06",
|
|
1209
1213
|
preamble: [
|
|
1210
1214
|
{
|
|
1211
1215
|
kind: "callout",
|
|
@@ -1219,7 +1223,7 @@ var privacy2 = {
|
|
|
1219
1223
|
{ k: "26 October", v: "a session record keeps no IP address, and the sign-in log keeps it for 90 days." },
|
|
1220
1224
|
{ k: "25 October", v: "me.ochk.io records which sites you sign in to or share data with, and when. No site sees that record." },
|
|
1221
1225
|
{ k: "24 October", v: "signing in gives every site the same did:oc." },
|
|
1222
|
-
{ k: "23 October", v: "an account a site makes for you through
|
|
1226
|
+
{ k: "23 October", v: "an account a site makes for you through orangecheck Connect keeps a hash of the site's id for you, a keyed hash of your email if the site sent one, when it was made, whether you agreed to earn, and what it earned." },
|
|
1223
1227
|
{ k: "19 October", v: "ochk.app is the Service, and me.ochk.io is its API." },
|
|
1224
1228
|
{ k: "15 October", v: "ochk.app's own cookies are listed: __Host-oc_session, and __Host-oc_oauth for at most ten minutes during a Google or GitHub sign-in." },
|
|
1225
1229
|
{ k: "8 October", v: "a session record keeps your user-agent, and an email is personal data." }
|
|
@@ -1227,7 +1231,7 @@ var privacy2 = {
|
|
|
1227
1231
|
},
|
|
1228
1232
|
{
|
|
1229
1233
|
kind: "callout",
|
|
1230
|
-
text: "This policy covers the Service at both of its addresses, ochk.app and its API at me.ochk.io: one account, one store of records, one operator; \u201Cochk.app\u201D below means both. Its product is identity that
|
|
1234
|
+
text: "This policy covers the Service at both of its addresses, ochk.app and its API at me.ochk.io: one account, one store of records, one operator; \u201Cochk.app\u201D below means both. Its product is identity that will pay 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)."
|
|
1231
1235
|
}
|
|
1232
1236
|
],
|
|
1233
1237
|
sections: [
|
|
@@ -1270,7 +1274,7 @@ var privacy2 = {
|
|
|
1270
1274
|
blocks: [
|
|
1271
1275
|
{
|
|
1272
1276
|
kind: "para",
|
|
1273
|
-
text: "The list below is what an auditor would find in
|
|
1277
|
+
text: "The list below is what an auditor would find in orangecheck\u2019s production infrastructure. Every item is metadata; none of it lets orangecheck sign on your behalf."
|
|
1274
1278
|
},
|
|
1275
1279
|
{
|
|
1276
1280
|
kind: "bullets",
|
|
@@ -1293,7 +1297,7 @@ var privacy2 = {
|
|
|
1293
1297
|
},
|
|
1294
1298
|
{
|
|
1295
1299
|
k: "custody-state envelopes",
|
|
1296
|
-
v: "a record of each
|
|
1300
|
+
v: "a record of each change in how your account is custodied, kept on your own identity timeline. None is made while the system is in testing."
|
|
1297
1301
|
},
|
|
1298
1302
|
{
|
|
1299
1303
|
k: "site sign-ins",
|
|
@@ -1336,7 +1340,7 @@ var privacy2 = {
|
|
|
1336
1340
|
blocks: [
|
|
1337
1341
|
{
|
|
1338
1342
|
kind: "para",
|
|
1339
|
-
text: "
|
|
1343
|
+
text: "orangecheck\u2019s billing engine necessarily knows which user earned which cashback across integrating sites \u2014 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."
|
|
1340
1344
|
}
|
|
1341
1345
|
]
|
|
1342
1346
|
},
|
|
@@ -1346,11 +1350,11 @@ var privacy2 = {
|
|
|
1346
1350
|
blocks: [
|
|
1347
1351
|
{
|
|
1348
1352
|
kind: "para",
|
|
1349
|
-
text: "On ochk.app,
|
|
1353
|
+
text: "On ochk.app, up to three cookies of its own, set for ochk.app alone. `__Host-oc_session` \u2014 a sign-in token bound to ochk.app (HttpOnly, Secure, SameSite=Lax); it cannot sign you in anywhere else. `__Host-oc_oauth` \u2014 kept for at most ten minutes while you sign in with Google or GitHub, then deleted. `oc_logo` \u2014 which of our two logos you chose, set only when you open a page with `?logo=` in its address and kept for a year; `?logo=classic` deletes it. Your light/dark choice stays in your browser\u2019s local storage, not a cookie. Page analytics use orangecheck\u2019s own counter at insights.ochk.io: no cookie; a visit is counted by a hash salted daily, the salt is deleted after 48 hours, and your IP address and browser string are never stored."
|
|
1350
1354
|
},
|
|
1351
1355
|
{
|
|
1352
1356
|
kind: "para",
|
|
1353
|
-
text: "On me.ochk.io,
|
|
1357
|
+
text: "On me.ochk.io, five cookies. `oc_session` \u2014 the Ed25519-signed session token issued by ochk.io (HttpOnly, Secure, SameSite=None, Domain=.ochk.io). `oc_theme`, `oc_skin`, `oc_motion` and `oc_logo` \u2014 your dark/light, appearance, reduced-motion and logo preferences (Domain=.ochk.io), not auth-bearing. No tracking cookies, no advertising IDs, no third-party pixels. Page analytics use [Plausible](https://plausible.io/privacy) \u2014 cookie-free, no PII, aggregate only."
|
|
1354
1358
|
}
|
|
1355
1359
|
]
|
|
1356
1360
|
},
|
|
@@ -1363,7 +1367,7 @@ var privacy2 = {
|
|
|
1363
1367
|
items: [
|
|
1364
1368
|
"Route cashback to the correct identity and wallet",
|
|
1365
1369
|
"Detect and prevent sybil farming, wash-trading, and abuse",
|
|
1366
|
-
"Operate sign-in and verification across the
|
|
1370
|
+
"Operate sign-in and verification across the orangecheck family",
|
|
1367
1371
|
"Fix bugs, improve the Service, and respond to support requests"
|
|
1368
1372
|
]
|
|
1369
1373
|
}
|
|
@@ -1417,7 +1421,7 @@ var privacy2 = {
|
|
|
1417
1421
|
blocks: [
|
|
1418
1422
|
{
|
|
1419
1423
|
kind: "para",
|
|
1420
|
-
text: "In [your settings](/me/settings) you can delete your account. A person completes the request, and we aim to do that within 48 hours: an alert tells us when one has waited a day. Completing it closes your sign-in, so signing in again starts a new account, and erases your data on ochk.io, me.ochk.io, vault, chat and cosign, except a few records. Payment records keep their amounts and times for accounting, and our audit log and your deletion request stay, without the reason you gave. We keep a record that your account was deleted, out of public view, so sessions you already had stop working and the deletion can be shown. Each keeps your account only as a keyed id, or not at all, so the record by itself doesn't say whose account it was. On cosign, your messages in conversations with other people and the reports you filed stay, with your account taken off them. Backups roll off within 30 days, and copies cached by our CDN expire within a day. Deleting does not pay out sats
|
|
1424
|
+
text: "In [your settings](/me/settings) you can delete your account. A person completes the request, and we aim to do that within 48 hours: an alert tells us when one has waited a day. Completing it closes your sign-in, so signing in again starts a new account, and erases your data on ochk.io, me.ochk.io, vault, chat and cosign, except a few records. Payment records keep their amounts and times for accounting, and our audit log and your deletion request stay, without the reason you gave. We keep a record that your account was deleted, out of public view, so sessions you already had stop working and the deletion can be shown. Each keeps your account only as a keyed id, or not at all, so the record by itself doesn't say whose account it was. On cosign, your messages in conversations with other people and the reports you filed stay, with your account taken off them. Backups roll off within 30 days, and copies cached by our CDN expire within a day. Deleting does not pay out sats orangecheck holds for you: settle a non-zero balance first. If you run a guardian, you can delete only once your operator key holds no seat or hosted guardian, has finished any exit, created no federation that still exists, and is owed nothing. Charter signatures, incidents and amendment proposals the key signed stay public under the key, with what you wrote in them; exit records and machine reports stay visible to that federation's guardians and to us. Hashes anchored to Bitcoin and records published to Nostr cannot be deleted by anyone. me.ochk.io's own anchors name no one, but attestations, polls, pledges, stamps and a chat listing you published carry your Bitcoin address."
|
|
1421
1425
|
}
|
|
1422
1426
|
]
|
|
1423
1427
|
},
|
|
@@ -1427,11 +1431,11 @@ var privacy2 = {
|
|
|
1427
1431
|
blocks: [
|
|
1428
1432
|
{
|
|
1429
1433
|
kind: "para",
|
|
1430
|
-
text: "A site that signs you in its own way can use
|
|
1434
|
+
text: "A site that signs you in its own way can use orangecheck Connect to make an orangecheck account for you. For that account orangecheck keeps a hash of the id the site gave you, never the id; a keyed hash of your email address if the site sent one, never the address; when the account was made; whether the site said you agreed to earn with it; and what it earned, if the site pays. It keeps no sign-in times, because the account has no sign-in of its own. Until you agree, through the site or by claiming it, the account is for sign-in only and earns nothing."
|
|
1431
1435
|
},
|
|
1432
1436
|
{
|
|
1433
1437
|
kind: "para",
|
|
1434
|
-
text: "You can claim it on ochk.app with a link the site gives you, or with an email address the site verified and you hold. It then becomes part of your own account, and deleting your account deletes it. The site can delete it too, for example when you close your account with that site, unless it holds earnings: those stay yours until you claim them. After a deletion
|
|
1438
|
+
text: "You can claim it on ochk.app with a link the site gives you, or with an email address the site verified and you hold. It then becomes part of your own account, and deleting your account deletes it. The site can delete it too, for example when you close your account with that site, unless it holds earnings: those stay yours until you claim them. After a deletion orangecheck keeps only a hash of the id the site gave you, with the site's app id, so the site cannot quietly make the account again; it can only when you agree again."
|
|
1435
1439
|
}
|
|
1436
1440
|
]
|
|
1437
1441
|
},
|
|
@@ -1635,7 +1639,7 @@ var privacy3 = {
|
|
|
1635
1639
|
metaTitle: "Privacy Policy \u2014 OC Vault",
|
|
1636
1640
|
metaDescription: "OC Vault privacy policy. End-to-end encrypted; OrangeCheck stores ciphertext only and cannot read your vault contents.",
|
|
1637
1641
|
effective: "2026-05-15",
|
|
1638
|
-
updated: "2026-
|
|
1642
|
+
updated: "2026-11-06",
|
|
1639
1643
|
preamble: [
|
|
1640
1644
|
{
|
|
1641
1645
|
kind: "callout",
|
|
@@ -1751,7 +1755,7 @@ var privacy3 = {
|
|
|
1751
1755
|
blocks: [
|
|
1752
1756
|
{
|
|
1753
1757
|
kind: "para",
|
|
1754
|
-
text: "No cookies of vault.ochk.io's own. The family sign-in cookie `oc_session` (set by ochk.io: HttpOnly; Secure; SameSite=None; Domain=.ochk.io; 30 days) and the appearance cookies `oc_theme`, `oc_skin` and `
|
|
1758
|
+
text: "No cookies of vault.ochk.io's own. The family sign-in cookie `oc_session` (set by ochk.io: HttpOnly; Secure; SameSite=None; Domain=.ochk.io; 30 days) and the appearance cookies `oc_theme`, `oc_skin`, `oc_motion` and `oc_logo` (your logo choice, set only when you open a page with `?logo=` in its address) apply here. Your vault data lives in your browser's IndexedDB, under your account. Page analytics use [Plausible](https://plausible.io/privacy) \u2014 cookie-free, no PII, aggregate only. No advertising or tracking cookies."
|
|
1755
1759
|
}
|
|
1756
1760
|
]
|
|
1757
1761
|
},
|
|
@@ -1859,8 +1863,14 @@ function fillSpec(spec, tokens) {
|
|
|
1859
1863
|
function buildDoc(siteSlug, kind) {
|
|
1860
1864
|
const ctx = getSiteContext(siteSlug);
|
|
1861
1865
|
const spec = PROFILES[ctx.profile][kind];
|
|
1866
|
+
const brand = ctx.brand ?? BRAND;
|
|
1867
|
+
const entity = ctx.brand ? ctx.brand : LEGAL_ENTITY;
|
|
1862
1868
|
const tokens = {
|
|
1863
1869
|
...GLOBAL_TOKENS,
|
|
1870
|
+
BRAND: brand,
|
|
1871
|
+
ENTITY: entity,
|
|
1872
|
+
ENTITY_LONG: LEGAL_ENTITY_LONG.replace(LEGAL_ENTITY, entity),
|
|
1873
|
+
ENTITY_UPPER: entity.toUpperCase(),
|
|
1864
1874
|
PRODUCT: ctx.product,
|
|
1865
1875
|
PRODUCT_SHORT: ctx.productShort,
|
|
1866
1876
|
HOST: ctx.host,
|