This project is a Kotlin/JVM port of mahjong-algorithm by Jeff Wang.
Public scoring uses the wmo-2014-zh adapter documented in COMPATIBILITY.md.
The switches below describe the internal compatibility engine, not a claim that
the upstream defaults define standard MCR. No rules-body endorsement is implied.
Upstream: https://github.com/summerinsects/mahjong-algorithm
Pinned commit: 44a178af08bf11f82a8993fddbe2fe8876ddd8f3

Ported sources: tile.h, shanten.h, shanten.cpp, fan_calculator.h, fan_calculator.cpp.
Regression cases are derived from upstream unit_test.cpp.
Independent public-rule assertions are separate from these upstream fixtures.
The optional oracle also compiles the unmodified upstream stringify.h/cpp.
The upstream copyright year range is preserved verbatim, not inferred from
the date of this port. See LICENSE for the original MIT permission notice.

The port targets the pinned upstream's default feature switches:
SUPPORT_CONCEALED_KONG_AND_MELDED_KONG=1
KNITTED_STRAIGHT_BODY_WITH_ECS=1
DISTINGUISH_PURE_SHIFTED_CHOWS=0
NINE_GATES_WHEN_BLESSING_OF_HEAVEN=1
SUPPORT_BLESSINGS=0
STRICT_98_RULE is not defined.

The nine upstream source/license files are additionally pinned by normalized
SHA-256 in tools/upstream.sha256 (UTF-8, optional BOM removed, CRLF changed to LF).
The optional CMake oracle build and differential suite both verify these hashes.
The native oracle embeds the manifest fingerprint and checks the feature profile;
it is never included in the library's runtime or artifacts.

Gradle wrapper files, when present, are generated by Gradle and are licensed
under the Apache License, Version 2.0, as indicated in their file headers.
