cbrowser 20.2.2 → 21.0.1

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 (311) hide show
  1. package/README.md +2 -2
  2. package/dist/analysis/accessibility-empathy.d.ts +29 -1
  3. package/dist/analysis/accessibility-empathy.d.ts.map +1 -1
  4. package/dist/analysis/accessibility-empathy.js +69 -35
  5. package/dist/analysis/accessibility-empathy.js.map +1 -1
  6. package/dist/browser.d.ts.map +1 -1
  7. package/dist/browser.js +11 -7
  8. package/dist/browser.js.map +1 -1
  9. package/dist/cif-score.d.ts +56 -5
  10. package/dist/cif-score.d.ts.map +1 -1
  11. package/dist/cif-score.js +595 -346
  12. package/dist/cif-score.js.map +1 -1
  13. package/dist/cli.js +10 -8
  14. package/dist/cli.js.map +1 -1
  15. package/dist/cognitive/default-traits.d.ts +14 -0
  16. package/dist/cognitive/default-traits.d.ts.map +1 -0
  17. package/dist/cognitive/default-traits.js +36 -0
  18. package/dist/cognitive/default-traits.js.map +1 -0
  19. package/dist/cognitive/emotions.d.ts.map +1 -1
  20. package/dist/cognitive/emotions.js +104 -174
  21. package/dist/cognitive/emotions.js.map +1 -1
  22. package/dist/cognitive/index.d.ts +28 -0
  23. package/dist/cognitive/index.d.ts.map +1 -1
  24. package/dist/cognitive/index.js +353 -287
  25. package/dist/cognitive/index.js.map +1 -1
  26. package/dist/cognitive/temporal.d.ts +0 -24
  27. package/dist/cognitive/temporal.d.ts.map +1 -1
  28. package/dist/cognitive/temporal.js +45 -35
  29. package/dist/cognitive/temporal.js.map +1 -1
  30. package/dist/data/ctc-reference-v2-2026-10-24.d.ts +16 -0
  31. package/dist/data/ctc-reference-v2-2026-10-24.d.ts.map +1 -0
  32. package/dist/data/ctc-reference-v2-2026-10-24.js +1004 -0
  33. package/dist/data/ctc-reference-v2-2026-10-24.js.map +1 -0
  34. package/dist/ideal-profiles-gap.d.ts +1 -0
  35. package/dist/ideal-profiles-gap.d.ts.map +1 -1
  36. package/dist/ideal-profiles-gap.js +9 -1
  37. package/dist/ideal-profiles-gap.js.map +1 -1
  38. package/dist/ideal-profiles.d.ts +8 -0
  39. package/dist/ideal-profiles.d.ts.map +1 -1
  40. package/dist/ideal-profiles.js +28 -24
  41. package/dist/ideal-profiles.js.map +1 -1
  42. package/dist/mcp-server-remote.d.ts.map +1 -1
  43. package/dist/mcp-server-remote.js +7 -8
  44. package/dist/mcp-server-remote.js.map +1 -1
  45. package/dist/mcp-tools/account-personas.d.ts.map +1 -1
  46. package/dist/mcp-tools/account-personas.js +3 -1
  47. package/dist/mcp-tools/account-personas.js.map +1 -1
  48. package/dist/mcp-tools/base/answer-provenance.d.ts +28 -0
  49. package/dist/mcp-tools/base/answer-provenance.d.ts.map +1 -0
  50. package/dist/mcp-tools/base/answer-provenance.js +32 -0
  51. package/dist/mcp-tools/base/answer-provenance.js.map +1 -0
  52. package/dist/mcp-tools/base/audit-tools.d.ts +0 -3
  53. package/dist/mcp-tools/base/audit-tools.d.ts.map +1 -1
  54. package/dist/mcp-tools/base/audit-tools.js +152 -84
  55. package/dist/mcp-tools/base/audit-tools.js.map +1 -1
  56. package/dist/mcp-tools/base/capture-tools.js +1 -1
  57. package/dist/mcp-tools/base/capture-tools.js.map +1 -1
  58. package/dist/mcp-tools/base/chain-values.d.ts +38 -0
  59. package/dist/mcp-tools/base/chain-values.d.ts.map +1 -0
  60. package/dist/mcp-tools/base/chain-values.js +85 -0
  61. package/dist/mcp-tools/base/chain-values.js.map +1 -0
  62. package/dist/mcp-tools/base/cognitive-tools.d.ts.map +1 -1
  63. package/dist/mcp-tools/base/cognitive-tools.js +126 -120
  64. package/dist/mcp-tools/base/cognitive-tools.js.map +1 -1
  65. package/dist/mcp-tools/base/gif-tools.d.ts.map +1 -1
  66. package/dist/mcp-tools/base/gif-tools.js +23 -5
  67. package/dist/mcp-tools/base/gif-tools.js.map +1 -1
  68. package/dist/mcp-tools/base/persona-comparison-tools.d.ts.map +1 -1
  69. package/dist/mcp-tools/base/persona-comparison-tools.js +229 -172
  70. package/dist/mcp-tools/base/persona-comparison-tools.js.map +1 -1
  71. package/dist/mcp-tools/base/site-familiarity.d.ts +31 -0
  72. package/dist/mcp-tools/base/site-familiarity.d.ts.map +1 -0
  73. package/dist/mcp-tools/base/site-familiarity.js +30 -0
  74. package/dist/mcp-tools/base/site-familiarity.js.map +1 -0
  75. package/dist/mcp-tools/base/site-knowledge-tools.js +1 -1
  76. package/dist/mcp-tools/base/site-knowledge-tools.js.map +1 -1
  77. package/dist/mcp-tools/base/story-narrative.d.ts +50 -0
  78. package/dist/mcp-tools/base/story-narrative.d.ts.map +1 -0
  79. package/dist/mcp-tools/base/story-narrative.js +88 -0
  80. package/dist/mcp-tools/base/story-narrative.js.map +1 -0
  81. package/dist/mcp-tools/base/values-tools.d.ts.map +1 -1
  82. package/dist/mcp-tools/base/values-tools.js +19 -5
  83. package/dist/mcp-tools/base/values-tools.js.map +1 -1
  84. package/dist/mcp-tools/base/visual-testing-tools.d.ts +5 -5
  85. package/dist/mcp-tools/base/visual-testing-tools.d.ts.map +1 -1
  86. package/dist/mcp-tools/base/visual-testing-tools.js +38 -11
  87. package/dist/mcp-tools/base/visual-testing-tools.js.map +1 -1
  88. package/dist/mcp-tools/persona-creation-tools.js +6 -6
  89. package/dist/mcp-tools/persona-creation-tools.js.map +1 -1
  90. package/dist/mcp-tools/persona-lifecycle-tools.d.ts.map +1 -1
  91. package/dist/mcp-tools/persona-lifecycle-tools.js +5 -1
  92. package/dist/mcp-tools/persona-lifecycle-tools.js.map +1 -1
  93. package/dist/mcp-tools/tier-gate.js +1 -1
  94. package/dist/mcp-tools/tool-result-saver.d.ts +7 -0
  95. package/dist/mcp-tools/tool-result-saver.d.ts.map +1 -1
  96. package/dist/mcp-tools/tool-result-saver.js +11 -0
  97. package/dist/mcp-tools/tool-result-saver.js.map +1 -1
  98. package/dist/mcp-tools/trait-provenance.d.ts +109 -0
  99. package/dist/mcp-tools/trait-provenance.d.ts.map +1 -0
  100. package/dist/mcp-tools/trait-provenance.js +187 -0
  101. package/dist/mcp-tools/trait-provenance.js.map +1 -0
  102. package/dist/mcp-tools/ui-resources.d.ts +6 -7
  103. package/dist/mcp-tools/ui-resources.d.ts.map +1 -1
  104. package/dist/mcp-tools/ui-resources.js +162 -12
  105. package/dist/mcp-tools/ui-resources.js.map +1 -1
  106. package/dist/mcp-tools/widget-kit.d.ts +129 -3
  107. package/dist/mcp-tools/widget-kit.d.ts.map +1 -1
  108. package/dist/mcp-tools/widget-kit.js +507 -28
  109. package/dist/mcp-tools/widget-kit.js.map +1 -1
  110. package/dist/performance/metrics.d.ts.map +1 -1
  111. package/dist/performance/metrics.js +4 -1
  112. package/dist/performance/metrics.js.map +1 -1
  113. package/dist/persona-age.d.ts +59 -0
  114. package/dist/persona-age.d.ts.map +1 -0
  115. package/dist/persona-age.js +84 -0
  116. package/dist/persona-age.js.map +1 -0
  117. package/dist/persona-questionnaire.js +1 -1
  118. package/dist/persona-questionnaire.js.map +1 -1
  119. package/dist/personas.d.ts +3 -1
  120. package/dist/personas.d.ts.map +1 -1
  121. package/dist/personas.js +154 -119
  122. package/dist/personas.js.map +1 -1
  123. package/dist/recording/engine.d.ts.map +1 -1
  124. package/dist/recording/engine.js +5 -2
  125. package/dist/recording/engine.js.map +1 -1
  126. package/dist/recording/saliency-overlay.d.ts +8 -3
  127. package/dist/recording/saliency-overlay.d.ts.map +1 -1
  128. package/dist/recording/saliency-overlay.js +14 -5
  129. package/dist/recording/saliency-overlay.js.map +1 -1
  130. package/dist/recording/types.js +1 -1
  131. package/dist/testing/nl-test-suite.d.ts.map +1 -1
  132. package/dist/testing/nl-test-suite.js +2 -1
  133. package/dist/testing/nl-test-suite.js.map +1 -1
  134. package/dist/trait-reference.d.ts +19 -2
  135. package/dist/trait-reference.d.ts.map +1 -1
  136. package/dist/trait-reference.js +19 -2
  137. package/dist/trait-reference.js.map +1 -1
  138. package/dist/types.d.ts +32 -21
  139. package/dist/types.d.ts.map +1 -1
  140. package/dist/types.js +62 -52
  141. package/dist/types.js.map +1 -1
  142. package/dist/values/persona-completeness.js +1 -1
  143. package/dist/values/persona-completeness.js.map +1 -1
  144. package/dist/visual/ab-comparison.d.ts.map +1 -1
  145. package/dist/visual/ab-comparison.js +4 -1
  146. package/dist/visual/ab-comparison.js.map +1 -1
  147. package/dist/visual/attention-quality.d.ts +1 -1
  148. package/dist/visual/attention-quality.js +1 -1
  149. package/dist/visual/attention-transport.d.ts +74 -10
  150. package/dist/visual/attention-transport.d.ts.map +1 -1
  151. package/dist/visual/attention-transport.js +353 -193
  152. package/dist/visual/attention-transport.js.map +1 -1
  153. package/dist/visual/cognitive-models.d.ts +77 -55
  154. package/dist/visual/cognitive-models.d.ts.map +1 -1
  155. package/dist/visual/cognitive-models.js +231 -104
  156. package/dist/visual/cognitive-models.js.map +1 -1
  157. package/dist/visual/cognitive-transport-chain.d.ts +328 -30
  158. package/dist/visual/cognitive-transport-chain.d.ts.map +1 -1
  159. package/dist/visual/cognitive-transport-chain.js +576 -353
  160. package/dist/visual/cognitive-transport-chain.js.map +1 -1
  161. package/dist/visual/cognitive-transport.d.ts +446 -13
  162. package/dist/visual/cognitive-transport.d.ts.map +1 -1
  163. package/dist/visual/cognitive-transport.js +1085 -245
  164. package/dist/visual/cognitive-transport.js.map +1 -1
  165. package/dist/visual/cross-browser.d.ts.map +1 -1
  166. package/dist/visual/cross-browser.js +8 -6
  167. package/dist/visual/cross-browser.js.map +1 -1
  168. package/dist/visual/ctc-bands.d.ts +91 -0
  169. package/dist/visual/ctc-bands.d.ts.map +1 -0
  170. package/dist/visual/ctc-bands.js +117 -0
  171. package/dist/visual/ctc-bands.js.map +1 -0
  172. package/dist/visual/ctc-reference.d.ts +287 -0
  173. package/dist/visual/ctc-reference.d.ts.map +1 -0
  174. package/dist/visual/ctc-reference.js +376 -0
  175. package/dist/visual/ctc-reference.js.map +1 -0
  176. package/dist/visual/demand-laws.d.ts +145 -0
  177. package/dist/visual/demand-laws.d.ts.map +1 -0
  178. package/dist/visual/demand-laws.js +220 -0
  179. package/dist/visual/demand-laws.js.map +1 -0
  180. package/dist/visual/distance-metrics.d.ts +23 -1
  181. package/dist/visual/distance-metrics.d.ts.map +1 -1
  182. package/dist/visual/distance-metrics.js +49 -18
  183. package/dist/visual/distance-metrics.js.map +1 -1
  184. package/dist/visual/dro-bound.d.ts +220 -0
  185. package/dist/visual/dro-bound.d.ts.map +1 -0
  186. package/dist/visual/dro-bound.js +341 -0
  187. package/dist/visual/dro-bound.js.map +1 -0
  188. package/dist/visual/exact-w1.d.ts +60 -0
  189. package/dist/visual/exact-w1.d.ts.map +1 -0
  190. package/dist/visual/exact-w1.js +247 -0
  191. package/dist/visual/exact-w1.js.map +1 -0
  192. package/dist/visual/human-input.d.ts.map +1 -1
  193. package/dist/visual/human-input.js +45 -41
  194. package/dist/visual/human-input.js.map +1 -1
  195. package/dist/visual/index.d.ts +2 -0
  196. package/dist/visual/index.d.ts.map +1 -1
  197. package/dist/visual/index.js +2 -0
  198. package/dist/visual/index.js.map +1 -1
  199. package/dist/visual/law-times-report.d.ts +49 -0
  200. package/dist/visual/law-times-report.d.ts.map +1 -0
  201. package/dist/visual/law-times-report.js +38 -0
  202. package/dist/visual/law-times-report.js.map +1 -0
  203. package/dist/visual/model-provenance.d.ts +151 -0
  204. package/dist/visual/model-provenance.d.ts.map +1 -0
  205. package/dist/visual/model-provenance.js +335 -0
  206. package/dist/visual/model-provenance.js.map +1 -0
  207. package/dist/visual/normal-cdf.d.ts +14 -0
  208. package/dist/visual/normal-cdf.d.ts.map +1 -0
  209. package/dist/visual/normal-cdf.js +26 -0
  210. package/dist/visual/normal-cdf.js.map +1 -0
  211. package/dist/visual/perceptual-transport.d.ts +28 -4
  212. package/dist/visual/perceptual-transport.d.ts.map +1 -1
  213. package/dist/visual/perceptual-transport.js +66 -32
  214. package/dist/visual/perceptual-transport.js.map +1 -1
  215. package/dist/visual/provenance/age.d.ts +30 -0
  216. package/dist/visual/provenance/age.d.ts.map +1 -0
  217. package/dist/visual/provenance/age.js +28 -0
  218. package/dist/visual/provenance/age.js.map +1 -0
  219. package/dist/visual/provenance/attention.d.ts +55 -0
  220. package/dist/visual/provenance/attention.d.ts.map +1 -0
  221. package/dist/visual/provenance/attention.js +188 -0
  222. package/dist/visual/provenance/attention.js.map +1 -0
  223. package/dist/visual/provenance/chain.d.ts +41 -0
  224. package/dist/visual/provenance/chain.d.ts.map +1 -0
  225. package/dist/visual/provenance/chain.js +66 -0
  226. package/dist/visual/provenance/chain.js.map +1 -0
  227. package/dist/visual/provenance/cif.d.ts +42 -0
  228. package/dist/visual/provenance/cif.d.ts.map +1 -0
  229. package/dist/visual/provenance/cif.js +116 -0
  230. package/dist/visual/provenance/cif.js.map +1 -0
  231. package/dist/visual/provenance/ctc-reference.d.ts +36 -0
  232. package/dist/visual/provenance/ctc-reference.d.ts.map +1 -0
  233. package/dist/visual/provenance/ctc-reference.js +96 -0
  234. package/dist/visual/provenance/ctc-reference.js.map +1 -0
  235. package/dist/visual/provenance/distance.d.ts +10 -0
  236. package/dist/visual/provenance/distance.d.ts.map +1 -0
  237. package/dist/visual/provenance/distance.js +72 -0
  238. package/dist/visual/provenance/distance.js.map +1 -0
  239. package/dist/visual/provenance/dro.d.ts +10 -0
  240. package/dist/visual/provenance/dro.d.ts.map +1 -0
  241. package/dist/visual/provenance/dro.js +2 -0
  242. package/dist/visual/provenance/dro.js.map +1 -0
  243. package/dist/visual/provenance/emotion.d.ts +26 -0
  244. package/dist/visual/provenance/emotion.d.ts.map +1 -0
  245. package/dist/visual/provenance/emotion.js +99 -0
  246. package/dist/visual/provenance/emotion.js.map +1 -0
  247. package/dist/visual/provenance/human-input.d.ts +19 -0
  248. package/dist/visual/provenance/human-input.d.ts.map +1 -0
  249. package/dist/visual/provenance/human-input.js +84 -0
  250. package/dist/visual/provenance/human-input.js.map +1 -0
  251. package/dist/visual/provenance/journey-group.d.ts +15 -0
  252. package/dist/visual/provenance/journey-group.d.ts.map +1 -0
  253. package/dist/visual/provenance/journey-group.js +15 -0
  254. package/dist/visual/provenance/journey-group.js.map +1 -0
  255. package/dist/visual/provenance/journey-mcp.d.ts +24 -0
  256. package/dist/visual/provenance/journey-mcp.d.ts.map +1 -0
  257. package/dist/visual/provenance/journey-mcp.js +54 -0
  258. package/dist/visual/provenance/journey-mcp.js.map +1 -0
  259. package/dist/visual/provenance/journey.d.ts +34 -0
  260. package/dist/visual/provenance/journey.d.ts.map +1 -0
  261. package/dist/visual/provenance/journey.js +184 -0
  262. package/dist/visual/provenance/journey.js.map +1 -0
  263. package/dist/visual/provenance/laws.d.ts +38 -0
  264. package/dist/visual/provenance/laws.d.ts.map +1 -0
  265. package/dist/visual/provenance/laws.js +40 -0
  266. package/dist/visual/provenance/laws.js.map +1 -0
  267. package/dist/visual/provenance/page-metrics.d.ts +42 -0
  268. package/dist/visual/provenance/page-metrics.d.ts.map +1 -0
  269. package/dist/visual/provenance/page-metrics.js +79 -0
  270. package/dist/visual/provenance/page-metrics.js.map +1 -0
  271. package/dist/visual/provenance/perceptual.d.ts +63 -0
  272. package/dist/visual/provenance/perceptual.d.ts.map +1 -0
  273. package/dist/visual/provenance/perceptual.js +115 -0
  274. package/dist/visual/provenance/perceptual.js.map +1 -0
  275. package/dist/visual/provenance/persona-rates.d.ts +84 -0
  276. package/dist/visual/provenance/persona-rates.d.ts.map +1 -0
  277. package/dist/visual/provenance/persona-rates.js +108 -0
  278. package/dist/visual/provenance/persona-rates.js.map +1 -0
  279. package/dist/visual/provenance/personas.d.ts +122 -0
  280. package/dist/visual/provenance/personas.d.ts.map +1 -0
  281. package/dist/visual/provenance/personas.js +298 -0
  282. package/dist/visual/provenance/personas.js.map +1 -0
  283. package/dist/visual/provenance/profiles.d.ts +39 -0
  284. package/dist/visual/provenance/profiles.d.ts.map +1 -0
  285. package/dist/visual/provenance/profiles.js +37 -0
  286. package/dist/visual/provenance/profiles.js.map +1 -0
  287. package/dist/visual/provenance/temporal.d.ts +21 -0
  288. package/dist/visual/provenance/temporal.d.ts.map +1 -0
  289. package/dist/visual/provenance/temporal.js +56 -0
  290. package/dist/visual/provenance/temporal.js.map +1 -0
  291. package/dist/visual/provenance/visual-distance.d.ts +22 -0
  292. package/dist/visual/provenance/visual-distance.d.ts.map +1 -0
  293. package/dist/visual/provenance/visual-distance.js +30 -0
  294. package/dist/visual/provenance/visual-distance.js.map +1 -0
  295. package/dist/visual/regression.d.ts.map +1 -1
  296. package/dist/visual/regression.js +14 -9
  297. package/dist/visual/regression.js.map +1 -1
  298. package/dist/visual/responsive.d.ts.map +1 -1
  299. package/dist/visual/responsive.js +4 -1
  300. package/dist/visual/responsive.js.map +1 -1
  301. package/dist/visual/scope-prose.js +2 -2
  302. package/dist/visual/scope-prose.js.map +1 -1
  303. package/dist/visual/seeded-random.d.ts +16 -0
  304. package/dist/visual/seeded-random.d.ts.map +1 -0
  305. package/dist/visual/seeded-random.js +25 -0
  306. package/dist/visual/seeded-random.js.map +1 -0
  307. package/dist/visual/stored-accessibility-traits.d.ts +27 -0
  308. package/dist/visual/stored-accessibility-traits.d.ts.map +1 -0
  309. package/dist/visual/stored-accessibility-traits.js +35 -0
  310. package/dist/visual/stored-accessibility-traits.js.map +1 -0
  311. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attention.js","sourceRoot":"","sources":["../../../src/visual/provenance/attention.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Provenance entries for the cognitive transport chain's constants
