@rudra-js/core 0.4.0 → 0.5.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.
@@ -1,3 +1,5 @@
1
+ import { verify } from '@rudra-js/attested';
2
+ import { offeredCandidates } from './model-prompt.js';
1
3
  /**
2
4
  * Reconciliation — the boundary between what the model said and what renders.
3
5
  *
@@ -122,14 +124,11 @@ function verifyBasis(basis, product, digest) {
122
124
  * model writes is checked here — a heading is not a safer place for a claim
123
125
  * than the small print under it.
124
126
  *
125
- * A claim is about money, a customer score, when it arrives, or how many are
126
- * left. A specification is not a claim, even when it has a number or a
127
- * percentage in it: "100% recycled nylon", "a comfort rating of -5C" and
128
- * "arrives flat-packed" are all things a shop can say about the product itself,
129
- * and they stay. That is why almost every rule below needs a second word beside
130
- * the first — "20% off", not "20%"; "rated 4.8", not "rated". A careful
131
- * rewording will get past this, and that is the trade we want: missing one
132
- * claim is better than deleting honest copy on every page.
127
+ * These patterns are the first of three passes and the only one that names which
128
+ * of the five kinds a sentence claimed, so they read the domain: "20% off", not
129
+ * "20%"; "rated 4.8", not "rated". A specification walks past all of them and is
130
+ * then weighed by @rudra-js/attested, which reads no domain at all and asks only
131
+ * whether the shop supplied the number.
133
132
  *
134
133
  * One rule per line, because each line is a separate judgement about where the
135
134
  * boundary sits and each one wants its own reason written next to it.
@@ -154,14 +153,20 @@ const CLAIM_PATTERNS = [
154
153
  /\brated\s+(?:[0-5]\.\d|(?:[0-5]|three|four|five)\s+(?:stars?|out of))\b/,
155
154
  // How many other people bought or liked it is a customer claim too.
156
155
  /\bbest[\s-]?sell(?:er|ers|ing)\b/,
156
+ // The words a model reaches for when "best" is banned. Each branch carries its own
157
+ // \b — one in front of the group demands a word character before the #, never there.
158
+ /(?:\bnumber one|\bno\.? ?1|#\s?1)[\s-]?sell(?:er|ers|ing)\b/,
157
159
  /\bloved by (?:thousands|hundreds|millions|\d)/,
158
160
  ],
159
161
  },
160
162
  {
161
163
  kind: 'price',
162
164
  patterns: [
163
- /[$£€¥₹]\s?\d/,
165
+ // No digit beside it: asking for one let "$thirty-nine and it is yours" through.
166
+ /[$£€¥₹]/,
164
167
  /\b\d+(?:\.\d+)?\s?(?:usd|eur|gbp|dollars?|pounds?|euros?)\b/,
168
+ // The same spelled out. "pounds" is left off on purpose — a pack weighs two of those.
169
+ /\bdollars?\b|\beuros?\b/,
165
170
  // The same codes on the other side of the number: "USD 20", "EUR 5.99".
166
171
  /\b(?:usd|eur|gbp)\s?\d/,
167
172
  // The krona is spelled out rather than drawn, so it needs a number beside it.
@@ -265,9 +270,10 @@ const CONFUSABLES = {
265
270
  * points and the controls. Cf and Default_Ignorable each hold characters the
266
271
  * other does not.
267
272
  *
268
- * The same class @rudra-js/attested strips in its own `hidden.ts`. A second copy,
269
- * because core carries no dependencies and is not about to take one — which means
270
- * widening one and not the other is the mistake to watch for.
273
+ * The same class @rudra-js/attested strips in its own `hidden.ts`. The second copy stays
274
+ * now that core calls attested, because it feeds core's own patterns and those reach two
275
+ * things attested's phrase list does not hold: "20% οff" spelled with a Greek omicron,
276
+ * and "PRİCED to move". Widening one and not the other is still the mistake to watch for.
271
277
  */
272
278
  const INVISIBLE = /[\p{Cf}\p{Default_Ignorable_Code_Point}\p{Cc}]/gu;
