Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

57 changes: 0 additions & 57 deletions apps/web/src/lib/model-experiment-request-partitions.test.ts

This file was deleted.

44 changes: 0 additions & 44 deletions apps/web/src/lib/model-experiment-request-partitions.ts

This file was deleted.

93 changes: 0 additions & 93 deletions apps/web/src/lib/user/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,6 @@ import {
microdollar_usage,
microdollar_usage_metadata,
system_prompt_prefix,
model_experiment,
model_experiment_variant,
model_experiment_variant_version,
model_experiment_request,
stripe_dispute_actions,
stripe_dispute_cases,
stripe_early_fraud_warning_cases,
Expand Down Expand Up @@ -278,10 +274,6 @@ describe('User', () => {
await db.delete(organization_user_limits);
await db.delete(organization_memberships);
await db.delete(free_model_usage);
await db.delete(model_experiment_request);
await db.delete(model_experiment_variant_version);
await db.delete(model_experiment_variant);
await db.delete(model_experiment);
await db.delete(microdollar_usage_metadata);
await db.delete(microdollar_usage);
await db.delete(user_feedback);
Expand Down Expand Up @@ -5424,91 +5416,6 @@ describe('User', () => {
expect(softDeletedCreator?.can_manage_credits).toBe(false);
});

it('should preserve model experiment attribution and prompt hashes', async () => {
const user = await insertTestUser();
const usageId = randomUUID();
const createdAt = '2026-05-25T12:00:00.000Z';
const requestBodySha256 = 'a'.repeat(64);

await db.insert(microdollar_usage).values({
id: usageId,
kilo_user_id: user.id,
cost: 0,
input_tokens: 100,
output_tokens: 50,
cache_write_tokens: 0,
cache_hit_tokens: 0,
created_at: createdAt,
provider: 'custom',
model: 'partner/checkpoint-rc1',
requested_model: 'kilo/preview-experiment-test',
has_error: false,
});

const [experiment] = await db
.insert(model_experiment)
.values({
public_model_id: 'kilo/preview-experiment-test',
name: 'Soft-delete retention test',
status: 'active',
created_by_user_id: user.id,
})
.returning({ id: model_experiment.id });
if (!experiment) throw new Error('Failed to insert model experiment');

const [variant] = await db
.insert(model_experiment_variant)
.values({
experiment_id: experiment.id,
label: 'A',
weight: 1,
})
.returning({ id: model_experiment_variant.id });
if (!variant) throw new Error('Failed to insert model experiment variant');

const [variantVersion] = await db
.insert(model_experiment_variant_version)
.values({
variant_id: variant.id,
upstream: {
internal_id: 'partner/checkpoint-rc1',
base_url: 'https://partner.example.com/v1',
},
encrypted_api_key: { iv: 'iv', data: 'data', authTag: 'authTag' },
created_by: user.id,
})
.returning({ id: model_experiment_variant_version.id });
if (!variantVersion) throw new Error('Failed to insert model experiment variant version');

await db.insert(model_experiment_request).values({
usage_id: usageId,
variant_version_id: variantVersion.id,
allocation_subject: 'user',
client_request_id: 'client-message-id',
request_kind: 'chat_completions',
request_body_sha256: requestBodySha256,
was_truncated: false,
created_at: createdAt,
});

await softDeleteUser(user.id);

const [usage] = await db
.select()
.from(microdollar_usage)
.where(eq(microdollar_usage.id, usageId));
expect(usage?.kilo_user_id).toBe(user.id);

const [attribution] = await db
.select()
.from(model_experiment_request)
.where(eq(model_experiment_request.usage_id, usageId));
if (!attribution) throw new Error('Expected model experiment attribution to be retained');
expect(attribution.request_body_sha256).toBe(requestBodySha256);
expect(attribution.client_request_id).toBe('client-message-id');
expect(new Date(attribution.created_at).toISOString()).toBe(createdAt);
});

it('should preserve Kilo Pass subscriptions and issuance chain', async () => {
const user = await insertTestUser();

Expand Down
2 changes: 0 additions & 2 deletions apps/web/src/lib/user/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1033,8 +1033,6 @@ export async function assertUserCanBeSoftDeleted(userId: string): Promise<void>
* - stytch_fingerprints and provider safety identifiers (abuse detection)
* - referral_code_usages (financial, references anonymized user)
* - kiloclaw_subscriptions, kiloclaw_earlybird_purchases, kiloclaw_email_log (retained records)
* - model_experiment_request (experiment attribution and prompt hashes retained
* under the dedicated experiment retention policy)
* - kiloclaw_scheduled_action_targets (retained operational records;
* - transactional_email_log (retained outbox marker, financial record;
* user_id FK references the anonymized kilocode_users row and optional
Expand Down
10 changes: 0 additions & 10 deletions apps/web/src/tests/setup/workerSetup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import {
provisionComputeUsageChargePartitions,
provisionExaUsageLogPartitions,
} from '@/lib/usage-partitions';
import { provisionModelExperimentRequestPartitions } from '@/lib/model-experiment-request-partitions';
import { existsSync, writeFileSync, mkdirSync } from 'fs';
import { join } from 'path';
import { shutdownPosthog } from '@/lib/posthog';
Expand Down Expand Up @@ -75,15 +74,6 @@ beforeAll(async () => {
`Failed to create compute usage charge partition ${name}: ${error instanceof Error ? error.message : String(error)}`
);
}

const { errors: modelExperimentPartitionErrors } =
await provisionModelExperimentRequestPartitions(testDb);
if (modelExperimentPartitionErrors.length > 0) {
const [{ name, error }] = modelExperimentPartitionErrors;
throw new Error(
`Failed to create model experiment request partition ${name}: ${error instanceof Error ? error.message : String(error)}`
);
}
} finally {
await testPool.end();
}
Expand Down
4 changes: 0 additions & 4 deletions apps/web/vercel.json
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,6 @@
"path": "/api/cron/usage-partition-maintenance",
"schedule": "0 0 1 * *"
},
{
"path": "/api/cron/model-experiment-request-partition-maintenance",
"schedule": "0 0 1 * *"
},
{
"path": "/api/cron/cleanup-free-model-usage",
"schedule": "0 * * * *"
Expand Down