@noodleseed/one 0.53.0 → 0.55.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.
Files changed (79) hide show
  1. package/dist/commands/billing-enforcement-activation-ops.js +3 -0
  2. package/dist/commands/billing-enforcement-activation-ops.js.map +1 -1
  3. package/node_modules/@noodle-borg/service/dist/billing/active-commercial-entitlement.d.ts +25 -0
  4. package/node_modules/@noodle-borg/service/dist/billing/active-commercial-entitlement.d.ts.map +1 -0
  5. package/node_modules/@noodle-borg/service/dist/billing/active-commercial-entitlement.js +94 -0
  6. package/node_modules/@noodle-borg/service/dist/billing/active-commercial-entitlement.js.map +1 -0
  7. package/node_modules/@noodle-borg/service/dist/billing/enforcement-release-config.d.ts +1 -1
  8. package/node_modules/@noodle-borg/service/dist/billing/enforcement-release-config.d.ts.map +1 -1
  9. package/node_modules/@noodle-borg/service/dist/billing/enforcement-release-config.js +2 -5
  10. package/node_modules/@noodle-borg/service/dist/billing/enforcement-release-config.js.map +1 -1
  11. package/node_modules/@noodle-borg/service/dist/billing/integration.d.ts +2 -1
  12. package/node_modules/@noodle-borg/service/dist/billing/integration.d.ts.map +1 -1
  13. package/node_modules/@noodle-borg/service/dist/billing/integration.js +2 -5
  14. package/node_modules/@noodle-borg/service/dist/billing/integration.js.map +1 -1
  15. package/node_modules/@noodle-borg/service/dist/billing/paid-plan-catalog.d.ts +1 -0
  16. package/node_modules/@noodle-borg/service/dist/billing/paid-plan-catalog.d.ts.map +1 -1
  17. package/node_modules/@noodle-borg/service/dist/billing/paid-plan-catalog.js +7 -0
  18. package/node_modules/@noodle-borg/service/dist/billing/paid-plan-catalog.js.map +1 -1
  19. package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.d.ts +4 -1
  20. package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.d.ts.map +1 -1
  21. package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.js +21 -7
  22. package/node_modules/@noodle-borg/service/dist/billing/postgres-authoritative-authority.js.map +1 -1
  23. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-contract-cutover.d.ts +27 -0
  24. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-contract-cutover.d.ts.map +1 -0
  25. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-contract-cutover.js +284 -0
  26. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-contract-cutover.js.map +1 -0
  27. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-counters.js +4 -5
  28. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-counters.js.map +1 -1
  29. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.d.ts +0 -1
  30. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.d.ts.map +1 -1
  31. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.js +92 -27
  32. package/node_modules/@noodle-borg/service/dist/billing/postgres-commercial-enforcement-projection.js.map +1 -1
  33. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-schema.d.ts.map +1 -1
  34. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-schema.js +55 -0
  35. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-activation-schema.js.map +1 -1
  36. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-release-activation.d.ts +4 -7
  37. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-release-activation.d.ts.map +1 -1
  38. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-release-activation.js +34 -4
  39. package/node_modules/@noodle-borg/service/dist/billing/postgres-enforcement-release-activation.js.map +1 -1
  40. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.d.ts +0 -1
  41. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.d.ts.map +1 -1
  42. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.js +72 -27
  43. package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission.js.map +1 -1
  44. package/node_modules/@noodle-borg/service/dist/billing/postgres-production-app-admission.d.ts.map +1 -1
  45. package/node_modules/@noodle-borg/service/dist/billing/postgres-production-app-admission.js +56 -26
  46. package/node_modules/@noodle-borg/service/dist/billing/postgres-production-app-admission.js.map +1 -1
  47. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-authority.d.ts +5 -0
  48. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-authority.d.ts.map +1 -0
  49. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-authority.js +97 -0
  50. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-authority.js.map +1 -0
  51. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-persistence.d.ts +50 -0
  52. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-persistence.d.ts.map +1 -0
  53. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-persistence.js +221 -0
  54. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-persistence.js.map +1 -0
  55. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-support.d.ts +8 -0
  56. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-support.d.ts.map +1 -0
  57. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-support.js +42 -0
  58. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation-support.js.map +1 -0
  59. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.d.ts +15 -0
  60. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.d.ts.map +1 -0
  61. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.js +123 -0
  62. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-reconciliation.js.map +1 -0
  63. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-schema.js +100 -0
  64. package/node_modules/@noodle-borg/service/dist/billing/postgres-subscription-schema.js.map +1 -1
  65. package/node_modules/@noodle-borg/service/dist/billing/service-enforcement-release.d.ts.map +1 -1
  66. package/node_modules/@noodle-borg/service/dist/billing/service-enforcement-release.js +4 -1
  67. package/node_modules/@noodle-borg/service/dist/billing/service-enforcement-release.js.map +1 -1
  68. package/node_modules/@noodle-borg/service/dist/billing/subscription-model.d.ts.map +1 -1
  69. package/node_modules/@noodle-borg/service/dist/billing/subscription-model.js +9 -1
  70. package/node_modules/@noodle-borg/service/dist/billing/subscription-model.js.map +1 -1
  71. package/node_modules/@noodle-borg/service/dist/billing/subscription-reconciliation.d.ts +45 -0
  72. package/node_modules/@noodle-borg/service/dist/billing/subscription-reconciliation.d.ts.map +1 -0
  73. package/node_modules/@noodle-borg/service/dist/billing/subscription-reconciliation.js +165 -0
  74. package/node_modules/@noodle-borg/service/dist/billing/subscription-reconciliation.js.map +1 -0
  75. package/node_modules/@noodle-borg/service/dist/billing-public.d.ts +2 -0
  76. package/node_modules/@noodle-borg/service/dist/billing-public.d.ts.map +1 -1
  77. package/node_modules/@noodle-borg/service/dist/billing-public.js +2 -0
  78. package/node_modules/@noodle-borg/service/dist/billing-public.js.map +1 -1
  79. package/package.json +1 -1