3
+ * (cognitive-transport-chain.ts). See ../model-provenance.ts for the statuses.
4
+ *
5
+ * Stage B: the motor, decision, procedure and reading demands are law times
6
+ * (demand-laws.ts, provenance/laws.ts: Fitts, novice search, KLM, Brysbaert)
7
+ * against one time budget, law.timeBudget; the seven hand-set curve constants
8
+ * they replaced (demand.interactive.*, demand.choice.halfSaturation,
9
+ * demand.text.readingCapacity) are gone. What remains here are the shares of
10
+ * those demands that land on each trait, and the rest of the chain.
11
+ *
12
+ * Stage C (research/stage-c-design.md): cognitiveLoad's four abilities take the
13
+ * decision demand and frustration's patience the reading demand, each whole,
14
+ * so no share is registered for them: the claim is the persona value, read as
15
+ * a tolerated reference time and registered with it (provenance/personas.ts).
16
+ * The 17 hand-set shares they replaced are gone: 11 text and 4 navigation
17
+ * terms of cognitiveLoad (demand.info.*, demand.text.comprehension,
18
+ * demand.wordLength.*, demand.sentenceLength.workingMemory and .comprehension,
19
+ * demand.lexicalDiversity.*, demand.longWords.*, demand.technical.*,
20
+ * demand.nav.*) and frustration's two text terms (demand.text.patience,
21
+ * demand.sentenceLength.patience). Text is priced by the reading time, and
22
+ * navigation depth, 1 on 92% of the reference pages, is the path's.
23
+ *
24
+ * Nothing in this chain is fitted or published today. Every curve constant,
25
+ * weight, rate, cap and modulation coefficient was set by hand, so it is a
26
+ * `hypothesis` whose `source` names the data that would test or fit it. The
27
+ * only `definition` entries are pure encoding choices with no empirical
28
+ * claim: a numerical epsilon and output rounding. The scale totalCTC is
29
+ * reported on is the reference set, registered in provenance/ctc-reference.ts.
30
+ *
31
+ * The chain reads these through `param()` at function entry, so a tool that
32
+ * runs it under `withProvenance` reports exactly which hand-set numbers its
33
+ * answer rests on, and tests/ctc-provenance.test.ts fails on an id that is
34
+ * registered but never read, or read but never registered.
35
+ *
36
+ * @copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com https://cbrowser.ai
37
+ * @license MIT
38
+ */
39
+ import type { ProvenanceEntry } from "../model-provenance.js";
40
+ export declare const CHAIN_PROVENANCE: ProvenanceEntry[];
41
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../src/visual/provenance/chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAc9D,eAAO,MAAM,gBAAgB,EAAE,eAAe,EAgE7C,CAAC"}
@@ -0,0 +1,66 @@
1
+ const h = (id, value, source) => ({ id: `chain.${id}`, value, status: "hypothesis", source });
2
+ const d = (id, value, source) => ({ id: `chain.${id}`, value, status: "definition", source });
3
+ // What would fit a demand weight: per-trait effort or error rates measured on
4
+ // pages that vary the named page feature alone, regressed on the feature.
5
+ const DEMAND = (feature, trait) => `Hand-set share of ${feature} that lands on ${trait}; a regression of measured ${trait}-driven effort on pages varying ${feature} alone would fit it.`;
6
+ // What would fit a share of the decision demand (choosing seconds against law.timeBudget).
7
+ const DECISION = (trait) => `Hand-set share of the decision demand (choosing seconds by Cockburn et al.'s novice search, against law.timeBudget) that lands on ${trait}; satisficing takes all of it. Decision time decomposed by a validated ${trait} measure on pages varying their choices alone would fit it.`;
8
+ export const CHAIN_PROVENANCE = [
9
+ // ── Demand curves: page feature -> trait demand ──
10
+ h("demand.animation.sigmoidThreshold", 0.3, "Hand-set animation level at which motion demand reaches 0.5; a fit of measured distraction cost against animation level would place the threshold."),
11
+ h("demand.animation.sigmoidScale", 0.15, "Hand-set width of the motion-demand sigmoid; the same distraction-cost fit would set its slope."),
12
+ h("demand.animation.changeBlindness", 0.9, DEMAND("animationLevel", "changeBlindness")),
13
+ h("demand.animation.emotionalContagion", 0.7, DEMAND("animationLevel", "emotionalContagion")),
14
+ h("demand.distractor.animationShare", 0.7, "Hand-set share of distractor pressure from motion (vs static clutter); re-reading rates on text beside animated vs cluttered-static panels would fit it."),
15
+ h("demand.distractor.visualShare", 0.3, "Hand-set share of distractor pressure from static visual complexity; the same re-reading measurement would fit it."),
16
+ h("demand.sustained.base", 0.7, "Hand-set share of the reading demand (reading seconds against law.timeBudget) that lands on sustainedAttention, kept below readability's (all of it) so decoding dominates on a still page; measured line-loss or re-reading rates on still prose would fit it."),
17
+ h("demand.sustained.distractorGain", 0.7, "Hand-set gain by which distractor pressure raises attentional demand; re-reading rates on the same prose with and without peripheral motion would fit it."),
18
+ h("demand.choice.anchoringBias", 0.85, DECISION("anchoringBias")),
19
+ h("demand.choice.fearOfMissingOut", 0.75, DECISION("fearOfMissingOut")),
20
+ h("demand.choice.socialProofSensitivity", 0.7, DECISION("socialProofSensitivity")),
21
+ h("demand.decision.riskTolerance", 0.75, DECISION("riskTolerance") + " Moved from the interactive-count curve (demand.interactive.riskTolerance, the same 0.75) when that curve was retired."),
22
+ // ── Trait resolution ──
23
+ h("missingTraitCapacity", 0.5, "Capacity assumed for a trait the persona does not carry; measured trait distributions across the roster (or refusing to score an absent trait) would replace it."),
24
+ // ── Demand modulation by the persona ──
25
+ h("engagement.atSkim", 0.75, "Hand-set share of attentional demand a pure skimmer (readingTendency 0) engages; reading time or fixation coverage against readingTendency would fit the bound."),
26
+ h("engagement.range", 0.5, "Hand-set span from pure skim to careful reading (0.75 to 1.25 of attentional demand); the same fixation-coverage data would fit it."),
27
+ h("valueModulation.demandFloor", 0.1, "Hand-set floor on the demand a Schwartz value can modulate, so zero-demand traits still move a little; value-driven effort differences on zero-demand pages would test whether the floor should be zero."),
28
+ h("valueModulation.stimulation.changeBlindness", -0.2, "Hand-set Schwartz coefficient (Schwartz 1992 names the value, not this number); effort on changing displays across measured stimulation scores would fit it."),
29
+ h("valueModulation.security.changeBlindness", -0.15, "Hand-set Schwartz coefficient; change-detection effort across measured security scores would fit it."),
30
+ h("valueModulation.achievement.satisficing", -0.2, "Hand-set Schwartz coefficient (Simon 1956 motivates the direction only); deliberation time across measured achievement scores would fit it."),
31
+ h("valueModulation.achievement.riskTolerance", -0.15, "Hand-set Schwartz coefficient; risky-click rates across measured achievement scores would fit it."),
32
+ h("valueModulation.conformity.socialProofSensitivity", 0.3, "Hand-set Schwartz coefficient (Cialdini 2001 motivates the direction only); social-proof response across measured conformity scores would fit it."),
33
+ h("valueModulation.conformity.anchoringBias", 0.2, "Hand-set Schwartz coefficient; default-option take-up across measured conformity scores would fit it."),
34
+ h("valueModulation.stimulation.patience", 0.2, "Hand-set Schwartz coefficient; abandonment on monotonous pages across measured stimulation scores would fit it."),
35
+ h("valueModulation.selfDirection.socialProofSensitivity", -0.2, "Hand-set Schwartz coefficient; social-proof response across measured self-direction scores would fit it."),
36
+ h("valueModulation.benevolence.emotionalContagion", -0.15, "Hand-set Schwartz coefficient; affect response to interface tone across measured benevolence scores would fit it."),
37
+ h("valueModulation.power.fearOfMissingOut", -0.2, "Hand-set Schwartz coefficient; urgency-cue response across measured power scores would fit it."),
38
+ // ── Transport cost ──
39
+ h("weightDeficit", 1, "Hand-set cost per squared unit of demand above capacity (the unit weightSurplus is relative to); effort measured on pages where demand exceeds capacity would fit the pair jointly."),
40
+ h("weightSurplus", 0.3, "Hand-set cost per squared unit of capacity above demand on billed dimensions; effort measured on pages far below a persona's capacity would fit it against weightDeficit. Since 2026-10-24 (research/surplus-billing-design.md, option f) it also weighs the exposure cost of EXPOSURE_DIMENSIONS (emotionalContagion), weightSurplus x susceptibility x stimulus, reused rather than a new constant so that a trait's largest cost (0.3, at full susceptibility and full stimulus) is the largest its surplus bill could reach before. The exposure form follows Hatfield, Bensman, Thornton & Rapson (2014), Interpersona 8(2), 159-179, doi:10.5964/ijpr.v8i2.162: contagion is caught from an expression and the trait is the susceptibility to catching it, so nothing is caught without either; the product form, this weight and animation as the expression are hypotheses. Burke, Hornof, Nilsen & Gorman (2005), ACM TOCHI, doi:10.1145/1121112.1121116, sign the effect (no moving banner lowered NASA-TLX workload or frustration against a blank one) and do not size it. Ratings of mood shift against measured on-page motion, by people of measured contagion susceptibility, would fit it."),
41
+ h("contentScaleGain", 3, "Hand-set slope of the content gate (layer cost saturates at mean demand 1/3); effort on near-empty pages would test whether layer cost should scale with demand presence at this rate."),
42
+ h("depletionGate", 0.1, "Hand-set content scale below which a layer depletes no capacity; the same near-empty-page effort data would test the threshold."),
43
+ h("depletionRate", 0.15, "Hand-set fraction of remaining capacity drawn per unit of layer cost; within-session effort or performance decline across a task sequence would fit it."),
44
+ h("indirectDepletionShare", 0.5, "Hand-set share of the depletion rate applied to dimensions outside the current layer; cross-task fatigue transfer measurements would fit it."),
45
+ h("maxDrawdownFraction", 0.5, "Hand-set cap on the fraction of remaining capacity one layer may draw; within-session effort measurements across a task sequence would fit it (same status as the Hill exponent)."),
46
+ d("capacityEpsilon", 1e-4, "Numerical floor applied to residual capacity after each depletion step, NOT a behavioural limit: an encoding choice with no empirical claim. It binds only when a residual falls below it. Through 20.x it bound on every tool-path run: siteFamiliarity was a dimension at 0 for every persona, so the first gated layer lifted it to 1e-4 and cognitiveLoad read that. siteFamiliarity left the vector in 21.0 (Stage C), and no built-in persona now starts below 0.1, so only a dimension drawn down by depletion, or a caller-built persona near 0, reaches it. A floor of 0 would remove that shift; it was set to keep the drawdown away from denormals."),
47
+ h("interaction.cognitiveLoadXdecision", 0.15, "Hand-set cross-layer coupling; a product-term fit of measured effort against the two layers' costs would fit it."),
48
+ h("interaction.visualComplexityXcognitiveLoad", 0.15, "Hand-set cross-layer coupling; a product-term fit of measured effort against the two layers' costs would fit it."),
49
+ h("interaction.frustrationXreadability", 0.15, "Hand-set cross-layer coupling; a product-term fit of measured effort against the two layers' costs would fit it."),
50
+ h("interaction.cognitiveLoadXmotor", 0.15, "Hand-set cross-layer coupling; a product-term fit of measured effort against the two layers' costs would fit it."),
51
+ h("interaction.frustrationXdecision", 0.15, "Hand-set cross-layer coupling; a product-term fit of measured effort against the two layers' costs would fit it."),
52
+ // chain.ctcSigmoidSlope (2.5) and chain.ctcSigmoidCentre (1.2) were the
53
+ // hand-set logistic that mapped rawCTC to totalCTC through 21.0. totalCTC is
54
+ // now a percentile against real pages (ctcReference.*, provenance/ctc-reference.ts),
55
+ // which has no free constant.
56
+ // ── Abandonment ──
57
+ h("abandonment.patienceShare", 0.7, "Hand-set weight of patience in the blended tolerance; observed abandonment against measured patience and resilience would fit the blend."),
58
+ h("abandonment.resilienceShare", 0.3, "Hand-set weight of resilience in the blended tolerance; the same abandonment data would fit it."),
59
+ h("abandonment.toleranceGain", 1.5, "Hand-set multiple of blended patience at which abandonment reaches 50%; observed abandonment against measured task difficulty would fit it."),
60
+ h("abandonment.toleranceFloor", 0.05, "Hand-set floor on tolerance so a zero-patience persona does not read as certain abandonment on a blank page; abandonment data from very low-patience users would test it."),
61
+ h("abandonmentHillExponent", 2, "Hand-set Hill exponent on the abandonment curve, UNCALIBRATED and load-bearing (a fixed deficit split over 14 screens falls from 22% to 2%); a dose-response fit of observed abandonment against task difficulty would set it."),
62
+ // ── Output encoding ──
63
+ d("roundingScale", 1000, "Output rounding to three decimals on headroom and the per-screen figures; a display choice, not a model claim."),
64
+ d("depthRoundingScale", 100, "Output rounding to two decimals on expectedDepthScreens; a display choice, not a model claim."),
65
+ ];
66
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/visual/provenance/chain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Provenance entries for the CIF score's constants (cif-score.ts).
3
+ * See ../model-provenance.ts for the statuses.
4
+ *
5
+ * Five numbers are published, all WCAG 2.2's: the 44 px enhanced target size,
6
+ * the 4.5:1 and 3:1 text-contrast minimums, the 200% text resize and the 3:1
7
+ * non-text contrast that a focus indicator needs. Four are definitions: the 0-100
8
+ * scale, an unreachable empty-average value, how many top issues to list and
9
+ * how many decimals to print. Everything else (every category and component
10
+ * weight, every per-barrier deduction, every knee and slope of the piecewise
11
+ * scores, every grade and certification band, the one missing-input score)
12
+ * was set by hand, so it is a `hypothesis` whose `source` names what would
13
+ * test it.
14
+ *
15
+ * Most of them would be tested by one study that does not exist yet: CIF
16
+ * scores for a set of pages against an external criterion, either expert
17
+ * accessibility ratings of those pages or the task success of disabled users
18
+ * on them. Weights and bands would be fitted to the criterion; knees, slopes
19
+ * and per-barrier deductions to the criterion's response to the one input
20
+ * each reads.
21
+ *
22
+ * MISSING INPUTS. There is one rule, registered as cif.noData.score with its
23
+ * rationale in the source. It replaced eighteen per-input defaults that
24
+ * disagreed with each other (21.0): a missing agent-ready score was taken as
25
+ * 60 by contrastCompliance, 50 by focusVisibility and semanticStructure and 70
26
+ * by layoutConsistency; a missing element count was 50 for contrast and 100
27
+ * for density; missing CTC decision data, animation count and navigation-item
28
+ * count scored full marks while missing readability and attention data scored
29
+ * a "conservative" 60; missing target sizes scored 100 and said "No touch
30
+ * target barriers detected"; and a missing barrier list read as "no barriers"
31
+ * in eight components. research/cif-21-deltas.md measures what the rule moved.
32
+ *
33
+ * cif-score.ts reads every entry through param() at function entry, and
34
+ * tests/cif-no-literals.test.ts fails on any other numeric literal than
35
+ * 0, 1 or 2 in its arithmetic, so the registry and the code cannot disagree.
36
+ *
37
+ * @copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com https://cbrowser.ai
38
+ * @license MIT
39
+ */
40
+ import type { ProvenanceEntry } from "../model-provenance.js";
41
+ export declare const CIF_PROVENANCE: ProvenanceEntry[];
42
+ //# sourceMappingURL=cif.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cif.d.ts","sourceRoot":"","sources":["../../../src/visual/provenance/cif.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAoB9D,eAAO,MAAM,cAAc,EAAE,eAAe,EAkH3C,CAAC"}
@@ -0,0 +1,116 @@
1
+ const h = (id, value, source) => ({ id: `cif.${id}`, value, status: "hypothesis", source });
2
+ const d = (id, value, source) => ({ id: `cif.${id}`, value, status: "definition", source });
3
+ const p = (id, value, source) => ({ id: `cif.${id}`, value, status: "published", source });
4
+ // The external criterion weights, bands and slopes would be fitted to.
5
+ const CRITERION = "expert accessibility ratings of the same pages, or the task success of disabled users on them";
6
+ const CATEGORY_WEIGHT = (category) => `Hand-set share of the composite CIF score given to ${category}; regressing ${CRITERION} on the five category scores would fit it.`;
7
+ const COMPONENT_WEIGHT = (category, component) => `Hand-set share of the ${category} score given to ${component}; regressing ${CRITERION} on the five ${category} component scores would fit it.`;
8
+ const PER_BARRIER = (barrier, who) => `Hand-set points deducted per ${barrier} barrier; the drop in task success of ${who} per additional such barrier on otherwise matched pages would fit it.`;
9
+ const GRADE = (band) => `Hand-set lower bound of ${band} on the composite score; agreement between the grade bands and ${CRITERION} would set them.`;
10
+ const CERTIFICATION = (level) => `Hand-set minimum category score for ${level} certification; whether pages certified at each level differ in ${CRITERION} would test it.`;
11
+ export const CIF_PROVENANCE = [
12
+ // ── Units and reporting ──
13
+ d("scale.max", 100, "Top of the 0-100 scale every CIF score is reported on, and the factor that turns a fraction into a point on it or into a displayed percent; a choice of units."),
14
+ d("emptyAverage", 50, "Value weightedAvg returns for a list with no weight, the scale midpoint. Unreachable from computeCIFScore, which always passes five positive weights, so it carries no claim."),
15
+ d("topIssues.count", 5, "How many of the 25 components, lowest score first, are reported as top issues; a reporting choice."),
16
+ d("display.costDecimals", 3, "Decimal places printed for CTC costs in the details text; a display choice that no score reads."),
17
+ // ── Missing inputs: the one rule ──
18
+ h("noData.score", 50, "Hand-set score of a component none of whose inputs the caller supplied, the same for all 25 components. The rule: a component scores only from supplied inputs and no assumed value ever stands in for a missing one; when nothing it reads was supplied it scores this value, is marked measured: false, says 'Not measured' and names the missing input in its details, is listed in CIFScore.notMeasured, and is never a top issue (it is not an issue found). Why 50: it is the scale midpoint, the one value whose largest possible error is the smallest (50 points either way) when nothing about the page is known, so a missing input is never scored as a pass, full marks least of all, and never as a failure. A barrier list counts as supplied when it is an array, even an empty one; a page whose barriers are undefined was not audited. The distribution of measured component scores across a crawl of real pages would set an honest prior in its place."),
19
+ // ── Published thresholds ──
20
+ p("wcag.targetSizeEnhancedPx", 44, "WCAG 2.2 Success Criterion 2.5.5 Target Size (Enhanced), Level AAA: pointer targets at least 44 by 44 CSS pixels. touchTargetCompliance counts the non-exempt targets whose smaller side reaches it, and the details and fix text quote it. Scoring against this AAA criterion rather than 2.5.8 Target Size (Minimum), Level AA (24 by 24), is this scorer's choice; the number is WCAG's. 2.5.5's exceptions (equivalent, inline, user agent control, essential) are not checked beyond the caller's `exempt` flag."),
21
+ p("wcag.contrastNormalText", 4.5, "WCAG 2.2 Success Criterion 1.4.3 Contrast (Minimum), Level AA: a contrast ratio of at least 4.5:1 for text. Used only to count, in the details and fix text, which reported issues fall below it; the contrastCompliance score itself is the share of elements with any reported issue (or, with no element count supplied, a deduction per issue)."),
22
+ p("wcag.resizeTextPercent", 200, "WCAG 2.2 Success Criterion 1.4.4 Resize Text, Level AA: except for captions and images of text, text can be resized without assistive technology up to 200 percent without loss of content or functionality. Quoted in textScalability's details and fix text. The score never resizes anything; it is estimated from information density (visual.textScalability.densityKnee), and the details say the criterion was not checked."),
23
+ p("wcag.nonTextContrast", 3, "WCAG 2.2 Success Criterion 1.4.11 Non-text Contrast, Level AA: visual information required to identify user interface components and their states, which includes a focus indicator, has a contrast ratio of at least 3:1 against adjacent colors. Quoted in focusVisibility's fix text only; focusVisibility is scored from the semantic or agent-ready score and never measures a focus indicator."),
24
+ p("wcag.contrastLargeText", 3, "WCAG 2.2 Success Criterion 1.4.3 Contrast (Minimum), Level AA: at least 3:1 for large-scale text. Used only in the details and fix text, as for wcag.contrastNormalText."),
25
+ // ── Composite ──
26
+ h("weight.motor", 0.2, CATEGORY_WEIGHT("motor fitness")),
27
+ h("weight.visual", 0.2, CATEGORY_WEIGHT("visual fitness")),
28
+ h("weight.cognitive", 0.25, CATEGORY_WEIGHT("cognitive fitness")),
29
+ h("weight.sensory", 0.15, CATEGORY_WEIGHT("sensory fitness")),
30
+ h("weight.navigation", 0.2, CATEGORY_WEIGHT("navigation fitness")),
31
+ // ── Motor ──
32
+ h("motor.weight.touchTargetCompliance", 0.3, COMPONENT_WEIGHT("motor", "touchTargetCompliance")),
33
+ h("motor.weight.hitProbability", 0.25, COMPONENT_WEIGHT("motor", "hitProbability")),
34
+ h("motor.weight.interactionCount", 0.2, COMPONENT_WEIGHT("motor", "interactionCount")),
35
+ h("motor.weight.spacingAdequacy", 0.15, COMPONENT_WEIGHT("motor", "spacingAdequacy")),
36
+ h("motor.weight.dragFreeAlternatives", 0.1, COMPONENT_WEIGHT("motor", "dragFreeAlternatives")),
37
+ h("motor.touchTarget.barrierPenalty", 15, PER_BARRIER("touch_target (the fallback when no target sizes were measured)", "users with motor impairments")),
38
+ h("motor.touchTarget.barrierFloor", 30, "Hand-set lowest touchTargetCompliance the barrier-count fallback can reach, however many touch_target barriers are reported; measured target compliance on pages with many such barriers would set the floor or remove it."),
39
+ h("motor.hit.midpointPx", 20, "Hand-set mean target size (smaller side, px) at which hitProbability scores 50; hit rates of users with motor impairments on targets of measured size (a Fitts-style pointing study) would place the midpoint."),
40
+ h("motor.hit.scalePx", 10, "Hand-set width (px) of the hitProbability sigmoid; the same pointing study would fit its slope."),
41
+ h("motor.interactive.freeCount", 20, "Hand-set interactive-element count up to which interactionCount scores full marks; task time or error rate of users with motor impairments against interactive-element count would place it."),
42
+ h("motor.interactive.kneeCount", 40, "Hand-set count at which interactionCount's penalty slope changes. The score at the knee is not a constant: cif-score.ts derives it from the free count and the slope below (kneeScore()), so the two branches meet by construction. The same task-time data would place the knee or show there is none."),
43
+ h("motor.interactive.slopeBelowKnee", 2.5, "Hand-set points lost per interactive element between the free count and the knee; the same task-time data would fit it."),
44
+ h("motor.interactive.slopeAboveKnee", 1, "Hand-set points lost per interactive element above the knee; the same task-time data would fit it."),
45
+ h("motor.spacing.barrierPenalty", 15, PER_BARRIER("close-spacing (empathy_audit's motor_precision barrier weighted target_spacing; until 21.0 this read touch_target barriers, the same ones the touchTargetCompliance fallback counts, so a page with them and no size data was penalised twice)", "users with motor impairments")),
46
+ h("motor.spacing.minGapPx", 8, "Gap (px) below which empathy_audit's close-spacing detector reports two interactive elements; quoted in spacingAdequacy's details and fix text so they name the threshold the counted barrier used. The detector's own literal lives in analysis/accessibility-empathy.ts and is not read from here, so the two can drift; it is not WCAG's (2.5.8's spacing exception is a 24 px circle). Mis-tap rates of users with tremor against the gap between adjacent targets would set it."),
47
+ h("motor.drag.barrierPenalty", 25, PER_BARRIER("drag-dependent", "users with motor impairments and keyboard-only users")),
48
+ // ── Visual ──
49
+ h("visual.weight.contrastCompliance", 0.3, COMPONENT_WEIGHT("visual", "contrastCompliance")),
50
+ h("visual.weight.textScalability", 0.2, COMPONENT_WEIGHT("visual", "textScalability")),
51
+ h("visual.weight.colorIndependence", 0.2, COMPONENT_WEIGHT("visual", "colorIndependence")),
52
+ h("visual.weight.focusVisibility", 0.15, COMPONENT_WEIGHT("visual", "focusVisibility")),
53
+ h("visual.weight.spacingDensity", 0.15, COMPONENT_WEIGHT("visual", "spacingDensity")),
54
+ h("visual.contrast.barrierPenalty", 10, PER_BARRIER("contrast (and per reported contrast issue when no element count is supplied, since the failing share then has no denominator)", "low-vision users")),
55
+ h("visual.contrast.proxySlope", 0.8, "Hand-set slope mapping the agent-ready score onto contrastCompliance when no contrast data exist; correlating agent-ready scores with measured contrast compliance across pages would fit it, or show the proxy carries no information."),
56
+ h("visual.contrast.proxyIntercept", 20, "Hand-set intercept of the same agent-ready proxy; the same correlation would fit it."),
57
+ h("visual.textScalability.densityKnee", 0.6, "Hand-set information density above which textScalability is penalised. The score never zooms anything; zooming pages to 200% and recording loss of content or function (the test WCAG 1.4.4 describes) against density would place the knee."),
58
+ h("visual.textScalability.slope", 80, "Hand-set points lost per unit of density above the knee; the same zoom test would fit it."),
59
+ h("visual.color.barrierPenalty", 20, PER_BARRIER("color-only information", "colour-blind users")),
60
+ // ── Cognitive ──
61
+ h("cognitive.weight.decisionComplexity", 0.25, COMPONENT_WEIGHT("cognitive", "decisionComplexity")),
62
+ h("cognitive.weight.readability", 0.2, COMPONENT_WEIGHT("cognitive", "readability")),
63
+ h("cognitive.weight.informationDensity", 0.2, COMPONENT_WEIGHT("cognitive", "informationDensity")),
64
+ h("cognitive.weight.attentionClarity", 0.2, COMPONENT_WEIGHT("cognitive", "attentionClarity")),
65
+ h("cognitive.weight.predictability", 0.15, COMPONENT_WEIGHT("cognitive", "predictability")),
66
+ h("cognitive.decision.costSlope", 200, "Hand-set points lost per unit of decision-layer cost. That layer is itself a hypothesis of the transport chain, so task success at decision points against the layer's cost would fit the slope only once the layer is."),
67
+ h("cognitive.readability.fleschGain", 1.2, "Hand-set multiplier from Flesch reading ease to readability, capped at the top of the scale (Flesch 83.3 and above scores full marks); comprehension scores of readers with cognitive or reading disabilities against Flesch on the same pages would fit it."),
68
+ h("cognitive.density.freeCount", 200, "Hand-set element count up to which informationDensity scores full marks; task success or self-reported overload against element count would place it."),
69
+ h("cognitive.density.kneeCount", 500, "Hand-set element count at which informationDensity's penalty slope changes; the score there is derived from the slope below (kneeScore()), so the branches meet by construction. The same data would place the knee or show there is none."),
70
+ h("cognitive.density.divisorBelowKnee", 6, "Hand-set elements per point lost between the free count and the knee; the same data would fit it."),
71
+ h("cognitive.density.divisorAboveKnee", 30, "Hand-set elements per point lost above the knee; the same data would fit it."),
72
+ h("cognitive.attention.captureGain", 200, "Hand-set multiplier from CTA capture rate to attentionClarity (a capture rate of 0.5 or more scores full marks); success at finding the primary action against measured capture rate would fit it."),
73
+ h("cognitive.predictability.freeCount", 7, "Hand-set navigation-item count up to which predictability scores full marks; cif-score.ts cites nothing for it. Wayfinding success against navigation-item count would place it."),
74
+ h("cognitive.predictability.slope", 5, "Hand-set points lost per navigation item above the free count, the only slope. Until 21.0 a knee at 12 split it into two branches that lost the same 5 points per item, so the knee changed no score and was removed with its knee score and second slope. Wayfinding success against item count would fit the slope, or show a knee exists."),
75
+ // ── Sensory ──
76
+ h("sensory.weight.animationControl", 0.3, COMPONENT_WEIGHT("sensory", "animationControl")),
77
+ h("sensory.weight.sensoryIndependence", 0.25, COMPONENT_WEIGHT("sensory", "sensoryIndependence")),
78
+ h("sensory.weight.visualCalm", 0.2, COMPONENT_WEIGHT("sensory", "visualCalm")),
79
+ h("sensory.weight.layoutConsistency", 0.15, COMPONENT_WEIGHT("sensory", "layoutConsistency")),
80
+ h("sensory.weight.overloadThreshold", 0.1, COMPONENT_WEIGHT("sensory", "overloadThreshold")),
81
+ h("sensory.animation.controlledFloor", 90, "Hand-set lowest animationControl when prefers-reduced-motion is supported, however many animations there are; distraction ratings by users with vestibular or attention disorders on pages that honour reduced motion would set it."),
82
+ h("sensory.animation.controlledPenalty", 1, "Hand-set points lost per animation when prefers-reduced-motion is supported, down to the floor; the same distraction ratings would fit it."),
83
+ h("sensory.animation.uncontrolledPenalty", 20, "Hand-set points lost per animation without prefers-reduced-motion support, quoted in the details text; task success or symptom reports of users with vestibular or attention disorders against uncontrolled animation count would fit it."),
84
+ h("sensory.audio.barrierPenalty", 15, PER_BARRIER("caption or audio (each barrier once, even when it mentions both; quoted in the details text)", "deaf and hard-of-hearing users")),
85
+ h("sensory.calm.densityWeight", 50, "Hand-set visualCalm points lost across the full range of information density; calm ratings by users with sensory sensitivities against measured density would fit it."),
86
+ h("sensory.calm.animationPenalty", 15, "Hand-set visualCalm points lost per uncontrolled animation; the same calm ratings would fit it."),
87
+ // overloadThreshold's cut points are the verdict bands' (ctcBands.upperHalf,
88
+ // ctcBands.high; provenance/ctc-reference.ts). Its own easyCTC 0.3 and
89
+ // kneeCTC 0.6 were cuts on the logistic totalCTC was until 21.x and are
90
+ // retired; the score at the knee is still derived from the slope below
91
+ // (kneeScore(): 100 - (0.8 - 0.5) x 130 = 61).
92
+ h("sensory.overload.slopeBelowKnee", 130, "Hand-set points lost per unit of totalCTC (a percentile of real pages) between ctcBands.upperHalf and the knee at ctcBands.high. Set when totalCTC was a logistic, and kept: on the percentile the stretch it covers is 0.5 to 0.8, the same width as the logistic's 0.3 to 0.6, so the knee still scores 61. Abandonment or overload reports against totalCTC would fit it."),
93
+ h("sensory.overload.slopeAboveKnee", 100, "Hand-set points lost per unit of totalCTC (a percentile) above the knee at ctcBands.high. Kept from the logistic: the stretch above the knee is now 0.8 to 1, so the lowest score totalCTC can reach is 41, where it was 21 at totalCTC 1 on the logistic. The same abandonment data would fit it."),
94
+ // ── Navigation ──
95
+ h("navigation.weight.semanticStructure", 0.25, COMPONENT_WEIGHT("navigation", "semanticStructure")),
96
+ h("navigation.weight.keyboardOperability", 0.25, COMPONENT_WEIGHT("navigation", "keyboardOperability")),
97
+ h("navigation.weight.skipMechanisms", 0.15, COMPONENT_WEIGHT("navigation", "skipMechanisms")),
98
+ h("navigation.weight.linkButtonClarity", 0.15, COMPONENT_WEIGHT("navigation", "linkButtonClarity")),
99
+ h("navigation.weight.formAccessibility", 0.2, COMPONENT_WEIGHT("navigation", "formAccessibility")),
100
+ h("navigation.keyboard.barrierPenalty", 15, PER_BARRIER("keyboard or motor_precision (each barrier once, and not the close-spacing barrier, which spacingAdequacy counts)", "keyboard-only and switch users")),
101
+ h("navigation.skip.barrierPenalty", 25, PER_BARRIER("skip-mechanism", "keyboard and screen-reader users")),
102
+ h("navigation.form.barrierPenalty", 10, PER_BARRIER("form", "screen-reader users")),
103
+ // ── Grade and certification bands ──
104
+ h("grade.aPlus", 95, GRADE("grade A+")),
105
+ h("grade.a", 85, GRADE("grade A")),
106
+ h("grade.b", 70, GRADE("grade B")),
107
+ h("grade.c", 50, GRADE("grade C")),
108
+ h("grade.d", 30, GRADE("grade D (below it the grade is F)")),
109
+ h("certification.platinum", 95, CERTIFICATION("platinum")),
110
+ h("certification.gold", 85, CERTIFICATION("gold")),
111
+ h("certification.silver", 70, CERTIFICATION("silver")),
112
+ h("certification.bronze", 50, CERTIFICATION("bronze (below it there is none)")),
113
+ // ── Fix recommendations ──
114
+ h("fix.decision.choiceThreshold", 10, "Hand-set interactive-element count above which the decisionComplexity fix asks to cut choices, and the count it asks to cut to; it changes recommendation text only. Until 21.0 the fix asked for '5-7 options per decision point (Hick's Law)', but the Hick-Hyman law gives decision time as a function of the number of options and names no target count. Decision time against option count on real pages would place it."),
115
+ ];
116
+ //# sourceMappingURL=cif.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cif.js","sourceRoot":"","sources":["../../../src/visual/provenance/cif.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Provenance entries for the reference set totalCTC is ranked against
3
+ * (../ctc-reference.ts, src/data/ctc-reference-v2-2026-10-24.ts), for the
4
+ * bootstrap interval reported beside it, and for the numbers defined on that
5
+ * percentile: the verdict band cut points (ctcBands.*) and the ideal-profile
6
+ * caps (idealProfiles.maxCTC.*), below.
7
+ *
8
+ * Status `definition`, not `fitted`. The percentile DEFINES the scale of
9
+ * totalCTC: "how this page's cost ranks among real pages for the built-in
10
+ * personas". Nothing is estimated against a target, so there is no held-out
11
+ * score to report and `fitted` would claim a calibration that does not exist.
12
+ * The pages are measured, but measuring the yardstick does not validate what
13
+ * it measures: the chain's constants stay hypotheses, and a percentile of an
14
+ * untested cost is an untested cost, ranked.
15
+ *
16
+ * The page-count entries' value is the number of graded reference pages at
17
+ * that scope. The chain reads it on every score and refuses to rank against a
18
+ * shipped reference whose page count differs, so the registry cannot describe
19
+ * one dataset while the code ranks against another.
20
+ *
21
+ * The interval entries are settings of a resampling procedure, not claims
22
+ * about people: how many resamples, which seed, which central share, and how
23
+ * finely the interval is precomputed. They are definitions for the same
24
+ * reason the reference is.
25
+ *
26
+ * @copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com https://cbrowser.ai
27
+ * @license MIT
28
+ */
29
+ import type { ProvenanceEntry } from "../model-provenance.js";
30
+ /**
31
+ * Everything defined on the reference percentile: the reference itself, the
32
+ * verdict bands cut on it, and the ideal-profile caps compared against it.
33
+ * One export, so model-provenance.ts merges all three with one import.
34
+ */
35
+ export declare const CTC_REFERENCE_PROVENANCE: ProvenanceEntry[];
36
+ //# sourceMappingURL=ctc-reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ctc-reference.d.ts","sourceRoot":"","sources":["../../../src/visual/provenance/ctc-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAuG9D;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAAe,EAAoD,CAAC"}
@@ -0,0 +1,96 @@
1
+ /** Graded pages in the shipped reference; both scopes measure the same pages. */
2
+ const GRADED = 514;
3
+ const DATASET = "src/data/ctc-reference-v2-2026-10-24.ts: raw measurements (measurePageRaw, raw format 2) of real pages crawled 2026-10-24 by research/ctc-reference/crawl-v2.ts " +
4
+ "with cbrowser's own browser at 1920x1080, from three frames (the v1 brand list; a seeded random draw from Tranco list 746PX across four rank bands; " +
5
+ "government and nonprofit sites from CISA's .gov registry, USAGov's state pages and Wikidata) and six page types (landing, form, search, article, help, cart), " +
6
+ "direct first and through a residential proxy only where the direct attempt was blocked. Blocked, failed, excluded and robots-disallowed pages carry no " +
7
+ "measurement and are excluded; the blocked ones are a selection effect: the reference is the web that lets cbrowser's browser in, not the web";
8
+ const POOL = "Each graded page's metrics are derived from its raw measurement under the live page-metric constants, scored through the live chain for all 25 built-in " +
9
+ "human personas (built as cognitive_effort builds them, no site model), and the raw costs are pooled into one distribution per option set, every page " +
10
+ "counted once; totalCTC is the linear-interpolated percentile of rawCTC in it";
11
+ const REFERENCE = [
12
+ {
13
+ id: "ctcReference.viewport",
14
+ value: GRADED,
15
+ status: "definition",
16
+ source: `${DATASET}; measured at viewport scope (the first screen, before scrolling). ${POOL}. A definition of the score's scale, not a fit: no target, no held-out score.`,
17
+ },
18
+ {
19
+ id: "ctcReference.full_page",
20
+ value: GRADED,
21
+ status: "definition",
22
+ source: `${DATASET}; measured at full_page scope (the whole document, after the lazy-content walk). ${POOL}. A definition of the score's scale, not a fit: no target, no held-out score.`,
23
+ },
24
+ {
25
+ id: "ctcReference.interval.replicates",
26
+ value: 1000,
27
+ status: "definition",
28
+ source: "Bootstrap resamples behind totalCTCInterval. Each draws as many reference pages as there are, with replacement, keeping a page's personas together (pages are the sampling unit). 1,000 is the usual count for a percentile interval; a setting of the procedure, not a model claim.",
29
+ },
30
+ {
31
+ id: "ctcReference.interval.seed",
32
+ value: 20261022,
33
+ status: "definition",
34
+ source: "Seed of the bootstrap's random draws, so the same reference gives the same interval on every run and machine; a setting of the procedure, not a model claim.",
35
+ },
36
+ {
37
+ id: "ctcReference.interval.level",
38
+ value: 0.95,
39
+ status: "definition",
40
+ source: "Central share of the resampled percentiles totalCTCInterval reports (2.5th to 97.5th): a choice of how wide an interval to report, not a model claim.",
41
+ },
42
+ {
43
+ id: "ctcReference.interval.grid",
44
+ value: 101,
45
+ status: "definition",
46
+ source: "Raw costs at which the interval is precomputed: the pooled reference's quantiles at every percentile point (0, 0.01, ..., 1), interpolated between, so a score pays a binary search rather than a bootstrap. A resolution choice, not a model claim.",
47
+ },
48
+ ];
49
+ const BAND = "A cut point on totalCTC, the reference percentile, naming the band a verdict reports (../ctc-bands.ts). Chosen as a convention, " +
50
+ "not fitted: it marks a rank among the reference (page, persona) pairs, and makes no claim about how a person experiences the page, " +
51
+ "which the CTC has not been tested against";
52
+ /**
53
+ * The verdict bands: fixed cut points on the percentile, so a verdict states a
54
+ * rank ("costlier than 87% of the real pages we measured; band: high"), never a
55
+ * comfort claim. `definition`: a choice of where to draw lines on a scale the
56
+ * reference already defines, with nothing estimated.
57
+ */
58
+ const BANDS = [
59
+ { id: "ctcBands.upperHalf", value: 0.5, status: "definition", source: `${BAND}. Below it: lower half; from it: upper half (the median).` },
60
+ { id: "ctcBands.high", value: 0.8, status: "definition", source: `${BAND}. From it: high.` },
61
+ { id: "ctcBands.top", value: 0.95, status: "definition", source: `${BAND}. From it: the top 5% band.` },
62
+ ];
63
+ const IDEAL = "Hand-set cap on totalCTC in this persona's ideal profile (../../ideal-profiles.ts), compared in the ideal-profile gap score " +
64
+ "(ideal-profiles-gap.ts; a library API no tool calls). Set when totalCTC was a logistic of rawCTC (slope 2.5, centre 1.2) and kept at the " +
65
+ "same number on the percentile scale, so its meaning changed in 21.x: it is now the percentile of the reference the page must not exceed. " +
66
+ "On the logistic, 0.5 / 0.6 / 0.7 / 0.8 sat at rawCTC 1.20 / 1.36 / 1.54 / 1.76, which rank at 0.90 / 0.93 / 0.96 / 0.97 among real " +
67
+ "first screens and 0.58 / 0.66 / 0.74 / 0.81 among whole pages (research/ctc-21-deltas.md), so every cap is far stricter now at viewport " +
68
+ "scope and somewhat stricter at full_page. Task completion or abandonment measured for this " +
69
+ "persona on pages either side of the cap would test it";
70
+ /**
71
+ * The ideal-profile caps on totalCTC (IDEAL_PROFILES[].thresholds.maxCTC),
72
+ * read through param() so the profile and the registry cannot disagree.
73
+ * Hypotheses: nothing ties any of them to an outcome.
74
+ */
75
+ const IDEAL_PROFILE_CAPS = [
76
+ ["cognitive-adhd", 0.6],
77
+ ["autism-spectrum", 0.7],
78
+ ["motor-impairment-tremor", 0.8],
79
+ ["first-timer", 0.8],
80
+ ["impatient-user", 0.5],
81
+ ["elderly-user", 0.7],
82
+ ["low-vision-magnified", 0.8],
83
+ ["dyslexic-user", 0.7],
84
+ ].map(([persona, value]) => ({
85
+ id: `idealProfiles.maxCTC.${persona}`,
86
+ value,
87
+ status: "hypothesis",
88
+ source: `${IDEAL}.`,
89
+ }));
90
+ /**
91
+ * Everything defined on the reference percentile: the reference itself, the
92
+ * verdict bands cut on it, and the ideal-profile caps compared against it.
93
+ * One export, so model-provenance.ts merges all three with one import.
94
+ */
95
+ export const CTC_REFERENCE_PROVENANCE = [...REFERENCE, ...BANDS, ...IDEAL_PROFILE_CAPS];
96
+ //# sourceMappingURL=ctc-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ctc-reference.js","sourceRoot":"","sources":["../../../src/visual/provenance/ctc-reference.ts"],"names":[],"mappings":"AA8BA,iFAAiF;AACjF,MAAM,MAAM,GAAG,GAAG,CAAC;AAEnB,MAAM,OAAO,GACX,kKAAkK;IAClK,sJAAsJ;IACtJ,gKAAgK;IAChK,yJAAyJ;IACzJ,8IAA8I,CAAC;AAEjJ,MAAM,IAAI,GACR,0JAA0J;IAC1J,uJAAuJ;IACvJ,8EAA8E,CAAC;AAEjF,MAAM,SAAS,GAAsB;IACnC;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,GAAG,OAAO,sEAAsE,IAAI,+EAA+E;KAC5K;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,GAAG,OAAO,oFAAoF,IAAI,+EAA+E;KAC1L;IACD;QACE,EAAE,EAAE,kCAAkC;QACtC,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,sRAAsR;KAC/R;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,8JAA8J;KACvK;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,uJAAuJ;KAChK;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,sPAAsP;KAC/P;CACF,CAAC;AAEF,MAAM,IAAI,GACR,kIAAkI;IAClI,qIAAqI;IACrI,2CAA2C,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,KAAK,GAAsB;IAC/B,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,2DAA2D,EAAE;IAC1I,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,kBAAkB,EAAE;IAC5F,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,6BAA6B,EAAE;CACxG,CAAC;AAEF,MAAM,KAAK,GACT,8HAA8H;IAC9H,2IAA2I;IAC3I,2IAA2I;IAC3I,qIAAqI;IACrI,0IAA0I;IAC1I,6FAA6F;IAC7F,uDAAuD,CAAC;AAE1D;;;;GAIG;AACH,MAAM,kBAAkB,GAAuB;IAC7C,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,aAAa,EAAE,GAAG,CAAC;IACpB,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,cAAc,EAAE,GAAG,CAAC;IACrB,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,eAAe,EAAE,GAAG,CAAC;CACb,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,EAAE,EAAE,wBAAwB,OAAO,EAAE;IACrC,KAAK;IACL,MAAM,EAAE,YAAqB;IAC7B,MAAM,EAAE,GAAG,KAAK,GAAG;CACpB,CAAC,CAAC,CAAC;AAEJ;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB,CAAC,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Provenance entries for the persona distance's constants
3
+ * (cognitive-transport.ts). See ../model-provenance.ts for the statuses.
4
+ *
5
+ * @copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com https://cbrowser.ai
6
+ * @license MIT
7
+ */
8
+ import type { ProvenanceEntry } from "../model-provenance.js";
9
+ export declare const DISTANCE_PROVENANCE: ProvenanceEntry[];
10
+ //# sourceMappingURL=distance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distance.d.ts","sourceRoot":"","sources":["../../../src/visual/provenance/distance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAiB9D,eAAO,MAAM,mBAAmB,EAAE,eAAe,EA6DhD,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * The ground metric is a three-level step function over a hand-drawn grouping
3
+ * of the 29 traits into 8 domains plus a hand-picked list of "related" domain
4
+ * pairs (traitGroundDistance). Nothing in data backs the grouping or the
5
+ * levels; they were chosen so that moving mass between sibling traits is
6
+ * cheaper than moving it across the profile. What would test them: trait
7
+ * co-variation across a measured population — if traits in the same declared
8
+ * domain are not more correlated across people than traits in unrelated
9
+ * domains, the grouping is wrong; the levels could then be fitted as a
10
+ * monotone function of (1 - |correlation|) or of a learned embedding distance.
11
+ */
12
+ const GROUND_METRIC_TEST = "hand-assigned domain proximity; would be tested by trait co-variation across a measured population " +
13
+ "(same-domain pairs should correlate more than unrelated pairs) and refitted from it";
14
+ export const DISTANCE_PROVENANCE = [
15
+ {
16
+ id: "distance.groundSameDomain",
17
+ value: 0.2,
18
+ status: "hypothesis",
19
+ source: `ground cost between two traits in the same declared domain; ${GROUND_METRIC_TEST}`,
20
+ },
21
+ {
22
+ id: "distance.groundRelatedDomain",
23
+ value: 0.5,
24
+ status: "hypothesis",
25
+ source: `ground cost between traits in domains listed as related; ${GROUND_METRIC_TEST}`,
26
+ },
27
+ {
28
+ id: "distance.groundUnrelatedDomain",
29
+ value: 0.8,
30
+ status: "hypothesis",
31
+ source: `ground cost between traits in unrelated domains, the maximum; ${GROUND_METRIC_TEST}`,
32
+ },
33
+ {
34
+ id: "distance.groundUnknownTrait",
35
+ value: 0.8,
36
+ status: "hypothesis",
37
+ source: "ground cost when either trait is outside COGNITIVE_TRAITS: set equal to the unrelated cost so an unknown " +
38
+ "name is maximally distant rather than scored as a sibling (the 2026-07-28 phantom-vocabulary defect); " +
39
+ "a measured population containing the unknown trait would replace it",
40
+ },
41
+ {
42
+ id: "distance.slackCost",
43
+ value: 0.4,
44
+ status: "hypothesis",
45
+ source: "cost per unit of trait mass created or destroyed in the generalized W1 (the slack bin's distance to " +
46
+ "every trait); set to half the largest ground cost, the smallest value at which the slack-bin cost is " +
47
+ "still a metric and creating plus destroying mass is never cheaper than transporting it between two " +
48
+ "traits; it fixes the exchange rate between a difference in overall trait level and a difference in " +
49
+ "profile shape. Would be tested by behavioural divergence between persona pairs that differ only in " +
50
+ "level versus pairs that differ only in shape at matched L1 difference (e.g. task completion or " +
51
+ "abandonment gaps on the same pages), fitting c >= 0.4 to whichever predicts the measured gaps",
52
+ },
53
+ {
54
+ id: "distance.simplexFloor",
55
+ value: 0.01,
56
+ status: "definition",
57
+ source: "numerical floor applied to every trait before normalising to the simplex; a pure encoding choice " +
58
+ "kept because the trait<->distribution round trip and tests/cognitive-interpolate.test.ts pin it; " +
59
+ "carries no claim about people. It no longer applies to the distance's w1: the generalized W1 reads " +
60
+ "trait values directly (the solver accepts zero atoms), so a trait of 0 and one of 0.01 are 0.01/29 " +
61
+ "units of mass apart. It still applies to the simplex encoding behind w2, sliced, the geodesic and " +
62
+ "the barycenter",
63
+ },
64
+ {
65
+ id: "distance.missingTraitDefault",
66
+ value: 0.5,
67
+ status: "hypothesis",
68
+ source: "value assumed for a trait a persona does not define; claims an unmeasured trait sits at the midpoint " +
69
+ "of its range; would be tested by the population mean of each trait among personas that do define it",
70
+ },
71
+ ];
72
+ //# sourceMappingURL=distance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distance.js","sourceRoot":"","sources":["../../../src/visual/provenance/distance.ts"],"names":[],"mappings":"AASA;;;;;;;;;;GAUG;AACH,MAAM,kBAAkB,GACtB,qGAAqG;IACrG,qFAAqF,CAAC;AAExF,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,+DAA+D,kBAAkB,EAAE;KAC5F;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,4DAA4D,kBAAkB,EAAE;KACzF;IACD;QACE,EAAE,EAAE,gCAAgC;QACpC,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,iEAAiE,kBAAkB,EAAE;KAC9F;IACD;QACE,EAAE,EAAE,6BAA6B;QACjC,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EACJ,2GAA2G;YAC3G,wGAAwG;YACxG,qEAAqE;KACxE;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EACJ,sGAAsG;YACtG,uGAAuG;YACvG,qGAAqG;YACrG,qGAAqG;YACrG,qGAAqG;YACrG,iGAAiG;YACjG,+FAA+F;KAClG;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,YAAY;QACpB,MAAM,EACJ,mGAAmG;YACnG,mGAAmG;YACnG,qGAAqG;YACrG,qGAAqG;YACrG,oGAAoG;YACpG,gBAAgB;KACnB;IACD;QACE,EAAE,EAAE,8BAA8B;QAClC,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EACJ,uGAAuG;YACvG,qGAAqG;KACxG;CACF,CAAC"}