Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,13 @@ conformance/vectors/*.json text eol=lf
# Bash-скрипт Swift-conformance исполняется в контейнере через `bash <файл>`.
# Пин к LF: CR в shebang/командах ломает исполнение на Linux.
bindings/swift/ci/*.sh text eol=lf

# Точные идентичности clean-set считаются по байтам репозитория. Кодек бинарный;
# юридические тексты, происхождение и receipt канонизированы как UTF-8 с LF.
crates/labcolors-core/contracts/clean-set-srgb8-v1/*.bin binary
crates/labcolors-core/contracts/clean-set-srgb8-v1/*.json text eol=lf
crates/labcolors-core/contracts/clean-set-srgb8-v1/*.sha256 text eol=lf
crates/labcolors-core/LICENSES/*.txt text eol=lf whitespace=-blank-at-eof
crates/labcolors-core/NOTICE.md text eol=lf
scripts/verify_clean_set_receipt.py text eol=lf
scripts/test_verify_clean_set_receipt.py text eol=lf
15 changes: 7 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ jobs:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
- name: verify exact clean-set product receipt
run: python3 scripts/verify_clean_set_receipt.py product --product-root "$GITHUB_WORKSPACE"
- name: clean-set receipt verifier hostile tests
run: python3 scripts/test_verify_clean_set_receipt.py
- name: toolchain env (runner.temp)
run: |
echo "RUSTUP_HOME=$RUNNER_TEMP/rustup-$GITHUB_JOB" >> "$GITHUB_ENV"
Expand Down Expand Up @@ -178,14 +182,9 @@ jobs:
tar -xzf "target/package/labcolors-core-${crate_version}.crate" -C "$package_root"
crate_dir="$package_root/labcolors-core-${crate_version}"
test -f "$crate_dir/README.md"
test -f "$crate_dir/LICENSE"
test ! -L "$crate_dir/LICENSE"
cmp LICENSE "$crate_dir/LICENSE"
grep -q '^license = "MIT"$' "$crate_dir/Cargo.toml"
if grep -q '^license-file[[:space:]]*=' "$crate_dir/Cargo.toml"; then
echo "packaged manifest must not carry both SPDX license and license-file" >&2
exit 1
fi
python3 scripts/verify_clean_set_receipt.py core-package \
--source-root "$GITHUB_WORKSPACE" \
--package-root "$crate_dir"
cargo test --doc --manifest-path "$crate_dir/Cargo.toml" --locked

test:
Expand Down
2 changes: 1 addition & 1 deletion crates/labcolors-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ readme = "README.md"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
license = "MIT AND CC-BY-4.0 AND CC-BY-SA-4.0"
repository.workspace = true
rust-version.workspace = true

Expand Down
396 changes: 396 additions & 0 deletions crates/labcolors-core/LICENSES/CC-BY-4.0.txt

Large diffs are not rendered by default.

428 changes: 428 additions & 0 deletions crates/labcolors-core/LICENSES/CC-BY-SA-4.0.txt

Large diffs are not rendered by default.

49 changes: 49 additions & 0 deletions crates/labcolors-core/NOTICE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Данные и атрибуция

Исходный код `labcolors-core` распространяется по лицензии MIT из файла
`LICENSE`. Встроенная таблица
`contracts/clean-set-srgb8-v1/point-clean-set-srgb8-column-rle-v1.bin`
является адаптированным набором данных и распространяется одновременно по
условиям CC-BY-4.0 и CC-BY-SA-4.0. Полные тексты находятся в
`LICENSES/CC-BY-4.0.txt` и `LICENSES/CC-BY-SA-4.0.txt`.

## Sato и Inoue

- Keiko Sato, Takaaki Inoue. *Perception of color emotions for single colors
in red-green defective observers*. PeerJ 4:e2751 (2016).
- Источник: Data S1, DOI `10.7717/peerj.2751`.
- Лицензия источника: CC-BY-4.0.

Две сессии усреднены внутри участника, после чего участники получили равный вес
внутри объявленной когорты. Полученная постфактум граница является
версионированной политикой пакета, а не универсальным законом человеческой
«чистоты» цвета.

## CIE 1931 2° и D65

- International Commission on Illumination. *Colour-matching functions of CIE
1931 standard colorimetric observer* (2019), DOI
`10.25039/CIE.DS.xvudnb9b`, CC-BY-SA-4.0.
- International Commission on Illumination. *CIE standard illuminant D65*
(2019), DOI `10.25039/CIE.DS.hjfjmt59`, CC-BY-SA-4.0.

Из официальных таблиц взяты значения стандартного наблюдателя на
`360..780 nm` и D65; объявленная геометрия суммы точек, точный вывод и конечная
sRGB8-классификация описаны в закреплённом исследовательском выпуске.

## Изменения и точное происхождение

Labpics связал источники с номинальным мостом sRGB8, выполнил точный рациональный
вывод и преобразовал итоговую таблицу в канонический column-RLE-кодек.

- research commit: `ac6d9654fc722334d8bc2054afb903770f2aad80`;
- release SHA-256:
`67cadaae38bbaea3096dba69142b5bf3d7776b7574ec224022abbcd119c45ce6`;
- raw table SHA-256:
`97bcc9f793adb7f13bd70c89e9788c8ab61baf8c77e9f8cd80335ad767d71ae2`;
- runtime codec SHA-256:
`aa6aa7c0b630437f1c1ba8c2ceafb0dadf6551c42331559504076a6cd44e6331`.

Использование источников не означает одобрения Labpics их авторами или
издателями. Дополнительные гарантии сверх условий соответствующих лицензий не
предоставляются.
Binary file not shown.
206 changes: 206 additions & 0 deletions crates/labcolors-core/contracts/clean-set-srgb8-v1/receipt-v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
{
"admission": {
"authority": "ExactTechnicalDerivation",
"convention": "DeclaredPackagePolicyCandidate",
"production_auto_minted": false
},
"artifacts": [
{
"bytes": 84737,
"license": "MIT",
"path": "crates/labcolors-core/src/appearance.rs",
"role": "appearance_executor_source",
"sha256": "2302258dec70a76acbb4ac5c3a1a472997716c3e58fc7bc1b9aaeb105526a709"
},
{
"bytes": 6373,
"license": "MIT",
"path": "crates/labcolors-core/src/clean_set.rs",
"role": "classifier_source",
"sha256": "584ede95e80aa1a4a66a1dc38b1441f661e6de6eac7513f4ab8945a21a39373e"
},
{
"bytes": 3417,
"license": "MIT",
"path": "crates/labcolors-core/src/clean_set_tests.rs",
"role": "classifier_tests",
"sha256": "30c7b3c5ce7b7f876c2cf475a2815b6ac8e53b9986e471864b03de1558978d99"
},
{
"bytes": 5981,
"license": "MIT",
"path": "crates/labcolors-core/src/composition.rs",
"role": "composition_executor_source",
"sha256": "195a67327a3bd86d7816b634481389930bf68577bb1202fad14c2ea152df8625"
},
{
"bytes": 7419,
"license": "MIT",
"path": "crates/labcolors-core/src/sha256.rs",
"role": "content_digest_source",
"sha256": "57f3eb04c91a3562d40523a601d435caf1181dd0a24df0d9162100c13a7c5262"
},
{
"bytes": 45142,
"license": "MIT",
"path": "crates/labcolors-core/src/joint.rs",
"role": "joint_selection_source",
"sha256": "5add7d50fbaacd4849552f81461d6c7c584b985be0f4485112c4b5705dee991a"
},
{
"bytes": 13873,
"license": "MIT",
"path": "crates/labcolors-core/src/lib.rs",
"role": "module_registration_source",
"sha256": "b30300edd3910e3d9da1e56896ce14c3db508b1a6fc5608e01032a5ad95777b1"
},
{
"bytes": 34218,
"license": "MIT",
"path": "crates/labcolors-core/src/observation.rs",
"role": "observation_runtime_source",
"sha256": "8c9838107077775c51d80638ba0b59f9672d14347ca404dfd4c63e2fb62d1c45"
},
{
"bytes": 169898,
"license": "MIT",
"path": "crates/labcolors-core/src/program.rs",
"role": "program_facade_source",
"sha256": "10195d665228073345b3c453c49c4cce99bc168da5dd5e70932f34e0cead1873"
},
{
"bytes": 71522,
"license": "MIT",
"path": "crates/labcolors-core/src/program_identity.rs",
"role": "program_identity_source",
"sha256": "8f0366079e6fa0006360ab19b0449e622add48fdb08431a02258236e1371d78a"
},
{
"bytes": 154789,
"license": "MIT",
"path": "crates/labcolors-core/src/program_session.rs",
"role": "program_source",
"sha256": "a236381dcf80760e1ea39743b3a20d10de938fe1a9d6c64e9a9075f6265b6eb3"
},
{
"bytes": 21581,
"license": "MIT",
"path": "crates/labcolors-core/src/program_clean_set_tests.rs",
"role": "program_tests",
"sha256": "4a02dc8aa1c08649fb04797bdcb713c0356e167b63c5f8e17207fdee92556f2b"
},
{
"bytes": 11370,
"license": "CC-BY-4.0 AND CC-BY-SA-4.0",
"path": "crates/labcolors-core/contracts/clean-set-srgb8-v1/point-clean-set-srgb8-column-rle-v1.bin",
"role": "runtime_codec",
"sha256": "aa6aa7c0b630437f1c1ba8c2ceafb0dadf6551c42331559504076a6cd44e6331"
},
{
"bytes": 11785,
"license": "MIT",
"path": "crates/labcolors-core/src/session.rs",
"role": "session_runtime_source",
"sha256": "4f77643206077c080e5e9b182e896145bfb69bf3db8aa4c1ac7d4c5360ea8504"
},
{
"bytes": 34105,
"license": "MIT",
"path": "crates/labcolors-core/src/lcs_occurrence.rs",
"role": "signal_transport_source",
"sha256": "78d37406e9bdc37f126b72987c9c92b452c13b3233c0aeb0a75ed25dadb83a68"
},
{
"bytes": 5154,
"license": "MIT",
"path": "crates/labcolors-core/src/srgb8.rs",
"role": "srgb8_source",
"sha256": "6c95324eb05476f35f75375a9af0b2b4a41b8b2978c46e67d2ce1aea5adde342"
},
{
"bytes": 39302,
"license": "MIT",
"path": "scripts/verify_clean_set_receipt.py",
"role": "verifier_source",
"sha256": "c6d9025235c1c53b54ce4c7b231fb02a412d5505740f82cdbba42f80ea375472"
},
{
"bytes": 31194,
"license": "MIT",
"path": "scripts/test_verify_clean_set_receipt.py",
"role": "verifier_tests",
"sha256": "2831e67431294c28ba60753a892d0ad5e3ff972144d483500eeb10c47bb9d760"
}
],
"excluded_claims": [
"ideal algebraic IEC 61966-2-1 transfer semantics",
"chromatic adaptation",
"physical applicability of object-colour geometry to self-luminous display",
"human cleanliness law or population guarantee"
],
"license_scope": {
"codec_spdx": "CC-BY-4.0 AND CC-BY-SA-4.0",
"core_package_spdx": "MIT AND CC-BY-4.0 AND CC-BY-SA-4.0",
"legal_files": [
{
"bytes": 2952,
"path": "crates/labcolors-core/NOTICE.md",
"role": "attribution_notice",
"sha256": "caf524260873a2daa9f727d81b9b49f571f444e9452d48099a516a8a9f9f7684"
},
{
"bytes": 18657,
"path": "crates/labcolors-core/LICENSES/CC-BY-4.0.txt",
"role": "cc_by_4_0_text",
"sha256": "9ba9550ad48438d0836ddab3da480b3b69ffa0aac7b7878b5a0039e7ab429411"
},
{
"bytes": 20138,
"path": "crates/labcolors-core/LICENSES/CC-BY-SA-4.0.txt",
"role": "cc_by_sa_4_0_text",
"sha256": "28a9529c7d0bb4dc51f4bf5c116a3d16ef247a052f7591466768ddf563fd1cf5"
},
{
"bytes": 969,
"path": "crates/labcolors-core/Cargo.toml",
"role": "core_manifest",
"sha256": "819952e6aab56e930031c6d68d0b87363e89f10f0bcf20e4ed4179916a296650"
},
{
"bytes": 1065,
"path": "LICENSE",
"role": "mit_text",
"sha256": "af88b29f7cdf9f243ab5a72807e9e90cd31403a5517dda61731ea639a2c73ac1"
}
],
"receipt_spdx": "CC-BY-4.0 AND CC-BY-SA-4.0",
"software_spdx": "MIT"
},
"release_id": "exact-nominal-srgb8-point-clean-set-v1",
"research": {
"commit": "ac6d9654fc722334d8bc2054afb903770f2aad80",
"object_format": "sha1",
"release_path": "evidence/point-clean-set-srgb8/release-v1.json",
"release_sha256": "67cadaae38bbaea3096dba69142b5bf3d7776b7574ec224022abbcd119c45ce6"
},
"runtime_contract": {
"accepted_points": 8232849,
"codec": {
"bytes": 11370,
"header_hex": "4c50434301010000",
"id": "green-column-red-run-start-rle-v1",
"records": 3616,
"sha256": "aa6aa7c0b630437f1c1ba8c2ceafb0dadf6551c42331559504076a6cd44e6331"
},
"domain_id": "encoded-srgb8-u8-cube-v1",
"domain_points": 16777216,
"law_id": "neutral-or-blue-outside-closed-dirty-interval-v1",
"neutral_axis_id": "srgb8-output-neutral-axis-v1",
"raw": {
"bytes": 131072,
"id": "raw-dirty-blue-interval-u8-pair-v1",
"sha256": "97bcc9f793adb7f13bd70c89e9788c8ab61baf8c77e9f8cd80335ad767d71ae2"
}
},
"schema": "labcolors-exact-point-clean-set-product-receipt/1"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
874926f880901e5b9ffeb0fb23a6466f9745a5a120ca29b47309b7c078aa9a40 receipt-v1.json
Loading
Loading