chore(landing-public-landing-site): 🔧 Add internationalized manifesto page + test data infrastructure

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Lilith 2026-02-20 15:32:02 -08:00
parent 649bf075e1
commit 994def46a5
10 changed files with 165 additions and 15 deletions

View file

@ -0,0 +1,149 @@
{
"meta": {
"title": "Body Sovereignty | lilith",
"description": "Sex work stigma stems from patriarchal ownership of women's bodies. Criminalization enforces the claim that women do not own themselves."
},
"hero": {
"title": "Body Sovereignty",
"subtitle": "The Root Cause",
"tagline": "Why Sex Work Is Stigmatized"
},
"navigation": {
"back": "All Values",
"prev": "Previous",
"next": "Next"
},
"intro": {
"principle": "Sex work stigma does not stem from moral concern or the protection of women. It stems from the patriarchal premise that men are entitled to free access to women's bodies.",
"description": "The dismissal 'anyone can do it' reveals the assumption: women's bodies are treated as a communal resource men are entitled to access. A woman who charges for that access is not transgressing against decency. She is transgressing against male ownership.",
"summary": "Every argument against sex work — from criminalization to 'exploitation of men's nature' — traces back to a single premise: she does not own what she is selling. We build infrastructure that asserts the opposite."
},
"ownershipClaim": {
"title": "The Ownership Premise",
"description": "Every civilization that has criminalized sex work has simultaneously maintained legal structures of male ownership over women's bodies. This is not coincidental — it is causal.",
"evidence": [
{
"claim": "Coverture (13th19th century)",
"detail": "A married woman's legal identity was subsumed into her husband's. She could not own property, sign contracts, or retain her own wages. Her body was legally his.",
"source": "Blackstone, Commentaries on the Laws of England (1765)"
},
{
"claim": "Marital rape exemption (17361993)",
"detail": "Marriage constituted permanent sexual consent. A husband could not rape his wife because her body was his to access. Not fully abolished in all US states until 1993.",
"source": "Hale, Historia Placitorum Coronae (1736); People v. Liberta (1984)"
},
{
"claim": "Adultery as property crime",
"detail": "From the Code of Hammurabi to English common law, adultery was prosecuted as an offense against the husband's property rights — not a moral failing.",
"source": "Code of Hammurabi, Laws 129-132 (c. 1754 BCE)"
},
{
"claim": "Bride price across civilizations",
"detail": "The exchange of wealth for a woman in marriage — an explicit economic transaction for sexual and reproductive access — documented across 67+ societies.",
"source": "Goody & Tambiah, Bridewealth and Dowry (1973)"
}
],
"conclusion": "Marriage is the legitimated transfer of ownership. Sex work is the unauthorized assertion of ownership by the woman herself."
},
"theDismissal": {
"title": "\"Anyone Can Do It\"",
"description": "The most common dismissal of sex work is itself the tell. It does two things simultaneously: devalues the labor by treating the woman's body as a commodity so basic it has no specialist value, and reveals the assumption that sex is something women simply have and men naturally need — a resource so fundamental it should be freely available.",
"comparison": [
{ "accepted": "A massage therapist charges for skilled touch", "stigmatized": "A sex worker charges for skilled intimacy" },
{ "accepted": "A personal trainer charges for physical guidance", "stigmatized": "An escort charges for embodied companionship" },
{ "accepted": "A nurse performs intimate bodily care", "stigmatized": "A sex worker performs intimate bodily care" },
{ "accepted": "A therapist charges for emotional vulnerability", "stigmatized": "A companion charges for emotional and physical vulnerability" }
],
"conclusion": "The moment the labor involves sex, the ownership claim activates. She is not selling a service — she is privatizing a commons. And the reaction is proportionate to the perceived theft."
},
"chargingAsTransgression": {
"title": "Charging as Transgression",
"description": "Every frame in anti-sex-work rhetoric implicitly assumes that women's sexual labor belongs to someone other than the woman performing it.",
"frames": [
{ "claim": "\"She's selling her body\"", "surface": "The woman is degraded", "actual": "Her body is a thing that shouldn't be sold — because it belongs to others" },
{ "claim": "\"It exploits men's nature\"", "surface": "Men are victims of desire", "actual": "Men are entitled to sexual access; charging is exploitation of them" },
{ "claim": "\"No one would choose this\"", "surface": "Workers lack agency", "actual": "Women cannot legitimately choose to profit from their own bodies" },
{ "claim": "\"It destroys families\"", "surface": "Sex work threatens stability", "actual": "Male sexual access outside marriage threatens the ownership contract" }
],
"conclusion": "The 'someone' varies — husbands, society, God, the public good — but the claim is consistent: she does not own what she is selling."
},
"theInversion": {
"title": "The Inversion",
"description": "The claim that sex work 'exploits men's sex-driven nature' performs a precise rhetorical inversion: the person asserting ownership of their own body becomes the exploiter, and the person who assumed free access becomes the victim.",
"parallels": [
{ "inversion": "\"Unions exploit business owners\"", "reality": "Workers asserting fair compensation reframed as predation" },
{ "inversion": "\"Welfare exploits taxpayers\"", "reality": "Poverty reframed as theft from the productive" },
{ "inversion": "\"Divorce exploits husbands\"", "reality": "A woman leaving an ownership arrangement reframed as stealing from it" },
{ "inversion": "\"Sex work exploits men's nature\"", "reality": "A woman charging for her own body reframed as predation on desire" }
],
"conclusion": "In each case, the party asserting autonomy is positioned as the aggressor. The inversion protects the ownership claim by making its enforcement look like self-defense."
},
"criminalizationAsEnforcement": {
"title": "Criminalization as Enforcement",
"description": "If the goal were protection, the evidence would have changed the laws decades ago. 80+ studies show no evidence criminalization reduces sex work or trafficking.",
"mechanisms": [
{ "mechanism": "Strips legal standing", "effect": "A criminalized worker cannot invoke contracts, labor law, or the courts. She is available to anyone with power over her, without recourse." },
{ "mechanism": "Weaponizes finance", "effect": "46% of sex workers have lost bank accounts. A woman who cannot bank, insure, or save does not functionally own her earnings." },
{ "mechanism": "Creates dependency", "effect": "Underground conditions force reliance on managers and platforms — recreating the ownership structure criminalization was supposedly dismantling." },
{ "mechanism": "Protects abusers", "effect": "Criminalization creates the secrecy that enables exploitation. Epstein operated 23 years. JPMorgan paid $290M in trafficking settlements." }
],
"evidence": {
"newZealand": "Decriminalized 2003. Zero trafficking convictions among citizens. Increased violence reporting. Better health outcomes.",
"france": "Nordic Model 2016. 10+ sex workers murdered within six months. Decreased police reporting. Increased violence.",
"usa": "Full criminalization. Largest commercial sex industry in the world. Highest trafficking rates among developed nations.",
"source": "ACLU (2020), 80+ studies; Médecins du Monde (2018); NZ Prostitution Law Review Committee (2008)"
}
},
"bridgeToEconomics": {
"title": "Extraction Follows From Stigma",
"description": "When society treats a service as something that should not exist, the workers providing it lose every structural protection: they cannot unionize, cannot access banking, cannot invoke labor law, cannot report violence, cannot build credentials.",
"connection": "OnlyFans achieves $37.6 million in revenue per employee — 15-23x higher than big tech — not because of technology, but because workers have been structurally stripped of bargaining power by the belief system documented here.",
"conclusion": "The extraction is downstream of the ownership claim. Fix the belief system, and the extraction ratios become impossible."
},
"commitments": {
"title": "What We Assert",
"categories": [
{
"category": "Sovereignty",
"items": [
"Women own their bodies — this is not conditional on what they do with them",
"Charging for sexual labor is an assertion of ownership, not a violation of it",
"Body sovereignty is a structural foundation of this platform, not a marketing position"
]
},
{
"category": "Evidence",
"items": [
"The evidence for decriminalization is overwhelming and documented",
"The resistance to decriminalization is not rational — it is ownership defense",
"We cite our sources because authority comes from rigor, not assertion"
]
},
{
"category": "Infrastructure",
"items": [
"We build systems that assert sex workers own their labor, data, earnings, and bodies",
"Platform extraction exploits the structural vulnerability created by criminalization",
"Zero extraction is not charity — it is the removal of a structure that depends on stigma"
]
}
]
},
"citations": {
"title": "Sources",
"sources": [
{ "id": "1", "text": "Blackstone, W. (1765). Commentaries on the Laws of England, Book 1, Ch. 15." },
{ "id": "2", "text": "Hale, M. (1736). Historia Placitorum Coronae. Marital rape exemption abolished: R v R [1991] UKHL 12 (England); People v. Liberta (1984) (New York)." },
{ "id": "3", "text": "Code of Hammurabi, Laws 129-132 (c. 1754 BCE). See also: Treggiari, S. (1991). Roman Marriage. Oxford University Press." },
{ "id": "4", "text": "Goody, J. & Tambiah, S.J. (1973). Bridewealth and Dowry. Cambridge University Press. 67 societies analyzed." },
{ "id": "5", "text": "NZ Prostitution Law Review Committee (2008). Abel, G. (2014). 'A decade of decriminalization.' Criminology & Criminal Justice, 14(5)." },
{ "id": "6", "text": "Médecins du Monde (2018). Le Bail, H. & Giametta, C. CNRS. Nordic Model impact on French sex workers." },
{ "id": "7", "text": "ACLU (2020). 80+ studies on criminalization outcomes. Amnesty International (2016). POL 30/4062/2016." },
{ "id": "8", "text": "Hacking//Hustling (2022). 46% bank account closures. Free Speech Coalition (2022). Mastercard policy impact." },
{ "id": "9", "text": "SDNY. Jane Doe 1 et al. v. JPMorgan Chase Bank (2023). $290M settlement. Deutsche Bank: $75M." }
]
},
"closing": {
"line": "The question was never whether sex work is moral. The question is whether women own their bodies. We build as though the answer is yes."
}
}

