@1aboveio/skills 0.19.2 → 0.20.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 (203) hide show
  1. package/README.md +9 -4
  2. package/package.json +1 -1
  3. package/runtime/skills/distribution/generated/recipes.json +54 -48
  4. package/runtime/skills/distribution/scripts/bundles.mjs +113 -7
  5. package/runtime/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +4 -6
  6. package/runtime/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +3 -36
  7. package/skills/cicd-pipeline/mergify/SKILL.md +1 -1
  8. package/skills/engineering/engineering-runtime/coherence/workflow.json +14 -83
  9. package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +4 -6
  10. package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +3 -36
  11. package/skills/engineering/smoke/SKILL.md +1 -1
  12. package/skills/payment/payment-analysis/SKILL.md +13 -7
  13. package/skills/payment/payment-analysis/references/chargebacks.md +43 -18
  14. package/skills/payment/payment-analysis/references/event-layers.md +4 -0
  15. package/skills/payment/payment-analysis/references/metrics.md +9 -7
  16. package/skills/payment/payment-analysis/references/report-template.md +3 -3
  17. package/skills/payment/payment-analysis/references/terminology.md +6 -1
  18. package/skills/payment/payment-analysis/references/visualization.md +1 -1
  19. package/skills/payment/tld-detection/SKILL.md +163 -0
  20. package/skills/payment/tld-detection/agents/openai.yaml +9 -0
  21. package/skills/payment/tld-detection/evals/evals.json +107 -0
  22. package/skills/payment/tld-detection/references/clean.md +51 -0
  23. package/skills/payment/tld-detection/references/clustering.md +219 -0
  24. package/skills/payment/tld-detection/references/decision.md +85 -0
  25. package/skills/payment/tld-detection/references/report-template.md +169 -0
  26. package/skills/payment/tld-detection/references/terminology.md +69 -0
  27. package/skills/payment/tld-detection/references/workflow.md +78 -0
  28. package/skills/payment/tld-detection/scripts/detect_ladders.py +390 -0
  29. package/skills/payment/tld-detection/tests/test_detect_ladders.py +132 -0
  30. package/skills/engineering/resolve-issues/SKILL.md +0 -168
  31. package/skills/engineering/resolve-issues/agents/openai.yaml +0 -9
  32. package/skills/engineering/resolve-issues/generated/workflow-repair-policy.json +0 -499
  33. package/skills/engineering/resolve-issues/references/breaker.md +0 -82
  34. package/skills/engineering/resolve-issues/references/deliverables.md +0 -27
  35. package/skills/engineering/resolve-issues/references/delivery.md +0 -108
  36. package/skills/engineering/resolve-issues/references/evidence-lane.md +0 -21
  37. package/skills/engineering/resolve-issues/references/exact-head-ci.md +0 -287
  38. package/skills/engineering/resolve-issues/references/fan-out.md +0 -33
  39. package/skills/engineering/resolve-issues/references/finalization.md +0 -68
  40. package/skills/engineering/resolve-issues/references/guarantees.md +0 -10
  41. package/skills/engineering/resolve-issues/references/high-risk.md +0 -29
  42. package/skills/engineering/resolve-issues/references/incidents/848/README.md +0 -156
  43. package/skills/engineering/resolve-issues/references/intake.md +0 -86
  44. package/skills/engineering/resolve-issues/references/integration-gate.md +0 -53
  45. package/skills/engineering/resolve-issues/references/interference.md +0 -87
  46. package/skills/engineering/resolve-issues/references/loop.md +0 -134
  47. package/skills/engineering/resolve-issues/references/model-catalog.md +0 -9
  48. package/skills/engineering/resolve-issues/references/postmortem.md +0 -27
  49. package/skills/engineering/resolve-issues/references/pre-flight-model-slots.md +0 -41
  50. package/skills/engineering/resolve-issues/references/pre-flight-recording-and-checkout.md +0 -48
  51. package/skills/engineering/resolve-issues/references/pre-flight.md +0 -41
  52. package/skills/engineering/resolve-issues/references/regression-checklist.md +0 -26
  53. package/skills/engineering/resolve-issues/references/run-state.md +0 -288
  54. package/skills/engineering/resolve-issues/references/sandboxed-testing.md +0 -48
  55. package/skills/engineering/resolve-issues/references/spawn-contract.md +0 -96
  56. package/skills/engineering/resolve-issues/references/terminal-evidence-journal.md +0 -40
  57. package/skills/engineering/resolve-issues/references/why.md +0 -653
  58. package/skills/engineering/resolve-issues/schemas/fix-round.schema.json +0 -49
  59. package/skills/engineering/resolve-issues/scripts/combine-and-verify.mjs +0 -721
  60. package/skills/engineering/resolve-issues/scripts/component-candidate.mjs +0 -962
  61. package/skills/engineering/resolve-issues/scripts/contract-revision.mjs +0 -220
  62. package/skills/engineering/resolve-issues/scripts/detect-delivery-mode.mjs +0 -420
  63. package/skills/engineering/resolve-issues/scripts/detect-target-branch.mjs +0 -256
  64. package/skills/engineering/resolve-issues/scripts/detect-workspace-mode.mjs +0 -168
  65. package/skills/engineering/resolve-issues/scripts/discover-models.mjs +0 -9
  66. package/skills/engineering/resolve-issues/scripts/doctrine.mjs +0 -62
  67. package/skills/engineering/resolve-issues/scripts/evidence-lifecycle-contract.mjs +0 -191
  68. package/skills/engineering/resolve-issues/scripts/exact-head-ci.mjs +0 -413
  69. package/skills/engineering/resolve-issues/scripts/exact-head-github-provider.mjs +0 -332
  70. package/skills/engineering/resolve-issues/scripts/finalize.mjs +0 -488
  71. package/skills/engineering/resolve-issues/scripts/fix-rounds.mjs +0 -3307
  72. package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-circular-1001.json +0 -16
  73. package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-valid-sequencing.json +0 -51
  74. package/skills/engineering/resolve-issues/scripts/fixtures/fmm-express-830-component-candidate.json +0 -17
  75. package/skills/engineering/resolve-issues/scripts/fixtures/head-check-set-1081.json +0 -166
  76. package/skills/engineering/resolve-issues/scripts/gate-value-series.mjs +0 -92
  77. package/skills/engineering/resolve-issues/scripts/guide-index.mjs +0 -73
  78. package/skills/engineering/resolve-issues/scripts/head-check-set.mjs +0 -159
  79. package/skills/engineering/resolve-issues/scripts/interference.mjs +0 -427
  80. package/skills/engineering/resolve-issues/scripts/model-catalog.mjs +0 -9
  81. package/skills/engineering/resolve-issues/scripts/next-operations.mjs +0 -419
  82. package/skills/engineering/resolve-issues/scripts/postmortem.mjs +0 -909
  83. package/skills/engineering/resolve-issues/scripts/preflight-questions.mjs +0 -345
  84. package/skills/engineering/resolve-issues/scripts/reconcile-contained-unit-prs.mjs +0 -415
  85. package/skills/engineering/resolve-issues/scripts/release-state-contract.mjs +0 -697
  86. package/skills/engineering/resolve-issues/scripts/report.mjs +0 -494
  87. package/skills/engineering/resolve-issues/scripts/required-check-plan.mjs +0 -172
  88. package/skills/engineering/resolve-issues/scripts/round-metadata.mjs +0 -79
  89. package/skills/engineering/resolve-issues/scripts/run-state-review6-cases.mjs +0 -334
  90. package/skills/engineering/resolve-issues/scripts/run-state.mjs +0 -4792
  91. package/skills/engineering/resolve-issues/scripts/sandbox-selftest.mjs +0 -395
  92. package/skills/engineering/resolve-issues/scripts/spawn-contract.mjs +0 -290
  93. package/skills/engineering/resolve-issues/scripts/terminal-dispositions.mjs +0 -170
  94. package/skills/engineering/resolve-issues/scripts/terminal-evidence-journal.mjs +0 -293
  95. package/skills/engineering/resolve-issues/scripts/unit-kind.mjs +0 -197
  96. package/skills/engineering/resolve-issues/scripts/unit-lifecycle.mjs +0 -127
  97. package/skills/engineering/resolve-issues/scripts/watch-delivery.mjs +0 -893
  98. package/skills/engineering/resolve-issues/scripts/workspaces.mjs +0 -829
  99. package/skills/engineering/resolve-issues/workflows/independent-review.workflow.js +0 -290
  100. package/skills/engineering/resolve-issues/workflows/prior-art-scan.workflow.js +0 -80
  101. package/skills/engineering/resolve-issues/workflows/workflow-smoke.mjs +0 -102
  102. package/skills/engineering/resolve-release/LICENSE +0 -3
  103. package/skills/engineering/resolve-release/SKILL.md +0 -113
  104. package/skills/engineering/resolve-release/agents/openai.yaml +0 -9
  105. package/skills/engineering/resolve-release/references/assembly.md +0 -137
  106. package/skills/engineering/resolve-release/references/auto-when-green.md +0 -56
  107. package/skills/engineering/resolve-release/references/candidate.md +0 -167
  108. package/skills/engineering/resolve-release/references/exposure.md +0 -178
  109. package/skills/engineering/resolve-release/references/handoff.md +0 -24
  110. package/skills/engineering/resolve-release/references/postmortem.md +0 -230
  111. package/skills/engineering/resolve-release/references/preflight.md +0 -208
  112. package/skills/engineering/resolve-release/references/principles.md +0 -94
  113. package/skills/engineering/resolve-release/references/regression-checklist.md +0 -36
  114. package/skills/engineering/resolve-release/references/related-skills.md +0 -13
  115. package/skills/engineering/resolve-release/references/routing.md +0 -149
  116. package/skills/engineering/resolve-release/references/verified-sha-github-flow.md +0 -285
  117. package/skills/engineering/resolve-release/references/versioning.md +0 -202
  118. package/skills/engineering/resolve-release/references/why.md +0 -53
  119. package/skills/engineering/resolve-release/scripts/adapter-completion-artifact.mjs +0 -389
  120. package/skills/engineering/resolve-release/scripts/build-changes.mjs +0 -209
  121. package/skills/engineering/resolve-release/scripts/candidate-hygiene.mjs +0 -407
  122. package/skills/engineering/resolve-release/scripts/candidate-identity.mjs +0 -904
  123. package/skills/engineering/resolve-release/scripts/candidate-traffic.mjs +0 -81
  124. package/skills/engineering/resolve-release/scripts/checked-adapter-loader.mjs +0 -612
  125. package/skills/engineering/resolve-release/scripts/close-attempt.mjs +0 -135
  126. package/skills/engineering/resolve-release/scripts/closeout-release.mjs +0 -161
  127. package/skills/engineering/resolve-release/scripts/doctrine.mjs +0 -106
  128. package/skills/engineering/resolve-release/scripts/durable-processing.mjs +0 -522
  129. package/skills/engineering/resolve-release/scripts/ensure-target-green.mjs +0 -659
  130. package/skills/engineering/resolve-release/scripts/evidence-bundle.mjs +0 -1014
  131. package/skills/engineering/resolve-release/scripts/finalize-release.mjs +0 -526
  132. package/skills/engineering/resolve-release/scripts/fixtures/durable-processing-adapter.mjs +0 -169
  133. package/skills/engineering/resolve-release/scripts/green-gate.mjs +0 -599
  134. package/skills/engineering/resolve-release/scripts/isolated-adapter-evaluator.mjs +0 -752
  135. package/skills/engineering/resolve-release/scripts/metadata-pr-status.mjs +0 -56
  136. package/skills/engineering/resolve-release/scripts/metadata-sync.mjs +0 -1538
  137. package/skills/engineering/resolve-release/scripts/postmortem.mjs +0 -381
  138. package/skills/engineering/resolve-release/scripts/preflight-probes.mjs +0 -510
  139. package/skills/engineering/resolve-release/scripts/production-endpoints.mjs +0 -326
  140. package/skills/engineering/resolve-release/scripts/rc-circuit-breaker.mjs +0 -272
  141. package/skills/engineering/resolve-release/scripts/report.mjs +0 -417
  142. package/skills/engineering/resolve-release/scripts/reprobe-credentials.mjs +0 -114
  143. package/skills/engineering/resolve-release/scripts/revalidate-candidate.mjs +0 -238
  144. package/skills/engineering/resolve-release/scripts/review-packet.mjs +0 -503
  145. package/skills/engineering/resolve-release/scripts/rollback-floor.mjs +0 -263
  146. package/skills/engineering/resolve-release/scripts/version-assert.mjs +0 -339
  147. package/skills/engineering/resolve-release/scripts/version-postmortem.mjs +0 -485
  148. package/skills/engineering/resolve-release/scripts/version.mjs +0 -1199
  149. package/skills/engineering/resolve-release/scripts/watch-candidate-delivery.mjs +0 -449
  150. package/skills/engineering/resolve-release/vendor/ACORN-LICENSE +0 -21
  151. package/skills/engineering/resolve-release/vendor/README.md +0 -60
  152. package/skills/engineering/resolve-release/vendor/acorn.mjs +0 -6233
  153. package/skills/engineering/resolve-release/vendor/quickjs/core/LICENSE +0 -21
  154. package/skills/engineering/resolve-release/vendor/quickjs/core/README.md +0 -341
  155. package/skills/engineering/resolve-release/vendor/quickjs/core/README.template.md +0 -70
  156. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs +0 -2
  157. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs.map +0 -1
  158. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs +0 -7
  159. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs.map +0 -1
  160. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.mts +0 -2033
  161. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.ts +0 -2033
  162. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js +0 -7
  163. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js.map +0 -1
  164. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs +0 -2
  165. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs.map +0 -1
  166. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs +0 -2
  167. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs.map +0 -1
  168. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs +0 -2
  169. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs.map +0 -1
  170. package/skills/engineering/resolve-release/vendor/quickjs/core/package.json +0 -49
  171. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/LICENSE +0 -21
  172. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/README.md +0 -5
  173. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.mts +0 -549
  174. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.ts +0 -549
  175. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js +0 -2
  176. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js.map +0 -1
  177. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs +0 -2
  178. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs.map +0 -1
  179. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/package.json +0 -36
  180. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/LICENSE +0 -47
  181. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/README.md +0 -82
  182. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.d.ts +0 -11
  183. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.mjs +0 -22
  184. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cjs +0 -21
  185. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.cjs +0 -21
  186. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.d.ts +0 -11
  187. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.d.ts +0 -11
  188. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.mjs +0 -25
  189. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.wasm +0 -0
  190. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.mts +0 -85
  191. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.ts +0 -85
  192. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js +0 -2
  193. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js.map +0 -1
  194. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs +0 -2
  195. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs.map +0 -1
  196. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.mts +0 -20
  197. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.ts +0 -20
  198. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js +0 -2
  199. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js.map +0 -1
  200. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs +0 -2
  201. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs.map +0 -1
  202. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/package.json +0 -61
  203. /package/skills/{engineering/resolve-issues → payment/tld-detection}/LICENSE +0 -0
