@1aboveio/skills 0.19.3 → 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.
- package/README.md +9 -4
- package/package.json +1 -1
- package/runtime/skills/distribution/generated/recipes.json +54 -48
- package/runtime/skills/distribution/scripts/bundles.mjs +113 -7
- package/runtime/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +4 -6
- package/runtime/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +3 -36
- package/skills/cicd-pipeline/mergify/SKILL.md +1 -1
- package/skills/engineering/engineering-runtime/coherence/workflow.json +14 -83
- package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +4 -6
- package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +3 -36
- package/skills/engineering/smoke/SKILL.md +1 -1
- package/skills/payment/payment-analysis/SKILL.md +5 -3
- package/skills/payment/tld-detection/SKILL.md +163 -0
- package/skills/payment/tld-detection/agents/openai.yaml +9 -0
- package/skills/payment/tld-detection/evals/evals.json +107 -0
- package/skills/payment/tld-detection/references/clean.md +51 -0
- package/skills/payment/tld-detection/references/clustering.md +219 -0
- package/skills/payment/tld-detection/references/decision.md +85 -0
- package/skills/payment/tld-detection/references/report-template.md +169 -0
- package/skills/payment/tld-detection/references/terminology.md +69 -0
- package/skills/payment/tld-detection/references/workflow.md +78 -0
- package/skills/payment/tld-detection/scripts/detect_ladders.py +390 -0
- package/skills/payment/tld-detection/tests/test_detect_ladders.py +132 -0
- package/skills/engineering/resolve-issues/SKILL.md +0 -168
- package/skills/engineering/resolve-issues/agents/openai.yaml +0 -9
- package/skills/engineering/resolve-issues/generated/workflow-repair-policy.json +0 -499
- package/skills/engineering/resolve-issues/references/breaker.md +0 -82
- package/skills/engineering/resolve-issues/references/deliverables.md +0 -27
- package/skills/engineering/resolve-issues/references/delivery.md +0 -108
- package/skills/engineering/resolve-issues/references/evidence-lane.md +0 -21
- package/skills/engineering/resolve-issues/references/exact-head-ci.md +0 -287
- package/skills/engineering/resolve-issues/references/fan-out.md +0 -33
- package/skills/engineering/resolve-issues/references/finalization.md +0 -68
- package/skills/engineering/resolve-issues/references/guarantees.md +0 -10
- package/skills/engineering/resolve-issues/references/high-risk.md +0 -29
- package/skills/engineering/resolve-issues/references/incidents/848/README.md +0 -156
- package/skills/engineering/resolve-issues/references/intake.md +0 -86
- package/skills/engineering/resolve-issues/references/integration-gate.md +0 -53
- package/skills/engineering/resolve-issues/references/interference.md +0 -87
- package/skills/engineering/resolve-issues/references/loop.md +0 -134
- package/skills/engineering/resolve-issues/references/model-catalog.md +0 -9
- package/skills/engineering/resolve-issues/references/postmortem.md +0 -27
- package/skills/engineering/resolve-issues/references/pre-flight-model-slots.md +0 -41
- package/skills/engineering/resolve-issues/references/pre-flight-recording-and-checkout.md +0 -48
- package/skills/engineering/resolve-issues/references/pre-flight.md +0 -41
- package/skills/engineering/resolve-issues/references/regression-checklist.md +0 -26
- package/skills/engineering/resolve-issues/references/run-state.md +0 -288
- package/skills/engineering/resolve-issues/references/sandboxed-testing.md +0 -48
- package/skills/engineering/resolve-issues/references/spawn-contract.md +0 -96
- package/skills/engineering/resolve-issues/references/terminal-evidence-journal.md +0 -40
- package/skills/engineering/resolve-issues/references/why.md +0 -653
- package/skills/engineering/resolve-issues/schemas/fix-round.schema.json +0 -49
- package/skills/engineering/resolve-issues/scripts/combine-and-verify.mjs +0 -721
- package/skills/engineering/resolve-issues/scripts/component-candidate.mjs +0 -962
- package/skills/engineering/resolve-issues/scripts/contract-revision.mjs +0 -220
- package/skills/engineering/resolve-issues/scripts/detect-delivery-mode.mjs +0 -420
- package/skills/engineering/resolve-issues/scripts/detect-target-branch.mjs +0 -256
- package/skills/engineering/resolve-issues/scripts/detect-workspace-mode.mjs +0 -168
- package/skills/engineering/resolve-issues/scripts/discover-models.mjs +0 -9
- package/skills/engineering/resolve-issues/scripts/doctrine.mjs +0 -62
- package/skills/engineering/resolve-issues/scripts/evidence-lifecycle-contract.mjs +0 -191
- package/skills/engineering/resolve-issues/scripts/exact-head-ci.mjs +0 -413
- package/skills/engineering/resolve-issues/scripts/exact-head-github-provider.mjs +0 -332
- package/skills/engineering/resolve-issues/scripts/finalize.mjs +0 -488
- package/skills/engineering/resolve-issues/scripts/fix-rounds.mjs +0 -3307
- package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-circular-1001.json +0 -16
- package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-valid-sequencing.json +0 -51
- package/skills/engineering/resolve-issues/scripts/fixtures/fmm-express-830-component-candidate.json +0 -17
- package/skills/engineering/resolve-issues/scripts/fixtures/head-check-set-1081.json +0 -166
- package/skills/engineering/resolve-issues/scripts/gate-value-series.mjs +0 -92
- package/skills/engineering/resolve-issues/scripts/guide-index.mjs +0 -73
- package/skills/engineering/resolve-issues/scripts/head-check-set.mjs +0 -159
- package/skills/engineering/resolve-issues/scripts/interference.mjs +0 -427
- package/skills/engineering/resolve-issues/scripts/model-catalog.mjs +0 -9
- package/skills/engineering/resolve-issues/scripts/next-operations.mjs +0 -419
- package/skills/engineering/resolve-issues/scripts/postmortem.mjs +0 -909
- package/skills/engineering/resolve-issues/scripts/preflight-questions.mjs +0 -345
- package/skills/engineering/resolve-issues/scripts/reconcile-contained-unit-prs.mjs +0 -415
- package/skills/engineering/resolve-issues/scripts/release-state-contract.mjs +0 -697
- package/skills/engineering/resolve-issues/scripts/report.mjs +0 -494
- package/skills/engineering/resolve-issues/scripts/required-check-plan.mjs +0 -172
- package/skills/engineering/resolve-issues/scripts/round-metadata.mjs +0 -79
- package/skills/engineering/resolve-issues/scripts/run-state-review6-cases.mjs +0 -334
- package/skills/engineering/resolve-issues/scripts/run-state.mjs +0 -4792
- package/skills/engineering/resolve-issues/scripts/sandbox-selftest.mjs +0 -395
- package/skills/engineering/resolve-issues/scripts/spawn-contract.mjs +0 -290
- package/skills/engineering/resolve-issues/scripts/terminal-dispositions.mjs +0 -170
- package/skills/engineering/resolve-issues/scripts/terminal-evidence-journal.mjs +0 -293
- package/skills/engineering/resolve-issues/scripts/unit-kind.mjs +0 -197
- package/skills/engineering/resolve-issues/scripts/unit-lifecycle.mjs +0 -127
- package/skills/engineering/resolve-issues/scripts/watch-delivery.mjs +0 -893
- package/skills/engineering/resolve-issues/scripts/workspaces.mjs +0 -829
- package/skills/engineering/resolve-issues/workflows/independent-review.workflow.js +0 -290
- package/skills/engineering/resolve-issues/workflows/prior-art-scan.workflow.js +0 -80
- package/skills/engineering/resolve-issues/workflows/workflow-smoke.mjs +0 -102
- package/skills/engineering/resolve-release/LICENSE +0 -3
- package/skills/engineering/resolve-release/SKILL.md +0 -113
- package/skills/engineering/resolve-release/agents/openai.yaml +0 -9
- package/skills/engineering/resolve-release/references/assembly.md +0 -137
- package/skills/engineering/resolve-release/references/auto-when-green.md +0 -56
- package/skills/engineering/resolve-release/references/candidate.md +0 -167
- package/skills/engineering/resolve-release/references/exposure.md +0 -178
- package/skills/engineering/resolve-release/references/handoff.md +0 -24
- package/skills/engineering/resolve-release/references/postmortem.md +0 -230
- package/skills/engineering/resolve-release/references/preflight.md +0 -208
- package/skills/engineering/resolve-release/references/principles.md +0 -94
- package/skills/engineering/resolve-release/references/regression-checklist.md +0 -36
- package/skills/engineering/resolve-release/references/related-skills.md +0 -13
- package/skills/engineering/resolve-release/references/routing.md +0 -149
- package/skills/engineering/resolve-release/references/verified-sha-github-flow.md +0 -285
- package/skills/engineering/resolve-release/references/versioning.md +0 -202
- package/skills/engineering/resolve-release/references/why.md +0 -53
- package/skills/engineering/resolve-release/scripts/adapter-completion-artifact.mjs +0 -389
- package/skills/engineering/resolve-release/scripts/build-changes.mjs +0 -209
- package/skills/engineering/resolve-release/scripts/candidate-hygiene.mjs +0 -407
- package/skills/engineering/resolve-release/scripts/candidate-identity.mjs +0 -904
- package/skills/engineering/resolve-release/scripts/candidate-traffic.mjs +0 -81
- package/skills/engineering/resolve-release/scripts/checked-adapter-loader.mjs +0 -612
- package/skills/engineering/resolve-release/scripts/close-attempt.mjs +0 -135
- package/skills/engineering/resolve-release/scripts/closeout-release.mjs +0 -161
- package/skills/engineering/resolve-release/scripts/doctrine.mjs +0 -106
- package/skills/engineering/resolve-release/scripts/durable-processing.mjs +0 -522
- package/skills/engineering/resolve-release/scripts/ensure-target-green.mjs +0 -659
- package/skills/engineering/resolve-release/scripts/evidence-bundle.mjs +0 -1014
- package/skills/engineering/resolve-release/scripts/finalize-release.mjs +0 -526
- package/skills/engineering/resolve-release/scripts/fixtures/durable-processing-adapter.mjs +0 -169
- package/skills/engineering/resolve-release/scripts/green-gate.mjs +0 -599
- package/skills/engineering/resolve-release/scripts/isolated-adapter-evaluator.mjs +0 -752
- package/skills/engineering/resolve-release/scripts/metadata-pr-status.mjs +0 -56
- package/skills/engineering/resolve-release/scripts/metadata-sync.mjs +0 -1538
- package/skills/engineering/resolve-release/scripts/postmortem.mjs +0 -381
- package/skills/engineering/resolve-release/scripts/preflight-probes.mjs +0 -510
- package/skills/engineering/resolve-release/scripts/production-endpoints.mjs +0 -326
- package/skills/engineering/resolve-release/scripts/rc-circuit-breaker.mjs +0 -272
- package/skills/engineering/resolve-release/scripts/report.mjs +0 -417
- package/skills/engineering/resolve-release/scripts/reprobe-credentials.mjs +0 -114
- package/skills/engineering/resolve-release/scripts/revalidate-candidate.mjs +0 -238
- package/skills/engineering/resolve-release/scripts/review-packet.mjs +0 -503
- package/skills/engineering/resolve-release/scripts/rollback-floor.mjs +0 -263
- package/skills/engineering/resolve-release/scripts/version-assert.mjs +0 -339
- package/skills/engineering/resolve-release/scripts/version-postmortem.mjs +0 -485
- package/skills/engineering/resolve-release/scripts/version.mjs +0 -1199
- package/skills/engineering/resolve-release/scripts/watch-candidate-delivery.mjs +0 -449
- package/skills/engineering/resolve-release/vendor/ACORN-LICENSE +0 -21
- package/skills/engineering/resolve-release/vendor/README.md +0 -60
- package/skills/engineering/resolve-release/vendor/acorn.mjs +0 -6233
- package/skills/engineering/resolve-release/vendor/quickjs/core/LICENSE +0 -21
- package/skills/engineering/resolve-release/vendor/quickjs/core/README.md +0 -341
- package/skills/engineering/resolve-release/vendor/quickjs/core/README.template.md +0 -70
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs +0 -7
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.mts +0 -2033
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.ts +0 -2033
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js +0 -7
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/package.json +0 -49
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/LICENSE +0 -21
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/README.md +0 -5
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.mts +0 -549
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.ts +0 -549
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/package.json +0 -36
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/LICENSE +0 -47
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/README.md +0 -82
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.d.ts +0 -11
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.mjs +0 -22
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cjs +0 -21
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.cjs +0 -21
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.d.ts +0 -11
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.d.ts +0 -11
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.mjs +0 -25
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.wasm +0 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.mts +0 -85
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.ts +0 -85
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.mts +0 -20
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.ts +0 -20
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/package.json +0 -61
- /package/skills/{engineering/resolve-issues → payment/tld-detection}/LICENSE +0 -0
|
@@ -11,9 +11,7 @@ export const WORKFLOW_OWNED_MEMBERS = deepFreeze([
|
|
|
11
11
|
'ensure-coverage',
|
|
12
12
|
'implement-and-pr',
|
|
13
13
|
'rush-issues',
|
|
14
|
-
'resolve-issues',
|
|
15
14
|
'rush-release',
|
|
16
|
-
'resolve-release',
|
|
17
15
|
'review-pr',
|
|
18
16
|
'smoke',
|
|
19
17
|
'engineering-runtime',
|
|
@@ -66,23 +64,7 @@ export const WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES = deepFreeze([
|
|
|
66
64
|
],
|
|
67
65
|
generatedIdentities: [],
|
|
68
66
|
},
|
|
69
|
-
|
|
70
|
-
invokedSkill: 'resolve-issues',
|
|
71
|
-
members: [
|
|
72
|
-
'tdd',
|
|
73
|
-
'harness-runtime',
|
|
74
|
-
'e2e-test',
|
|
75
|
-
'ensure-coverage',
|
|
76
|
-
'implement-and-pr',
|
|
77
|
-
'resolve-issues',
|
|
78
|
-
'review-pr',
|
|
79
|
-
'smoke',
|
|
80
|
-
'engineering-runtime',
|
|
81
|
-
],
|
|
82
|
-
generatedIdentities: [
|
|
83
|
-
{ member: 'resolve-issues', path: 'generated/workflow-repair-policy.json' },
|
|
84
|
-
],
|
|
85
|
-
},
|
|
67
|
+
|
|
86
68
|
{
|
|
87
69
|
invokedSkill: 'rush-release',
|
|
88
70
|
members: [
|
|
@@ -91,22 +73,7 @@ export const WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES = deepFreeze([
|
|
|
91
73
|
],
|
|
92
74
|
generatedIdentities: [],
|
|
93
75
|
},
|
|
94
|
-
|
|
95
|
-
invokedSkill: 'resolve-release',
|
|
96
|
-
members: [
|
|
97
|
-
'harness-runtime',
|
|
98
|
-
'e2e-test',
|
|
99
|
-
'ensure-coverage',
|
|
100
|
-
'resolve-issues',
|
|
101
|
-
'resolve-release',
|
|
102
|
-
'review-pr',
|
|
103
|
-
'smoke',
|
|
104
|
-
'engineering-runtime',
|
|
105
|
-
],
|
|
106
|
-
generatedIdentities: [
|
|
107
|
-
{ member: 'resolve-issues', path: 'generated/workflow-repair-policy.json' },
|
|
108
|
-
],
|
|
109
|
-
},
|
|
76
|
+
|
|
110
77
|
]);
|
|
111
78
|
|
|
112
79
|
// First-party content is distributed as an exact public npm release, so its identity is the package
|
|
@@ -119,7 +86,7 @@ export const WORKFLOW_TRUSTED_SOURCES = deepFreeze({
|
|
|
119
86
|
id: 'first-party',
|
|
120
87
|
type: 'first-party',
|
|
121
88
|
package: '@1aboveio/skills',
|
|
122
|
-
version: '0.
|
|
89
|
+
version: '0.20.1',
|
|
123
90
|
},
|
|
124
91
|
matt: {
|
|
125
92
|
id: 'matt-pocock',
|
|
@@ -128,7 +128,7 @@ conflict, never hold the batch window open. Mechanics and the grouping rule
|
|
|
128
128
|
|
|
129
129
|
- [cloud-build](../cloud-build/SKILL.md) — the CI the queue gates on
|
|
130
130
|
- [cloud-debug](../cloud-debug/SKILL.md) — when the CI job itself is failing
|
|
131
|
-
- [
|
|
131
|
+
- [rush-issues](../../engineering/rush-issues/SKILL.md) — consumes this skill's delivery
|
|
132
132
|
watch contract when it delivers merge-ready PRs through Mergify
|
|
133
133
|
- `mergify-config`, `mergify-merge-queue`, `mergify-merge-protections`, `mergify-ci`,
|
|
134
134
|
`mergify-stack` (vendor plugin skills) — reference for raw CLI invocation. They document
|
|
@@ -6,9 +6,7 @@
|
|
|
6
6
|
"ensure-coverage",
|
|
7
7
|
"implement-and-pr",
|
|
8
8
|
"rush-issues",
|
|
9
|
-
"resolve-issues",
|
|
10
9
|
"rush-release",
|
|
11
|
-
"resolve-release",
|
|
12
10
|
"review-pr",
|
|
13
11
|
"smoke",
|
|
14
12
|
"engineering-runtime"
|
|
@@ -58,26 +56,6 @@
|
|
|
58
56
|
],
|
|
59
57
|
"generatedIdentities": []
|
|
60
58
|
},
|
|
61
|
-
{
|
|
62
|
-
"invokedSkill": "resolve-issues",
|
|
63
|
-
"members": [
|
|
64
|
-
"tdd",
|
|
65
|
-
"harness-runtime",
|
|
66
|
-
"e2e-test",
|
|
67
|
-
"ensure-coverage",
|
|
68
|
-
"implement-and-pr",
|
|
69
|
-
"resolve-issues",
|
|
70
|
-
"review-pr",
|
|
71
|
-
"smoke",
|
|
72
|
-
"engineering-runtime"
|
|
73
|
-
],
|
|
74
|
-
"generatedIdentities": [
|
|
75
|
-
{
|
|
76
|
-
"member": "resolve-issues",
|
|
77
|
-
"path": "generated/workflow-repair-policy.json"
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
},
|
|
81
59
|
{
|
|
82
60
|
"invokedSkill": "rush-release",
|
|
83
61
|
"members": [
|
|
@@ -85,25 +63,6 @@
|
|
|
85
63
|
"engineering-runtime"
|
|
86
64
|
],
|
|
87
65
|
"generatedIdentities": []
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"invokedSkill": "resolve-release",
|
|
91
|
-
"members": [
|
|
92
|
-
"harness-runtime",
|
|
93
|
-
"e2e-test",
|
|
94
|
-
"ensure-coverage",
|
|
95
|
-
"resolve-issues",
|
|
96
|
-
"resolve-release",
|
|
97
|
-
"review-pr",
|
|
98
|
-
"smoke",
|
|
99
|
-
"engineering-runtime"
|
|
100
|
-
],
|
|
101
|
-
"generatedIdentities": [
|
|
102
|
-
{
|
|
103
|
-
"member": "resolve-issues",
|
|
104
|
-
"path": "generated/workflow-repair-policy.json"
|
|
105
|
-
}
|
|
106
|
-
]
|
|
107
66
|
}
|
|
108
67
|
],
|
|
109
68
|
"digestAlgorithm": "sha256-path-content-v2",
|
|
@@ -383,7 +342,7 @@
|
|
|
383
342
|
"id": "first-party",
|
|
384
343
|
"type": "first-party",
|
|
385
344
|
"package": "@1aboveio/skills",
|
|
386
|
-
"version": "0.
|
|
345
|
+
"version": "0.20.1"
|
|
387
346
|
},
|
|
388
347
|
"contentDigest": "eff6c7b5931bce5b2265a619bccddd371a89df6ce7bc2edc74f11d00060a71dd",
|
|
389
348
|
"digestExcludes": []
|
|
@@ -396,7 +355,7 @@
|
|
|
396
355
|
"id": "first-party",
|
|
397
356
|
"type": "first-party",
|
|
398
357
|
"package": "@1aboveio/skills",
|
|
399
|
-
"version": "0.
|
|
358
|
+
"version": "0.20.1"
|
|
400
359
|
},
|
|
401
360
|
"contentDigest": "d97abeff7bdc5ae2e4be2f631d09dba46d4753ce1e67334793364329af59f066",
|
|
402
361
|
"digestExcludes": []
|
|
@@ -409,7 +368,7 @@
|
|
|
409
368
|
"id": "first-party",
|
|
410
369
|
"type": "first-party",
|
|
411
370
|
"package": "@1aboveio/skills",
|
|
412
|
-
"version": "0.
|
|
371
|
+
"version": "0.20.1"
|
|
413
372
|
},
|
|
414
373
|
"contentDigest": "00cfdd3e5bfbc3e37b1369ad93aae91161e671829760a8867ea9be25047ba461",
|
|
415
374
|
"digestExcludes": []
|
|
@@ -422,7 +381,7 @@
|
|
|
422
381
|
"id": "first-party",
|
|
423
382
|
"type": "first-party",
|
|
424
383
|
"package": "@1aboveio/skills",
|
|
425
|
-
"version": "0.
|
|
384
|
+
"version": "0.20.1"
|
|
426
385
|
},
|
|
427
386
|
"contentDigest": "58b0556228a9271cf9e33727a05fc08a4fdfd29512ec0936b169f0a55d60e6ef",
|
|
428
387
|
"digestExcludes": []
|
|
@@ -435,24 +394,11 @@
|
|
|
435
394
|
"id": "first-party",
|
|
436
395
|
"type": "first-party",
|
|
437
396
|
"package": "@1aboveio/skills",
|
|
438
|
-
"version": "0.
|
|
397
|
+
"version": "0.20.1"
|
|
439
398
|
},
|
|
440
399
|
"contentDigest": "4664873230f22de2fcf46b7b529570cfedabdc850620031d8f96baf89fcdc5b4",
|
|
441
400
|
"digestExcludes": []
|
|
442
401
|
},
|
|
443
|
-
{
|
|
444
|
-
"installName": "resolve-issues",
|
|
445
|
-
"ownership": "owned",
|
|
446
|
-
"sourcePath": "skills/engineering/resolve-issues",
|
|
447
|
-
"expectedSource": {
|
|
448
|
-
"id": "first-party",
|
|
449
|
-
"type": "first-party",
|
|
450
|
-
"package": "@1aboveio/skills",
|
|
451
|
-
"version": "0.19.3"
|
|
452
|
-
},
|
|
453
|
-
"contentDigest": "3016f025b4acf3b7f61628ff3043ca55e680d0fabc7cf9fb4b4c46424d9b22ed",
|
|
454
|
-
"digestExcludes": []
|
|
455
|
-
},
|
|
456
402
|
{
|
|
457
403
|
"installName": "rush-release",
|
|
458
404
|
"ownership": "owned",
|
|
@@ -461,24 +407,11 @@
|
|
|
461
407
|
"id": "first-party",
|
|
462
408
|
"type": "first-party",
|
|
463
409
|
"package": "@1aboveio/skills",
|
|
464
|
-
"version": "0.
|
|
410
|
+
"version": "0.20.1"
|
|
465
411
|
},
|
|
466
412
|
"contentDigest": "01c192d8b4fd416af4ea02e8000e5fce0cee723a6ac2f8c0c48372087e1a262e",
|
|
467
413
|
"digestExcludes": []
|
|
468
414
|
},
|
|
469
|
-
{
|
|
470
|
-
"installName": "resolve-release",
|
|
471
|
-
"ownership": "owned",
|
|
472
|
-
"sourcePath": "skills/engineering/resolve-release",
|
|
473
|
-
"expectedSource": {
|
|
474
|
-
"id": "first-party",
|
|
475
|
-
"type": "first-party",
|
|
476
|
-
"package": "@1aboveio/skills",
|
|
477
|
-
"version": "0.19.3"
|
|
478
|
-
},
|
|
479
|
-
"contentDigest": "ffba0c83491676794c74721f4c6dbae430f5bc186e5a55f0764e29eaeb13829b",
|
|
480
|
-
"digestExcludes": []
|
|
481
|
-
},
|
|
482
415
|
{
|
|
483
416
|
"installName": "review-pr",
|
|
484
417
|
"ownership": "owned",
|
|
@@ -487,7 +420,7 @@
|
|
|
487
420
|
"id": "first-party",
|
|
488
421
|
"type": "first-party",
|
|
489
422
|
"package": "@1aboveio/skills",
|
|
490
|
-
"version": "0.
|
|
423
|
+
"version": "0.20.1"
|
|
491
424
|
},
|
|
492
425
|
"contentDigest": "f048fd00c69f2dc666fc7a3096cfeee6dfba73933bfb69602f3f0e26159798cc",
|
|
493
426
|
"digestExcludes": []
|
|
@@ -500,9 +433,9 @@
|
|
|
500
433
|
"id": "first-party",
|
|
501
434
|
"type": "first-party",
|
|
502
435
|
"package": "@1aboveio/skills",
|
|
503
|
-
"version": "0.
|
|
436
|
+
"version": "0.20.1"
|
|
504
437
|
},
|
|
505
|
-
"contentDigest": "
|
|
438
|
+
"contentDigest": "27861f6dac89c32a97a7d249ce2695cea2d3d80dd2e9bc0607b0c4048a0e3b25",
|
|
506
439
|
"digestExcludes": []
|
|
507
440
|
},
|
|
508
441
|
{
|
|
@@ -513,15 +446,15 @@
|
|
|
513
446
|
"id": "first-party",
|
|
514
447
|
"type": "first-party",
|
|
515
448
|
"package": "@1aboveio/skills",
|
|
516
|
-
"version": "0.
|
|
449
|
+
"version": "0.20.1"
|
|
517
450
|
},
|
|
518
|
-
"contentDigest": "
|
|
451
|
+
"contentDigest": "3e0952beee7078463464872943d414fa944b395ae723ec78b385a28a3548897a",
|
|
519
452
|
"digestExcludes": [
|
|
520
453
|
"coherence/workflow.json"
|
|
521
454
|
]
|
|
522
455
|
}
|
|
523
456
|
],
|
|
524
|
-
"releaseIdentity": "
|
|
457
|
+
"releaseIdentity": "baec385a2bc0414623c97a83ac4ebf3c44ede2654185b748a03ef955cb3f1c8d",
|
|
525
458
|
"lifecycleAuthority": "native-skills-cli",
|
|
526
459
|
"repairRecipe": {
|
|
527
460
|
"id": "engineering-workflow-dependency-first",
|
|
@@ -579,7 +512,7 @@
|
|
|
579
512
|
"sourceId": "first-party",
|
|
580
513
|
"sourceType": "first-party",
|
|
581
514
|
"package": "@1aboveio/skills",
|
|
582
|
-
"version": "0.
|
|
515
|
+
"version": "0.20.1",
|
|
583
516
|
"installPath": null,
|
|
584
517
|
"members": [
|
|
585
518
|
"harness-runtime",
|
|
@@ -587,9 +520,7 @@
|
|
|
587
520
|
"ensure-coverage",
|
|
588
521
|
"implement-and-pr",
|
|
589
522
|
"rush-issues",
|
|
590
|
-
"resolve-issues",
|
|
591
523
|
"rush-release",
|
|
592
|
-
"resolve-release",
|
|
593
524
|
"review-pr",
|
|
594
525
|
"smoke",
|
|
595
526
|
"engineering-runtime"
|
|
@@ -597,7 +528,7 @@
|
|
|
597
528
|
"commands": [
|
|
598
529
|
{
|
|
599
530
|
"transport": "npm",
|
|
600
|
-
"command": "npx @1aboveio/skills@0.
|
|
531
|
+
"command": "npx @1aboveio/skills@0.20.1 install --group engineering-workflow --yes"
|
|
601
532
|
}
|
|
602
533
|
],
|
|
603
534
|
"onFailure": {
|
|
@@ -288,7 +288,7 @@ function validateManifest(manifest) {
|
|
|
288
288
|
add('digest-algorithm-invalid', 'engineering-runtime', 'The coherence digest algorithm is missing or unsupported.');
|
|
289
289
|
}
|
|
290
290
|
if (JSON.stringify(manifest.ownedMembers) !== JSON.stringify(WORKFLOW_OWNED_MEMBERS)) {
|
|
291
|
-
add('owned-census-invalid', 'engineering-runtime', 'The exact
|
|
291
|
+
add('owned-census-invalid', 'engineering-runtime', 'The exact eight-member Workflow ownership census is missing or malformed.');
|
|
292
292
|
}
|
|
293
293
|
if (JSON.stringify(manifest.dependencies) !== JSON.stringify([
|
|
294
294
|
{ groupId: 'matt-pocock-toolkit', members: MATT_DEPENDENCY_MEMBERS },
|
|
@@ -297,11 +297,9 @@ function validateManifest(manifest) {
|
|
|
297
297
|
add('dependency-census-invalid', 'engineering-runtime', 'The exact Matt and harness runtime dependency census is missing or malformed.');
|
|
298
298
|
}
|
|
299
299
|
if (!exactContract(manifest.dependencyClosures, WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES)) {
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
const member = WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES.find((closure) => !names.has(closure.invokedSkill))?.invokedSkill
|
|
304
|
-
?? 'resolve-issues';
|
|
300
|
+
const actual = Array.isArray(manifest.dependencyClosures) ? manifest.dependencyClosures : [];
|
|
301
|
+
const member = WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES.find((closure, index) =>
|
|
302
|
+
!isDeepStrictEqual(actual[index], closure))?.invokedSkill ?? 'engineering-runtime';
|
|
305
303
|
add('dependency-closure-invalid', member, 'The invoked-skill dependency closure is missing, weakened, reordered or malformed.');
|
|
306
304
|
}
|
|
307
305
|
|
|
@@ -11,9 +11,7 @@ export const WORKFLOW_OWNED_MEMBERS = deepFreeze([
|
|
|
11
11
|
'ensure-coverage',
|
|
12
12
|
'implement-and-pr',
|
|
13
13
|
'rush-issues',
|
|
14
|
-
'resolve-issues',
|
|
15
14
|
'rush-release',
|
|
16
|
-
'resolve-release',
|
|
17
15
|
'review-pr',
|
|
18
16
|
'smoke',
|
|
19
17
|
'engineering-runtime',
|
|
@@ -66,23 +64,7 @@ export const WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES = deepFreeze([
|
|
|
66
64
|
],
|
|
67
65
|
generatedIdentities: [],
|
|
68
66
|
},
|
|
69
|
-
|
|
70
|
-
invokedSkill: 'resolve-issues',
|
|
71
|
-
members: [
|
|
72
|
-
'tdd',
|
|
73
|
-
'harness-runtime',
|
|
74
|
-
'e2e-test',
|
|
75
|
-
'ensure-coverage',
|
|
76
|
-
'implement-and-pr',
|
|
77
|
-
'resolve-issues',
|
|
78
|
-
'review-pr',
|
|
79
|
-
'smoke',
|
|
80
|
-
'engineering-runtime',
|
|
81
|
-
],
|
|
82
|
-
generatedIdentities: [
|
|
83
|
-
{ member: 'resolve-issues', path: 'generated/workflow-repair-policy.json' },
|
|
84
|
-
],
|
|
85
|
-
},
|
|
67
|
+
|
|
86
68
|
{
|
|
87
69
|
invokedSkill: 'rush-release',
|
|
88
70
|
members: [
|
|
@@ -91,22 +73,7 @@ export const WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES = deepFreeze([
|
|
|
91
73
|
],
|
|
92
74
|
generatedIdentities: [],
|
|
93
75
|
},
|
|
94
|
-
|
|
95
|
-
invokedSkill: 'resolve-release',
|
|
96
|
-
members: [
|
|
97
|
-
'harness-runtime',
|
|
98
|
-
'e2e-test',
|
|
99
|
-
'ensure-coverage',
|
|
100
|
-
'resolve-issues',
|
|
101
|
-
'resolve-release',
|
|
102
|
-
'review-pr',
|
|
103
|
-
'smoke',
|
|
104
|
-
'engineering-runtime',
|
|
105
|
-
],
|
|
106
|
-
generatedIdentities: [
|
|
107
|
-
{ member: 'resolve-issues', path: 'generated/workflow-repair-policy.json' },
|
|
108
|
-
],
|
|
109
|
-
},
|
|
76
|
+
|
|
110
77
|
]);
|
|
111
78
|
|
|
112
79
|
// First-party content is distributed as an exact public npm release, so its identity is the package
|
|
@@ -119,7 +86,7 @@ export const WORKFLOW_TRUSTED_SOURCES = deepFreeze({
|
|
|
119
86
|
id: 'first-party',
|
|
120
87
|
type: 'first-party',
|
|
121
88
|
package: '@1aboveio/skills',
|
|
122
|
-
version: '0.
|
|
89
|
+
version: '0.20.1',
|
|
123
90
|
},
|
|
124
91
|
matt: {
|
|
125
92
|
id: 'matt-pocock',
|
|
@@ -113,7 +113,7 @@ The **per-PR golden-path liveness floor** (`ensure-coverage` CI contract, gate 8
|
|
|
113
113
|
- **CI (gate 8, blocking)** — wired in `e2e-test/assets/ci-gates.*`; boots the app, drives the paths into `smoke-results.json`, runs `smoke.mjs verdict`. The mechanical backstop.
|
|
114
114
|
- **`resolve-issues`** — final step of the [epic integration gate](../resolve-issues/references/deliverables.md#deliverables-the-shippable-component-not-the-whole-epic): boot the assembled integration branch and run the golden paths; a DEAD whose broken paths are `fail` belongs to a specific unit → reopen its fix loop. **A DEAD built from `blocked`/`missing` paths is a gate-environment problem, not a unit's defect** — report it and fix the environment; reopening a fix loop on it spends a producer spawn and an adversarial review on code that is fine, and the round lands in the unit's budget all the same.
|
|
115
115
|
- **`/smoke`** — standalone, any time, against `local` or a URL.
|
|
116
|
-
-
|
|
116
|
+
- **Legacy `resolve-release` flow (archived)** — the `prod-preview` profile against the 0%-traffic candidate URL (read-only, so it excludes every mutating path), then the `prod-active` profile against the live service after the shift. A DEAD **before** exposure deletes the candidate (no rollback, no user impact); a DEAD after it triggers the rollback policy.
|
|
117
117
|
- **The dev-deploy recorder** (`cloud-build` → Post-deploy smoke gate) — the integration pipeline runs this gate after its 100%-traffic deploy and publishes the verdict as a **SHA-keyed commit status**, never failing the build; that recorded ALIVE is what `resolve-release` requires when pinning a release candidate (its principle 11).
|
|
118
118
|
|
|
119
119
|
## Reference Map
|
|
@@ -12,7 +12,8 @@ description: >
|
|
|
12
12
|
decline mix, BIN/issuer-country contribution, settlement GMV, payment journey,
|
|
13
13
|
Sankey funnel, FX-to-USD, chargeback rate, 运营影响, or "business analysis of
|
|
14
14
|
transactions" — even if they do not say payment-analysis. Do NOT use for
|
|
15
|
-
supervised fraud-rule mining (
|
|
15
|
+
supervised fraud-rule mining (fraud-analysis) or TLD / MCC-miscoding
|
|
16
|
+
clusters (tld-detection).
|
|
16
17
|
---
|
|
17
18
|
|
|
18
19
|
# Payment Analysis
|
|
@@ -31,7 +32,7 @@ optional topic fuel, not required for the journey core.
|
|
|
31
32
|
|
|
32
33
|
**Produce:** Markdown + preferred Chinese/bilingual HTML under
|
|
33
34
|
`reports/payment-analysis/`.
|
|
34
|
-
**Do not produce:** supervised precision/recall packages (`fraud-analysis`).
|
|
35
|
+
**Do not produce:** supervised precision/recall packages (`fraud-analysis`) or TLD clusters (`tld-detection`).
|
|
35
36
|
|
|
36
37
|
Read the playbook for the step you are on. Paths under `references/` are
|
|
37
38
|
relative to this skill.
|
|
@@ -106,12 +107,13 @@ Do not change numbers, joins, or chart data.
|
|
|
106
107
|
- [ ] 运营影响 only from auth-rate-actions.md when triggered
|
|
107
108
|
- [ ] Language matches terminology.md; banned strings have no unexplained hits
|
|
108
109
|
|
|
109
|
-
## Boundary with fraud-analysis
|
|
110
|
+
## Boundary with fraud-analysis and tld-detection
|
|
110
111
|
|
|
111
112
|
| Need | Skill |
|
|
112
113
|
|---|---|
|
|
113
114
|
| Volume, journey Sankey, auth rate, decline mix, settlement overview, 运营影响 routing | `payment-analysis` |
|
|
114
115
|
| Proxy/confirmed fraud labels, holdout precision/recall, 3DS/block **packages** | `fraud-analysis` |
|
|
116
|
+
| Potential TLD clusters, currency-amount-pair ladders, MCC miscoding, stuffing | `tld-detection` |
|
|
115
117
|
|
|
116
118
|
Routing 3DS / 风控拦截 / retry from this extract is not a fraud-analysis rule
|
|
117
119
|
package.
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tld-detection
|
|
3
|
+
description: >
|
|
4
|
+
Explicit-only. Potential TLD (transaction-laundering) clusters from
|
|
5
|
+
descriptor partitions, then exact currency-amount pairs, with same-descriptor
|
|
6
|
+
baseline contrasts, high/medium/low risk tiers, exposure sizing, and a
|
|
7
|
+
≤3-sentence decision.
|
|
8
|
+
Not payment-analysis or fraud-analysis.
|
|
9
|
+
disable-model-invocation: true
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# TLD Detection
|
|
13
|
+
|
|
14
|
+
Find **potential TLD clusters** in an authorization extract. TLD here is
|
|
15
|
+
transaction laundering, not a domain name: hidden activity stuffed under a
|
|
16
|
+
normal MCC, often mixed across descriptors.
|
|
17
|
+
|
|
18
|
+
First partition the cleaned authorizations by **descriptor**. Inside each
|
|
19
|
+
descriptor, the clustering key is the **currency-amount-pair**. Geometric
|
|
20
|
+
relationships between exact anchors are the stuffing signal (掺量). BIN
|
|
21
|
+
country is not a membership key; report it in the cluster-versus-baseline
|
|
22
|
+
comparison after membership is frozen.
|
|
23
|
+
|
|
24
|
+
**Produce:** cluster results and a separate run-specific methodology document
|
|
25
|
+
under `reports/tld-detection/`.
|
|
26
|
+
**Do not produce:** confirmed laundering, a legal finding, or supervised
|
|
27
|
+
fraud-rule packages (`fraud-analysis`).
|
|
28
|
+
|
|
29
|
+
Paths under `references/` are relative to this skill.
|
|
30
|
+
|
|
31
|
+
## Workflow
|
|
32
|
+
|
|
33
|
+
Follow these steps in order. Detail:
|
|
34
|
+
[references/workflow.md](references/workflow.md).
|
|
35
|
+
|
|
36
|
+
| Step | Do | Gate |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| 0 Pre-flight | File, grain, columns, window | Stop if auth grain, descriptor, amount, or currency column is missing; caption missing BIN country |
|
|
39
|
+
| 1 Clean | Dedup | Record drop counts; do not filter BIN country |
|
|
40
|
+
| 2 Cluster | Partition; rank pairs; identify anchors; freeze exact keys; compare with same-descriptor baseline | Partition = descriptor; ≥3 levels; adjacent levels = 2x; ≥100 attempts; absolute residual cap per candidate currency |
|
|
41
|
+
| 3 Risk | Assign high/medium/low investigation priority | Mixed BIN countries are neutral; exact 100% single-country concentration is a standout |
|
|
42
|
+
| 4 Decision | Conclusion + basis for the book | ≤3 sentences; no new evidence |
|
|
43
|
+
| 5 Report | Answer highest-risk, cluster-characteristic, and exposure questions; write + proofread | Sort high → medium → low; no confirmed-TLD wording |
|
|
44
|
+
|
|
45
|
+
### 0 — Pre-flight
|
|
46
|
+
|
|
47
|
+
Authorization extract, one row per auth attempt. Record paths, time field,
|
|
48
|
+
amount, currency, BIN/issuer country, descriptor, MCC, response. Grain and
|
|
49
|
+
column aliases: [workflow.md](references/workflow.md).
|
|
50
|
+
|
|
51
|
+
### 1 — Clean
|
|
52
|
+
|
|
53
|
+
[references/clean.md](references/clean.md). Deduplicate first. Do not
|
|
54
|
+
FX-convert the clustering key. Do not drop non-US BIN rows.
|
|
55
|
+
|
|
56
|
+
### 2 — Cluster
|
|
57
|
+
|
|
58
|
+
[references/clustering.md](references/clustering.md). Build normalized
|
|
59
|
+
descriptor partitions, then rank currency-amount-pairs inside each descriptor. Use
|
|
60
|
+
`scripts/detect_ladders.py` to detect geometric anchor relationships with
|
|
61
|
+
adjacent, currency-specific absolute residual caps. Every cluster must contain
|
|
62
|
+
at least three theoretical levels with a fixed 2x relationship between adjacent
|
|
63
|
+
levels (for example 1x, 2x, 4x, 8x); search both up and down from every candidate
|
|
64
|
+
seed. A theoretical level may
|
|
65
|
+
keep multiple exact anchors, but each additional anchor must clear the stated
|
|
66
|
+
portfolio support floor. Freeze membership by exact descriptor, currency,
|
|
67
|
+
and amount; keep only clusters with ≥100 authorization attempts. Compare each
|
|
68
|
+
cluster with the baseline formed by removing that cluster from the same
|
|
69
|
+
descriptor. Do not invent clusters from MCC or comparison features.
|
|
70
|
+
|
|
71
|
+
### 3 — Risk
|
|
72
|
+
|
|
73
|
+
[references/decision.md](references/decision.md). Assign every identified
|
|
74
|
+
currency-amount pair exactly one investigation-priority tier: High, Medium,
|
|
75
|
+
or Low. BIN-country mixture is neutral and never downgrades a cluster. Treat
|
|
76
|
+
an exact 100% single-BIN-country cluster as a standout; separately report the
|
|
77
|
+
cluster's share of that descriptor-country slice without using an arbitrary
|
|
78
|
+
coverage threshold or risk points.
|
|
79
|
+
|
|
80
|
+
### 4 — Decision
|
|
81
|
+
|
|
82
|
+
Write the conclusion and the basis in **at most 3 sentences** for the whole
|
|
83
|
+
book. A one-line table per cluster is allowed under that.
|
|
84
|
+
|
|
85
|
+
### 5 — Report
|
|
86
|
+
|
|
87
|
+
[references/report-template.md](references/report-template.md). Terms:
|
|
88
|
+
[references/terminology.md](references/terminology.md).
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
reports/tld-detection/<scope>_clusters.md
|
|
92
|
+
reports/tld-detection/<scope>_clusters.zh.md
|
|
93
|
+
reports/tld-detection/<scope>_clusters.zh.html
|
|
94
|
+
reports/tld-detection/<scope>_methodology.md
|
|
95
|
+
reports/tld-detection/<scope>_methodology.zh.md
|
|
96
|
+
reports/tld-detection/<scope>_methodology.zh.html
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Keep detection results in the cluster reports. Lead with the highest-risk
|
|
100
|
+
clusters, characterize every identified cluster and its descriptor share, then
|
|
101
|
+
quantify exposure by risk tier, descriptor, and across all authorization
|
|
102
|
+
attempts. Sort High → Medium → Low, then by evidence strength and attempts
|
|
103
|
+
inside each tier. Put the
|
|
104
|
+
actual run's cleaning, partitioning, parameter selection, sensitivity evidence,
|
|
105
|
+
baseline definition, and audit details in the methodology documents; link the
|
|
106
|
+
paired files in both directions. HTML is preferred when there are charts. Grep
|
|
107
|
+
banned strings after writing.
|
|
108
|
+
|
|
109
|
+
## Progress
|
|
110
|
+
|
|
111
|
+
Track a task plan. One item is `in_progress` at a time.
|
|
112
|
+
|
|
113
|
+
1. Pass pre-flight
|
|
114
|
+
2. Freeze cleaned universe and descriptor partitions
|
|
115
|
+
3. Assign High / Medium / Low risk tiers
|
|
116
|
+
4. Publish descriptor currency-amount pairs + same-descriptor baselines
|
|
117
|
+
5. Write ≤3-sentence decision
|
|
118
|
+
6. Write report + separate run methodology and proofread
|
|
119
|
+
|
|
120
|
+
## Boundary
|
|
121
|
+
|
|
122
|
+
| Need | Skill |
|
|
123
|
+
|---|---|
|
|
124
|
+
| Potential TLD clusters, currency-amount pairs, stuffing / 掺量, MCC miscoding, descriptor mixing | `tld-detection` |
|
|
125
|
+
| Volume, journey Sankey, auth rate, decline mix, settlement overview | `payment-analysis` |
|
|
126
|
+
| Proxy/confirmed fraud labels, holdout precision/recall, rule packages | `fraud-analysis` |
|
|
127
|
+
|
|
128
|
+
A suspected-fraud *rate contrast* in this skill is not a fraud-analysis
|
|
129
|
+
rule package.
|
|
130
|
+
|
|
131
|
+
## Reference index
|
|
132
|
+
|
|
133
|
+
| Need | Read |
|
|
134
|
+
|---|---|
|
|
135
|
+
| Grain, columns, window | [workflow.md](references/workflow.md) |
|
|
136
|
+
| Dedup | [clean.md](references/clean.md) |
|
|
137
|
+
| Currency-amount pairs, anchors, same-descriptor baseline | [clustering.md](references/clustering.md) |
|
|
138
|
+
| ≤3-sentence conclusion | [decision.md](references/decision.md) |
|
|
139
|
+
| Report chapters | [report-template.md](references/report-template.md) |
|
|
140
|
+
| Language / banned strings | [terminology.md](references/terminology.md) |
|
|
141
|
+
|
|
142
|
+
## Sanity check
|
|
143
|
+
|
|
144
|
+
- [ ] Auth grain; dedup counts are stated; no BIN-country row filter
|
|
145
|
+
- [ ] Partition key is normalized descriptor; missing descriptor is an explicit bucket
|
|
146
|
+
- [ ] Clustering key is original currency + amount, not USD
|
|
147
|
+
- [ ] Each rung-pool currency has an explicit adjacent absolute-residual cap and sensitivity evidence
|
|
148
|
+
- [ ] Multi-anchor levels state their portfolio support floor; final membership uses exact selected amount keys
|
|
149
|
+
- [ ] Cluster attempts ≥100
|
|
150
|
+
- [ ] Every cluster has a High / Medium / Low risk tier and results sort in that order
|
|
151
|
+
- [ ] Currency-amount pairs show seed and representative anchors; `*` marks a multi-amount level
|
|
152
|
+
- [ ] Same amount pair may recur across descriptor partitions; never merge them automatically
|
|
153
|
+
- [ ] BIN country is post-membership reporting data, not a membership key; Mixed is neutral
|
|
154
|
+
- [ ] Exact 100% single-country concentration is a standout; descriptor-country coverage is shown without a risk threshold
|
|
155
|
+
- [ ] Each cluster baseline is the same descriptor after removing that cluster
|
|
156
|
+
- [ ] Definition summary contains only descriptor, seed, anchors, and attempts
|
|
157
|
+
- [ ] Anchor table reports attempts, authorization success rate, and suspected-fraud share for every level, including n < 30
|
|
158
|
+
- [ ] Characteristics contain descriptor total, cluster attempts/share, MCC, and cluster-vs-baseline auth rate, suspected-fraud share, top 3 banks, and top 3 BIN countries
|
|
159
|
+
- [ ] Decision prose is ≤3 sentences (conclusion + basis)
|
|
160
|
+
- [ ] Report answers highest-risk, identified-cluster characteristics, and by-tier/by-descriptor exposure
|
|
161
|
+
- [ ] Run-specific methodology is separate from results; report and methodology link to each other
|
|
162
|
+
- [ ] Zero families → ranking only; no descriptor-invented clusters
|
|
163
|
+
- [ ] Language matches terminology.md; no confirmed-laundering claim
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "TLD Detection"
|
|
3
|
+
short_description: "Risk-tiered TLD clusters from exact currency-amount pairs"
|
|
4
|
+
|
|
5
|
+
policy:
|
|
6
|
+
# Codex counterpart to SKILL.md disable-model-invocation: true
|
|
7
|
+
# (Claude Code / Pi). Keeps explicit invoke; blocks description-based
|
|
8
|
+
# auto-selection.
|
|
9
|
+
allow_implicit_invocation: false
|