@@ -0,0 +1,284 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { insertAuditEvent } from '@noodle-borg/module-audit';
3
+ import { BillingActiveCommercialEntitlementInconsistentError, resolveActiveBillingCommercialEntitlement, } from './active-commercial-entitlement.js';
4
+ import { BillingEnforcementActivationConflictError, normalizeActivationServiceUrl, } from './enforcement-activation.js';
5
+ import { BILLING_ENFORCEMENT_PRODUCTION_ORIGIN, } from './enforcement-release-config.js';
6
+ import { BILLING_METER_VALIDATION_WRITER_CONTRACT_VERSION } from './meter-validation-epoch.js';
7
+ import { billingContentChecksum } from './model.js';
8
+ import { readBillingAuthoritativeAuthorityTx } from './postgres-authoritative-authority.js';
9
+ import { BILLING_ENFORCEMENT_ACTIVATION_LOCK_TIMEOUT_MS, validateActivationLockTimeout, withBillingEnforcementActivationTransaction, } from './postgres-enforcement-activation-locks.js';
10
+ import { readPostgresBillingEnforcementActivationSignalsTx } from './postgres-enforcement-activation-preflight.js';
11
+ import { requireActivationState, requireActiveAuthoritativeEpoch, stateRowToStatus, validateReleaseSha, } from './postgres-enforcement-activation-support.js';
12
+ import { readBillingMeterTransactionTime } from './postgres-meter-clock.js';
13
+ const COMMERCIAL_V2_ADMISSION_CONTRACT_VERSION = 2;
14
+ /** Advance an already-active Free-v1 authority without replacing or resetting its authoritative epoch. */
15
+ export function ensurePostgresReleaseManagedPaidV2Contract(pool, options) {
16
+ const identity = validateTransitionIdentity(options);
17
+ if (options.mode !== 'paid_v2')
18
+ throw new Error('paid-v2 contract transition requires paid_v2 mode');
19
+ const lockTimeoutMs = validateActivationLockTimeout(options.lockTimeoutMs ?? BILLING_ENFORCEMENT_ACTIVATION_LOCK_TIMEOUT_MS);
20
+ const id = options.id ?? randomUUID;
21
+ return withBillingEnforcementActivationTransaction(pool, lockTimeoutMs, async (client) => {
22
+ const state = await requireActivationState(client, true);
23
+ if (state.state !== 'active') {
24
+ throw conflict('activation_state_conflict', 'paid-v2 contract transition requires active billing enforcement');
25
+ }
26
+ const status = stateRowToStatus(state);
27
+ const authority = await readBillingAuthoritativeAuthorityTx(client, {
28
+ keyGeneration: options.keyGeneration,
29
+ });
30
+ if (authority.state !== 'active' || authority.epochId !== status.activeEpochId) {
31
+ throw conflict('activation_configuration_unavailable', 'active billing enforcement authority is inconsistent');
32
+ }
33
+ const activeEpoch = await requireActiveAuthoritativeEpoch(client, status.activeEpochId);
34
+ if (activeEpoch.writer_contract_version !== BILLING_METER_VALIDATION_WRITER_CONTRACT_VERSION) {
35
+ throw conflict('activation_configuration_unavailable', 'active billing enforcement is incompatible with this release');
36
+ }
37
+ if (authority.admissionContractVersion === COMMERCIAL_V2_ADMISSION_CONTRACT_VERSION) {
38
+ await assertCommercialContractTransitionEvidenceTx(client, state);
39
+ return result(state, false);
40
+ }
41
+ const transitionedAt = await readBillingMeterTransactionTime(client);
42
+ await assertCanonicalEnforcedFreeStateTx(client, state, transitionedAt, identity.releaseSha);
43
+ const existingEvidence = await client.query('SELECT count(*)::text AS count FROM billing_commercial_contract_transitions');
44
+ if (existingEvidence.rows[0]?.count !== '0') {
45
+ throw conflict('activation_configuration_unavailable', 'billing commercial contract transition evidence is inconsistent');
46
+ }
47
+ const epochUpdate = await client.query(`UPDATE billing_meter_epochs
48
+ SET admission_contract_version = 2
49
+ WHERE id = $1 AND purpose = 'authoritative' AND state = 'active'
50
+ AND admission_contract_version = 1`, [status.activeEpochId]);
51
+ const activationUpdate = await client.query(`UPDATE billing_enforcement_activation_state
52
+ SET admission_contract_version = 2, updated_at = $2
53
+ WHERE singleton = true AND state = 'active' AND generation = $1
54
+ AND active_epoch_id = $3 AND admission_contract_version = 1`, [status.generation, transitionedAt, status.activeEpochId]);
55
+ if (epochUpdate.rowCount !== 1 || activationUpdate.rowCount !== 1) {
56
+ throw conflict('activation_state_conflict', 'billing commercial contract authority changed concurrently');
57
+ }
58
+ const evidence = transitionEvidence({
59
+ operationId: `bcct_${id()}`,
60
+ generation: status.generation,
61
+ epochId: status.activeEpochId,
62
+ activationServiceReleaseSha: status.activationServiceReleaseSha,
63
+ activationApprovalChecksum: status.approvalChecksum,
64
+ transitionServiceReleaseSha: identity.releaseSha,
65
+ systemReleaseId: options.systemReleaseId,
66
+ manifestChecksum: options.manifestChecksum,
67
+ serviceOrigin: identity.serviceOrigin,
68
+ transitionedAt,
69
+ });
70
+ await insertTransitionEvidence(client, evidence);
71
+ await insertAuditEvent(client, {
72
+ eventType: 'billing.enforcement.contract_upgraded',
73
+ org: 'platform',
74
+ actorSubject: 'system:production-release',
75
+ decision: 'allow',
76
+ status: 201,
77
+ details: {
78
+ source: 'system_release_boot',
79
+ generation: status.generation,
80
+ activeEpochId: status.activeEpochId,
81
+ fromAdmissionContractVersion: 1,
82
+ toAdmissionContractVersion: 2,
83
+ systemReleaseId: options.systemReleaseId,
84
+ transitionServiceReleaseSha: identity.releaseSha,
85
+ manifestChecksum: options.manifestChecksum,
86
+ transitionChecksum: evidence.transitionChecksum,
87
+ },
88
+ }, { now: () => new Date(transitionedAt) });
89
+ return { ...result({ ...state, admission_contract_version: 2 }, true) };
90
+ });
91
+ }
92
+ /** A v2-compatible restart must prove the immutable release evidence that authorized the one-way change. */
93
+ export async function assertCommercialContractTransitionEvidenceTx(client, state) {
94
+ const { rows } = await client.query('SELECT * FROM billing_commercial_contract_transitions WHERE singleton = true');
95
+ const row = rows[0];
96
+ const status = stateRowToStatus(state);
97
+ if (row === undefined ||
98
+ rows.length !== 1 ||
99
+ status.admissionContractVersion !== 2 ||
100
+ row.schema_version !== 1 ||
101
+ row.from_admission_contract_version !== 1 ||
102
+ row.to_admission_contract_version !== 2 ||
103
+ row.generation !== status.generation ||
104
+ row.epoch_id !== status.lastEpochId ||
105
+ row.activation_service_release_sha !== status.activationServiceReleaseSha ||
106
+ row.activation_approval_checksum !== status.approvalChecksum ||
107
+ row.service_origin !== BILLING_ENFORCEMENT_PRODUCTION_ORIGIN) {
108
+ throw transitionEvidenceUnavailable();
109
+ }
110
+ const transitionedAt = toIso(row.transitioned_at);
111
+ const checkedAt = await readBillingMeterTransactionTime(client);
112
+ if (status.activatedAt === null ||
113
+ transitionedAt < status.activatedAt ||
114
+ transitionedAt > checkedAt ||
115
+ (status.rolledBackAt !== null && transitionedAt > status.rolledBackAt)) {
116
+ throw transitionEvidenceUnavailable();
117
+ }
118
+ const expected = transitionEvidence({
119
+ operationId: row.operation_id,
120
+ generation: row.generation,
121
+ epochId: row.epoch_id,
122
+ activationServiceReleaseSha: row.activation_service_release_sha,
123
+ activationApprovalChecksum: row.activation_approval_checksum,
124
+ transitionServiceReleaseSha: row.transition_service_release_sha,
125
+ systemReleaseId: row.system_release_id,
126
+ manifestChecksum: row.manifest_checksum,
127
+ serviceOrigin: row.service_origin,
128
+ transitionedAt,
129
+ });
130
+ if (expected.transitionChecksum !== row.transition_checksum) {
131
+ throw transitionEvidenceUnavailable();
132
+ }
133
+ }
134
+ export async function assertNoCommercialContractTransitionEvidenceTx(client) {
135
+ const { rows } = await client.query('SELECT count(*)::text AS count FROM billing_commercial_contract_transitions');
136
+ if (rows[0]?.count !== '0')
137
+ throw transitionEvidenceUnavailable();
138
+ }
139
+ async function assertCanonicalEnforcedFreeStateTx(client, state, checkedAt, currentReleaseSha) {
140
+ const signals = await readPostgresBillingEnforcementActivationSignalsTx(client, checkedAt, {
141
+ serviceOrigin: BILLING_ENFORCEMENT_PRODUCTION_ORIGIN,
142
+ currentReleaseSha,
143
+ supportedAdmissionContractVersion: 1,
144
+ });
145
+ if (signals.cohortState !== 'sealed' ||
146
+ signals.cohortSealId !== state.cohort_seal_id ||
147
+ !signals.billingAttributionComplete ||
148
+ signals.unprofiledAccountCount !== 0 ||
149
+ signals.invalidEnforcedEntitlementAccountCount !== 0 ||
150
+ signals.nonFreeEnforcedAccountCount !== 0 ||
151
+ signals.enforcedOverCapacityAccountCount !== 0) {
152
+ throw canonicalFreeUnavailable();
153
+ }
154
+ const { rows } = await client.query(`
155
+ SELECT account.state AS account_state,
156
+ profile.source AS profile_source,
157
+ profile.cohort_seal_id AS profile_cohort_seal_id,
158
+ profile.effective_from AS profile_effective_from,
159
+ seal.id AS cohort_seal_id, seal.sealed_at AS cohort_sealed_at,
160
+ snapshot.id, snapshot.billing_account_id, snapshot.version,
161
+ snapshot.plan_version_id, plan.plan_code, plan.version AS plan_version,
162
+ plan.effective_from AS plan_effective_from,
163
+ plan.entitlements AS plan_entitlements,
164
+ plan.content_checksum AS plan_content_checksum,
165
+ plan.created_at AS plan_created_at,
166
+ snapshot.schema_version, snapshot.source_kind, snapshot.generation_reason,
167
+ snapshot.verification_status, snapshot.effective_from, snapshot.effective_until,
168
+ snapshot.monthly_usage_anchor, snapshot.entitlements, snapshot.content_checksum,
169
+ snapshot.source_subscription_id, snapshot.source_subscription_version,
170
+ snapshot.verified_at, snapshot.created_at
171
+ FROM billing_accounts AS account
172
+ JOIN billing_account_active_enforcement_profiles AS active_profile
173
+ ON active_profile.billing_account_id = account.id
174
+ JOIN billing_account_enforcement_profiles AS profile
175
+ ON profile.billing_account_id = active_profile.billing_account_id
176
+ AND profile.version = active_profile.profile_version
177
+ JOIN billing_enforcement_cohort_seals AS seal ON seal.singleton = true
178
+ JOIN billing_account_active_snapshots AS active_snapshot
179
+ ON active_snapshot.billing_account_id = account.id
180
+ JOIN billing_entitlement_snapshots AS snapshot
181
+ ON snapshot.billing_account_id = active_snapshot.billing_account_id
182
+ AND snapshot.id = active_snapshot.snapshot_id
183
+ JOIN billing_plan_versions AS plan ON plan.id = snapshot.plan_version_id
184
+ WHERE profile.mode = 'enforced'
185
+ ORDER BY account.id
186
+ FOR SHARE OF account, active_profile, profile, seal, active_snapshot, snapshot, plan
187
+ `);
188
+ for (const row of rows) {
189
+ if (row.account_state !== 'active' ||
190
+ row.profile_source !== 'post_seal_account' ||
191
+ row.profile_cohort_seal_id !== row.cohort_seal_id ||
192
+ toIso(row.profile_effective_from) < toIso(row.cohort_sealed_at)) {
193
+ throw canonicalFreeUnavailable();
194
+ }
195
+ try {
196
+ const resolved = resolveActiveBillingCommercialEntitlement(row, {
197
+ admissionContractVersion: 1,
198
+ databaseTime: checkedAt,
199
+ });
200
+ if (resolved.planCode !== 'free')
201
+ throw canonicalFreeUnavailable();
202
+ }
203
+ catch (error) {
204
+ if (error instanceof BillingActiveCommercialEntitlementInconsistentError) {
205
+ throw canonicalFreeUnavailable();
206
+ }
207
+ throw error;
208
+ }
209
+ }
210
+ }
211
+ function transitionEvidence(input) {
212
+ const content = {
213
+ schemaVersion: 1,
214
+ fromAdmissionContractVersion: 1,
215
+ toAdmissionContractVersion: 2,
216
+ ...input,
217
+ };
218
+ return { ...content, transitionChecksum: billingContentChecksum(content) };
219
+ }
220
+ async function insertTransitionEvidence(client, evidence) {
221
+ await client.query(`INSERT INTO billing_commercial_contract_transitions
222
+ (singleton, operation_id, schema_version, from_admission_contract_version,
223
+ to_admission_contract_version, generation, epoch_id,
224
+ activation_service_release_sha, activation_approval_checksum,
225
+ transition_service_release_sha, system_release_id, manifest_checksum, service_origin,
226
+ transition_checksum, transitioned_at)
227
+ VALUES (true, $1, 1, 1, 2, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)`, [
228
+ evidence.operationId,
229
+ evidence.generation,
230
+ evidence.epochId,
231
+ evidence.activationServiceReleaseSha,
232
+ evidence.activationApprovalChecksum,
233
+ evidence.transitionServiceReleaseSha,
234
+ evidence.systemReleaseId,
235
+ evidence.manifestChecksum,
236
+ evidence.serviceOrigin,
237
+ evidence.transitionChecksum,
238
+ evidence.transitionedAt,
239
+ ]);
240
+ }
241
+ function validateTransitionIdentity(options) {
242
+ const serviceOrigin = normalizeActivationServiceUrl(options.serviceOrigin);
243
+ if (serviceOrigin !== BILLING_ENFORCEMENT_PRODUCTION_ORIGIN) {
244
+ throw new Error('release-managed paid-v2 transition requires the canonical production origin');
245
+ }
246
+ const releaseSha = validateReleaseSha(options.releaseSha);
247
+ if (!/^r[1-9][0-9]*$/.test(options.systemReleaseId)) {
248
+ throw new Error('release-managed paid-v2 transition requires an rN System Release id');
249
+ }
250
+ if (!/^sha256:[0-9a-f]{64}$/.test(options.manifestChecksum)) {
251
+ throw new Error('release-managed paid-v2 transition requires a System Release manifest checksum');
252
+ }
253
+ if (!/^[0-9a-f]{64}$/.test(options.keyGeneration)) {
254
+ throw new Error('release-managed paid-v2 transition key generation is invalid');
255
+ }
256
+ return { serviceOrigin, releaseSha };
257
+ }
258
+ function result(state, contractTransitioned) {
259
+ const status = stateRowToStatus(state);
260
+ return {
261
+ state: 'active',
262
+ generation: status.generation,
263
+ activeEpochId: status.activeEpochId,
264
+ admissionContractVersion: 2,
265
+ activated: false,
266
+ contractTransitioned,
267
+ };
268
+ }
269
+ function canonicalFreeUnavailable() {
270
+ return conflict('activation_preflight_blocked', 'paid-v2 contract transition requires canonical Free state for every enforced account');
271
+ }
272
+ function transitionEvidenceUnavailable() {
273
+ return conflict('activation_configuration_unavailable', 'billing commercial contract transition evidence is unavailable or inconsistent');
274
+ }
275
+ function conflict(code, message) {
276
+ return new BillingEnforcementActivationConflictError(code, message);
277
+ }
278
+ function toIso(value) {
279
+ const date = value instanceof Date ? value : new Date(value);
280
+ if (!Number.isFinite(date.getTime()))
281
+ throw transitionEvidenceUnavailable();
282
+ return date.toISOString();
283
+ }
284
+ //# sourceMappingURL=postgres-commercial-contract-cutover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-commercial-contract-cutover.js","sourceRoot":"","sources":["../../src/billing/postgres-commercial-contract-cutover.ts"],"names":[],"mappings":"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"}
@@ -137,10 +137,7 @@ function validateCounters(row, input) {
137
137
  account[0] !== aggregateOrganization[0] ||
138
138
  account[1] !== aggregateOrganization[1] ||
139
139
  account[2] !== aggregateOrganization[2] ||
140
- accountPresent !== aggregateOrgCounterCount > 0 ||
141
- account[0] > input.entitlements.includedCalls ||
142
- (!input.entitlements.overageAllowed && account[1] !== 0) ||
143
- (account[1] > 0 && account[0] !== input.entitlements.includedCalls)) {
140
+ accountPresent !== aggregateOrgCounterCount > 0) {
144
141
  throw corrupt('counter_inconsistent');
145
142
  }