273
279
  /**
@@ -302,6 +308,68 @@ function normaliseForClaims(text) {
302
308
  folded += CONFUSABLES[char] ?? char;
303
309
  return folded;
304
310
  }
311
+ /**
312
+ * Wording attested bans that this project has already ruled is not a claim. An allowance
313
+ * forgives a banned phrase sitting inside it, so an entry ending on a preposition — "extra
314
+ * clearance for" — forgives whatever follows it. Exported so a test can hold the list
315
+ * against attested's own.
316
+ */
317
+ export const ALLOWED_PHRASES = ['does not feel cheap', "doesn't feel cheap", 'last few miles'];
318
+ /** Only a string with one of these in it can stand behind a numeral. */
319
+ const DIGIT = /\p{Nd}/u;
320
+ /** Anything attested reads as a numeral — ½ ² Ⅲ included, which it reports rather than ignores. */
321
+ const NUMERAL = /[\p{Nd}\p{No}\p{Nl}]/u;
322
+ const NO_FACTS = [];
323
+ /** A fact whose whole content is a number in exponent notation. attested lays those out in place. */
324
+ const BARE_EXPONENT = /^[+-]?\d+(?:\.\d+)?[eE]([+-]?\d+)$/;
325
+ /** Wide enough for every finite JavaScript number, and for anything a shop sells. */
326
+ const MAX_EXPONENT = 1000;
327
+ // `1e2000000000` is twelve characters and lays out into a run long enough to end the process.
328
+ // attested caps that itself, but it is a peer dependency and a host's copy of it may be older.
329
+ function canLayOut(fact) {
330
+ const match = BARE_EXPONENT.exec(fact.trim());
331
+ if (match === null)
332
+ return true;
333
+ return Math.abs(Number(match[1] ?? '')) <= MAX_EXPONENT;
334
+ }
335
+ /**
336
+ * The numbers the shop published about one product: its category and tags, only the strings
337
+ * carrying a digit. Exported so a test can pin what never reaches attested.
338
+ */
339
+ export function productFacts(product) {
340
+ const facts = [];
341
+ if (DIGIT.test(product.category) && canLayOut(product.category))
342
+ facts.push(product.category);
343
+ for (const tag of product.tags) {
344
+ if (DIGIT.test(tag) && canLayOut(tag))
345
+ facts.push(tag);
346
+ }
347
+ return facts;
348
+ }
349
+ /**
350
+ * The shop's own numbers for this request, for attested to check numerals against.
351
+ *
352
+ * `offeredCandidates` rather than `input.candidates` — out of stock or past the prompt's cap
353
+ * means a product the model never saw. A title and a rating it is shown but told never to
354
+ * repeat, so a numeral out of one is one it was told not to write. The browsed category comes
355
+ * from the request rather than the catalogue, so a host passing a URL segment through would
356
+ * hand this list to whoever types the URL.
357
+ *
358
+ * `pooled` is the soft part of the check: one candidate's "40 litre" backs "take 40 off"
359
+ * written about another. A `reason` and a `badge` read `bySku`, because they sit under a
360
+ * named product — off the pooled list, a badge reading "Only 2" stood on a tent's tag.
361
+ */
362
+ function hostFacts(input) {
363
+ const pooled = new Set();
364
+ const bySku = new Map();
365
+ for (const product of offeredCandidates(input)) {
366
+ const own = productFacts(product);
367
+ bySku.set(product.sku, own);
368
+ for (const fact of own)
369
+ pooled.add(fact);
370
+ }
371
+ return { pooled: [...pooled], bySku };
372
+ }
305
373
  /** Names the first forbidden claim the text makes, or null when it makes none. */