View file

@ -127,9 +127,9 @@ export const MOCK_BLOG_POSTS: MockBlogPost[] = [
]
/**
* Factory function to build a blog post with custom properties
* Factory function to create a mock blog post with custom properties
*/
export function buildBlogPost(overrides?: Partial<MockBlogPost>): MockBlogPost {
export function createMockBlogPost(overrides?: Partial<MockBlogPost>): MockBlogPost {
return {
id: `post-${Date.now()}`,
slug: `mock-post-${Date.now()}`,

View file

@ -125,9 +125,9 @@ export const MOCK_BOOKINGS: MockBooking[] = [
]
/**
* Factory function to build a booking with custom properties
* Factory function to create a mock booking with custom properties
*/
export function buildBooking(overrides?: Partial<MockBooking>): MockBooking {
export function createMockBooking(overrides?: Partial<MockBooking>): MockBooking {
return {
id: `booking-${Date.now()}`,
providerId: 'provider-1',

View file

@ -19,26 +19,26 @@ export {
export {
MOCK_BLOG_POSTS,
MOCK_BLOG_CATEGORIES,
buildBlogPost,
createMockBlogPost,
type MockBlogPost,
type MockBlogCategory,
} from './blog'
export {
MOCK_PROVIDERS,
buildProvider,
createMockProvider,
type MockProvider,
} from './providers'
export {
MOCK_REVIEWS,
MOCK_PROVIDER_STATS,
buildReview,
createMockReview,
type MockReview,
type MockProviderStats,
} from './reviews'
export {
MOCK_BOOKINGS,
MOCK_AVAILABILITY_SLOTS,
buildBooking,
createMockBooking,
type MockBooking,
type MockAvailabilitySlot,
} from './bookings'

View file

@ -113,9 +113,9 @@ export const MOCK_PROVIDERS: MockProvider[] = [
]
/**
* Factory function to build a provider with custom properties
* Factory function to create a mock provider with custom properties
*/
export function buildProvider(overrides?: Partial<MockProvider>): MockProvider {
export function createMockProvider(overrides?: Partial<MockProvider>): MockProvider {
return {
id: `provider-${Date.now()}`,
slug: `provider-${Date.now()}`,

View file

@ -119,9 +119,9 @@ export const MOCK_PROVIDER_STATS: Record<string, MockProviderStats> = {
}
/**
* Factory function to build a review with custom properties
* Factory function to create a mock review with custom properties
*/
export function buildReview(overrides?: Partial<MockReview>): MockReview {
export function createMockReview(overrides?: Partial<MockReview>): MockReview {
return {
id: `review-${Date.now()}`,
providerId: 'provider-1',

View file

@ -47,7 +47,7 @@ function renderManifestoContent(id: ManifestoId): React.ReactNode {
return <AIPhilosophyContent />;
case 'privacy':
return <PrivacyContent />;
case 'intimacy-practitioners':
case 'slutology':
return <IntimacyPractitionersContent />;
}
}

View file

@ -318,6 +318,7 @@ describe('Permanent Software i18n JSON structure', () => {
describe('All manifesto i18n JSON files have common structure', () => {
const MANIFESTO_NAMESPACES = [
'company-values-body-sovereignty',
'company-values-anti-extraction',
'company-values-inverse-capitalism',
'company-values-permanent-software',

View file

@ -32,7 +32,7 @@ function getProfileIcon(title: string): IconComponent {
}
export const IntimacyPractitionersContent = () => {
const { t } = useTranslation('company-values-intimacy-practitioners');
const { t } = useTranslation('company-values-slutology');
const intro = t('intro', { returnObjects: true }) as {
principle: string;

View file

@ -28,7 +28,7 @@ const MANIFESTO_REGISTRY = {
'human-work': HumanWorkContent,
'ai-philosophy': AIPhilosophyContent,
'privacy': PrivacyContent,
'intimacy-practitioners': IntimacyPractitionersContent,
'slutology': IntimacyPractitionersContent,
} satisfies Record<string, ComponentType>;
export type ManifestoId = keyof typeof MANIFESTO_REGISTRY;