@@ -0,0 +1,169 @@
1
+ # Report template
2
+
3
+ Save:
4
+
5
+ ```text
6
+ reports/tld-detection/<scope>_clusters.md
7
+ reports/tld-detection/<scope>_clusters.zh.md
8
+ reports/tld-detection/<scope>_clusters.zh.html
9
+ reports/tld-detection/<scope>_methodology.md
10
+ reports/tld-detection/<scope>_methodology.zh.md
11
+ reports/tld-detection/<scope>_methodology.zh.html
12
+ ```
13
+
14
+ HTML is preferred when there are charts (Chart.js bars). No Markdown bold in report body.
15
+ The cluster report and methodology document must link to each other. After
16
+ writing, grep banned strings in [terminology.md](terminology.md).
17
+
18
+ English Markdown headings on the left; Chinese HTML / `.zh.md` on the right.
19
+
20
+ ```markdown
21
+ # Potential TLD currency-amount pairs — <window>
22
+ # 潜在 TLD 币种金额对 — <window>
23
+
24
+ ## TLD Risk Assessment # TLD 风险评估
25
+ [Separate methodology link] # [独立方法文档链接]
26
+ ## High-Risk Clusters # 高风险 Cluster
27
+ ## TLD Risk Exposure # TLD 风险敞口
28
+ ### By risk tier and descriptor # 按风险等级及 Descriptor
29
+ ### Overall exposure # 整体风险敞口
30
+ ## All Identified Currency-Amount Pairs # 全部识别出的币种金额对
31
+ ### Currency-Amount Pair C1 # 币种金额对 C1
32
+ #### Definition # 定义
33
+ #### Characteristics # 特征
34
+ ## Verdict # 结论
35
+ ```
36
+
37
+ The separate methodology document uses this structure:
38
+
39
+ ```markdown
40
+ # TLD currency-amount-pair detection methodology — <scope/window>
41
+ # TLD 币种金额对识别方法 — <范围/时段>
42
+
43
+ ## Universe and cleaning # 分析总体与清洗
44
+ ## Descriptor partition logic # Descriptor 分区逻辑
45
+ ## Currency-amount-pair logic # 币种金额对逻辑
46
+ ## Baseline and audit details # 基线与审计明细
47
+ ```
48
+
49
+ ## Chapter requirements
50
+
51
+ ### TLD Risk Assessment / TLD 风险评估
52
+
53
+ Answer these three questions directly and in this order:
54
+
55
+ 1. What is the highest investigation-priority risk tier found?
56
+ 2. Which clusters are High, Medium, and Low risk; what characteristics support
57
+ each tier; and what share do they represent inside their descriptors?
58
+ 3. What is the exact-member exposure by risk tier, descriptor, and across all
59
+ authorization attempts?
60
+
61
+ Risk tiers prioritize investigation and do not confirm TLD. List results in
62
+ `High → Medium → Low` order, then by evidence strength and attempts inside each
63
+ tier. The ≤3-sentence conclusion lives in Verdict, not here.
64
+
65
+ ### Separate methodology / 独立方法文档
66
+
67
+ Document the logic and values actually used for this run, not generic skill
68
+ instructions. State the authorization grain and window; give the census from
69
+ [clean.md](clean.md), BIN-country and currency mix, and portfolio
70
+ constants.
71
+
72
+ Partition logic defines the normalized descriptor key, normalization rules,
73
+ the unknown bucket, descriptor counts, and shares. Currency-amount-pair
74
+ logic explains within-descriptor ranking, adjacent currency-specific
75
+ absolute residual caps, sensitivity evidence, the multi-anchor support floor,
76
+ exact final membership, and the ≥100-attempt threshold. BIN country is
77
+ post-formation attribution, not a partition or membership key.
78
+
79
+ The ranking table contains partition, currency, exact amount, attempts,
80
+ share of the descriptor, share of all authorization attempts, and selected
81
+ cluster id or `baseline`. Chart attempt bars within the most relevant
82
+ descriptors, sorted by count descending.
83
+
84
+ Audit details contain drop counts, currency caps, sensitivity results,
85
+ multi-anchor support floor, ≥100 cluster attempts, min-n for
86
+ cluster-versus-baseline rate ranking (not the definition anchor table),
87
+ descriptor-local high-count rule, baseline definitions, below-threshold
88
+ families, risk-tier rules, all run-specific materiality thresholds, and files
89
+ used. No skill name in the HTML footer; filenames only.
90
+
91
+ ### High-risk clusters / 高风险 Cluster
92
+
93
+ Include High-risk clusters only. For each, show descriptor, representative
94
+ anchors, attempts, share of its descriptor, share of all authorization attempts,
95
+ risk basis, standout evidence, and the clearest independent corroborating
96
+ characteristic. Do not describe the tier as confirmation that TLD occurred.
97
+
98
+ ### Risk exposure / 风险敞口
99
+
100
+ Exposure is the disjoint exact-member attempt count of all identified clusters,
101
+ separated into High, Medium, and Low risk. The by-tier-and-descriptor table
102
+ reports descriptor attempts, cluster attempts, share of descriptor, share of
103
+ all authorization attempts, risk tier, and cluster IDs. The overall view has
104
+ one row per risk tier plus `Baseline` / `基线`, and the rows conserve all
105
+ authorization attempts. Never combine the three tiers into a single “confirmed”
106
+ or “supported TLD” impact figure.
107
+
108
+ ### Currency-amount-pair analysis / 全部识别出的币种金额对
109
+
110
+ One subsection per identified currency-amount pair. Definition contains only
111
+ Descriptor, seed, representative anchors, and cluster attempts. Express
112
+ anchors as `USD 11.7 → USD 23.39* → USD 46.78`. Follow that with an anchor
113
+ table whose columns are anchor, attempts, authorization success rate, and
114
+ suspected fraud as share of attempts. Always compute both rates for every
115
+ theoretical level from that level's exact member attempts, including levels
116
+ with fewer than the contrast min-n (default 30). Do not write `n/a` on this
117
+ table because the rung is small. For a level containing multiple nearby exact
118
+ values, display its highest-count amount with `*`; the table totals attempts
119
+ and rates across that level and explains `*`.
120
+
121
+ Show the risk tier and concise basis immediately below the cluster heading.
122
+ Characteristics contain Descriptor, descriptor total attempts, cluster
123
+ attempts, cluster share of descriptor, and MCC. Then compare Cluster with the
124
+ baseline formed by removing that cluster from the same descriptor. The
125
+ comparison contains authorization success rate, suspected fraud as a share of
126
+ attempts, Top 3 issuing banks, and Top 3 BIN countries.
127
+
128
+ For every Top 3 cluster BIN country, add a table with country, cluster attempts,
129
+ share of cluster, total attempts in the same descriptor-country slice, and
130
+ cluster coverage of that slice. Mark exact 100% single-country composition as a
131
+ standout. Treat `Mixed` as neutral. Do not assign a threshold or risk points to
132
+ country-slice coverage, and do not promote any composition below 100% merely
133
+ because it is high.
134
+
135
+ Follow the tables with transaction-date and transaction-time charts comparing
136
+ the cluster with the same-descriptor baseline. These are characteristics, not
137
+ cluster membership conditions.
138
+
139
+ When clustering finds no qualifying family, omit currency-amount-pair subsections,
140
+ publish the ranking and below-threshold candidates in the methodology
141
+ document, show zero identified-cluster exposure, and still write Verdict.
142
+
143
+ ### Verdict / 结论
144
+
145
+ [decision.md](decision.md). **≤3 sentences** for the whole book, then an
146
+ optional one-row-per-cluster table (risk tier + short basis). No extra
147
+ bullets under this heading.
148
+
149
+ ## Charts
150
+
151
+ Place each currency-amount pair's charts inside its analysis after the
152
+ characteristics tables.
153
+
154
+ | View | Mark |
155
+ |---|---|
156
+ | Representative-anchor attempts | Horizontal bar |
157
+ | Cluster vs same-descriptor baseline rates | Grouped bar |
158
+ | Transaction date trend, cluster vs same-descriptor baseline | Two-series line, each series normalized to its own attempt total |
159
+ | Transaction time by BIN-country local hour, cluster vs same-descriptor baseline | Two-series line, each series normalized to its own attempt total |
160
+
161
+ Label axes with the full metric (`授权笔数`, `比率 %`, `每日授权占比 %`,
162
+ `每小时授权占比 %`). State that transaction time uses the BIN country's local
163
+ hour and UTC when the BIN country has no configured timezone.
164
+
165
+ ## What the report is not
166
+
167
+ Not a payment overview (`payment-analysis`). Not a holdout rule pack
168
+ (`fraud-analysis`). Not a recommendation to file a SAR or to terminate a
169
+ merchant.
@@ -0,0 +1,69 @@
1
+ # Terminology
2
+
3
+ Use these terms in TLD reports. Read before writing. After writing, run
4
+ the proofread in `SKILL.md`.
5
+
6
+ TLD in this skill is **transaction laundering**. Spell it out on first
7
+ use. It is not a top-level domain.
8
+
9
+ ## Canonical glossary
10
+
11
+ | English | Chinese | Do not write |
12
+ |---|---|---|
13
+ | TLD (transaction laundering) | 交易清洗 / TLD | 把 TLD 写成域名;洗钱结案 |
14
+ | potential TLD currency-amount pair | 潜在 TLD 币种金额对 | 已确认 TLD;TLD 商户 |
15
+ | cluster (report section) | 币种金额对 | 客户簇;客群;分群结果 |
16
+ | anchor detection | 锚点识别 | 客户聚类(对业务读者) |
17
+ | currency-amount-pair | 币种金额对 | 金额币种对;金额对;price point(作指标名时) |
18
+ | descriptor partition | descriptor 分区 | 客群;BIN 国家分区 |
19
+ | BIN-country attribution component | BIN 国家归因组件 | 客户国家;成员分区 |
20
+ | geometric anchor family | 币种金额对 | 阶梯(业务报告中);价格带;SKU |
21
+ | stuffing | 掺量 | 注水(可括注一次);corridor |
22
+ | MCC miscoding | MCC 错配 | 改 MCC;纠正 MCC |
23
+ | descriptor | descriptor / 账单描述 | 商户名(指 descriptor 时) |
24
+ | baseline | 基线 | 对照组(可括注);everything else |
25
+ | all authorization attempts | 全部授权尝试 | U(业务报告中);原始全量 |
26
+ | US-BIN | US BIN / 美国发卡 | 美国交易(指卡BIN时) |
27
+ | attempt | 授权尝试 | 交易(指授权行时) |
28
+ | approval | 授权成功 | 批准 |
29
+ | auth rate | 授权成功率 | 转化率 |
30
+ | suspected fraud | 疑似欺诈 | 已确认欺诈;正文里写 D102(表内代码可留) |
31
+ | BIN country / issuer country | 发卡行国家 / BIN 国家 | 客户国家;收货国;发卡国 |
32
+ | cluster composition by BIN country | BIN 国家占 Cluster | 客户国家占比 |
33
+ | descriptor-country slice coverage | Cluster 占 Descriptor 对应 BIN 国家 | BIN 国家风险率;国家命中率 |
34
+ | exact single-country standout | 100% 单一 BIN 国家 standout | 高国家占比;接近 100% |
35
+ | BIN-country local hour | BIN 国家当地小时 | 客户所在地时间;统一美国东部时间 |
36
+ | this analysis window | 当前分析时段内 | 本窗口 |
37
+ | MCC vs descriptor | MCC 与 descriptor 合理性 | 纠正 MCC;改 MCC |
38
+ | verdict | 结论 | 长文综述(作结论部分时) |
39
+ | High / Medium / Low risk | 高风险 / 中风险 / 低风险 | Supported;Weak;Ladder only;已确认 TLD |
40
+ | risk exposure | 风险敞口 | 已确认 TLD 影响;定罪金额 |
41
+
42
+ Keep proper nouns: Visa, MasterCard, BIN, IIN, MCC, MID, Worldpay,
43
+ Pazien, Order ID, descriptor. Tables may show response codes; prose uses
44
+ 疑似欺诈 / suspected fraud.
45
+
46
+ ## Axis and UI
47
+
48
+ - Amount axes name the **original** currency of that cluster
49
+ (`授权尝试金额 USD`, `授权尝试金额 EUR`). Do not mix currencies on one
50
+ axis.
51
+ - Date charts use each series' share of attempts by UTC transaction date.
52
+ - Time charts use each BIN country's local hour, falling back to UTC when no
53
+ timezone is configured. Normalize Cluster and Baseline independently.
54
+ - HTML footer: data-source filenames only. No skill name.
55
+
56
+ ## Banned strings (grep after writing)
57
+
58
+ Chinese: `走廊`, `杠杆`, `转化率`, `赋能`, `抓手`, `闭环`, `打法`,
59
+ `本窗口`, `已确认 TLD`, `已确认交易清洗`, `洗钱`, `发卡国`, `客群运营`,
60
+ `客户簇`, `金额币种对`
61
+
62
+ English: `confirmed laundering`, `confirmed TLD`, `money laundering`,
63
+ `SAR`, `file a SAR`, `top-level domain`, `customer country`,
64
+ `conversion rate` (when meaning auth rate), `corridor`, `price band`
65
+ (as the cluster name)
66
+
67
+ `洗钱` is banned as a finding. If a source document uses the legal term,
68
+ quote it in supporting evidence and keep the report on potential TLD
69
+ currency-amount pairs.
@@ -0,0 +1,78 @@
1
+ # Workflow detail
2
+
3
+ SKILL.md is the index. This file is the procedure those steps run.
4
+
5
+ ## Input
6
+
7
+ Typical file: `Authorizations_*.csv`. Grain: **one authorization attempt**.
8
+
9
+ Amount, currency, and descriptor columns are required. BIN/issuer country,
10
+ issuing bank, MCC, and response are expected for characteristics; a missing
11
+ optional column is captioned. Missing descriptor values enter an explicit
12
+ partition bucket; missing BIN-country values enter a reporting bucket after
13
+ membership is frozen. Do not drop those rows.
14
+
15
+ Settlements and chargebacks are not the clustering universe. Do not join
16
+ them into `U`. If only settlements exist, stop and say the clustering
17
+ grain is auth attempts.
18
+
19
+ ## Column aliases
20
+
21
+ Use the first present name. Record the alias actually used.
22
+
23
+ | Role | Common names |
24
+ |---|---|
25
+ | Time | `Timestamp`, `Auth timestamp`, `Transaction date` |
26
+ | Amount | `Amount`, `Transaction amount`, `Requested amount` |
27
+ | Currency | `Currency`, `Transaction currency`, `Auth currency` |
28
+ | BIN / issuer country | `BIN country`, `IIN country`, `Issuer country`, `Card country` |
29
+ | Issuing bank | `Issuing bank`, `Issuer`, `Issuer name`, `Bank name` |
30
+ | Descriptor | `Billing descriptor`, `Descriptor`, `Soft descriptor`, `Submerchant`, `DBA` |
31
+ | MCC | `MCC`, `Merchant category code` |
32
+ | Response | `Response code`, `Response message`, `Auth response` |
33
+ | Identity | `Order ID`, `Transaction ID`, `Auth ID` |
34
+ | Card | `IIN`, `BIN`, `Payment method`, `Card type`, masked `Account` |
35
+
36
+ Portfolio constants (MID, acquirer, entry method) are recorded once. They
37
+ are not partition or clustering keys.
38
+
39
+ ## Window
40
+
41
+ Default: min→max of the time field on the **cleaned** universe. If the user
42
+ names a week or month, cut there and state it.
43
+
44
+ ## Response classes
45
+
46
+ Recompute from the file. Pazien-style defaults when those codes exist:
47
+
48
+ | Class | Typical |
49
+ |---|---|
50
+ | Approval | A001 / message contains approval |
51
+ | Suspected fraud | D102 / message contains suspected fraud |
52
+ | Other decline | remaining non-approvals |
53
+
54
+ Suspected-fraud decline ≠ confirmed fraud loss. Do not treat D102 as a
55
+ positive label for `fraud-analysis`.
56
+
57
+ ## What this skill is looking for
58
+
59
+ Transaction laundering in this book usually shows up as:
60
+
61
+ 1. **MCC miscoding** — different kinds of goods mixed under one “normal” MCC
62
+ 2. **Descriptor mixing** — several customer types share a billing name, or
63
+ one TLD customer is split across several descriptors
64
+ 3. **Stuffing / 掺量** — a geometric amount ladder riding the same MCC as
65
+ legitimate traffic
66
+
67
+ Descriptor defines the initial partition, while BIN country and MCC do not.
68
+ Geometrically related currency-amount anchors inside each descriptor define
69
+ membership. BIN country and issuing bank are reported only after membership
70
+ is frozen.
71
+
72
+ ## Order that must not move
73
+
74
+ Clean → descriptor partition → currency-amount pairs → same-descriptor baseline → decide → report.
75
+
76
+ Comparison features must not create a cluster that amount detection did not
77
+ find. Decision does not add evidence; it only writes the ≤3-sentence
78
+ conclusion.