306
374
  function claimIn(text) {
307
375
  const normalised = normaliseForClaims(text);
@@ -321,12 +389,14 @@ function claimIn(text) {
321
389
  * through every function. The budget and the de-duplication set are global to a
322
390
  * spec, not to a block, which is the part that is easy to get wrong.
323
391
  */
324
- function createPlacementTracker(maxItems) {
392
+ function createPlacementTracker(maxItems, facts) {
325
393
  const placedSkus = new Set();
326
394
  const violations = [];
327
395
  let remaining = maxItems;
328
396
  return {
329
397
  violations,
398
+ facts: facts.pooled,
399
+ factsFor: (sku) => facts.bySku.get(sku) ?? NO_FACTS,
330
400
  get remaining() {
331
401
  return remaining;
332
402
  },
@@ -346,15 +416,33 @@ function createPlacementTracker(maxItems) {
346
416
  * Runs after clamping, so what is screened is exactly what would have rendered.
347
417
  * Dropping means what it means everywhere else here: this field becomes null
348
418
  * and the rest of the block carries on.
419
+ *
420
+ * Three passes, most specific first. Core's patterns name one of the five kinds; `quantity`
421
+ * is the only proof in the stack, every numeral having to be one the shop supplied; `wording`
422
+ * is a second denylist and the weakest, so it answers last. `facts` defaults to the pooled
423
+ * list, and a field that names one product passes that product's own.
349
424
  */
350
- function screenClaim(value, field, tracker) {
425
+ function screenClaim(value, field, tracker, facts = tracker.facts) {
351
426
  if (value === null)
352
427
  return null;
353
428
  const kind = claimIn(value);
354
- if (kind === null)
355
- return value;
356
- tracker.record(`unverifiable-claim:${kind}:${field}`);
357
- return null;
429
+ if (kind !== null) {
430
+ tracker.record(`unverifiable-claim:${kind}:${field}`);
431
+ return null;
432
+ }
433
+ // Nothing for the quantity layer to weigh without a numeral, whatever the facts say,
434
+ // and reading the fact list to prove that again per field is most of what this costs.
435
+ const weighed = NUMERAL.test(value) ? facts : NO_FACTS;
436
+ const result = verify(value, { values: weighed, allowedPhrases: ALLOWED_PHRASES });
437
+ if (!result.quantity.supported) {
438
+ tracker.record(`unverifiable-claim:quantity:${field}`);
439
+ return null;
440
+ }
441
+ if (!result.wording.supported) {
442
+ tracker.record(`unverifiable-claim:wording:${field}`);
443
+ return null;
444
+ }
445
+ return value;
358
446
  }
359
447
  /**
360
448
  * The same screen for a field that cannot be null. Emptying it hands the field
@@ -389,7 +477,7 @@ function rejectionFor(sku, allowlist, tracker) {
389
477
  return `budget:dropped:${named}`;
390
478
  return null;
391
479
  }
392
- function reconcileItems(items, allowlist, candidatesBySku, digest, tracker, hostReasonSkus) {
480
+ function reconcileItems(items, allowlist, candidatesBySku, digest, tracker, ourReasons) {
393
481
  const kept = [];
394
482
  for (const item of items) {
395
483
  const rejection = rejectionFor(item.sku, allowlist, tracker);
@@ -405,21 +493,23 @@ function reconcileItems(items, allowlist, candidatesBySku, digest, tracker, host
405
493
  const hasSupportedBasis = verifyBasis(item.basis, product, digest);
406
494
  if (!hasSupportedBasis)
407
495
  tracker.record(`unsupported-basis:${item.basis}:${item.sku}`);
408
- const isHostReason = item.reason !== null && hostReasonSkus.has(item.sku) && item.reason === product.reason;
496
+ // Our sentence, not the model's. It has to match, so a lookalike is still screened.
497
+ const isOurs = item.reason !== null && ourReasons.get(item.sku) === item.reason;
498
+ const own = tracker.factsFor(item.sku);
409
499
  kept.push({
410
500
  sku: item.sku,
411
501
  basis: hasSupportedBasis ? item.basis : 'popular',
412
502
  // The prose exists to state the basis. If the basis did not hold, the
413
503
  // prose is a claim we just decided is untrue.
414
504
  reason: hasSupportedBasis
415
- ? isHostReason
505
+ ? isOurs
416
506
  ? clampNullable(item.reason, CLAMP.reason)
417
- : screenClaim(clampNullable(item.reason, CLAMP.reason), `reason:${item.sku}`, tracker)
507
+ : screenClaim(clampNullable(item.reason, CLAMP.reason), `reason:${item.sku}`, tracker, own)
418
508
  : null,
419
509
  // A badge is the shortest, loudest text on the card, and the schema's own
420
510
  // example for it was "Back in stock" — a stock claim. It renders, so it is
421
511
  // read for claims like every other sentence the model writes.
422
- badge: screenClaim(clampNullable(item.badge, CLAMP.badge), `badge:${item.sku}`, tracker),
512
+ badge: screenClaim(clampNullable(item.badge, CLAMP.badge), `badge:${item.sku}`, tracker, own),
423
513
  emphasis: item.emphasis,
424
514
  });
425
515
  }
@@ -488,7 +578,7 @@ function chooseBundle(bundles, allowlist, digest, candidatesBySku, tracker) {
488
578
  export function bundleForShopper(input, digest, spokenFor) {
489
579
  const allowlist = buildAllowlist(input, digest);
490
580
  const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
491
- const tracker = createPlacementTracker(digest.maxItems);
581
+ const tracker = createPlacementTracker(digest.maxItems, hostFacts(input));
492
582
  for (const sku of spokenFor)
493
583
  tracker.place(sku);
494
584
  return chooseBundle(input.bundles, allowlist, digest, candidatesBySku, tracker);
@@ -518,7 +608,7 @@ export function placeableHeroSkus(blocks, input, digest) {
518
608
  }
519
609
  return skus;
520
610
  }
521
- function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, tracker, hostReasonSkus) {
611
+ function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, tracker, ourReasons) {
522
612
  switch (block.kind) {
523
613
  case 'hero': {
524
614
  let sku = block.sku;
@@ -550,7 +640,7 @@ function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, trac
550
640
  };
551
641
  }
552
642
  case 'grid': {
553
- const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker, hostReasonSkus);
643
+ const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker, ourReasons);
554
644
  if (items.length === 0) {
555
645
  tracker.record('empty-block:grid');
556
646
  return null;
@@ -564,7 +654,7 @@ function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, trac
564
654
  };
565
655
  }
566
656
  case 'carousel': {
567
- const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker, hostReasonSkus);
657
+ const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker, ourReasons);
568
658
  if (items.length === 0) {
569
659
  tracker.record('empty-block:carousel');
570
660
  return null;
@@ -629,20 +719,23 @@ function showsAnyProduct(blocks) {
629
719
  }
630
720
  export function reconcileSpec(generated, input, digest,
631
721
  /**
632
- * SKUs whose reason this request wrote from the host's own candidate. Only
633
- * `fitToShopper` fills it, so in `per-shopper` mode it is empty and every
722
+ * The reason this request wrote itself, by SKU: the host's own `reason` on a
723
+ * candidate, or the sentence the selector wrote when there was none. Neither is the
724
+ * model's words, and the deterministic component renders the same sentence unscreened.
725
+ *
726
+ * Only `fitToShopper` fills it, so in `per-shopper` mode it is empty and every
634
727
  * reason is the model's, including one that happens to read the same.
635
728
  */
636
- hostReasonSkus = new Set()) {
729
+ ourReasons = new Map()) {
637
730
  const allowlist = buildAllowlist(input, digest);
638
731
  const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
639
- const tracker = createPlacementTracker(digest.maxItems);
732
+ const tracker = createPlacementTracker(digest.maxItems, hostFacts(input));
640
733
  if (generated.blocks.length > MAX_BLOCKS) {
641
734
  tracker.record(`too-many-blocks:${generated.blocks.length}`);
642
735
  }
643
736
  const blocks = [];
644
737
  for (const block of generated.blocks.slice(0, MAX_BLOCKS)) {
645
- const reconciled = reconcileBlock(block, allowlist, candidatesBySku, digest, input.bundles, tracker, hostReasonSkus);
738
+ const reconciled = reconcileBlock(block, allowlist, candidatesBySku, digest, input.bundles, tracker, ourReasons);
646
739
  if (reconciled !== null)
647
740
  blocks.push(reconciled);
648
741
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reconciliation.js","sourceRoot":"","sources":["../src/reconciliation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconciliation.js","sourceRoot":"","sources":["../src/reconciliation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rudra-js/core",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "The contracts and logic that turn one tracking payload into one renderable component specification",
5
5
  "keywords": [
6
6
  "llm",
@@ -51,9 +51,11 @@
51
51
  "access": "public"
52
52
  },
53
53
  "peerDependencies": {
54
+ "@rudra-js/attested": "^0.5.0",
54
55
  "zod": "^4.5.0"
55
56
  },
56
57
  "devDependencies": {
58
+ "@rudra-js/attested": "0.5.0",
57
59
  "@types/node": "^26.4.1",
58
60
  "zod": "^4.5.4"
59
61
  }
@@ -251,7 +251,7 @@ function fitCohortSpec(
251
251
  input: TrackingInput,
252
252
  digest: SignalDigest,
253
253
  rank: RankOrder,
254
- hostReasonSkus: Set<string>,
254
+ ourReasons: Map<string, string>,
255
255
  ): GeneratedSpec {
256
256
  const picks = selectProducts(input, digest, { rank });
257
257
  // Blocks past the cap never render, so a set is not worth reserving for one.
@@ -266,26 +266,26 @@ function fitCohortSpec(
266
266
  }
267
267
  aboveBundle.push(block);
268
268
  }
269
- if (!hasBundleBlock) return fitToShopper(spec, picks, digest.maxItems, hostReasonSkus);
269
+ if (!hasBundleBlock) return fitToShopper(spec, picks, digest.maxItems, ourReasons);
270
270
 
271
271
  // Only the heroes above the bundle block are placed when it is reached, so
272
272
  // they are all the choice may account for.
273
273
  const chosen = bundleForShopper(input, digest, placeableHeroSkus(aboveBundle, input, digest));
274
- if (!chosen) return fitToShopper(spec, picks, digest.maxItems, hostReasonSkus);
274
+ if (!chosen) return fitToShopper(spec, picks, digest.maxItems, ourReasons);
275
275
 
276
276
  const spokenFor = new Set<string>(chosen.skus);
277
277
  for (const sku of placeableHeroSkus(blocks, input, digest)) spokenFor.add(sku);
278
278
 
279
279
  const roomLeft = digest.maxItems - spokenFor.size;
280
280
  // A set is worth showing, but not at the cost of an empty grid.
281
- if (roomLeft <= 0) return fitToShopper(spec, picks, digest.maxItems, hostReasonSkus);
281
+ if (roomLeft <= 0) return fitToShopper(spec, picks, digest.maxItems, ourReasons);
282
282
 
283
283
  const forGrid: ProductPick[] = [];
284
284
  for (const pick of picks) {
285
285
  if (!spokenFor.has(pick.product.sku)) forGrid.push(pick);
286
286
  }
287
287
 
288
- return fitToShopper(spec, forGrid, roomLeft, hostReasonSkus);
288
+ return fitToShopper(spec, forGrid, roomLeft, ourReasons);
289
289
  }
290
290
 
291
291
  /** Attaches the provenance the server owns. The model never supplies any of it. */
@@ -510,16 +510,17 @@ export function createComponentGenerator(
510
510
 
511
511
  // One place where anything is served, whichever side of the cache it came
512
512
  // from, and always against the facts of the shopper asking now.
513
- // A cohort spec names products chosen for whoever asked first.
514
- // Only the cohort path writes a host reason into a spec, so in
515
- // per-shopper mode this stays empty and every reason is screened.
516
- const hostReasonSkus = new Set<string>();
513
+ // A cohort spec names products chosen for whoever asked first, and every
514
+ // reason under one of them is written here rather than by the model. Only
515
+ // the cohort path does that, so in per-shopper mode this stays empty and
516
+ // every reason is screened.
517
+ const ourReasons = new Map<string, string>();
517
518
  const served =
518
519
  generation === 'cohort'
519
- ? fitCohortSpec(answer.spec, input, digest, rank, hostReasonSkus)
520
+ ? fitCohortSpec(answer.spec, input, digest, rank, ourReasons)
520
521
  : answer.spec;
521
522
 
522
- const reconciled = reconcileSpec(served, input, digest, hostReasonSkus);
523
+ const reconciled = reconcileSpec(served, input, digest, ourReasons);
523
524
  if (!reconciled.isUsable) {
524
525
  return buildDeterministic(input, digest, startedAt, key, 'unusable-on-serve', {
525
526
  calledModel,
@@ -7,7 +7,7 @@ export function fitToShopper(
7
7
  spec: GeneratedSpec,
8
8
  picks: readonly ProductPick[],
9
9
  maxItems: number,
10
- hostReasonSkus?: Set<string>,
10
+ ourReasons?: Map<string, string>,
11
11
  ): GeneratedSpec {
12
12
  // Picks are ordered best first. Every slot takes the next one.
13
13
  let next = 0;
@@ -25,7 +25,9 @@ export function fitToShopper(
25
25
  for (const item of block.items) {
26
26
  if (next >= limit) break; // shrink, never pad
27
27
  const chosen = picks[next]!;
28
- if (chosen.reasonFromHost) hostReasonSkus?.add(chosen.product.sku);
28
+ // Every reason here is written by this library or handed to it by the
29
+ // shop. None of them is the model's, whatever the model wrote in this slot.
30
+ ourReasons?.set(chosen.product.sku, chosen.reason);
29
31
  items.push({
30
32
  sku: chosen.product.sku,
31
33
  basis: chosen.basis,
@@ -227,10 +227,23 @@ function describeCandidate(product: Product): string {
227
227
  */
228
228
  const MAX_CANDIDATES = 60;
229
229
 
230
+ /**
231
+ * The candidates the model is actually shown.
232
+ *
233
+ * An out-of-stock product is dropped during reconciliation whatever the model
234
+ * does with it, so offering one only costs the shopper a slot.
235
+ *
236
+ * Exported because reconciliation checks the numerals the model writes against
237
+ * the strings on this list, and a candidate it was never shown cannot be where
238
+ * one came from. Two copies of "what the model saw" would drift, and the pair
239
+ * that drifted would be the prompt and the screen reading it back.
240
+ */
241
+ export function offeredCandidates(input: TrackingInput): Product[] {
242
+ return input.candidates.filter((product) => product.isInStock).slice(0, MAX_CANDIDATES);
243
+ }
244
+
230
245
  export function buildPrompt(input: TrackingInput, digest: SignalDigest): PromptPair {
231
- // An out-of-stock product is dropped during reconciliation whatever the model
232
- // does with it, so offering one only costs the shopper a slot.
233
- const offered = input.candidates.filter((product) => product.isInStock).slice(0, MAX_CANDIDATES);
246
+ const offered = offeredCandidates(input);
234
247
 
235
248
  // The markers are OWASP's labelled-block recommendation. They are safe as
236
249
  // boundaries because every value between them is quoted and stripped of
@@ -21,10 +21,8 @@ export interface ProductPick {
21
21
  product: Product;
22
22
  /** Why this product, stated so reconciliation can check it. */
23
23
  basis: RecommendationBasis;
24
- /** How the basis reads to a shopper. */
24
+ /** How the basis reads to a shopper. The host's own sentence when it wrote one. */
25
25
  reason: string;
26
- /** True when `reason` is the host's own sentence from the candidate. */
27
- reasonFromHost: boolean;
28
26
  /** Unnormalised. Only the ordering is meaningful. */
29
27
  score: number;
30
28
  }
@@ -164,7 +162,6 @@ export function selectProducts(
164
162
  product,
165
163
  basis,
166
164
  reason: product.reason ?? reason,
167
- reasonFromHost: product.reason !== undefined,
168
165
  score,
169
166
  });
170
167
  }