146
143
  const organizationUsage = input.org === null ? undefined : validateOrganizationUsage(row, account, input);
@@ -151,7 +148,9 @@ function validateCounters(row, input) {
151
148
  includedUsedCalls: account[0],
152
149
  overageUsedCalls: account[1],
153
150
  totalUsedCalls,
154
- includedRemainingCalls: input.entitlements.includedCalls - account[0],
151
+ // Prior receipt classifications are immutable across plan changes. A downgrade may therefore
152
+ // leave included usage above the current limit, while an upgrade may retain earlier overage.
153
+ includedRemainingCalls: Math.max(0, input.entitlements.includedCalls - account[0]),
155
154
  overageAllowed: input.entitlements.overageAllowed,
156
155
  countingSince: input.countingSince,
157
156
  windowStart: input.windowStart,
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-commercial-enforcement-counters.js","sourceRoot":"","sources":["../../src/billing/postgres-commercial-enforcement-counters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-commercial-enforcement-counters.js","sourceRoot":"","sources":["../../src/billing/postgres-commercial-enforcement-counters.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import type { Pool } from 'pg';
2
2
  import type { BillingCommercialEnforcementProjection, BillingCommercialEnforcementProjectionStore, BillingCommercialEnforcementScope, BillingCommercialSnapshotBinding } from './commercial-enforcement-projection.js';
3
3
  export interface PostgresBillingCommercialEnforcementProjectionStoreOptions {
4
4
  readonly keyGeneration: string;
5
- readonly admissionContractVersion?: number;
6
5
  /** Bounded test/operations override. Default: 1000ms. */
7
6
  readonly lockTimeoutMs?: number;
8
7
  /** Bounded test/operations override. Default: 2000ms. */
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-commercial-enforcement-projection.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-commercial-enforcement-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAE3C,OAAO,KAAK,EACV,sCAAsC,EACtC,2CAA2C,EAC3C,iCAAiC,EAEjC,gCAAgC,EACjC,MAAM,wCAAwC,CAAC;AAqBhD,MAAM,WAAW,0DAA0D;IACzE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,yDAAyD;IACzD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,yDAAyD;IACzD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAgDD,qGAAqG;AACrG,qBAAa,mDACX,YAAW,2CAA2C;;gBAQ1C,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,0DAA0D;IAgBrF,kCAAkC,CACtC,QAAQ,EAAE,iCAAiC,EAC3C,uBAAuB,CAAC,EAAE,gCAAgC,GACzD,OAAO,CAAC,sCAAsC,CAAC;CAsFnD"}
1
+ {"version":3,"file":"postgres-commercial-enforcement-projection.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-commercial-enforcement-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAO3C,OAAO,KAAK,EACV,sCAAsC,EACtC,2CAA2C,EAC3C,iCAAiC,EAEjC,gCAAgC,EACjC,MAAM,wCAAwC,CAAC;AAgBhD,MAAM,WAAW,0DAA0D;IACzE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,yDAAyD;IACzD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AA8DD,qGAAqG;AACrG,qBAAa,mDACX,YAAW,2CAA2C;;gBAO1C,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,0DAA0D;IAarF,kCAAkC,CACtC,QAAQ,EAAE,iCAAiC,EAC3C,uBAAuB,CAAC,EAAE,gCAAgC,GACzD,OAAO,CAAC,sCAAsC,CAAC;CAuFnD"}
@@ -1,6 +1,5 @@
1
1
  import { validateSlug } from '../store/validate.js';
2
- import { BillingCommercialEntitlementError, parseBillingCommercialFreeV1Entitlements, } from './commercial-entitlements.js';
3
- import { BILLING_AUTHORITATIVE_ADMISSION_CONTRACT_VERSION } from './enforcement-activation.js';
2
+ import { BillingActiveCommercialEntitlementInconsistentError, resolveActiveBillingCommercialEntitlement, } from './active-commercial-entitlement.js';
4
3
  import { billingContentChecksum, validateBillingAccountId } from './model.js';
5
4
  import { BillingAuthoritativeAuthorityInconsistentError, readBillingAuthoritativeAuthorityTx, } from './postgres-authoritative-authority.js';
6
5
  import { readBillingCommercialProductionAppCountsTx } from './postgres-commercial-enforcement-apps.js';
@@ -22,13 +21,11 @@ class ProjectionCorruptionError extends Error {
22
21
  export class PostgresBillingCommercialEnforcementProjectionStore {
23
22
  #pool;
24
23
  #keyGeneration;
25
- #admissionContractVersion;
26
24
  #lockTimeoutMs;
27
25
  #statementTimeoutMs;
28
26
  constructor(pool, options) {
29
27
  this.#pool = pool;
30
28
  this.#keyGeneration = validateFingerprint(options.keyGeneration);
31
- this.#admissionContractVersion = validateAdmissionContractVersion(options.admissionContractVersion ?? BILLING_AUTHORITATIVE_ADMISSION_CONTRACT_VERSION);
32
29
  this.#lockTimeoutMs = boundedTimeout('billing commercial projection lock timeout', options.lockTimeoutMs ?? DEFAULT_LOCK_TIMEOUT_MS);
33
30
  this.#statementTimeoutMs = boundedTimeout('billing commercial projection statement timeout', options.statementTimeoutMs ?? DEFAULT_STATEMENT_TIMEOUT_MS);
34
31
  }
@@ -41,7 +38,6 @@ export class PostgresBillingCommercialEnforcementProjectionStore {
41
38
  }, async (client) => {
42
39
  const authority = await readBillingAuthoritativeAuthorityTx(client, {
43
40
  keyGeneration: this.#keyGeneration,
44
- admissionContractVersion: this.#admissionContractVersion,
45
41
  });
46
42
  if (authority.state === 'unconfigured')
47
43
  return { state: 'unconfigured', scope };
@@ -49,7 +45,7 @@ export class PostgresBillingCommercialEnforcementProjectionStore {
49
45
  return { state: 'inactive', reason: authority.reason, scope };
50
46
  }
51
47
  const recordedAt = await readBillingMeterTransactionTime(client);
52
- const resolved = validateResolution(await readResolution(client, scope), expectedSnapshotBinding);
48
+ const resolved = validateResolution(await readResolution(client, scope), expectedSnapshotBinding, authority.admissionContractVersion, recordedAt);
53
49
  if (resolved.profileMode === 'legacy_internal_exempt') {
54
50
  return { state: 'exempt', reason: 'legacy_internal_exempt', scope };
55
51
  }
@@ -132,7 +128,17 @@ async function readResolution(client, scope) {
132
128
  snapshot.effective_from AS snapshot_effective_from,
133
129
  snapshot.monthly_usage_anchor AS snapshot_monthly_usage_anchor,
134
130
  snapshot.entitlements AS snapshot_entitlements,
135
- snapshot.content_checksum AS snapshot_content_checksum
131
+ snapshot.content_checksum AS snapshot_content_checksum,
132
+ snapshot.schema_version, snapshot.source_kind, snapshot.generation_reason,
133
+ snapshot.effective_until, snapshot.source_subscription_id,
134
+ snapshot.source_subscription_version,
135
+ snapshot.verified_at AS snapshot_verified_at,
136
+ snapshot.created_at AS snapshot_created_at,
137
+ plan.plan_code, plan.version AS plan_version,
138
+ plan.effective_from AS plan_effective_from,
139
+ plan.entitlements AS plan_entitlements,
140
+ plan.content_checksum AS plan_content_checksum,
141
+ plan.created_at AS plan_created_at
136
142
  ${targetJoin}
137
143
  LEFT JOIN billing_account_active_enforcement_profiles AS active_profile
138
144
  ON active_profile.billing_account_id = account.id
@@ -144,13 +150,14 @@ async function readResolution(client, scope) {
144
150
  LEFT JOIN billing_entitlement_snapshots AS snapshot
145
151
  ON snapshot.billing_account_id = active_snapshot.billing_account_id
146
152
  AND snapshot.id = active_snapshot.snapshot_id
153
+ LEFT JOIN billing_plan_versions AS plan ON plan.id = snapshot.plan_version_id
147
154
  LEFT JOIN billing_enforcement_cohort_seals AS seal ON seal.singleton = true`, [value]);
148
155
  const row = rows[0];
149
156
  if (row === undefined)
150
157
  throw corrupt('profile_inconsistent');
151
158
  return row;
152
159
  }
153
- function validateResolution(row, expectedSnapshotBinding) {
160
+ function validateResolution(row, expectedSnapshotBinding, admissionContractVersion, databaseTime) {
154
161
  const profileEffectiveFrom = projectionInstant(row.profile_effective_from, 'profile_inconsistent');
155
162
  const cohortSealedAt = projectionInstant(row.cohort_sealed_at, 'profile_inconsistent');
156
163
  const validLegacyProfile = row.profile_mode === 'legacy_internal_exempt' &&
@@ -174,23 +181,34 @@ function validateResolution(row, expectedSnapshotBinding) {
174
181
  row.snapshot_verification_status !== 'verified' ||
175
182
  row.snapshot_effective_from === null ||
176
183
  row.snapshot_monthly_usage_anchor === null ||
177
- row.snapshot_content_checksum === null) {
184
+ row.snapshot_content_checksum === null ||
185
+ row.schema_version === null ||
186
+ row.source_kind === null ||
187
+ row.generation_reason === null ||
188
+ row.snapshot_verified_at === null ||
189
+ row.snapshot_created_at === null ||
190
+ row.plan_code === null ||
191
+ row.plan_version === null ||
192
+ row.plan_effective_from === null ||
193
+ row.plan_content_checksum === null ||
194
+ row.plan_created_at === null) {
178
195
  throw corrupt('snapshot_inconsistent');
179
196
  }
180
197
  const effectiveFrom = projectionInstant(row.snapshot_effective_from, 'snapshot_inconsistent');
181
198
  const monthlyUsageAnchor = projectionInstant(row.snapshot_monthly_usage_anchor, 'snapshot_inconsistent');
182
- const expectedChecksum = billingContentChecksum({
183
- billingAccountId: row.account_id,
184
- version: row.snapshot_version,
185
- planVersionId: row.snapshot_plan_version_id,
186
- effectiveFrom,
187
- monthlyUsageAnchor,
188
- entitlements: row.snapshot_entitlements,
189
- });
190
- if (row.snapshot_content_checksum !== expectedChecksum)
191
- throw corrupt('snapshot_inconsistent');
192
199
  const billingAccountId = validateBillingAccountId(row.account_id);
193
200
  if (row.profile_mode === 'legacy_internal_exempt') {
201
+ const expectedChecksum = billingContentChecksum({
202
+ billingAccountId: row.account_id,
203
+ version: row.snapshot_version,
204
+ planVersionId: row.snapshot_plan_version_id,
205
+ effectiveFrom,
206
+ monthlyUsageAnchor,
207
+ entitlements: row.snapshot_entitlements,
208
+ });
209
+ if (row.snapshot_content_checksum !== expectedChecksum) {
210
+ throw corrupt('snapshot_inconsistent');
211
+ }
194
212
  return { billingAccountId, profileMode: row.profile_mode };
195
213
  }
196
214
  const snapshotBinding = {
@@ -204,10 +222,13 @@ function validateResolution(row, expectedSnapshotBinding) {
204
222
  }
205
223
  let entitlements;
206
224
  try {
207
- entitlements = parseBillingCommercialFreeV1Entitlements(row.snapshot_entitlements);
225
+ entitlements = resolveActiveBillingCommercialEntitlement(activeEntitlementRow(row), {
226
+ admissionContractVersion,
227
+ databaseTime,
228
+ }).entitlements;
208
229
  }
209
230
  catch (error) {
210
- if (error instanceof BillingCommercialEntitlementError) {
231
+ if (error instanceof BillingActiveCommercialEntitlementInconsistentError) {
211
232
  throw corrupt('snapshot_inconsistent');
212
233
  }
213
234
  throw error;
@@ -220,6 +241,53 @@ function validateResolution(row, expectedSnapshotBinding) {
220
241
  snapshotBinding,
221
242
  };
222
243
  }
244
+ function activeEntitlementRow(row) {
245
+ if (row.account_id === null ||
246
+ row.snapshot_id === null ||
247
+ row.snapshot_version === null ||
248
+ row.snapshot_plan_version_id === null ||
249
+ row.snapshot_verification_status === null ||
250
+ row.snapshot_effective_from === null ||
251
+ row.snapshot_monthly_usage_anchor === null ||
252
+ row.snapshot_content_checksum === null ||
253
+ row.schema_version === null ||
254
+ row.source_kind === null ||
255
+ row.generation_reason === null ||
256
+ row.snapshot_verified_at === null ||
257
+ row.snapshot_created_at === null ||
258
+ row.plan_code === null ||
259
+ row.plan_version === null ||
260
+ row.plan_effective_from === null ||
261
+ row.plan_content_checksum === null ||
262
+ row.plan_created_at === null) {
263
+ throw corrupt('snapshot_inconsistent');
264
+ }
265
+ return {
266
+ id: row.snapshot_id,
267
+ billing_account_id: row.account_id,
268
+ version: row.snapshot_version,
269
+ plan_version_id: row.snapshot_plan_version_id,
270
+ plan_code: row.plan_code,
271
+ plan_version: row.plan_version,
272
+ plan_effective_from: row.plan_effective_from,
273
+ plan_entitlements: row.plan_entitlements,
274
+ plan_content_checksum: row.plan_content_checksum,
275
+ plan_created_at: row.plan_created_at,
276
+ schema_version: row.schema_version,
277
+ source_kind: row.source_kind,
278
+ generation_reason: row.generation_reason,
279
+ verification_status: row.snapshot_verification_status,
280
+ effective_from: row.snapshot_effective_from,
281
+ effective_until: row.effective_until,
282
+ monthly_usage_anchor: row.snapshot_monthly_usage_anchor,
283
+ entitlements: row.snapshot_entitlements,
284
+ content_checksum: row.snapshot_content_checksum,
285
+ source_subscription_id: row.source_subscription_id,
286
+ source_subscription_version: row.source_subscription_version,
287
+ verified_at: row.snapshot_verified_at,
288
+ created_at: row.snapshot_created_at,
289
+ };
290
+ }
223
291
  function sameSnapshotBinding(current, expected) {
224
292
  return (current.snapshotId === expected.snapshotId &&
225
293
  current.version === expected.version &&
@@ -240,6 +308,9 @@ function unavailableReason(error) {
240
308
  if (error instanceof BillingAuthoritativeAuthorityInconsistentError) {
241
309
  return 'authority_inconsistent';
242
310
  }
311
+ if (error instanceof BillingActiveCommercialEntitlementInconsistentError) {
312
+ return 'snapshot_inconsistent';
313
+ }
243
314
  if (error instanceof BillingCommercialCounterProjectionError)
244
315
  return error.reason;
245
316
  if (error instanceof ProjectionCorruptionError)
@@ -260,12 +331,6 @@ function validateFingerprint(value) {
260
331
  }
261
332
  return value;
262
333
  }
263
- function validateAdmissionContractVersion(value) {
264
- if (value !== BILLING_AUTHORITATIVE_ADMISSION_CONTRACT_VERSION) {
265
- throw new Error('billing commercial projection admission contract version is unsupported');
266
- }
267
- return value;
268
- }
269
334
  function boundedTimeout(label, value) {
270
335
  if (!Number.isSafeInteger(value) || value < 1 || value > 5_000) {
271
336
  throw new Error(`${label} must be between 1 and 5000 milliseconds`);
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-commercial-enforcement-projection.js","sourceRoot":"","sources":["../../src/billing/postgres-commercial-enforcement-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-commercial-enforcement-projection.js","sourceRoot":"","sources":["../../src/billing/postgres-commercial-enforcement-projection.ts"],"names":[],"mappings":"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"}