diff --git a/.gitleaks.toml b/.gitleaks.toml index f856cdc9..46815ff0 100644 --- a/.gitleaks.toml +++ b/.gitleaks.toml @@ -406,3 +406,26 @@ regexes = [ '''(?s)^\s*"eng/provenance/records/dokka\-object\-keys\-licence\-r1\.json":\s*"55621ecc7032745ca46e56d13133dc22a3bd808d80966d737427b5d6fc5bd096",?\s*$''', '''(?s)^\s*"src/public/dotnet/ArcForges\.Contracts\.PublicApi/ArcForges\.Contracts\.PublicApi\.csproj":\s*"986b7a97734cd5d0630e548da897869de322a112c087c2d0df6a0bfc98b8784c",?\s*$''', ] + +[[allowlists]] +description = "CON17 observed exact public source inventory hashes; independently verified source snapshots" +targetRules = ["generic-api-key"] +condition = "AND" +regexTarget = "line" +paths = ['''^eng/policy/dependency\-reviews/con17\-previous\-client\-113\-1\.json$'''] +regexes = [ + '''(?s)^\s*"eng/policy/contract\-access\.json":\s*"622d53ff60931677847ab90c550721b7630c13e167133bd13688215e46f5ae1e",?\s*$''', + '''(?s)^\s*"eng/policy/contract\-access\.json":\s*"9de84aa03629c593bad2d795db15f7edb83c5f01cb37b2cb1aca012c67660cbf",?\s*$''', + '''(?s)^\s*"eng/policy/contract\-access\.json":\s*"145298928cd567802b7e8504f75b765270f95539fe9f12d2d65405b4d6c8dc92",?\s*$''', +] + +[[allowlists]] +description = "CON17 observed exact public source inventory hashes; independently verified source snapshots" +targetRules = ["generic-api-key"] +condition = "AND" +regexTarget = "line" +paths = ['''^eng/policy/dependency\-policy\.json$'''] +regexes = [ + '''(?s)^\s*"eng/policy/contract\-access\.json":\s*"9de84aa03629c593bad2d795db15f7edb83c5f01cb37b2cb1aca012c67660cbf",?\s*$''', + '''(?s)^\s*"eng/policy/contract\-access\.json":\s*"145298928cd567802b7e8504f75b765270f95539fe9f12d2d65405b4d6c8dc92",?\s*$''', +] diff --git a/ArcForges.Contracts.slnx b/ArcForges.Contracts.slnx index 2c506223..697297a1 100644 --- a/ArcForges.Contracts.slnx +++ b/ArcForges.Contracts.slnx @@ -22,4 +22,5 @@ + diff --git a/Directory.Packages.props b/Directory.Packages.props index 9b9c1474..2ca87a8b 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,6 +4,7 @@ true + diff --git a/eng/check_compatibility.py b/eng/check_compatibility.py new file mode 100644 index 00000000..98affbd9 --- /dev/null +++ b/eng/check_compatibility.py @@ -0,0 +1,252 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Offline compatibility checks over compiled FileDescriptorSet bytes. + +This reader covers descriptor metadata only; it is not a business wire codec. +It uses no source-regex approximation, package restore or live service. +""" +from __future__ import annotations + +import argparse +from copy import deepcopy +from datetime import date +import hashlib +import json +from pathlib import Path + + +def fields(data: bytes) -> dict[int, list[int | bytes]]: + """Read a bounded protobuf metadata message, refusing malformed input.""" + result: dict[int, list[int | bytes]] = {} + at = 0 + + def varint() -> int: + nonlocal at + value = 0 + for shift in range(0, 70, 7): + if at >= len(data): + raise ValueError("Truncated descriptor varint") + byte = data[at] + at += 1 + if shift == 63 and byte > 1: + raise ValueError("Descriptor varint overflow") + value |= (byte & 127) << shift + if byte < 128: + return value + raise ValueError("Descriptor varint overflow") + + while at < len(data): + key = varint() + tag, wire = key >> 3, key & 7 + if not 1 <= tag <= 536870911: + raise ValueError("Invalid descriptor field tag") + if wire == 0: + value = varint() + elif wire in (1, 2, 5): + length = varint() if wire == 2 else (8 if wire == 1 else 4) + if length > len(data) - at: + raise ValueError("Truncated descriptor field") + value = data[at:at + length] + at += length + else: + raise ValueError("Unsupported descriptor wire type") + result.setdefault(tag, []).append(value) + return result + + +def one(message: dict, tag: int, default=None): + values = message.get(tag, []) + if len(values) > 1: + raise ValueError(f"Duplicate singular descriptor field {tag}") + return values[0] if values else default + + +def text(message: dict, tag: int, default="") -> str: + value = one(message, tag) + if value is None: + return default + if not isinstance(value, bytes): + raise ValueError("Descriptor string has wrong wire type") + return value.decode("utf-8", errors="strict") + + +def descriptor(data: bytes) -> dict: + if not data or len(data) > 64 * 1024 * 1024: + raise ValueError("Descriptor set is empty or exceeds 64 MiB") + model = {"messages": {}, "enums": {}, "services": {}} + + def put(kind: str, name: str, value): + if name in model[kind]: + raise ValueError(f"Duplicate descriptor definition {name}") + model[kind][name] = value + + def enumeration(raw: bytes, prefix: str): + item = fields(raw) + name = prefix + "." + text(item, 1) + entries = {} + for raw_value in item.get(2, []): + value = fields(raw_value) + key = text(value, 1) + if key in entries: + raise ValueError("Duplicate enum name") + entries[key] = one(value, 2, 0) + put("enums", name, entries) + + def message(raw: bytes, prefix: str, depth: int = 0): + if depth > 100: + raise ValueError("Descriptor nesting exceeds 100") + item = fields(raw) + name = prefix + "." + text(item, 1) + groups = [text(fields(group), 1) for group in item.get(8, [])] + entries = {} + names = set() + for raw_field in item.get(2, []): + value = fields(raw_field) + tag = one(value, 3) + field_name = text(value, 1) + if not isinstance(tag, int) or tag <= 0 or tag in entries or field_name in names: + raise ValueError("Invalid or duplicate descriptor field") + names.add(field_name) + group = one(value, 9) + if group is not None and (not isinstance(group, int) or group >= len(groups)): + raise ValueError("Invalid descriptor oneof index") + entries[tag] = {"name": field_name, "type": one(value, 5), + "typeName": text(value, 6), "label": one(value, 4), + "oneof": None if group is None else groups[group], + "optional": one(value, 17, 0), "jsonName": text(value, 10)} + put("messages", name, entries) + for child in item.get(3, []): + message(child, name, depth + 1) + for child in item.get(4, []): + enumeration(child, name) + + seen_files = set() + for raw_file in fields(data).get(1, []): + file = fields(raw_file) + filename = text(file, 1) + if not filename or filename in seen_files: + raise ValueError("Missing or duplicate descriptor file") + seen_files.add(filename) + prefix = "." + text(file, 2) + for raw in file.get(4, []): + message(raw, prefix) + for raw in file.get(5, []): + enumeration(raw, prefix) + for raw in file.get(6, []): + service = fields(raw) + methods = {} + for raw_method in service.get(2, []): + method = fields(raw_method) + name = text(method, 1) + if name in methods: + raise ValueError("Duplicate service method") + methods[name] = {"input": text(method, 2), "output": text(method, 3), + "clientStreaming": one(method, 5, 0), + "serverStreaming": one(method, 6, 0)} + put("services", prefix + "." + text(service, 1), methods) + if not seen_files: + raise ValueError("No files in descriptor set") + return model + + +def compare(previous: dict, current: dict) -> list[str]: + """Existing tags, presence, exact types, enum numbers and RPC shapes are fixed. + + Additive declarations are allowed. Removal requires an explicit versioned + surface retirement before selecting this comparison; it is never silently + accepted just because a tag is reserved or has the same binary wire type. + """ + errors = [] + for kind in ("messages", "enums", "services"): + for name, old_entries in previous[kind].items(): + if name not in current[kind]: + errors.append(f"{kind}:{name}: deleted definition") + continue + new_entries = current[kind][name] + for key, old in old_entries.items(): + if key not in new_entries: + errors.append(f"{kind}:{name}:{key}: deleted member") + elif old != new_entries[key]: + errors.append(f"{kind}:{name}:{key}: changed member or reused tag") + return errors + + +def retained(model: dict, retirement: dict) -> dict: + """Apply only the exact retirement inventory already validated by Foundation. + + The historical descriptor bytes remain immutable. This projection is limited + to the two namespaces whose retirement is owned by CON.23; it never waives + retained field changes or a later service's compatibility requirements. + """ + result = deepcopy(model) + prefixes = (".arcforges.foundation.v1.", ".arcforges.publicapi.v1.") + for name in list(result["messages"]): + if not name.startswith(prefixes): + continue + short = name.rsplit(".", 1)[1] + if short in retirement.get("messages", []): + del result["messages"][name] + continue + for row in retirement.get("fields", {}).get(short, []): + tag = row["tag"] + field = result["messages"][name].get(tag) + if field is not None and field["name"] == row["name"]: + del result["messages"][name][tag] + return result + + +def check_window(root: Path) -> dict: + from check_foundation import check, safe_path + # This verifies the exact CON.23 retirement exceptions before using them. + check(root) + window = json.loads((root / "eng/compatibility/window.json").read_text(encoding="utf-8")) + if window["schemaVersion"] != "contract-compatibility-window.v1" or window["minimumReadSupportDays"] < 90: + raise ValueError("Invalid minimum compatibility window") + if (date.fromisoformat(window["earliestRetirement"]) - date.fromisoformat(window["openedOn"])).days < window["minimumReadSupportDays"]: + raise ValueError("Read compatibility window is shorter than its minimum") + if window["previousVersion"] != window["minimumVersion"]: + raise ValueError("Distinct minimum versions require their own pinned descriptors and offline harness") + inventory = json.loads((root / "eng/foundation-inventory.json").read_text(encoding="utf-8")) + results, errors = [], [] + for row in window["descriptors"]: + raw = safe_path(root, row["previousAndMinimum"]).read_bytes() + if hashlib.sha256(raw).hexdigest() != row["sha256"]: + raise ValueError("Historical descriptor fixture changed: " + row["package"]) + previous = retained(descriptor(raw), inventory.get("retirement", {})) + current = descriptor(safe_path(root, row["current"]).read_bytes()) + problems = compare(previous, current) + errors.extend(row["package"] + ": " + problem for problem in problems) + results.append({"package": row["package"], "retainedDefinitions": {key: len(value) for key, value in previous.items()}, + "check": "preserve published supported members used by both offline codec directions", + "errors": problems}) + return {"schemaVersion": "contract-compatibility-report.v1", "previousVersion": window["previousVersion"], + "minimumVersion": window["minimumVersion"], "coverage": window["coverage"], "descriptors": results, "errors": errors} + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--previous", type=Path) + parser.add_argument("--current", type=Path) + parser.add_argument("--window", action="store_true") + parser.add_argument("--root", type=Path, default=Path(__file__).resolve().parents[1]) + parser.add_argument("--report", type=Path) + args = parser.parse_args() + if args.window: + report = check_window(args.root) + else: + if args.previous is None or args.current is None: + parser.error("Use --window or both --previous and --current") + previous = descriptor(args.previous.read_bytes()) + current = descriptor(args.current.read_bytes()) + errors = compare(previous, current) + report = {"schemaVersion": "contract-descriptor-compatibility.v1", "errors": errors, + "previousDefinitions": {key: len(value) for key, value in previous.items()}, + "currentDefinitions": {key: len(value) for key, value in current.items()}} + if args.report: + args.report.parent.mkdir(parents=True, exist_ok=True) + args.report.write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8") + print(json.dumps(report)) + return 1 if report["errors"] else 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/eng/compatibility/foundation-1.0.0-ci.113.1.binpb b/eng/compatibility/foundation-1.0.0-ci.113.1.binpb new file mode 100644 index 00000000..31cfff4d Binary files /dev/null and b/eng/compatibility/foundation-1.0.0-ci.113.1.binpb differ diff --git a/eng/compatibility/public-api-1.0.0-ci.113.1.binpb b/eng/compatibility/public-api-1.0.0-ci.113.1.binpb new file mode 100644 index 00000000..cb4adb51 Binary files /dev/null and b/eng/compatibility/public-api-1.0.0-ci.113.1.binpb differ diff --git a/eng/compatibility/window.json b/eng/compatibility/window.json new file mode 100644 index 00000000..7b00b8d3 --- /dev/null +++ b/eng/compatibility/window.json @@ -0,0 +1,28 @@ +{ + "schemaVersion": "contract-compatibility-window.v1", + "license": "Apache-2.0", + "contractMajor": 1, + "openedOn": "2026-09-27", + "earliestRetirement": "2026-12-26", + "minimumReadSupportDays": 90, + "previousVersion": "1.0.0-ci.113.1", + "minimumVersion": "1.0.0-ci.113.1", + "sourceCommit": "b10b2f6f316bf0c007e00632c5442fc102ebbe6e", + "publication": "https://github.com/ArcForges/Contracts/actions/runs/36334951174", + "profile": "Retained P2-019/P2-020 surface only; exact retirements remain validated by check_foundation. This is an actual published development candidate, not a claimed stable release or deployed production client.", + "descriptors": [ + { + "package": "ArcForges.Contracts.Foundation", + "previousAndMinimum": "eng/compatibility/foundation-1.0.0-ci.113.1.binpb", + "sha256": "c4a1cbf6201d09ee9f3dbbdf3ef96d8be78bc495755da5ab17496efee46cd558", + "current": "artifacts/foundation.binpb" + }, + { + "package": "ArcForges.Contracts.PublicApi", + "previousAndMinimum": "eng/compatibility/public-api-1.0.0-ci.113.1.binpb", + "sha256": "0709b7bc039e2ebff9e6865ff362deb1520bc584384fc832bfea4a16bda9c707", + "current": "artifacts/public-api.binpb" + } + ], + "coverage": "Previous/current and current/minimum offline generated codec exchange covers the actually published Hello packaging demonstration plus exact Foundation values and additive response retention. Full later product service matrix coverage remains the CON.18 completion prerequisite, not an invented previous deployment." +} diff --git a/eng/contracts.py b/eng/contracts.py index 2a978ff7..a17d872a 100644 --- a/eng/contracts.py +++ b/eng/contracts.py @@ -194,6 +194,25 @@ def emit(path: Path, content: str) -> None: + "export const contractServices = Object.freeze([" + ", ".join(s["name"] for s in services) + "] as const);\n") +def generate_export_barrel(row: dict, output: Path, check: bool = False) -> None: + barrel = "// SPDX-License-Identifier: Apache-2.0\n// Generated by ArcForges Contracts; do not edit.\n" + barrel += "".join(f'export * from "./gen/{file.relative_to(output).as_posix()[:-3]}.js";\n' + for file in sorted(output.rglob("*.ts"))) + barrel += 'export * from "./shapes/gen/proto.js";\n' + if row['id'] == '@arcforges/proto': + barrel += 'export * from "./values.js";\n' + barrel += 'export * from "./wire.js";\n' + barrel += 'export * from "./semantic-hash.js";\n' + if proto_services(row): + barrel += 'export * from "./services/gen/catalog.js";\n' + index_file = ROOT / row["sourceRoot"] / "src/index.ts" + if check: + if not index_file.is_file() or index_file.read_text(encoding="utf-8") != barrel: + raise ValueError("Stale generated export barrel: " + str(index_file)) + else: + index_file.write_text(barrel, encoding="utf-8") + + def generate(check: bool = False) -> None: ARTIFACTS.mkdir(exist_ok=True) platform_key = {"Windows": "windows_x64", "Linux": "linux_x64", "Darwin": "macosx_x64"}.get(platform.system()) @@ -250,21 +269,7 @@ def common(row: dict) -> list: normalize_generated(file) sync_generated(output, target, check) if row["kind"] == "npm": - barrel = "// SPDX-License-Identifier: Apache-2.0\n// Generated by ArcForges Contracts; do not edit.\n" - barrel += "".join(f'export * from "./gen/{file.relative_to(output).as_posix()[:-3]}.js";\n' - for file in sorted(output.rglob("*.ts"))) - barrel += 'export * from "./shapes/gen/proto.js";\n' - if row['id'] == '@arcforges/proto': - barrel += 'export * from "./values.js";\n' - barrel += 'export * from "./wire.js";\n' - if proto_services(row): - barrel += 'export * from "./services/gen/catalog.js";\n' - index_file = ROOT / row["sourceRoot"] / "src/index.ts" - if check: - if not index_file.is_file() or index_file.read_text(encoding="utf-8") != barrel: - raise ValueError("Stale generated export barrel: " + str(index_file)) - else: - index_file.write_text(barrel, encoding="utf-8") + generate_export_barrel(row, output, check) run(*common(public), "--include_imports", f"--descriptor_set_out={ARTIFACTS / 'contracts.binpb'}") from kotlin_tools import generate as generate_kotlin maven = next(row for row in packages if row["id"] == "io.github.arcforges:contracts-proto") @@ -283,6 +288,7 @@ def build() -> None: run(sys.executable, ROOT / "eng/check_licences.py") run("node", ROOT / "eng/check_contract_access.mjs") run(sys.executable, ROOT / "eng/check_foundation.py", "--generated", "--self-test") + run(sys.executable, ROOT / "eng/check_compatibility.py", "--window", "--report", ARTIFACTS / "evidence/compatibility-matrix.json") run(sys.executable, ROOT / "eng/check_serialization.py", "--report", ARTIFACTS / "evidence/serialization-policy.json") run(sys.executable, ROOT / "eng/check_operation_scope.py", "--report", ARTIFACTS / "evidence/operation-reachability.json") run("dotnet", "build", "ArcForges.Contracts.slnx", "-c", "Release", "--no-restore") @@ -304,11 +310,22 @@ def assembly(project: Path) -> Path: run(NPM, "test") run("node", ROOT / "tests/public/foundation.test.mjs", "--exchange") run("dotnet", structure_tests, ROOT, "--verify-foundation-exchange") + compatibility_exchange(structure_tests) serialization_probe() from kotlin_tools import build as build_kotlin build_kotlin() +def compatibility_exchange(structure_tests: Path) -> None: + """Isolated old/current generated assemblies; no transport or live service.""" + previous = ROOT / "tests/StructureTests/PreviousClient/bin/Release/net10.0/PreviousClient.dll" + with tempfile.TemporaryDirectory(prefix="arcforges-compatibility-") as temporary: + run("dotnet", previous, "emit", temporary) + run("dotnet", structure_tests, ROOT, "--compatibility-current", temporary) + run("dotnet", previous, "verify-and-serve", temporary) + run("dotnet", structure_tests, ROOT, "--compatibility-verify", temporary) + + def serialization_probe() -> None: """Publish the WP03.02 probe with Native AOT for this host and run the independent vectors once.""" rid = {"Windows": "win-x64", "Linux": "linux-x64"}.get(platform.system()) diff --git a/eng/policy/contract-access.json b/eng/policy/contract-access.json index 17a1f156..e37a8ce4 100644 --- a/eng/policy/contract-access.json +++ b/eng/policy/contract-access.json @@ -7,7 +7,7 @@ "path": "docs/assurance/wp03-02-serialization-posture-profile.md", "sha256": "7add5ef64bd92ef5abb1b9f5d5b324066fbd54dfcd08c901390d0eb25f61992c" }, - "sourceCommit": "671f816ddc9e1a3a75782842234f2e899c3de01a", + "sourceCommit": "a1d2f4bd6ff05f80e86c776ce9f7070729b38898", "schemas": [ { "path": "internal/proto/arcforges/local/chat/v1/chat.proto", @@ -1009,6 +1009,14 @@ "sha256": "815584ad9125ce01f187091596b3bab2c6c5388f97fe81310f7b12c7055386e6", "kind": "generated" }, + { + "path": "src/public/dotnet/ArcForges.Contracts.Foundation/CanonicalSemanticHash.cs", + "package": "ArcForges.Contracts.Foundation", + "access": "public", + "types": ["CanonicalSemanticHash"], + "sha256": "d8b3d2846ed015d7ae0bade7fa17b93aceea1d07022720fea3c584ebfd49ead0", + "kind": "authored" + }, { "path": "src/public/dotnet/ArcForges.Contracts.Foundation/ContractSerialization.cs", "package": "ArcForges.Contracts.Foundation", @@ -3791,7 +3799,7 @@ "package": "@arcforges/contract-fixtures", "access": "public", "types": [], - "sha256": "629ae43b5ba560b0f6322f46deebda5a181753bea649637b8a2021e5da15a212", + "sha256": "d6103a6836787faa59945c3106708e29b871548cfa31d297086e3808ad55a10d", "kind": "generated" }, { @@ -3932,9 +3940,17 @@ "package": "@arcforges/proto", "access": "public", "types": [], - "sha256": "c85b66293b811e44ed36537ae16f4eaa14da203bedff6bbc1febbeb29a9a2d3f", + "sha256": "f637d0b976ad65604ed5dde8fb61245bfd59b788171cb4dfaacca475e7cffefe", "kind": "generated" }, + { + "path": "src/public/ts/proto/src/semantic-hash.ts", + "package": "@arcforges/proto", + "access": "public", + "types": ["SemanticReader"], + "sha256": "c0fb7104c5d0ff671cbab866c5c0d409ce9186534e34fdf42bdacfddd1c9b5f9", + "kind": "authored" + }, { "path": "src/public/ts/proto/src/services/gen/catalog.ts", "package": "@arcforges/proto", @@ -4045,7 +4061,7 @@ }, { "path": "Directory.Packages.props", - "sha256": "e5b916abbfaea2cceb4471a7b2861fbda6685f09a7c35445e3dcb10803fbb43c" + "sha256": "4a83ab07c4e26a69d5153e683d311fa667a1d40130f69358a59b512b55d5a8d1" }, { "path": "NuGet.config", @@ -4081,7 +4097,7 @@ }, { "path": "package.json", - "sha256": "2f36038dcc047c24126270f680db23265625775c3faf83df0f18340476800c85" + "sha256": "3400bc5ed9b2c01335577d9f9d8f268f8053b76f61959169b06ecad702fc36ed" }, { "path": "public/http/v1/inventory.schema.json", diff --git a/eng/policy/dependency-policy.json b/eng/policy/dependency-policy.json index 87f4aea4..396a94b0 100644 --- a/eng/policy/dependency-policy.json +++ b/eng/policy/dependency-policy.json @@ -8,7 +8,7 @@ ".python-version": "922fe0c3de073b01988e23348ea184456161678c5e329e6f34be89be24383f93", "Directory.Build.props": "c2a05ff316f24d7293378ef7f4257b1788f9442224a48d803d0016798babbb5b", "Directory.Build.targets": "1404c5997b2679c1e4dc7897d5ab9c80c788daf0d4fe456fd15bcb8afeb73965", - "Directory.Packages.props": "e5b916abbfaea2cceb4471a7b2861fbda6685f09a7c35445e3dcb10803fbb43c", + "Directory.Packages.props": "4a83ab07c4e26a69d5153e683d311fa667a1d40130f69358a59b512b55d5a8d1", "NuGet.config": "0bc8b5cfba429bcbd0cb692405e3b6e504793c122350d6a8c95a69c2d718b472", "build.gradle.kts": "1cf3ae88a76f49c159e4ee1856e1d1e78a2f2f801bc07d5436391f745faac9c5", "eng/Codegen/Codegen.csproj": "c702e5c3150d55ad8ecaf1db3d1d0fe34a0a5cc64ffd6229d6437a34bc5ff8a1", @@ -16,7 +16,7 @@ "eng/central-signing/build.gradle.kts": "a24f120f0e503347fdca3e2520dab58583ebb1449550f3f0d99b05437af174a8", "eng/central-signing/settings.gradle.kts": "1f1f5285f2938dc48b7a5da29f1c86f43a06ead1cffabd469b47597580f671b5", "eng/contract-packages.json": "9567c392329f5db7cdcace051e9c7806c7b7ae163bd6d2ed3fff734a5e1a9569", - "eng/policy/contract-access.json": "b59b9fc1491c3b34323d638a09d7b07a8c23620286b16691b4d78a5390332ff6", + "eng/policy/contract-access.json": "145298928cd567802b7e8504f75b765270f95539fe9f12d2d65405b4d6c8dc92", "eng/provenance/artifact-profiles/dokka-2-2-0-r1.json": "f0f1bc138f4406cc5176d7181165591426f58a67333a8aad64f16999173ade74", "eng/provenance/artifact-profiles/dokka-2-2-0-r2.json": "08347bde226256422e640c1db3a7eb7f8d882390a7dfa66445974344e241e13e", "eng/provenance/artifact-profiles/dokka-2-2-0-r3.json": "a1a4cf880b287c6b8f9a9707d9226168584772b13e5ecd579c527873b0351521", @@ -26,6 +26,8 @@ "eng/provenance/artifact-profiles/dokka-2-2-0-r7.json": "5b86329a7aa205353dfdb0fb75d924e50d2486e281dafb22fe90bf93012b03ad", "eng/provenance/artifact-profiles/dokka-2-2-0-r8.json": "224432d3957639e42fb429aa2841d80dbfd10aaec18b8ab3b4bf3851829f2089", "eng/provenance/records/canonical-apache-licence-r1.json": "e4252278767a0b4dd27a09a50b176c9420469828345e61336a4b5ca1d17c7b44", + "eng/provenance/records/con17-published-descriptors-r1.json": "b0f35abb8edcaa665d53663f5eaad3cd7825195fd93bbe093101e29452bed97c", + "eng/provenance/records/con17-semantic-export-r1.json": "9ae65ee01b25241105c986f5f696eb3bc99c23e165613ba227e094424b64d720", "eng/provenance/records/contract-bindings-r2.json": "95d2bde3b8d00c03061866838bc28b907bcec0e29a0ede996a42e79b7bb53221", "eng/provenance/records/contract-bindings-r3.json": "ba8adc87164b16804cad6525c50674d4f1b05da89d1d300a9b4f770576906878", "eng/provenance/records/contract-bindings-r4.json": "0918c490633e7205d66af8fe7bd825cb4f6db259c12b4ba33ee08aa4e55e57aa", @@ -131,7 +133,7 @@ "gradle/verification-metadata.xml": "ee91387d7538ba25bfcdb385f42d3ffaeaec1a1aefdc54a96e94fa19f95334e2", "gradle/wrapper/gradle-wrapper.properties": "45b09518a2f0ea326bc776066e735b94527d2a94002e3b27621c32cdaee7e3ce", "package-lock.json": "3e536db25743ceb5a021559dbc1f31d57112211c62d94f84df34daca5382709c", - "package.json": "2f36038dcc047c24126270f680db23265625775c3faf83df0f18340476800c85", + "package.json": "3400bc5ed9b2c01335577d9f9d8f268f8053b76f61959169b06ecad702fc36ed", "settings-gradle.lockfile": "5e2d075903b5cd264613e7538c7c51b1484fe2ed489d4ead3e6b4ba0cf3911c4", "settings.gradle.kts": "08e4e324a1fd3b548fced7c36945454823410fd7a7fbb95061375352668a7e64", "src/internal/dotnet/ArcForges.Contracts.CloudInternal/ArcForges.Contracts.CloudInternal.csproj": "4d0a0dcdcebc57e2bb261b4e70ab8226ddfc853a405b5b28368cca1767380911", @@ -169,7 +171,9 @@ "src/public/ts/api-client/package.json": "898f6dd155206d058bd3b9ff73718fc5adaf9960db1b22719015c67d8437ecf8", "src/public/ts/contract-fixtures/package.json": "c593abc4f5179b38fc470cf034a993ba0e0d552e7d6bd224b770c87db3047128", "src/public/ts/proto/package.json": "ef1d092f9811439e7f9d5e232d437c7a886020b1fd68f1327b326e22fb6bfe5b", - "tests/StructureTests/StructureTests.csproj": "27b8786c8d1ad8806f5c5015a000542fa717bb23dda27989b09cac0a4b4f22fe", + "tests/StructureTests/PreviousClient/PreviousClient.csproj": "be5035e295c028041172d6d2a4559070cc8beedbca724758f7099a67b4c76c72", + "tests/StructureTests/PreviousClient/packages.lock.json": "5e4f160e83bd12b6f3d630a9ee93aa5e2becd200fef836a1068fc0cbee92e695", + "tests/StructureTests/StructureTests.csproj": "5bca08adfe954e140c6f78371f33c7315307afefeffa9d95c415271775510587", "tests/StructureTests/packages.lock.json": "1fbee24fc31f60affa0f95616bad59428521335b5f5705de95986a8b580627eb", "tests/public/HelloClient/HelloClient.csproj": "fa65e07276f1b2209e9d96b95eaf5bcfe8b04472d8bf334d90d74e6e939c6f2a", "tests/public/HelloClient/packages.lock.json": "1592ed0d5c1bc731764993c0629fbc4954673001b4757800f0c7511ac1e462e7", @@ -2378,6 +2382,28 @@ } ], "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:arcforges.contracts.foundation@1.0.0-ci.113.1": { + "integrity": "k51yFjKnec92FJEfOM3/6YEhnbi1wfO4gztqjlhLumg7USTjVnA7ab7rE4X/H1cDb62Ny4c2ufn8Xi/CtBaZnA==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/arcforges.contracts.foundation/1.0.0-ci.113.1/arcforges.contracts.foundation.nuspec", + "sha256": "7726a233f9ce81c4373a2ab9423c33d566b919bb2cb90d2b5577cf844bbbbfc4" + } + ], + "scope": "Exact previously published first-party fixture consumed only by the isolated offline PreviousClient test executable; never a production package dependency." + }, + "nuget:arcforges.contracts.publicapi@1.0.0-ci.113.1": { + "integrity": "1ai2jcqdFfKLHahN62N9dqkcSsAEbgK/K5uQi4LDIUFDGaT38/2KJYYykrb/YLO2UyUBpFjxJmTk++A+4mr8Uw==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/arcforges.contracts.publicapi/1.0.0-ci.113.1/arcforges.contracts.publicapi.nuspec", + "sha256": "ff556689167901646fc045bdf691fdd2c8b72b25cb848e9312ff384d0b0e7216" + } + ], + "scope": "Exact previously published first-party fixture consumed only by the isolated offline PreviousClient test executable; never a production package dependency." } }, "publisher": { @@ -2405,9 +2431,9 @@ }, "review": { "owner": "Contracts maintainers", - "reviewer": "CON.23 implementation owner under maintainer authorization; exact-head peer review required before merge", + "reviewer": "w-20260927-platform (dependency admission assessment; independent CON.17 PR review required)", "reviewedOn": "2026-09-27", - "baselineCommit": "62d2d47b4c70a2b8b30a6799d96be8a3bafab14f", + "baselineCommit": "a1d2f4bd6ff05f80e86c776ce9f7070729b38898", "inputHashes": { ".java-version": "b8481af4c809b46f02fc334825116cbe9e6d6a7bc8e2363511fa77044fca8016", ".node-version": "73fb1b615e2043a933be1c0895cde4358036acc28d785692509b822aa53c761f", @@ -2415,7 +2441,7 @@ ".python-version": "922fe0c3de073b01988e23348ea184456161678c5e329e6f34be89be24383f93", "Directory.Build.props": "c2a05ff316f24d7293378ef7f4257b1788f9442224a48d803d0016798babbb5b", "Directory.Build.targets": "1404c5997b2679c1e4dc7897d5ab9c80c788daf0d4fe456fd15bcb8afeb73965", - "Directory.Packages.props": "e5b916abbfaea2cceb4471a7b2861fbda6685f09a7c35445e3dcb10803fbb43c", + "Directory.Packages.props": "4a83ab07c4e26a69d5153e683d311fa667a1d40130f69358a59b512b55d5a8d1", "NuGet.config": "0bc8b5cfba429bcbd0cb692405e3b6e504793c122350d6a8c95a69c2d718b472", "build.gradle.kts": "1cf3ae88a76f49c159e4ee1856e1d1e78a2f2f801bc07d5436391f745faac9c5", "eng/Codegen/Codegen.csproj": "c702e5c3150d55ad8ecaf1db3d1d0fe34a0a5cc64ffd6229d6437a34bc5ff8a1", @@ -2423,7 +2449,7 @@ "eng/central-signing/build.gradle.kts": "a24f120f0e503347fdca3e2520dab58583ebb1449550f3f0d99b05437af174a8", "eng/central-signing/settings.gradle.kts": "1f1f5285f2938dc48b7a5da29f1c86f43a06ead1cffabd469b47597580f671b5", "eng/contract-packages.json": "9567c392329f5db7cdcace051e9c7806c7b7ae163bd6d2ed3fff734a5e1a9569", - "eng/policy/contract-access.json": "b59b9fc1491c3b34323d638a09d7b07a8c23620286b16691b4d78a5390332ff6", + "eng/policy/contract-access.json": "145298928cd567802b7e8504f75b765270f95539fe9f12d2d65405b4d6c8dc92", "eng/provenance/artifact-profiles/dokka-2-2-0-r1.json": "f0f1bc138f4406cc5176d7181165591426f58a67333a8aad64f16999173ade74", "eng/provenance/artifact-profiles/dokka-2-2-0-r2.json": "08347bde226256422e640c1db3a7eb7f8d882390a7dfa66445974344e241e13e", "eng/provenance/artifact-profiles/dokka-2-2-0-r3.json": "a1a4cf880b287c6b8f9a9707d9226168584772b13e5ecd579c527873b0351521", @@ -2433,6 +2459,8 @@ "eng/provenance/artifact-profiles/dokka-2-2-0-r7.json": "5b86329a7aa205353dfdb0fb75d924e50d2486e281dafb22fe90bf93012b03ad", "eng/provenance/artifact-profiles/dokka-2-2-0-r8.json": "224432d3957639e42fb429aa2841d80dbfd10aaec18b8ab3b4bf3851829f2089", "eng/provenance/records/canonical-apache-licence-r1.json": "e4252278767a0b4dd27a09a50b176c9420469828345e61336a4b5ca1d17c7b44", + "eng/provenance/records/con17-published-descriptors-r1.json": "b0f35abb8edcaa665d53663f5eaad3cd7825195fd93bbe093101e29452bed97c", + "eng/provenance/records/con17-semantic-export-r1.json": "9ae65ee01b25241105c986f5f696eb3bc99c23e165613ba227e094424b64d720", "eng/provenance/records/contract-bindings-r2.json": "95d2bde3b8d00c03061866838bc28b907bcec0e29a0ede996a42e79b7bb53221", "eng/provenance/records/contract-bindings-r3.json": "ba8adc87164b16804cad6525c50674d4f1b05da89d1d300a9b4f770576906878", "eng/provenance/records/contract-bindings-r4.json": "0918c490633e7205d66af8fe7bd825cb4f6db259c12b4ba33ee08aa4e55e57aa", @@ -2538,7 +2566,7 @@ "gradle/verification-metadata.xml": "ee91387d7538ba25bfcdb385f42d3ffaeaec1a1aefdc54a96e94fa19f95334e2", "gradle/wrapper/gradle-wrapper.properties": "45b09518a2f0ea326bc776066e735b94527d2a94002e3b27621c32cdaee7e3ce", "package-lock.json": "3e536db25743ceb5a021559dbc1f31d57112211c62d94f84df34daca5382709c", - "package.json": "2f36038dcc047c24126270f680db23265625775c3faf83df0f18340476800c85", + "package.json": "3400bc5ed9b2c01335577d9f9d8f268f8053b76f61959169b06ecad702fc36ed", "settings-gradle.lockfile": "5e2d075903b5cd264613e7538c7c51b1484fe2ed489d4ead3e6b4ba0cf3911c4", "settings.gradle.kts": "08e4e324a1fd3b548fced7c36945454823410fd7a7fbb95061375352668a7e64", "src/internal/dotnet/ArcForges.Contracts.CloudInternal/ArcForges.Contracts.CloudInternal.csproj": "4d0a0dcdcebc57e2bb261b4e70ab8226ddfc853a405b5b28368cca1767380911", @@ -2576,7 +2604,9 @@ "src/public/ts/api-client/package.json": "898f6dd155206d058bd3b9ff73718fc5adaf9960db1b22719015c67d8437ecf8", "src/public/ts/contract-fixtures/package.json": "c593abc4f5179b38fc470cf034a993ba0e0d552e7d6bd224b770c87db3047128", "src/public/ts/proto/package.json": "ef1d092f9811439e7f9d5e232d437c7a886020b1fd68f1327b326e22fb6bfe5b", - "tests/StructureTests/StructureTests.csproj": "27b8786c8d1ad8806f5c5015a000542fa717bb23dda27989b09cac0a4b4f22fe", + "tests/StructureTests/PreviousClient/PreviousClient.csproj": "be5035e295c028041172d6d2a4559070cc8beedbca724758f7099a67b4c76c72", + "tests/StructureTests/PreviousClient/packages.lock.json": "5e4f160e83bd12b6f3d630a9ee93aa5e2becd200fef836a1068fc0cbee92e695", + "tests/StructureTests/StructureTests.csproj": "5bca08adfe954e140c6f78371f33c7315307afefeffa9d95c415271775510587", "tests/StructureTests/packages.lock.json": "1fbee24fc31f60affa0f95616bad59428521335b5f5705de95986a8b580627eb", "tests/public/HelloClient/HelloClient.csproj": "fa65e07276f1b2209e9d96b95eaf5bcfe8b04472d8bf334d90d74e6e939c6f2a", "tests/public/HelloClient/packages.lock.json": "1592ed0d5c1bc731764993c0629fbc4954673001b4757800f0c7511ac1e462e7", @@ -2590,15 +2620,15 @@ "tests/public/SerializationProbe/SerializationProbe.csproj": "53094aaa51dcf5ad145f69e265b989de4b59fdb60c1444e41563346cc25e85f0", "tests/public/SerializationProbe/packages.lock.json": "02abe2417b8714c2bc1a0ec4e978b58ab3128c3483a7eaebf09760685c0930be" }, - "maintenanceAssessment": "Retire two obsolete local contract packages and their inputs. Existing external dependency selections and immutable integrity identities remain unchanged. Canonical naming scanner is standard-library build tooling carried by existing public packages.", + "maintenanceAssessment": "Add exact immutable already-published ArcForges Contracts 1.0.0-ci.113.1 Foundation/PublicApi only for the offline previous-client compatibility executable. Apache-2.0 first-party packages; existing Google.Protobuf3.36.1 and Grpc.Core.Api2.84.0 transitive dependencies remain unchanged. No SDK, framework, production package dependency or registry configuration change. Existing security gates remain required; no vulnerability-absence claim.", "checks": { - "compilation": "Retained C# projects and TypeScript workspaces compiled locally; exact pinned SDK CI remains required.", - "aot-trim": "Retained AOT-compatible12 package inventory and serialization policy checks pass; Native AOT candidate compilation remains required CI.", - "compatibility": "89 retained messages,47 identity domains, reserved retired names/tags,339 C# and339 TypeScript foundation fixtures; retired ProductId negatives added.", - "licence-provenance": "Append-only contract-bindings-r6 and Dokka resources/profile r8 preserve all historical records;8255 API pages regenerated and admitted with unchanged fixed resources.", - "security-sbom": "External dependency versions/integrity unchanged. Existing dependency review, secret scan, CodeQL and package SBOM remain required.", - "runtime-performance-migration": "No device, browser, live service or installed package execution; targeted offline codec/shape tests only.", - "framework-runtime-posture": "No framework upgrades. Local existingSDK10.0.401 adapter preserves locked10.0.11 compiler/linker packages; committedSDK10.0.400 remains authoritative in CI." + "compilation": "PreviousClient and current StructureTests compiled with existing local SDK10.0.401, zero warnings/errors; pinned10.0.400 remains required in CI. No SDK installation.", + "aot-trim": "Production Foundation hash compiled with existing AOT-compatible project analyzers; isolated old-client console does not replace or broaden existing Native AOT candidate proof.", + "compatibility": "Actual published old-client/current and current/minimum generated codec exchanges passed offline, including exact int64/decimal and unknown response retention. Descriptor mutation negatives and C#/TS semantic goldens passed. Later service matrix remains CON18 completion prerequisite.", + "licence-provenance": "Local exact package nuspec files declare Apache-2.0. Record their SHA256 and immutable NuGet content hashes; historical descriptor fixtures and generated hash export have append-only provenance records.", + "security-sbom": "Locked package content hashes, existing import/licence/provenance and CI security gates remain required; old packages are test-only and not production project references.", + "runtime-performance-migration": "Only offline generated codec file exchange ran. No live transport, installed consumer audit, device, browser, service deployment, performance or migration claim.", + "framework-runtime-posture": "No framework upgrade. Existing .NET10, Node24, protobuf and Kotlin selections remain unchanged." }, "frameworkVersions": { "dotnetSdk": "10.0.400", @@ -2612,7 +2642,7 @@ "gson": "2.14.0", "connect": "0.9.0" }, - "previousReceipt": "eng/policy/dependency-reviews/con-23-retirement-r1.json" + "previousReceipt": "eng/policy/dependency-reviews/con-23-retirement-r2.json" }, - "reviewReceipt": "eng/policy/dependency-reviews/con-23-retirement-r2.json" + "reviewReceipt": "eng/policy/dependency-reviews/con17-previous-client-113-1.json" } diff --git a/eng/policy/dependency-reviews/con17-previous-client-113-1.json b/eng/policy/dependency-reviews/con17-previous-client-113-1.json new file mode 100644 index 00000000..529c3550 --- /dev/null +++ b/eng/policy/dependency-reviews/con17-previous-client-113-1.json @@ -0,0 +1,2436 @@ +{ + "review": { + "owner": "Contracts maintainers", + "reviewer": "w-20260927-platform (dependency admission assessment; independent CON.17 PR review required)", + "reviewedOn": "2026-09-27", + "baselineCommit": "a1d2f4bd6ff05f80e86c776ce9f7070729b38898", + "inputHashes": { + ".java-version": "b8481af4c809b46f02fc334825116cbe9e6d6a7bc8e2363511fa77044fca8016", + ".node-version": "73fb1b615e2043a933be1c0895cde4358036acc28d785692509b822aa53c761f", + ".npmrc": "d39e9a6c685eb4374c63df103c78708203e435eafe678d1497f168413bf50d9c", + ".python-version": "922fe0c3de073b01988e23348ea184456161678c5e329e6f34be89be24383f93", + "Directory.Build.props": "c2a05ff316f24d7293378ef7f4257b1788f9442224a48d803d0016798babbb5b", + "Directory.Build.targets": "1404c5997b2679c1e4dc7897d5ab9c80c788daf0d4fe456fd15bcb8afeb73965", + "Directory.Packages.props": "4a83ab07c4e26a69d5153e683d311fa667a1d40130f69358a59b512b55d5a8d1", + "NuGet.config": "0bc8b5cfba429bcbd0cb692405e3b6e504793c122350d6a8c95a69c2d718b472", + "build.gradle.kts": "1cf3ae88a76f49c159e4ee1856e1d1e78a2f2f801bc07d5436391f745faac9c5", + "eng/Codegen/Codegen.csproj": "c702e5c3150d55ad8ecaf1db3d1d0fe34a0a5cc64ffd6229d6437a34bc5ff8a1", + "eng/Codegen/packages.lock.json": "1823b949cabbc4f28cfb0326e36aab09e688869fd612d3a9d2630d7c1b82b875", + "eng/central-signing/build.gradle.kts": "a24f120f0e503347fdca3e2520dab58583ebb1449550f3f0d99b05437af174a8", + "eng/central-signing/settings.gradle.kts": "1f1f5285f2938dc48b7a5da29f1c86f43a06ead1cffabd469b47597580f671b5", + "eng/contract-packages.json": "9567c392329f5db7cdcace051e9c7806c7b7ae163bd6d2ed3fff734a5e1a9569", + "eng/policy/contract-access.json": "145298928cd567802b7e8504f75b765270f95539fe9f12d2d65405b4d6c8dc92", + "eng/provenance/artifact-profiles/dokka-2-2-0-r1.json": "f0f1bc138f4406cc5176d7181165591426f58a67333a8aad64f16999173ade74", + "eng/provenance/artifact-profiles/dokka-2-2-0-r2.json": "08347bde226256422e640c1db3a7eb7f8d882390a7dfa66445974344e241e13e", + "eng/provenance/artifact-profiles/dokka-2-2-0-r3.json": "a1a4cf880b287c6b8f9a9707d9226168584772b13e5ecd579c527873b0351521", + "eng/provenance/artifact-profiles/dokka-2-2-0-r4.json": "510cd4c09f2005fa13b07e85517ddac07893323322ff961c23cb13c9fa92fc2e", + "eng/provenance/artifact-profiles/dokka-2-2-0-r5.json": "1c6c005f814fe804298ccb00a32ffb69cad9c6bcabb0c8697cb1ddb2d4146dae", + "eng/provenance/artifact-profiles/dokka-2-2-0-r6.json": "e7d03411e1c653f369a764d599bb5e8d3be68ccb9a2b04b0701a3845e7fcee35", + "eng/provenance/artifact-profiles/dokka-2-2-0-r7.json": "5b86329a7aa205353dfdb0fb75d924e50d2486e281dafb22fe90bf93012b03ad", + "eng/provenance/artifact-profiles/dokka-2-2-0-r8.json": "224432d3957639e42fb429aa2841d80dbfd10aaec18b8ab3b4bf3851829f2089", + "eng/provenance/records/canonical-apache-licence-r1.json": "e4252278767a0b4dd27a09a50b176c9420469828345e61336a4b5ca1d17c7b44", + "eng/provenance/records/con17-published-descriptors-r1.json": "b0f35abb8edcaa665d53663f5eaad3cd7825195fd93bbe093101e29452bed97c", + "eng/provenance/records/con17-semantic-export-r1.json": "9ae65ee01b25241105c986f5f696eb3bc99c23e165613ba227e094424b64d720", + "eng/provenance/records/contract-bindings-r2.json": "95d2bde3b8d00c03061866838bc28b907bcec0e29a0ede996a42e79b7bb53221", + "eng/provenance/records/contract-bindings-r3.json": "ba8adc87164b16804cad6525c50674d4f1b05da89d1d300a9b4f770576906878", + "eng/provenance/records/contract-bindings-r4.json": "0918c490633e7205d66af8fe7bd825cb4f6db259c12b4ba33ee08aa4e55e57aa", + "eng/provenance/records/contract-bindings-r5.json": "ed0dadea8490e9e97956af033d1c350efe6c67021adb6d5304c1cd1850b61588", + "eng/provenance/records/contract-bindings-r6.json": "d9542d9b3f7c316e3c280899313e9af6ba68f03e3e90b7840a25e077f3bcbb0d", + "eng/provenance/records/dokka-array-buffer-byte-length-licence-r1.json": "906e5f9298de3d24654fa77460e12888a8ea2c98f89c1d95974dcf7d8bf73704", + "eng/provenance/records/dokka-available-typed-arrays-licence-r1.json": "168ac5eef74afda62ef3567eae064fb817179a24653f24b9d15ec0f5dc052816", + "eng/provenance/records/dokka-babel-runtime-licence-r1.json": "4ff13d02084d04052687e0151f0a3b9949d12ce712253b15437ff4a95902654e", + "eng/provenance/records/dokka-call-bind-apply-helpers-licence-r1.json": "2b1b70355716be411798040cb7f531cfcaf09b8c3907a7bbedfd61ee3b78b5eb", + "eng/provenance/records/dokka-call-bind-licence-r1.json": "bba895c674f398ce0de80c7aa30cffaf8c9c4bfee55f4d1a223766f2c908f6f6", + "eng/provenance/records/dokka-call-bound-licence-r1.json": "d6428ac8c2ac9f4a1f85f10e8807ca455fdb552fc8033ffe3ec7d1f905ba9b90", + "eng/provenance/records/dokka-classnames-licence-r1.json": "f5927e1496a05bac5b09bb960024455d4ca621be6e4e43f05437b34ed0c1ac43", + "eng/provenance/records/dokka-clsx-licence-r1.json": "757cc85cb6bddfde0030029ecbdee12e0c6e8485c42183ba74f3b41d578ea8cb", + "eng/provenance/records/dokka-column-resizer-core-licence-r1.json": "448eff01e7bbd7b110c1ee0c11398d5105ff9aa6d744f37e8fa96f8ba66d0fbf", + "eng/provenance/records/dokka-combokeys-licence-r1.json": "75219d61672002f0bb242fed0fd93a0886f07d944e0b9e1b1f72132f59df1b41", + "eng/provenance/records/dokka-core-js-licence-r1.json": "3cf28ab2fd5f6473f45dcbabf18aebc01189ba642ea5b5617ff1606dfacfd756", + "eng/provenance/records/dokka-css-loader-licence-r1.json": "fa8cdef1d5beccffd74f6ccbb57379b1304a3e204242f776059cba24529e5e76", + "eng/provenance/records/dokka-deep-equal-licence-r1.json": "b39d18ff1bce56cde5faf26e399a23c1bbc5cdb3525aec17024eef2092247e18", + "eng/provenance/records/dokka-define-data-property-licence-r1.json": "17f2f4e45bfa4828496bb697f349fb27760356b1e221b0b4c0e686c8f8494277", + "eng/provenance/records/dokka-define-properties-licence-r1.json": "be80edc44910583355abeae35a6099bcd3adaa715851cbea95602dd563705f73", + "eng/provenance/records/dokka-documentation-resources-r1.json": "7246ebabdc633c0d328c7d0e221088d3965bf36169cfefb2f8ae1c0f3778eb19", + "eng/provenance/records/dokka-documentation-resources-r2.json": "7ff0f30361298e2df58dc7180294007f0b27e20b1ff7c70a33d351c1328115c8", + "eng/provenance/records/dokka-documentation-resources-r3.json": "0cae2f2168ca3eb8f92303a95812e8fbd4dd82cacce49e574d46078f94c9c169", + "eng/provenance/records/dokka-documentation-resources-r4.json": "79c3dcfb45b78b005baffc4c6b44f6cbf9f1175f7060cd6500d784fc26098b66", + "eng/provenance/records/dokka-documentation-resources-r5.json": "6ab8701ca3da446be1148b73699b256137943d315dcf92b20b3b35669cd284ef", + "eng/provenance/records/dokka-documentation-resources-r6.json": "0c9b3c6783c7436ddd06588c39002b32f23e7424e394267a21a41c8af1a4024e", + "eng/provenance/records/dokka-documentation-resources-r7.json": "bed620535cf50a6e736123e9223bfdbdb77202dc3838fed48e2baf3bb79aca8b", + "eng/provenance/records/dokka-documentation-resources-r8.json": "ae159ec440748eaf2a0e23518f64bdabbfec88006c26e78eddb9540a4db1dee8", + "eng/provenance/records/dokka-dom-helpers-licence-r1.json": "13303b969579dd5694c0544925d45b7126c3d9c1a6e0a754122896ca263da918", + "eng/provenance/records/dokka-dunder-proto-licence-r1.json": "78b90efc76c0649d6150b4710fc90b58a99fe582af3696a7f3180f3a79f6aa7d", + "eng/provenance/records/dokka-es-define-property-licence-r1.json": "f496d51bead2a29f6d9ea98032b46ccf6363caeb3dea928807974128d2f16139", + "eng/provenance/records/dokka-es-errors-licence-r1.json": "62c7508dee7b711566bdbc4f1f0d3907609477d9fcc2b1a37176cae0d570be7e", + "eng/provenance/records/dokka-es-get-iterator-licence-r1.json": "6bd29a282c583b3798d6738232d9e46ad2c69b122d0f601d51480ce5dfb90aa9", + "eng/provenance/records/dokka-es-object-atoms-licence-r1.json": "d23be3ea4d29296b2afdeb4c87cdc1967d3fcac65489efca6e9c315d59282515", + "eng/provenance/records/dokka-for-each-licence-r1.json": "e71810875144b6703684404b88ca77b45077bf9b240199e2ca3f6754a4f26425", + "eng/provenance/records/dokka-function-bind-licence-r1.json": "2b1137c37eab8192c35347eb2ca95eea59677920b7bbc5c948dfe6b589993ed4", + "eng/provenance/records/dokka-functions-have-names-licence-r1.json": "ea7a5adef62b8603220d2ce1aca9440526dc1e052abaa5352c46cdf18e066d50", + "eng/provenance/records/dokka-get-intrinsic-licence-r1.json": "c18d311f5021a64b1e97b3fb622f8c7c1af5241cbfb5a847a756c26ef88d2492", + "eng/provenance/records/dokka-get-proto-licence-r1.json": "8f844514516ff137fdbf53bcd5318edf42a35730e5489a4be7ca50e80f60dd63", + "eng/provenance/records/dokka-gopd-licence-r1.json": "ba9dbdde65fdb1ac04852f31de1fbcafe05c25ec386c8dc6ae33d62b4f5c9c0e", + "eng/provenance/records/dokka-has-bigints-licence-r1.json": "e150e83104f26a97791b9ecb8e471747f549e2b493fe261ce6da0068e14d2b65", + "eng/provenance/records/dokka-has-property-descriptors-licence-r1.json": "100d1b845a620c72ba3b74e0464b92ba23666502bfb08146a91967300ae75220", + "eng/provenance/records/dokka-has-symbols-licence-r1.json": "7d20741f95630a0dfa0eb65d85bd2173c4311edac50af1a4ba760180bed1d78d", + "eng/provenance/records/dokka-has-tostringtag-licence-r1.json": "ff7a26d4ff159c99561605a3d739d3d0f1dd8555d99cb0bbc5c04d0310768480", + "eng/provenance/records/dokka-hasown-licence-r1.json": "2513d1d47f82c11c98b6f8c432e34cac67d36959d0828514cb77f5a34f8df5b5", + "eng/provenance/records/dokka-internal-slot-licence-r1.json": "c4b40d9429ac63ea3c2a5f1edc55641d2d28dc2765df7ae25f5c18a9848826c7", + "eng/provenance/records/dokka-is-arguments-licence-r1.json": "f37eb034c3d7fc793114c3f12d82d07ad4cf0c4a42927f10bd200c2430c1dfb8", + "eng/provenance/records/dokka-is-array-buffer-licence-r1.json": "03aae98c247a27cd97175a75888c5eddb81821e84a283312ae8004d2080406a8", + "eng/provenance/records/dokka-is-bigint-licence-r1.json": "c8e917c1fa1c406c356c3b655b4ab56a92a15b38da89562272191d0221876bff", + "eng/provenance/records/dokka-is-boolean-object-licence-r1.json": "89fbf25bf063c77437409589b0c72af5f9c6f0046a623e21a9d75acfc5f297d5", + "eng/provenance/records/dokka-is-callable-licence-r1.json": "dfb1b4a3e90ac228e68cd511f00bb453fa04a6da53608959daac9f5b3fa65a4e", + "eng/provenance/records/dokka-is-date-object-licence-r1.json": "01b08d069fbf6bf551b1662b4dc811c8a9e6d599d1199c86aa76489f4e5da377", + "eng/provenance/records/dokka-is-map-licence-r1.json": "fc618ce317e0b9f8e364e6fc8104a51e1625973a966bf80a8ce13807f55218cf", + "eng/provenance/records/dokka-is-number-object-licence-r1.json": "537ea760782b92d74fe22ae09cfefa6356d535c0c4aa825b3d638638d5902a7a", + "eng/provenance/records/dokka-is-regex-licence-r1.json": "0952af9265686c7197c6114b9c72bbe29b7eb7295c9cbc489c051adac0f09bb0", + "eng/provenance/records/dokka-is-set-licence-r1.json": "55f56ffad059be569e9dbf11bfdfe8b1d6e61a8d1d986f7a0df836bbf86453b0", + "eng/provenance/records/dokka-is-shared-array-buffer-licence-r1.json": "5d41bd93547ce25bb39215f216109d2fb76d0c5a0c364978949bf85c5dbfc266", + "eng/provenance/records/dokka-is-string-licence-r1.json": "f10aaaa588a18865d210e445da28d06649c4ff2f21334b310cf6e04cf345ec26", + "eng/provenance/records/dokka-is-symbol-licence-r1.json": "723daec6ee36ad56b3ad5d308a269ffebcdb75bfc29d62a0535bf1865f8423f2", + "eng/provenance/records/dokka-is-weakmap-licence-r1.json": "07decee3936c2377716b19854ec05f35c3cd1e9ab7cc49ca2c7e8f0e9652d398", + "eng/provenance/records/dokka-is-weakset-licence-r1.json": "4ef462368f1c4a94cefce0e41d5b230bf4d8034d13ac6f35a9ec6ed3b9033c0f", + "eng/provenance/records/dokka-isarray-licence-r1.json": "13337fd2b19586b7602f739bfbb3cf11efffd9fae5106e17edde32c0142f72d1", + "eng/provenance/records/dokka-jetbrains-icons-licence-r1.json": "e091fe652dc777057111999a1d8cf30b3546198ef658ded772ef9666cd645e29", + "eng/provenance/records/dokka-jetbrains-ring-ui-licence-r1.json": "2f65bfa8807561a1b948ed0169480e0f1bf0763149931571af1b28385ebf3d76", + "eng/provenance/records/dokka-math-intrinsics-licence-r1.json": "a94fbca1d4646e5ecf2d86322676e1b9d973ace6d9f04ac87e44aad326b26823", + "eng/provenance/records/dokka-memoize-one-licence-r1.json": "9e6db7bc18a7440c68a09b91d45bddae04406e1d50a6b621bf2a87e00abafba6", + "eng/provenance/records/dokka-object-assign-licence-r1.json": "1018758cb07635e458fa2e5100b7aacbeebcff79d640a3accfe4d1823292136d", + "eng/provenance/records/dokka-object-dot-assign-licence-r1.json": "dc96c41fa16b08bffe15e8459ed97ff90764b71ce1e62f3e27e9dc6b9b57abf0", + "eng/provenance/records/dokka-object-inspect-licence-r1.json": "6c2b752bc6cbf46238f4f130c50848586ac5722862d32b7dee6e0474f06b6880", + "eng/provenance/records/dokka-object-is-licence-r1.json": "ef52ac07b422cd6926376f8da583f641bfb560d704b8dc492a72001c19a92738", + "eng/provenance/records/dokka-object-keys-licence-r1.json": "55621ecc7032745ca46e56d13133dc22a3bd808d80966d737427b5d6fc5bd096", + "eng/provenance/records/dokka-own-licence-r1.json": "e6a8139e1564c5c8ed0bb04190644647f146fb9e7ac13489e518475dd22c9449", + "eng/provenance/records/dokka-possible-typed-array-names-licence-r1.json": "2bd1cd266c8e192e8cddde30ebd25ad3576f39ec6234056771b3042d7f2d0486", + "eng/provenance/records/dokka-prismjs-licence-r1.json": "eb8eb5a584bd300f6261279254e2a27d12f7ec415b64a93fee8776a5c5e08d6c", + "eng/provenance/records/dokka-prop-types-licence-r1.json": "fa8775ecb4676a5c731c85120cd07e3787a25d9387902073c79cdadb008b6265", + "eng/provenance/records/dokka-react-dom-licence-r1.json": "9b0b48439b47ffadfb50960f8e8e1e462b9ad8bceba694e7764b2db475923bfa", + "eng/provenance/records/dokka-react-licence-r1.json": "1e95a01a8dca133ba848d9a933ed5170a78f9e61028a9e5336a40dec8c8c86fd", + "eng/provenance/records/dokka-react-lifecycles-compat-licence-r1.json": "980a643bc3949b3de7f3a1c930b52bb3fa9b3af5e9004a6fb319ded00fc6dd92", + "eng/provenance/records/dokka-react-virtualized-licence-r1.json": "b9851059d61a022d0c6d5f473bbf8bc954c21f272b2d932e1a899a5187a22a3c", + "eng/provenance/records/dokka-regexp-prototype-flags-licence-r1.json": "ebd4c403a39ebea737d5c39eadfbd23df1c0cae5c0f103acb4b13404af9c89b5", + "eng/provenance/records/dokka-safe-regex-test-licence-r1.json": "9e3d5575e3b40b52c5fe3ff92fc8bd45b3466ba853ff8ffac9776c700b6cd8cf", + "eng/provenance/records/dokka-scheduler-licence-r1.json": "5082e14c3e28ebadd06e87a0b72beefd559f32d767626ef922ee17a1ba3abc22", + "eng/provenance/records/dokka-set-function-length-licence-r1.json": "aad109a8e511621c0d21834ddcf04f66ba0b2b91cbb574ea6a15bfc5d1374f67", + "eng/provenance/records/dokka-set-function-name-licence-r1.json": "d0df690b38c8599ea507f2c343ede405ab67158e7ca0720715b13f22689e7156", + "eng/provenance/records/dokka-side-channel-licence-r1.json": "179985988673fe24b2837b0cd32e5a5d6dc625ce56c09038af421958f3bb9cd1", + "eng/provenance/records/dokka-side-channel-list-licence-r1.json": "317efc443db102c6669b413a61aed8047e567da46fdc1a4c742d443afda5153d", + "eng/provenance/records/dokka-side-channel-map-licence-r1.json": "929b196ffd98ac6189e86958139dda63f8c553e66021a23ac52cae534f39b631", + "eng/provenance/records/dokka-side-channel-weakmap-licence-r1.json": "ad555cf9891f717861bf0f56d6703b3a5ca659d9db0e5a14ec1ace3ae12f9282", + "eng/provenance/records/dokka-sniffr-licence-r1.json": "7c383f9ba83928dd638caa2e3ec6f1f190ff2a54ba65012998608ef246351f3b", + "eng/provenance/records/dokka-stop-iteration-iterator-licence-r1.json": "b231f71addf72bf951e90095a3a6b0e86979bb62300f5d5cc79d8485c0f43469", + "eng/provenance/records/dokka-style-loader-licence-r1.json": "62d99c05ace2b18b760c9109a983624c302395ac47db50869542e6c66cfc7bd7", + "eng/provenance/records/dokka-util-deprecate-licence-r1.json": "ccb2ebe52b970b3b03b6e943c1a1500a33d5b441feb456d0ed8d0540ea3554bd", + "eng/provenance/records/dokka-which-boxed-primitive-licence-r1.json": "18ad9e03d27cfe2816725f58ceacf04fbfb7381023fad7a82c498c29dd103291", + "eng/provenance/records/dokka-which-collection-licence-r1.json": "60f258f62506034ec8d91900cbccedc782055d9c3c5f61da6b0b1c1fb9dd819d", + "eng/provenance/records/dokka-which-typed-array-licence-r1.json": "8351998c7f87386e6e0fcf5145db40852364e1c8152c6ebe2c396d11e7756b6f", + "eng/provenance/records/gradle-wrapper-9-7-1-r1.json": "f5991022b6be144f5b8fc9808c69be2dbb0f4a9d9749e01ac6313e11b1a42b7c", + "eng/provenance/records/hello-bindings-r1.json": "572601f1a0fc3441a8c69255ed707777593c0f982dc7fb18789e70abfd0f0728", + "eng/provenance/records/protobuf-generator-licence-r1.json": "0d7fc75eb1453908b2954c182e895ff5da49c5000f04b5d66d8449f552be1f81", + "eng/provenance/retirements/contracts-client-wp03-00.json": "3dbc212a56e678bea10950909a2ae1ad7fc8f2f3640421d02c8f80d2c22c1126", + "global.json": "c39786ab1a147662bbe4db015f900165178875ec4a872ddae53bc0c90771ac34", + "gradle.lockfile": "b176c43fe3fdb8fc99e36c8ccafc6dd1c07c2a2c0c0e9e5cbb3a328b70d128df", + "gradle/libs.versions.toml": "d364782770de0424c8ec20b7853dda625db91b4a7b5d3c34fbd7fbf16d622c14", + "gradle/verification-metadata.xml": "ee91387d7538ba25bfcdb385f42d3ffaeaec1a1aefdc54a96e94fa19f95334e2", + "gradle/wrapper/gradle-wrapper.properties": "45b09518a2f0ea326bc776066e735b94527d2a94002e3b27621c32cdaee7e3ce", + "package-lock.json": "3e536db25743ceb5a021559dbc1f31d57112211c62d94f84df34daca5382709c", + "package.json": "3400bc5ed9b2c01335577d9f9d8f268f8053b76f61959169b06ecad702fc36ed", + "settings-gradle.lockfile": "5e2d075903b5cd264613e7538c7c51b1484fe2ed489d4ead3e6b4ba0cf3911c4", + "settings.gradle.kts": "08e4e324a1fd3b548fced7c36945454823410fd7a7fbb95061375352668a7e64", + "src/internal/dotnet/ArcForges.Contracts.CloudInternal/ArcForges.Contracts.CloudInternal.csproj": "4d0a0dcdcebc57e2bb261b4e70ab8226ddfc853a405b5b28368cca1767380911", + "src/internal/dotnet/ArcForges.Contracts.CloudInternal/packages.lock.json": "bfc4981894f94a4ee6f2518f6e1f5997d7d20e17749125c5711794cd2ee10d94", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/ArcForges.Contracts.LocalRpc.Chat.csproj": "c9234b9f411e729544374450cd745cbfac520497499e88a990dc115c6803e6d9", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/packages.lock.json": "bfc4981894f94a4ee6f2518f6e1f5997d7d20e17749125c5711794cd2ee10d94", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/ArcForges.Contracts.LocalRpc.Platform.csproj": "07d07fa1db0b0d39d8ce92819270b28cf825ba5e41f7a952f81439eed4b5f24b", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/packages.lock.json": "fa17fe6057706e36ae0b9370a457536d05d0f3a8f0f72df622881bfc1628337e", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/ArcForges.Contracts.LocalRpc.Sandbox.csproj": "f7385e84978291ea74162ed555ddbfa81ea44926d0b2cbb584039a97e5d27869", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/packages.lock.json": "fa17fe6057706e36ae0b9370a457536d05d0f3a8f0f72df622881bfc1628337e", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/ArcForges.Contracts.LocalRpc.Scope.csproj": "34c1aa338c952ac2b5047ded8a67bdab783555ce01c4abdc04155cb268b1614c", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/packages.lock.json": "bfc4981894f94a4ee6f2518f6e1f5997d7d20e17749125c5711794cd2ee10d94", + "src/internal/ts/ai-internal/package.json": "0bff2cf81a1a98ae3b94b9215e813b97d5ce3048dc09184cab1a7de496a68870", + "src/internal/ts/operator-client/package.json": "d086732d7aa86738498b74f57f82652667f3603059e5a71d0744c71e85ae8d58", + "src/public/dotnet/ArcForges.Cli/ArcForges.Cli.csproj": "315e0898b9276c1fcde34510e2ef6c1fce067d30c462b71fc3ffa89261d9ba1a", + "src/public/dotnet/ArcForges.Cli/packages.lock.json": "953b0fd0a6201157ff334804b5bbadf6d6de0c212416c200ff8873e3db1cc449", + "src/public/dotnet/ArcForges.Contracts.Events/ArcForges.Contracts.Events.csproj": "e6e7bee2e85cdcd6104b4250cc68570c4166e3cb6b300fc0c56cac4ba2fd5a32", + "src/public/dotnet/ArcForges.Contracts.Events/packages.lock.json": "bfc4981894f94a4ee6f2518f6e1f5997d7d20e17749125c5711794cd2ee10d94", + "src/public/dotnet/ArcForges.Contracts.Foundation/ArcForges.Contracts.Foundation.csproj": "d87e9fb79689cc245332286e3eee8a045069831144d28ca513805f89b8a7e344", + "src/public/dotnet/ArcForges.Contracts.Foundation/packages.lock.json": "fa17fe6057706e36ae0b9370a457536d05d0f3a8f0f72df622881bfc1628337e", + "src/public/dotnet/ArcForges.Contracts.PublicApi/ArcForges.Contracts.PublicApi.csproj": "986b7a97734cd5d0630e548da897869de322a112c087c2d0df6a0bfc98b8784c", + "src/public/dotnet/ArcForges.Contracts.PublicApi/packages.lock.json": "950f637a1c8b5152e0fdabff441cb2a8802ac50ae8aae0b97a89b4fa1e633b29", + "src/public/dotnet/ArcForges.Contracts.Validation/ArcForges.Contracts.Validation.csproj": "169a71dde7093d66d727a966c558ddfefe12cb00c21e01f1b53c4acf5ee12901", + "src/public/dotnet/ArcForges.Contracts.Validation/packages.lock.json": "8f1549cd1c68627821ac23754b1c09a9ad164956097ee7e7f8bd8e59e0a974dc", + "src/public/dotnet/ArcForges.Sdk.Client/ArcForges.Sdk.Client.csproj": "f9c35650873d79f50e83a85e29cd51ce2b117a5af72ecfc84a81d554cc67e0fc", + "src/public/dotnet/ArcForges.Sdk.Client/packages.lock.json": "89318d08cf51665d2f4a44ad801b47cbf06a59ea73df828aecaea01b8dc94512", + "src/public/dotnet/ArcForges.Sdk.Contracts/ArcForges.Sdk.Contracts.csproj": "3fa1d4a377776b1d659628471bf5a238eb85933a5517258dd5471dbc7ecea49f", + "src/public/dotnet/ArcForges.Sdk.Contracts/packages.lock.json": "950f637a1c8b5152e0fdabff441cb2a8802ac50ae8aae0b97a89b4fa1e633b29", + "src/public/kotlin/contract-fixtures/build.gradle.kts": "04a795a0a53289dfd045258203676340c38ffd07c2a2af5defeba6eba538f6c6", + "src/public/kotlin/contract-fixtures/gradle.lockfile": "14dc5803d23ab183aa24b2849ee51541e52e4d26fbada80e19082d15e0b1c654", + "src/public/kotlin/contracts-connect-client/build.gradle.kts": "c874f55eca9149f4849c727c8fbb7282015b520c50b55cf91e5ad67283b4c5c0", + "src/public/kotlin/contracts-connect-client/gradle.lockfile": "9b5447a219bb4ec726f780a103ce193eaa6468378da8314316558bbf79ff7281", + "src/public/kotlin/contracts-proto/build.gradle.kts": "f5d9d16b233c30d563cfe558cdf13c9ff6d34fc5f07d09d965ecd9739ae82298", + "src/public/kotlin/contracts-proto/gradle.lockfile": "15e984aed92f5b614310976df0ca1d27d23d40b333ae732b5287c4bbd72ca90a", + "src/public/ts/api-client/package.json": "898f6dd155206d058bd3b9ff73718fc5adaf9960db1b22719015c67d8437ecf8", + "src/public/ts/contract-fixtures/package.json": "c593abc4f5179b38fc470cf034a993ba0e0d552e7d6bd224b770c87db3047128", + "src/public/ts/proto/package.json": "ef1d092f9811439e7f9d5e232d437c7a886020b1fd68f1327b326e22fb6bfe5b", + "tests/StructureTests/PreviousClient/PreviousClient.csproj": "be5035e295c028041172d6d2a4559070cc8beedbca724758f7099a67b4c76c72", + "tests/StructureTests/PreviousClient/packages.lock.json": "5e4f160e83bd12b6f3d630a9ee93aa5e2becd200fef836a1068fc0cbee92e695", + "tests/StructureTests/StructureTests.csproj": "5bca08adfe954e140c6f78371f33c7315307afefeffa9d95c415271775510587", + "tests/StructureTests/packages.lock.json": "1fbee24fc31f60affa0f95616bad59428521335b5f5705de95986a8b580627eb", + "tests/public/HelloClient/HelloClient.csproj": "fa65e07276f1b2209e9d96b95eaf5bcfe8b04472d8bf334d90d74e6e939c6f2a", + "tests/public/HelloClient/packages.lock.json": "1592ed0d5c1bc731764993c0629fbc4954673001b4757800f0c7511ac1e462e7", + "tests/public/HelloHost/HelloHost.csproj": "c7ac2acb49c079907c4fdbe9a937421d93146f4b87e92546032d7881fadc6035", + "tests/public/HelloHost/packages.lock.json": "15c1bd39184b4ee86f3f30e52eb21a6cf1ba7d3d8032a21e49b5af71ea7cca1d", + "tests/public/KotlinConnectClient/build.gradle.kts": "463f683b9dea47959b7063e74670cc7fd890346b4f2cba969d62d71b23ac73d2", + "tests/public/KotlinConnectClient/gradle.lockfile": "b26b25bf3dc4f915dce29f33fe7783a29be49053a7165e7f0f94f23293f7adfe", + "tests/public/KotlinConnectClient/gradle/verification-metadata.xml": "e4a8bfec6de2eefee2bd5a471ae4cf6aeaf40baaa06cd4be61d0f6bbd48cce20", + "tests/public/KotlinConnectClient/settings-gradle.lockfile": "5e2d075903b5cd264613e7538c7c51b1484fe2ed489d4ead3e6b4ba0cf3911c4", + "tests/public/KotlinConnectClient/settings.gradle.kts": "997d5d04e67aafbd50d094c4aed81bcc239cf5a9c205a786f2847140474f61e5", + "tests/public/SerializationProbe/SerializationProbe.csproj": "53094aaa51dcf5ad145f69e265b989de4b59fdb60c1444e41563346cc25e85f0", + "tests/public/SerializationProbe/packages.lock.json": "02abe2417b8714c2bc1a0ec4e978b58ab3128c3483a7eaebf09760685c0930be" + }, + "maintenanceAssessment": "Add exact immutable already-published ArcForges Contracts 1.0.0-ci.113.1 Foundation/PublicApi only for the offline previous-client compatibility executable. Apache-2.0 first-party packages; existing Google.Protobuf3.36.1 and Grpc.Core.Api2.84.0 transitive dependencies remain unchanged. No SDK, framework, production package dependency or registry configuration change. Existing security gates remain required; no vulnerability-absence claim.", + "checks": { + "compilation": "PreviousClient and current StructureTests compiled with existing local SDK10.0.401, zero warnings/errors; pinned10.0.400 remains required in CI. No SDK installation.", + "aot-trim": "Production Foundation hash compiled with existing AOT-compatible project analyzers; isolated old-client console does not replace or broaden existing Native AOT candidate proof.", + "compatibility": "Actual published old-client/current and current/minimum generated codec exchanges passed offline, including exact int64/decimal and unknown response retention. Descriptor mutation negatives and C#/TS semantic goldens passed. Later service matrix remains CON18 completion prerequisite.", + "licence-provenance": "Local exact package nuspec files declare Apache-2.0. Record their SHA256 and immutable NuGet content hashes; historical descriptor fixtures and generated hash export have append-only provenance records.", + "security-sbom": "Locked package content hashes, existing import/licence/provenance and CI security gates remain required; old packages are test-only and not production project references.", + "runtime-performance-migration": "Only offline generated codec file exchange ran. No live transport, installed consumer audit, device, browser, service deployment, performance or migration claim.", + "framework-runtime-posture": "No framework upgrade. Existing .NET10, Node24, protobuf and Kotlin selections remain unchanged." + }, + "frameworkVersions": { + "dotnetSdk": "10.0.400", + "node": "24.21.0", + "kotlin": "2.4.20", + "dokka": "2.2.0", + "protobuf": "4.36.2", + "grpc": "1.84.0", + "grpc-kotlin": "1.5.0", + "coroutines": "1.11.0", + "gson": "2.14.0", + "connect": "0.9.0" + }, + "previousReceipt": "eng/policy/dependency-reviews/con-23-retirement-r2.json" + }, + "closure": { + "maven:com.connectrpc:connect-kotlin-google-javalite-ext:0.9.0": { + "integrity": { + "connect-kotlin-google-javalite-ext-0.9.0.jar": [ + "c5dbde38cb1d6ad36073aa87c761cb573232c75c52c109393f4feb913296ab68" + ], + "connect-kotlin-google-javalite-ext-0.9.0.module": [ + "a90a481f65b7eceb64c8f75bf39840a0d4c7c07a9d6feca22e2bf9eaa4d5f18e" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/connectrpc/connect-kotlin-google-javalite-ext/0.9.0/connect-kotlin-google-javalite-ext-0.9.0.pom", + "sha256": "b3e72a140bdbf0cb23a9adf7a0c513b57e0658866c5dec5ee7a228175219971b" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.connectrpc:connect-kotlin-okhttp:0.9.0": { + "integrity": { + "connect-kotlin-okhttp-0.9.0.jar": [ + "8c2387ee1e0e106965a9952aedd0ca88623008a8a3298c3cf8a8e408ad21b90c" + ], + "connect-kotlin-okhttp-0.9.0.module": [ + "027c0147a83e506015b8250a114b9f683f17e7f7938bfabc0cf1f09e1ffba9fb" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/connectrpc/connect-kotlin-okhttp/0.9.0/connect-kotlin-okhttp-0.9.0.pom", + "sha256": "4ac838e6c6dabdbaf5e947267171c00273340679eb07a9b1e60ab339928c992f" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.connectrpc:connect-kotlin:0.9.0": { + "integrity": { + "connect-kotlin-0.9.0.jar": [ + "59b742254227d87818dc0a9dcf8c6ebc70c99744f371ed9fef643dbe268453d9" + ], + "connect-kotlin-0.9.0.module": [ + "2a2028fa71933ebed191f7ec9693de812461bafceb02c3e0c69bf999fbd2fc67" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/connectrpc/connect-kotlin/0.9.0/connect-kotlin-0.9.0.pom", + "sha256": "f676e2a9d8205b8fc33d4c34ba59cda877bf066e713173d05a22ca28da670787" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.connectrpc:protoc-gen-connect-kotlin:0.9.0": { + "integrity": { + "protoc-gen-connect-kotlin-0.9.0.jar": [ + "c23657189f8f31beda517497d2c60610de71725c3748a011577bc546af0796e5" + ], + "protoc-gen-connect-kotlin-0.9.0.module": [ + "6734f444ceee95ad19b1612fb6a2bcf1791cd8d30b5a426d8973dce4e665eb5f" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/connectrpc/protoc-gen-connect-kotlin/0.9.0/protoc-gen-connect-kotlin-0.9.0.pom", + "sha256": "77e5216bf9880a8b5da7a631637ccb65340956167010beedfb1caaf19d0a4a95" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.fasterxml.jackson.core:jackson-annotations:2.15.3": { + "integrity": { + "jackson-annotations-2.15.3.jar": [ + "aae865c3d88256d61b11523cb1e88bd48d5b9ad5855fa1fc859504fd2204708a" + ], + "jackson-annotations-2.15.3.module": [ + "6410c94b393e494d53d569dc4193a79187848ddb6ee3c2ee1f392477a21059cb" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.15.3/jackson-annotations-2.15.3.pom", + "sha256": "ffa67166fbe4cff3497d0cc629c2019cd0e7cd5ed01bec683a7cbf213d030ec8" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.fasterxml.jackson.core:jackson-core:2.15.3": { + "integrity": { + "jackson-core-2.15.3.jar": [ + "51fab7aad51ed588482edc507fd542747936c5094d1ab76ed21ddb63b96b610d" + ], + "jackson-core-2.15.3.module": [ + "138029bcb32b0bfa7010d3f646632bde5c98c187e2f1aa120a1cd413f23a6c28" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.15.3/jackson-core-2.15.3.pom", + "sha256": "ccd500917483b21ae1835df9845b91ab11ac9aba08b793d2ecf82d28c069ece2" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.fasterxml.jackson.core:jackson-databind:2.15.3": { + "integrity": { + "jackson-databind-2.15.3.jar": [ + "c3c53333a2172a80678bda1803e39cff45bec6ae3e9c7d4f44a81ec4e2ab18dc" + ], + "jackson-databind-2.15.3.module": [ + "51ba8d71f5a04ae768e84c91d4edf09a1fc8bc1244b03bd4f9b060b8fb395615" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.15.3/jackson-databind-2.15.3.pom", + "sha256": "b6e3cd4ae77d0ff9507eab1ce794b3aa9ee278241c6544333bdb7efbc5a2e4f9" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.15.3": { + "integrity": { + "jackson-dataformat-xml-2.15.3.jar": [ + "39a34531dca5fca75eb547663c300855c968c8faca6861d92eca9e9747af0416" + ], + "jackson-dataformat-xml-2.15.3.module": [ + "30ad1786f48af58048353d9be1374fc022610ceab921ebea6f62e5080b345bf2" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-xml/2.15.3/jackson-dataformat-xml-2.15.3.pom", + "sha256": "e761ed896bf73b180f8af2e79975eef14aeb61cf64430a9ba03ed5f090a76aad" + }, + { + "source": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-base/2.15.3/jackson-base-2.15.3.pom", + "sha256": "4290342abf0b0e4567322ffb2d0c36e25b0a87a217bb56b35680a8dd8f8d66e4" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.fasterxml.jackson.module:jackson-module-kotlin:2.15.3": { + "integrity": { + "jackson-module-kotlin-2.15.3.jar": [ + "8f72e6b99e6145e3284a5224355ca8ee6030afa8c1d6a3395b530d29026f8d52" + ], + "jackson-module-kotlin-2.15.3.module": [ + "0dee29c18a90700a3a0457be88f7c41f67571947e6633d84a22433a4fb5d792c" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/module/jackson-module-kotlin/2.15.3/jackson-module-kotlin-2.15.3.pom", + "sha256": "8dc5c9dadbaefa20022edb5190044a47a757e7d665621b801b32344e89af54ed" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.fasterxml.jackson:jackson-bom:2.15.3": { + "integrity": { + "jackson-bom-2.15.3.pom": [ + "66fc9945c16716bc202f4b9d7e6d969df3f509feffbe1acf1a31511b753d5c9d" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-bom/2.15.3/jackson-bom-2.15.3.pom", + "sha256": "66fc9945c16716bc202f4b9d7e6d969df3f509feffbe1acf1a31511b753d5c9d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.fasterxml.woodstox:woodstox-core:6.5.1": { + "integrity": { + "woodstox-core-6.5.1.jar": [ + "c928d60665c6415fb1c39775cf95cfc44f7f4580cf5ab01b1c380ebffd76887f" + ], + "woodstox-core-6.5.1.pom": [ + "4839654e16b1714e74f51abcb378d8356814ab8f4d5273d1dd2f1ce8a390addc" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/fasterxml/woodstox/woodstox-core/6.5.1/woodstox-core-6.5.1.pom", + "sha256": "4839654e16b1714e74f51abcb378d8356814ab8f4d5273d1dd2f1ce8a390addc" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.google.code.gson:gson:2.14.0": { + "integrity": { + "gson-2.14.0.jar": ["2cbd119bf1961c28788310963dc80ba65f58cdeec1dd139c8bdb1240faa2c36f"], + "gson-2.14.0.pom": ["1fa0122c0e3733192642861c36be4c6f799a795327a23bdd2922691b6e9ba480"] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.14.0/gson-2.14.0.pom", + "sha256": "1fa0122c0e3733192642861c36be4c6f799a795327a23bdd2922691b6e9ba480" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.google.errorprone:error_prone_annotations:2.48.0": { + "integrity": { + "error_prone_annotations-2.48.0.pom": [ + "189e09ad0489c325e90daaa9d5c8f406330602fa366609bca07cbcdad03ab9da" + ], + "error_prone_annotations-2.48.0.jar": [ + "b49c5c958316ed67a09c699dda9aa749caf434d51d863dea599ef36a49b9c855" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.48.0/error_prone_annotations-2.48.0.pom", + "sha256": "189e09ad0489c325e90daaa9d5c8f406330602fa366609bca07cbcdad03ab9da" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.google.protobuf:protobuf-kotlin-lite:4.36.2": { + "integrity": { + "protobuf-kotlin-lite-4.36.2.jar": [ + "4265195265ac47e76f0e5eef3085975a5db17b4c9ae575fd9ab5705a8091fed9" + ], + "protobuf-kotlin-lite-4.36.2.pom": [ + "37b9e1127b79454d9f90e1972a399183ce99408bd333db4072661e3ef359ed1d" + ] + }, + "licence": "BSD-3-Clause", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-kotlin-lite/4.36.2/protobuf-kotlin-lite-4.36.2.pom", + "sha256": "37b9e1127b79454d9f90e1972a399183ce99408bd333db4072661e3ef359ed1d" + }, + { + "source": "https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.36.2/protobuf-parent-4.36.2.pom", + "sha256": "aca76fe571fc9045367d14e45a6fad85e2a6b8f1f5b411d2a386df089e2111b2" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.google.protobuf:protobuf-javalite:4.36.2": { + "integrity": { + "protobuf-javalite-4.36.2.jar": [ + "8f4f93d08cb37130ecb0bc69d376d7d27c36ff04ddb1bb27430b06caa9fa062e" + ], + "protobuf-javalite-4.36.2.pom": [ + "c84538e48562849ee3ad5df5f00b45ec77bc7c0512f6cbfb42234890329f4f48" + ] + }, + "licence": "BSD-3-Clause", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/4.36.2/protobuf-javalite-4.36.2.pom", + "sha256": "c84538e48562849ee3ad5df5f00b45ec77bc7c0512f6cbfb42234890329f4f48" + }, + { + "source": "https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.36.2/protobuf-parent-4.36.2.pom", + "sha256": "aca76fe571fc9045367d14e45a6fad85e2a6b8f1f5b411d2a386df089e2111b2" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.squareup.moshi:moshi-kotlin:1.15.2": { + "integrity": { + "moshi-kotlin-1.15.2.jar": [ + "5c39cd77e83b111af9c54708173af96a89fd3b09d15019a11da355e83e97d75a" + ], + "moshi-kotlin-1.15.2.module": [ + "e9d768798203049483cae20ce300cedff21bbb434bef38c7f91ee6aa2f034c31" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi-kotlin/1.15.2/moshi-kotlin-1.15.2.pom", + "sha256": "ab6b0f3e440a4509dd940bba1c26658feb46a87699c6d65267e9ff96c9d1b030" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.squareup.moshi:moshi:1.15.2": { + "integrity": { + "moshi-1.15.2.jar": ["767f7592c6c61eb693549a26d333c121f5383826bd287b899867aa326dae55e4"], + "moshi-1.15.2.module": ["d952c6dd91a7b426c3f0a51edc3f7ceb3490ac01ff18301527adfec7a7837dd9"] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/squareup/moshi/moshi/1.15.2/moshi-1.15.2.pom", + "sha256": "317a1d3fb7054031bfe90cca89b1024901fd9b9fcca99166c2ce7853b5fc7bd9" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.squareup.okhttp3:okhttp-jvm:5.4.0": { + "integrity": { + "okhttp-jvm-5.4.0.jar": [ + "b15e605ca0a4b12c62ea7f657dad413c236c947e875854767349cdbe20df473c" + ], + "okhttp-jvm-5.4.0.module": [ + "2ee94132ec09cd3f113cc900f6e6dce7a56d9ef9af44ed5acb2ea6b7bca1367d" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp-jvm/5.4.0/okhttp-jvm-5.4.0.pom", + "sha256": "02ca957550d89f499b561744d9b6a59abfd535723faf31269c3290a0d78c6d0e" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.squareup.okhttp3:okhttp:5.4.0": { + "integrity": { + "okhttp-5.4.0.module": ["63973ba755ba6c77de1e82f5efa4195569800be00c93c0130ce4238a9b56c93c"] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/5.4.0/okhttp-5.4.0.pom", + "sha256": "ebee6842d0b5b700ab7e015fddcc3f1e575d92b31a76f7b62eb9026c3388b88b" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.squareup.okio:okio-jvm:3.17.0": { + "integrity": { + "okio-jvm-3.17.0.jar": ["3b13dcc3e1573047c2d507fc4f7fcb0bb0cbcd9d395da21d20e09406e2cd6a73"], + "okio-jvm-3.17.0.module": [ + "d4617d0df71f202e7299471848e625f4f36d7fa64d46c3503f70acf4821a45de" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio-jvm/3.17.0/okio-jvm-3.17.0.pom", + "sha256": "e4e44237a66f4091bc0f5b1d5a2bbe228ac014ab3c0f918cd6fc02ba31999030" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:com.squareup.okio:okio:3.17.0": { + "integrity": { + "okio-3.17.0.module": ["3d878db9ffd4e959c30f9a8366a88c22d001e9b324378d7dbeed98568e7ec559"] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.17.0/okio-3.17.0.pom", + "sha256": "15b4831e84f5ca52dd37c1d6e1709a2907e2e9bc2a9c3ea13f282031de0c0135" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:io.github.java-diff-utils:java-diff-utils:4.12": { + "integrity": { + "java-diff-utils-4.12.jar": [ + "9990a2039778f6b4cc94790141c2868864eacee0620c6c459451121a901cd5b5" + ], + "java-diff-utils-4.12.pom": [ + "c26e097edc8ec6805d1319817d23d4e496cc1015cc55dc5202112d8f6a9165fc" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.pom", + "sha256": "c26e097edc8ec6805d1319817d23d4e496cc1015cc55dc5202112d8f6a9165fc" + }, + { + "source": "https://repo.maven.apache.org/maven2/io/github/java-diff-utils/java-diff-utils-parent/4.12/java-diff-utils-parent-4.12.pom", + "sha256": "d811cf9f118cc2cad130c9427ad55c174d4c0a6f1a00ac1ae1c9bcbec5c44b19" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:io.ktor:ktor-http-jvm:3.5.0": { + "integrity": { + "ktor-http-jvm-3.5.0.jar": [ + "2babac355de364c473b27b060d1c810fc2f83ed6e44822eabc6c3f46adf155a3" + ], + "ktor-http-jvm-3.5.0.module": [ + "707fb825de713e0f21729e0ad6d4184990b83cfb5a61c7940b9e4ea1aba0c78e" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http-jvm/3.5.0/ktor-http-jvm-3.5.0.pom", + "sha256": "f6ff315d426efe8be7402894ca4c48df48fcc5e3344f12499d286b8beaba3267" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:io.ktor:ktor-http:3.5.0": { + "integrity": { + "ktor-http-3.5.0.module": [ + "5642284b76ac016d839c1c28c925c06e2ab4f6d16dfa737a1ff88965f1d937d4" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/io/ktor/ktor-http/3.5.0/ktor-http-3.5.0.pom", + "sha256": "3ab8580c4600bea1a14c0f69826d67e611f312785bb08a4645a67dd410288e40" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:io.ktor:ktor-io-jvm:3.5.0": { + "integrity": { + "ktor-io-jvm-3.5.0.jar": [ + "ca9f9443479204fe97a00bd53bc3dee5b0514c1a088e9df1e0e4d4ccfc605e51" + ], + "ktor-io-jvm-3.5.0.module": [ + "fd0c6613ec827cf09d202753e6c663e7b393f766b098d3e101b502b677dbdba8" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io-jvm/3.5.0/ktor-io-jvm-3.5.0.pom", + "sha256": "c50c8303f386e825fe7e677122ae2b9da01b261afa3e1f70a16c088877266cc5" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:io.ktor:ktor-io:3.5.0": { + "integrity": { + "ktor-io-3.5.0.module": ["cb6151e2f7ac65c27028b16dee332a4dbbccc1530580cfd3fe8f4f2b0c8a7347"] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/io/ktor/ktor-io/3.5.0/ktor-io-3.5.0.pom", + "sha256": "6e24950dc472cf5fbca86a05782d2e8d3e104a2f6458f39bdddde6d1b7ac72b5" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:io.ktor:ktor-utils-jvm:3.5.0": { + "integrity": { + "ktor-utils-jvm-3.5.0.jar": [ + "214200f074afe9d4b915d347397b5c1f768fbdd10ead7192e8adfd662dd4a72f" + ], + "ktor-utils-jvm-3.5.0.module": [ + "96bf126533d38cb8b3f16911c36980c2db3e746c64878288003a0b6e19385ae3" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils-jvm/3.5.0/ktor-utils-jvm-3.5.0.pom", + "sha256": "59ef3c362d83064f0b064c7948ace38b199f6717183e0aad08e9e827929b876b" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:io.ktor:ktor-utils:3.5.0": { + "integrity": { + "ktor-utils-3.5.0.module": [ + "2923cda55c01a6d7005a860f5b8ffd0872ee704b8b28d14ce905a5ea66bbaac8" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/io/ktor/ktor-utils/3.5.0/ktor-utils-3.5.0.pom", + "sha256": "24928172f75f0c79074a8fbdae02f428d47613f0f3f5ab32a27cf69911c20d2e" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.codehaus.woodstox:stax2-api:4.2.1": { + "integrity": { + "stax2-api-4.2.1.jar": ["678567e48b51a42c65c699f266539ad3d676d4b1a5b0ad7d89ece8b9d5772579"], + "stax2-api-4.2.1.pom": ["79da410c8c0f46a3f8e8adb30d6c24ccd6065b6ef6bfde87bd97e9881ea0a2e7"] + }, + "licence": "BSD-2-Clause", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/codehaus/woodstox/stax2-api/4.2.1/stax2-api-4.2.1.pom", + "sha256": "79da410c8c0f46a3f8e8adb30d6c24ccd6065b6ef6bfde87bd97e9881ea0a2e7" + }, + { + "source": "org.codehaus.woodstox:stax2-api:4.2.1!/META-INF/LICENSE (existing cached archive)", + "sha256": "b3e969d18f690ab8783e4ec77729c9fea85691b8090c550bb3c626dda5e837a7" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.freemarker:freemarker:2.3.32": { + "integrity": { + "freemarker-2.3.32.jar": [ + "04d65ec1bde6cea20e3495d5e78ef96ab774d9936434861d3254bd88e7e94f92" + ], + "freemarker-2.3.32.pom": [ + "07a07e2eaf0976022b540567c7df622712b9a0393a6c5f6d20e6ff1579222a01" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/freemarker/freemarker/2.3.32/freemarker-2.3.32.pom", + "sha256": "07a07e2eaf0976022b540567c7df622712b9a0393a6c5f6d20e6ff1579222a01" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.dokka:analysis-kotlin-symbols:2.2.0": { + "integrity": { + "analysis-kotlin-symbols-2.2.0.jar": [ + "31b4eabf7436083ae33200da6be7203675fb1fcdcd34d2f394f55e822dac8f0f" + ], + "analysis-kotlin-symbols-2.2.0.pom": [ + "54573a79dfc16d0540a42594679feadbd36c11140213a0fe813c3a4716b53f88" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/dokka/analysis-kotlin-symbols/2.2.0/analysis-kotlin-symbols-2.2.0.pom", + "sha256": "54573a79dfc16d0540a42594679feadbd36c11140213a0fe813c3a4716b53f88" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.dokka:analysis-markdown:2.2.0": { + "integrity": { + "analysis-markdown-2.2.0.jar": [ + "7070de21dc5078013b53cc9c139321cceaf476c1630711cc5bda6d96e9da2087" + ], + "analysis-markdown-2.2.0.module": [ + "f86033ab342a334b656d207a6b0b7041fea1732ff1f5560417e4a50dadf4b2ec" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/dokka/analysis-markdown/2.2.0/analysis-markdown-2.2.0.pom", + "sha256": "dc8116d4ed3505a252abb0da4e9c36c77c8b8c77f065182e44bb0b94021747b1" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.dokka:dokka-base:2.2.0": { + "integrity": { + "dokka-base-2.2.0.jar": [ + "721c5a1647dc49d1680d884350b438a039b2426aec65b696baee8e5aeb6442f5" + ], + "dokka-base-2.2.0.module": [ + "f377ca30b57f80262b4d50694102cc56f1f27d4d388682eaf6b84b0bedc19550" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/dokka/dokka-base/2.2.0/dokka-base-2.2.0.pom", + "sha256": "e95d1140b163a7924b3b6cf384d71dec2ae1bfcee77908dfb3fcc349be20152e" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.dokka:dokka-core:2.2.0": { + "integrity": { + "dokka-core-2.2.0.jar": [ + "2ea7e1eeb158163b6e1109ebc5c8137ef713ae020189f87bc79d1cbe3702093d" + ], + "dokka-core-2.2.0.module": [ + "7df767d1748176565443a4f3492da8c033d51fe0022ac0d7fe2212fd6aee068b" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/dokka/dokka-core/2.2.0/dokka-core-2.2.0.pom", + "sha256": "85e7dbd7c5b7640610752718ef2cbdbe972b065d4dd2f3369993857bd2bc3377" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.dokka:templating-plugin:2.2.0": { + "integrity": { + "templating-plugin-2.2.0.jar": [ + "710774a96e555421066cb0c99a7222129ab39be4d86add06acd88f28bedbb7ce" + ], + "templating-plugin-2.2.0.module": [ + "66b32cbea904d79d9b88d3ebab01bce04a6d88b39025055c48a6ea42891b341b" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/dokka/templating-plugin/2.2.0/templating-plugin-2.2.0.pom", + "sha256": "084ae688e5459d69ca723632d8e3aa9e4f8a95ba77f355c74a2cf5f939a2025d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:abi-tools-api:2.3.21": { + "integrity": { + "abi-tools-api-2.3.21.jar": [ + "dc721c7faa844df7f5d6eb62021dc9eadfd1998e1e8df918341f16eb3c391aea" + ], + "abi-tools-api-2.3.21.pom": [ + "7395788baca82921694d2661f4bea6737d9e78545b3b56aba624100e0505d8c2" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/abi-tools-api/2.3.21/abi-tools-api-2.3.21.pom", + "sha256": "7395788baca82921694d2661f4bea6737d9e78545b3b56aba624100e0505d8c2" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:abi-tools:2.3.21": { + "integrity": { + "abi-tools-2.3.21.jar": [ + "6761656205c3514050f68fde7c32b2beb47246786247dacfb279db432a70562b" + ], + "abi-tools-2.3.21.pom": ["e2c00f01274b6f4645a728a4c6e4a90a7c9d46394096a30326f7c31af09567b3"] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/abi-tools/2.3.21/abi-tools-2.3.21.pom", + "sha256": "e2c00f01274b6f4645a728a4c6e4a90a7c9d46394096a30326f7c31af09567b3" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-build-tools-api:2.4.0": { + "integrity": { + "kotlin-build-tools-api-2.4.0.jar": [ + "66917335497f9ab75a36c34b3d90bad2bc8dc256c34b2413ecd0c9467fcf597d" + ], + "kotlin-build-tools-api-2.4.0.pom": [ + "9686fa8f16867b2aba2e5c0e4cfc4a0aeecf59fe6de419f89f7bd838fdde8e74" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/2.4.0/kotlin-build-tools-api-2.4.0.pom", + "sha256": "9686fa8f16867b2aba2e5c0e4cfc4a0aeecf59fe6de419f89f7bd838fdde8e74" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-build-tools-api:2.4.20": { + "integrity": { + "kotlin-build-tools-api-2.4.20.jar": [ + "47a622dce7231b1916334b69a00bc1094adf6577e6492f9f06b3d9c2450fe459" + ], + "kotlin-build-tools-api-2.4.20.pom": [ + "e8cd9ffd7d0886ba1a1795cbf4a34a06681f184aa50f25686effeefb3c1f56f5" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-api/2.4.20/kotlin-build-tools-api-2.4.20.pom", + "sha256": "e8cd9ffd7d0886ba1a1795cbf4a34a06681f184aa50f25686effeefb3c1f56f5" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-build-tools-compat:2.4.20": { + "integrity": { + "kotlin-build-tools-compat-2.4.20.jar": [ + "937d2961fc0b957a50c3d85a14fcc1bd0585f2229164136895b623691660c9b4" + ], + "kotlin-build-tools-compat-2.4.20.pom": [ + "f8e9f647a00bfbc237e3ddff3891b2d4e4a947611b949281658f836def304002" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-compat/2.4.20/kotlin-build-tools-compat-2.4.20.pom", + "sha256": "f8e9f647a00bfbc237e3ddff3891b2d4e4a947611b949281658f836def304002" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-build-tools-cri-impl:2.4.0": { + "integrity": { + "kotlin-build-tools-cri-impl-2.4.0.jar": [ + "5168b866945f6ac1ffcb6d4c88cf582497249469c2e4a4eafc0bcd35b5a264a9" + ], + "kotlin-build-tools-cri-impl-2.4.0.pom": [ + "856d59395489276e93edb4390c99397de83e20d27572c5238c56ed21e43433da" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-cri-impl/2.4.0/kotlin-build-tools-cri-impl-2.4.0.pom", + "sha256": "856d59395489276e93edb4390c99397de83e20d27572c5238c56ed21e43433da" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-build-tools-cri-impl:2.4.20": { + "integrity": { + "kotlin-build-tools-cri-impl-2.4.20.jar": [ + "277d2acc8f7dbef364dca33f777b9ceeaf5fd803f07652c2bda14e155f83076f" + ], + "kotlin-build-tools-cri-impl-2.4.20.pom": [ + "8af52efa886eed45c54d568b692e339b70ddc7c768bee9ab9c2d2f96ed8bb0e1" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-cri-impl/2.4.20/kotlin-build-tools-cri-impl-2.4.20.pom", + "sha256": "8af52efa886eed45c54d568b692e339b70ddc7c768bee9ab9c2d2f96ed8bb0e1" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-build-tools-impl:2.4.0": { + "integrity": { + "kotlin-build-tools-impl-2.4.0.jar": [ + "076c0a7f84d303f1e390774410c8678b8b584faa3f642435f93d2e4e81dabe7c" + ], + "kotlin-build-tools-impl-2.4.0.pom": [ + "485ca3d511aa384207db5706e0741dc79ace45d40e0489f9ef29731aafb14f7c" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/2.4.0/kotlin-build-tools-impl-2.4.0.pom", + "sha256": "485ca3d511aa384207db5706e0741dc79ace45d40e0489f9ef29731aafb14f7c" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-build-tools-impl:2.4.20": { + "integrity": { + "kotlin-build-tools-impl-2.4.20.jar": [ + "68fb6f266a66463a1ba3ddb99b96e5eb202ab19a5ca4e3b56dad5eec62641c7d" + ], + "kotlin-build-tools-impl-2.4.20.pom": [ + "7a13ab2d818a5de92afa23004aa9baed99671bb48553b7098cf920fa785c3351" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-build-tools-impl/2.4.20/kotlin-build-tools-impl-2.4.20.pom", + "sha256": "7a13ab2d818a5de92afa23004aa9baed99671bb48553b7098cf920fa785c3351" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-compiler-embeddable:2.4.0": { + "integrity": { + "kotlin-compiler-embeddable-2.4.0.jar": [ + "c2b25e8c1c93ec416ba4327f5e31eaec0f0c8847241b9353e294b8db9dce564f" + ], + "kotlin-compiler-embeddable-2.4.0.pom": [ + "f5d78540108e7bbc9162253ce52c42507ead2e530945213dd2a3b793b590c53c" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/2.4.0/kotlin-compiler-embeddable-2.4.0.pom", + "sha256": "f5d78540108e7bbc9162253ce52c42507ead2e530945213dd2a3b793b590c53c" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-compiler-embeddable:2.4.20": { + "integrity": { + "kotlin-compiler-embeddable-2.4.20.jar": [ + "cf97161430683fb9af96dc6a7017ffae1fe8737b80d12eee11f2fe3e76f8ded8" + ], + "kotlin-compiler-embeddable-2.4.20.pom": [ + "269d98cc4c68670c11e4aeb404e1c7c6f31b782321908d7268ba25cd236d59b2" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-embeddable/2.4.20/kotlin-compiler-embeddable-2.4.20.pom", + "sha256": "269d98cc4c68670c11e4aeb404e1c7c6f31b782321908d7268ba25cd236d59b2" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-compiler-runner:2.4.0": { + "integrity": { + "kotlin-compiler-runner-2.4.0.jar": [ + "ad9608152740e92d94a278b4ff2ca82c4bf5ff8ef219220e3c07aeb554638cee" + ], + "kotlin-compiler-runner-2.4.0.pom": [ + "5e1ed156cb8d38b61e2ccc546dbd8b2bde778367eb298f8875bd820fbfd0b0f2" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/2.4.0/kotlin-compiler-runner-2.4.0.pom", + "sha256": "5e1ed156cb8d38b61e2ccc546dbd8b2bde778367eb298f8875bd820fbfd0b0f2" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-compiler-runner:2.4.20": { + "integrity": { + "kotlin-compiler-runner-2.4.20.jar": [ + "cc467c5b63daa7441d6bfb72f3d559d68836ce61cdbf9fc8e1e3a76ec4883d2e" + ], + "kotlin-compiler-runner-2.4.20.pom": [ + "4566946280971fe8d67990ee83480af480e846590f325a40951f62657e26a40a" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-compiler-runner/2.4.20/kotlin-compiler-runner-2.4.20.pom", + "sha256": "4566946280971fe8d67990ee83480af480e846590f325a40951f62657e26a40a" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-daemon-client:2.4.0": { + "integrity": { + "kotlin-daemon-client-2.4.0.jar": [ + "f546f0b3699c4984f320dd03080de05cad61064208ba8f37df0d3f8f4a7fd14a" + ], + "kotlin-daemon-client-2.4.0.pom": [ + "143793627382d905eda93e152a28c993f6323fc4b748370a45c7badc99914a13" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/2.4.0/kotlin-daemon-client-2.4.0.pom", + "sha256": "143793627382d905eda93e152a28c993f6323fc4b748370a45c7badc99914a13" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-daemon-client:2.4.20": { + "integrity": { + "kotlin-daemon-client-2.4.20.jar": [ + "89532756fc258fbde177cf1654383f15127c048d17525141c922e9aa0969d997" + ], + "kotlin-daemon-client-2.4.20.pom": [ + "37cff66ae34c924f0f738106eeb7234e7ace880f199de3362e993f4987025adc" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-client/2.4.20/kotlin-daemon-client-2.4.20.pom", + "sha256": "37cff66ae34c924f0f738106eeb7234e7ace880f199de3362e993f4987025adc" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-daemon-embeddable:2.4.0": { + "integrity": { + "kotlin-daemon-embeddable-2.4.0.jar": [ + "383093af5e078435b60043d19bfa83eb6191be0f4d13a28fb1c8a0f3ab24fe66" + ], + "kotlin-daemon-embeddable-2.4.0.pom": [ + "cb36e780fcb39ee09aab6e398f9bd5ea27f982bb6e19329742a20eb2ebdc2936" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/2.4.0/kotlin-daemon-embeddable-2.4.0.pom", + "sha256": "cb36e780fcb39ee09aab6e398f9bd5ea27f982bb6e19329742a20eb2ebdc2936" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-daemon-embeddable:2.4.20": { + "integrity": { + "kotlin-daemon-embeddable-2.4.20.jar": [ + "eef72cf8f17e6d98d33e5b7c7e1cab31a1cf5fc34084dd5e563e7b1f3ef53435" + ], + "kotlin-daemon-embeddable-2.4.20.pom": [ + "ca631ce7c7cc2a8ecb47d3462b429004c1cd3488437b3f739e35eafea2033bfb" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-daemon-embeddable/2.4.20/kotlin-daemon-embeddable-2.4.20.pom", + "sha256": "ca631ce7c7cc2a8ecb47d3462b429004c1cd3488437b3f739e35eafea2033bfb" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-klib-abi-reader:2.3.21": { + "integrity": { + "kotlin-klib-abi-reader-2.3.21.jar": [ + "c4541b0da25452a8ea6455aff0dd590b9d567d1da68f65b2badb281ffd14ceb6" + ], + "kotlin-klib-abi-reader-2.3.21.pom": [ + "6c34f3a5bc36f3fd99206d2ae1abb734fe2254881aeacf291541e6abca8894b7" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-abi-reader/2.3.21/kotlin-klib-abi-reader-2.3.21.pom", + "sha256": "6c34f3a5bc36f3fd99206d2ae1abb734fe2254881aeacf291541e6abca8894b7" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.4.20": { + "integrity": { + "kotlin-klib-commonizer-embeddable-2.4.20.jar": [ + "2025231ec82c932b56125916b1d4e41163d32d3c05816dd9546169a104d7dd3f" + ], + "kotlin-klib-commonizer-embeddable-2.4.20.pom": [ + "27b1b87d463fecc7f27eb859366c9afd19fd7a4dc0d87fcf70b7cf3cd83cca79" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-klib-commonizer-embeddable/2.4.20/kotlin-klib-commonizer-embeddable-2.4.20.pom", + "sha256": "27b1b87d463fecc7f27eb859366c9afd19fd7a4dc0d87fcf70b7cf3cd83cca79" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-metadata-jvm:2.3.21": { + "integrity": { + "kotlin-metadata-jvm-2.3.21.jar": [ + "00590f26a5a768777f04252c6cf93c016a3361a6bc93636df67375ad4d19557d" + ], + "kotlin-metadata-jvm-2.3.21.pom": [ + "83b7ab0b0123e7b1428a3d5f74dc151e904a10c8cd32063991a606508bc21e80" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-metadata-jvm/2.3.21/kotlin-metadata-jvm-2.3.21.pom", + "sha256": "83b7ab0b0123e7b1428a3d5f74dc151e904a10c8cd32063991a606508bc21e80" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-reflect:1.6.10": { + "integrity": { + "kotlin-reflect-1.6.10.jar": [ + "3277ac102ae17aad10a55abec75ff5696c8d109790396434b496e75087854203" + ], + "kotlin-reflect-1.6.10.pom": [ + "57905524274a00ae028aaccc27283f6bc5925a934a046c1cc5d06c8ee4d6d5a9" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.pom", + "sha256": "57905524274a00ae028aaccc27283f6bc5925a934a046c1cc5d06c8ee4d6d5a9" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-reflect:1.8.21": { + "integrity": { + "kotlin-reflect-1.8.21.jar": [ + "8a6cd5a3cf092acee274ce2c444dc36eefdb631579859dd4d857b3309a529c91" + ], + "kotlin-reflect-1.8.21.pom": [ + "39d78db33222cdbb32b618c7c5223d4457cc19742856d116a85090e4a96f623a" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.21/kotlin-reflect-1.8.21.pom", + "sha256": "39d78db33222cdbb32b618c7c5223d4457cc19742856d116a85090e4a96f623a" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-reflect:2.0.21": { + "integrity": { + "kotlin-reflect-2.0.21.jar": [ + "3ad2fcad0c09ddc0922debab4444d612144b7b465b75a8bb7587e20ddfafd799" + ], + "kotlin-reflect-2.0.21.pom": [ + "02ab7aeab03c68f40103026e5e9c277360cbc360818a5b2e36b9a3a9d8e8b049" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.0.21/kotlin-reflect-2.0.21.pom", + "sha256": "02ab7aeab03c68f40103026e5e9c277360cbc360818a5b2e36b9a3a9d8e8b049" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-reflect:2.2.21": { + "integrity": { + "kotlin-reflect-2.2.21.jar": [ + "44380abf37d245ce5c0f294f43512d1c39a59642bfa463922c74e96877cf49f8" + ], + "kotlin-reflect-2.2.21.pom": [ + "e5ab6b10560a5a52562c35cdbe71ddbe427d51eb5bfc701dcd4f6b949bd9e03f" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.2.21/kotlin-reflect-2.2.21.pom", + "sha256": "e5ab6b10560a5a52562c35cdbe71ddbe427d51eb5bfc701dcd4f6b949bd9e03f" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-script-runtime:2.4.0": { + "integrity": { + "kotlin-script-runtime-2.4.0.jar": [ + "196e8ecbf63daf477e34e67c2f871ee232ae7bf8b377432d876d1bbf9d273de3" + ], + "kotlin-script-runtime-2.4.0.pom": [ + "ce705c50e7e0afb22298acff0a983cdb6ea0f7fe2d1b473cee42b38405bc357f" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/2.4.0/kotlin-script-runtime-2.4.0.pom", + "sha256": "ce705c50e7e0afb22298acff0a983cdb6ea0f7fe2d1b473cee42b38405bc357f" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-script-runtime:2.4.20": { + "integrity": { + "kotlin-script-runtime-2.4.20.jar": [ + "fc5a19df78be445d84e8352e0d01098a6a8181324aa50c6f7bf850338e81e1b4" + ], + "kotlin-script-runtime-2.4.20.pom": [ + "dd0e3846b61a6d641300958cc52e4693cd7b47bd1d626505f383b2f9d23ade0e" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-script-runtime/2.4.20/kotlin-script-runtime-2.4.20.pom", + "sha256": "dd0e3846b61a6d641300958cc52e4693cd7b47bd1d626505f383b2f9d23ade0e" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-scripting-common:2.4.20": { + "integrity": { + "kotlin-scripting-common-2.4.20.jar": [ + "3385f7f05984a6488809b015727eca9aeba7998dc5995d87b4ae5dc9c8d4124b" + ], + "kotlin-scripting-common-2.4.20.pom": [ + "2cf95a3cad9078b1e6161d2b7ce11499dfeb64c89b755ef0a89b03808baf2bd5" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/2.4.20/kotlin-scripting-common-2.4.20.pom", + "sha256": "2cf95a3cad9078b1e6161d2b7ce11499dfeb64c89b755ef0a89b03808baf2bd5" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.4.20": { + "integrity": { + "kotlin-scripting-compiler-embeddable-2.4.20.jar": [ + "6eb8ce1d73b89107804b3bdf295791f52c0394cbe18bcdfb90103aee955ea1c5" + ], + "kotlin-scripting-compiler-embeddable-2.4.20.pom": [ + "54fe4af63adcc7cf4f567eb6722e05182f637443a26394fa2ef8ffb641906b35" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-embeddable/2.4.20/kotlin-scripting-compiler-embeddable-2.4.20.pom", + "sha256": "54fe4af63adcc7cf4f567eb6722e05182f637443a26394fa2ef8ffb641906b35" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.4.20": { + "integrity": { + "kotlin-scripting-compiler-impl-embeddable-2.4.20.jar": [ + "d895b182c4c7bdbd688efb360a897f2182774d91e6c57a7acbeb2dc8f13f5ff2" + ], + "kotlin-scripting-compiler-impl-embeddable-2.4.20.pom": [ + "0fa989100bb54b94cea92212a9a1ceb43ef8d4786e2405b17a5dcd5900bc5afe" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-compiler-impl-embeddable/2.4.20/kotlin-scripting-compiler-impl-embeddable-2.4.20.pom", + "sha256": "0fa989100bb54b94cea92212a9a1ceb43ef8d4786e2405b17a5dcd5900bc5afe" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-scripting-jvm:2.4.20": { + "integrity": { + "kotlin-scripting-jvm-2.4.20.jar": [ + "2be43e56bdaf38db30f87347ad4f42e9cd69ca8433e579780143791933b01fac" + ], + "kotlin-scripting-jvm-2.4.20.pom": [ + "e1c51997f4c5113b74f6fdb87ab9ac2008c6d19dd6cab0986170cfeab2b1fd90" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-jvm/2.4.20/kotlin-scripting-jvm-2.4.20.pom", + "sha256": "e1c51997f4c5113b74f6fdb87ab9ac2008c6d19dd6cab0986170cfeab2b1fd90" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21": { + "integrity": { + "kotlin-stdlib-common-2.0.21.module": [ + "6f5df8af633600a6b9cfb0fcc764af3d5119f376677677b91b6aee816b1d30ab" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/2.0.21/kotlin-stdlib-common-2.0.21.pom", + "sha256": "5f402cfb8d773195b967050124c9e89b5f84b172464e1894929789bf5c4c2f29" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.20": { + "integrity": { + "kotlin-stdlib-jdk7-1.8.20.jar": [ + "af1ec40c3b951afdcc0c2a0173c7b81763c5281c2d5bafbf0a8544a24c5dcc0c" + ], + "kotlin-stdlib-jdk7-1.8.20.pom": [ + "3622d106578cddcc0a9ec20f8ce815f7f49ff542f640228d2141fcaf80616b06" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.20/kotlin-stdlib-jdk7-1.8.20.pom", + "sha256": "3622d106578cddcc0a9ec20f8ce815f7f49ff542f640228d2141fcaf80616b06" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.21": { + "integrity": { + "kotlin-stdlib-jdk7-1.8.21.jar": [ + "33d148db0e11debd0d90677d28242bced907f9c77730000fd597867089039d86" + ], + "kotlin-stdlib-jdk7-1.8.21.pom": [ + "9bb107d5d5e3930bc5977f007a43cd20b7d24d91b1c1e528ea6ee0f248f14d36" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.21/kotlin-stdlib-jdk7-1.8.21.pom", + "sha256": "9bb107d5d5e3930bc5977f007a43cd20b7d24d91b1c1e528ea6ee0f248f14d36" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.20": { + "integrity": { + "kotlin-stdlib-jdk8-1.8.20.jar": [ + "e398b67977622718bf18ff99b739c7d9da060f33fb458a2e25203221c16af010" + ], + "kotlin-stdlib-jdk8-1.8.20.pom": [ + "3a462214a336e995687769531b1e37b0c81d8e10c9949cd5ea7ae1d7803a0232" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.20/kotlin-stdlib-jdk8-1.8.20.pom", + "sha256": "3a462214a336e995687769531b1e37b0c81d8e10c9949cd5ea7ae1d7803a0232" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21": { + "integrity": { + "kotlin-stdlib-jdk8-1.8.21.jar": [ + "3db752a30074f06ee6c57984aa6f27da44f4d2bbc7f5442651f6988f1cb2b7d7" + ], + "kotlin-stdlib-jdk8-1.8.21.pom": [ + "3839d728d7c309a5c368b0270b44b4f1c7878ff5ca5d32a9a204faa3491459d8" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.21/kotlin-stdlib-jdk8-1.8.21.pom", + "sha256": "3839d728d7c309a5c368b0270b44b4f1c7878ff5ca5d32a9a204faa3491459d8" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-stdlib:2.0.21": { + "integrity": { + "kotlin-stdlib-2.0.21.jar": [ + "f31cc53f105a7e48c093683bbd5437561d1233920513774b470805641bedbc09" + ], + "kotlin-stdlib-2.0.21.module": [ + "81fd6d181012487ee3246eff4e2bacb64b58c46e5b5aa72971a4ddf1bd1541ed" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.0.21/kotlin-stdlib-2.0.21.pom", + "sha256": "fcbada4cd2e9f39658293570ef613752331db69fd1dad1cabaa60548403e17da" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-stdlib:2.3.21": { + "integrity": { + "kotlin-stdlib-2.3.21.jar": [ + "6f64eac736db9434dd6925b4a518b9d1d17177652320c37916cf9ba3ce7d7d7a" + ], + "kotlin-stdlib-2.3.21.module": [ + "7b4ea4b2242bb177a4b4abb63c3f3d857331d40d35865e36fcc3db666ec10174" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.3.21/kotlin-stdlib-2.3.21.pom", + "sha256": "3e0b48daa14dc73f8029d8d9e15ed32940377caf7b915510f88d33219b350186" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-stdlib:2.4.0": { + "integrity": { + "kotlin-stdlib-2.4.0.jar": [ + "ccb14ff83fabcb11458b798dbc9824748ccdffeec79c9aba789e6ed1cda86b1c" + ], + "kotlin-stdlib-2.4.0.module": [ + "c24a47dcbd9295d776f443be41d77ac245309601ed053711dee2b0254be02db6" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.4.0/kotlin-stdlib-2.4.0.pom", + "sha256": "8194ff79a9ee24a7fa3f74a6b179c04a1859de8b987a4f0983056e59451721de" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-stdlib:2.4.20": { + "integrity": { + "kotlin-stdlib-2.4.20.jar": [ + "2226de463d309d4a5500a481320b3dea515a6981dcae1def531fbc158884e25f" + ], + "kotlin-stdlib-2.4.20.module": [ + "afb28052ac6c3d605c0f661816ea653e073eb039682fed35bfa6cdc704c0911c" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.4.20/kotlin-stdlib-2.4.20.pom", + "sha256": "bd69b382dba8e2b7ae3846375eb2f1389017eb908987277051ae4e3acec8c938" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlin:kotlin-tooling-core:2.4.20": { + "integrity": { + "kotlin-tooling-core-2.4.20.jar": [ + "5fc5db083803232857408ed5c25bcc307c703b04bdef6cb2c34ebf4db611a622" + ], + "kotlin-tooling-core-2.4.20.pom": [ + "29dd79ed2bc1e64f6bfd5ccf0c1336c6b6c11ee2a69e0c585e3fad2f45b5325d" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/2.4.20/kotlin-tooling-core-2.4.20.pom", + "sha256": "29dd79ed2bc1e64f6bfd5ccf0c1336c6b6c11ee2a69e0c585e3fad2f45b5325d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.11.0": { + "integrity": { + "kotlinx-coroutines-bom-1.11.0.pom": [ + "f65860bce58a2bfadf05fdc516d38333421f0e387fef87e24449c0394c80d254" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.11.0/kotlinx-coroutines-bom-1.11.0.pom", + "sha256": "f65860bce58a2bfadf05fdc516d38333421f0e387fef87e24449c0394c80d254" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.3": { + "integrity": { + "kotlinx-coroutines-bom-1.7.3.pom": [ + "4e5d1900e6379ef3f5970d04a8f30529adc82f859e8cc107c21ce8149ef666c4" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-bom/1.7.3/kotlinx-coroutines-bom-1.7.3.pom", + "sha256": "4e5d1900e6379ef3f5970d04a8f30529adc82f859e8cc107c21ce8149ef666c4" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.11.0": { + "integrity": { + "kotlinx-coroutines-core-jvm-1.11.0.jar": [ + "d1d75aa01dffbb4d1c520e67e4c4e7f5f6174718e7cb4632412503f2f0e604fa" + ], + "kotlinx-coroutines-core-jvm-1.11.0.module": [ + "5b255653ad6b1f21e0c46108605f129e3aa56ed9414849cc9f5b436441517528" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.11.0/kotlinx-coroutines-core-jvm-1.11.0.pom", + "sha256": "dd54b97aa3fab91fc24f5df2916c22be9429a339d2f45b7ff092332f6c19dc39" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.3": { + "integrity": { + "kotlinx-coroutines-core-jvm-1.7.3.jar": [ + "1ab3acc38f3e7355c4f9d1ec62107a46fa73c899f3070d055e5d4373dfe67e12" + ], + "kotlinx-coroutines-core-jvm-1.7.3.module": [ + "34d6ee99b76ac062b51555b4a70be18349fe5566da79a190614f171c80b6538e" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.7.3/kotlinx-coroutines-core-jvm-1.7.3.pom", + "sha256": "753858753decbbb2397343e2b871f062f697812e9422e41c9ee46a66b93eee30" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0": { + "integrity": { + "kotlinx-coroutines-core-jvm-1.8.0.jar": [ + "9860906a1937490bf5f3b06d2f0e10ef451e65b95b269f22daf68a3d1f5065c5" + ], + "kotlinx-coroutines-core-jvm-1.8.0.module": [ + "ff6a22da40040938751db0ae21177e76517dbf126a76796f5426727bf76c1228" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.8.0/kotlinx-coroutines-core-jvm-1.8.0.pom", + "sha256": "a5633abd53467ceb91622d81f2e982080877145e0b76e1b75788715434885d0b" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0": { + "integrity": { + "kotlinx-coroutines-core-1.11.0.module": [ + "1e19785d34728b7525d7a77ff32ead4547d51cc7a45d4ac44d4de608169b0c0d" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.11.0/kotlinx-coroutines-core-1.11.0.pom", + "sha256": "41b6e78c1b0d11bc99de795390df9e4ece64dc113f482d6e308f1b7a421c1d30" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3": { + "integrity": { + "kotlinx-coroutines-core-1.7.3.module": [ + "7fb162396594ec28e1b6a4411b457949a7670f5e12019176774e1fd6b9471bbf" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.7.3/kotlinx-coroutines-core-1.7.3.pom", + "sha256": "ed6eb0398717035e29f1c1d60a4e3ddbb89858f3db9e07b57ad759d374dae829" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-html-jvm:0.9.1": { + "integrity": { + "kotlinx-html-jvm-0.9.1.jar": [ + "b68f39cd9ad7b46de0a0e77e7f5908d4e7661f3d0c85d2d9171543fcd5b156fb" + ], + "kotlinx-html-jvm-0.9.1.module": [ + "ca273fd7d06cde0f32af83230700abd9b0f573b984ae8847ce90e3dc5d0d1353" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-html-jvm/0.9.1/kotlinx-html-jvm-0.9.1.pom", + "sha256": "0b07cea4e8202a3906c546f17e2e5a923476aca859d354e79e871f29e84bd297" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.9.0": { + "integrity": { + "kotlinx-io-bytestring-jvm-0.9.0.jar": [ + "43a8c9d7c5460622c4ffe7e7c9443736af1a69183316b532de78a9aafa86b636" + ], + "kotlinx-io-bytestring-jvm-0.9.0.module": [ + "d11acf9df4cb8f0b015cd011662722d72490c0889984224ea56dfe4c2734aea4" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-io-bytestring-jvm/0.9.0/kotlinx-io-bytestring-jvm-0.9.0.pom", + "sha256": "8d00f6e5077f3bbe81a1df328beb5eefd008cc8f81fffe6cacd526f015dc9e84" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-io-bytestring:0.9.0": { + "integrity": { + "kotlinx-io-bytestring-0.9.0.module": [ + "86183e8f9d3a2d9a82888378fad6f95758619359e45dfb72ecaf6c0b07263850" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-io-bytestring/0.9.0/kotlinx-io-bytestring-0.9.0.pom", + "sha256": "d4302f639a907b4025c07f3d2ee43edca0b7ebdfb6aed580da4d2076340b2067" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.9.0": { + "integrity": { + "kotlinx-io-core-jvm-0.9.0.jar": [ + "338872148faa4a44acc9bfa91343813d51784e8d47f005ad4406647297f85041" + ], + "kotlinx-io-core-jvm-0.9.0.module": [ + "1ad8d0e4f80a361c567af5aa904607629e5300dee153a4673e6517f876b21436" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-io-core-jvm/0.9.0/kotlinx-io-core-jvm-0.9.0.pom", + "sha256": "7cb911e263d1cf42e6d7363ed5601a61ac58819768d5207df91b0f69e22a6ce8" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-io-core:0.9.0": { + "integrity": { + "kotlinx-io-core-0.9.0.module": [ + "f902561241cde204717e1eaedfaf0306e98ab99679acb7a663aaea81f15a3620" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-io-core/0.9.0/kotlinx-io-core-0.9.0.pom", + "sha256": "ad86bb89840d68b0365b3d219d10024adad4c6464e04136c6a429e1bb768fea6" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-serialization-bom:1.11.0": { + "integrity": { + "kotlinx-serialization-bom-1.11.0.pom": [ + "3be221b6da86dcda51cac6c4b2404b89e95ab09cc8d06a05689be2ef36735dec" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-bom/1.11.0/kotlinx-serialization-bom-1.11.0.pom", + "sha256": "3be221b6da86dcda51cac6c4b2404b89e95ab09cc8d06a05689be2ef36735dec" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.11.0": { + "integrity": { + "kotlinx-serialization-core-jvm-1.11.0.jar": [ + "f4a801c647d4351327cd9e1ac4113e2be9ea37a64ab0abae269c25a52e28f35d" + ], + "kotlinx-serialization-core-jvm-1.11.0.module": [ + "d8bee6e8a51d7c169bd6060abbc6b2d4e7bc419a265cd705d47824b83f1bd0b6" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1.11.0/kotlinx-serialization-core-jvm-1.11.0.pom", + "sha256": "83039385976fdc494241f4572558a136e7b21116d7279b26daf335478bfacb57" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains.kotlinx:kotlinx-serialization-core:1.11.0": { + "integrity": { + "kotlinx-serialization-core-1.11.0.module": [ + "4e011406f2c2285a5a9ba8c3b6471ac168f6e82af82b1a93b71a0731d270364e" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core/1.11.0/kotlinx-serialization-core-1.11.0.pom", + "sha256": "3133773fbcf9822a7f3a5e85ab19941e67bd289bf5fc3182d9db4d1cab86eb22" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains:annotations:13.0": { + "integrity": { + "annotations-13.0.jar": [ + "ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478" + ], + "annotations-13.0.pom": ["965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397"] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom", + "sha256": "965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains:annotations:23.0.0": { + "integrity": { + "annotations-23.0.0.jar": [ + "7b0f19724082cbfcbc66e5abea2b9bc92cf08a1ea11e191933ed43801eb3cd05" + ], + "annotations-23.0.0.pom": [ + "c9490f655132328df2cfbcfdf743f53fc3916d6c1d10437175a6ca6e3a67771c" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/23.0.0/annotations-23.0.0.pom", + "sha256": "c9490f655132328df2cfbcfdf743f53fc3916d6c1d10437175a6ca6e3a67771c" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains:markdown-jvm:0.7.3": { + "integrity": { + "markdown-jvm-0.7.3.jar": [ + "893abb31f15b6216f74dc704c0c6bf1e567dcf2b62cca29cf42e4f53153637ac" + ], + "markdown-jvm-0.7.3.module": [ + "7029b63c74964e5b4334308ee729e95b538da5ed6ac12b2e477d478572d02252" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/markdown-jvm/0.7.3/markdown-jvm-0.7.3.pom", + "sha256": "acb9d157ffc7a64ee62be8edd9600d26b5db03270a74e8be53cd79fe0b26f3cd" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jetbrains:markdown:0.7.3": { + "integrity": { + "markdown-0.7.3.module": [ + "dbfae7aa853eb5ea1eeba31896538a8403646f55c59a99191d687fc037bdac39" + ] + }, + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jetbrains/markdown/0.7.3/markdown-0.7.3.pom", + "sha256": "11e52e0a640e54a4b3b230d1485c95ba4ba77b2c7b1fc28437390f9e01227147" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.jsoup:jsoup:1.16.1": { + "integrity": { + "jsoup-1.16.1.jar": ["1f115726540ddf71958c14bc517ebfc49cf481e91cd917b0face84f01272e901"], + "jsoup-1.16.1.pom": ["6cc507f630536f205bde2c1b38c3c5907511de2d7b1a444be9d638d4614f243c"] + }, + "licence": "MIT", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/jsoup/jsoup/1.16.1/jsoup-1.16.1.pom", + "sha256": "6cc507f630536f205bde2c1b38c3c5907511de2d7b1a444be9d638d4614f243c" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "maven:org.slf4j:slf4j-api:2.0.18": { + "integrity": { + "slf4j-api-2.0.18.jar": [ + "44508fd1576500688c790b190acdd16fec4f8c79a3e0b900afd70503cf055f55" + ], + "slf4j-api-2.0.18.pom": ["6c2c7f2c02774cc2b7b619fbd2df7873cdad29718926e44754b87f70d1eb43cb"] + }, + "licence": "MIT", + "evidence": [ + { + "source": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.18/slf4j-api-2.0.18.pom", + "sha256": "6c2c7f2c02774cc2b7b619fbd2df7873cdad29718926e44754b87f70d1eb43cb" + }, + { + "source": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.18/slf4j-parent-2.0.18.pom", + "sha256": "0b3896bedad2c9ed9697edcbea1da0c54cd238a723583a81358a83bfb782e9fa" + }, + { + "source": "https://repo.maven.apache.org/maven2/org/slf4j/slf4j-bom/2.0.18/slf4j-bom-2.0.18.pom", + "sha256": "9219aab601575126c4e66e1331eb2b0c6c17a330ac4d5a07e3cd11d580a0c12d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@bufbuild/protobuf@2.15.0": { + "integrity": "sha512-DAheWUkVr/SJTWCc+lg9dhY0eN4SaWlf4+bG1KzHeXbnqt0AfB/NX0Z+VunGlM1ki1B4zVvye27MpKh/svySUA==", + "licence": "(Apache-2.0 AND BSD-3-Clause)", + "evidence": [ + { + "source": "package-lock.json#node_modules/@bufbuild/protobuf", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@bufbuild/protoc-gen-es@2.15.0": { + "integrity": "sha512-FRhNTAZEXW6arWx2JxgtpuazhmewYctXugu5SfXGpXpLLCInDT1005fSKDzEM/70Es2oIn07PM4RvpwvDvR/fg==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@bufbuild/protoc-gen-es", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@bufbuild/protoplugin@2.15.0": { + "integrity": "sha512-vZhRoqB/jTHATqItRvJQf1zbxdrGRRhiusGty4+lKcfEFODG0PMXky2Ezv4WHHS6oSxq+5qShITuE7K1/82SuQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@bufbuild/protoplugin", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@connectrpc/connect-web@2.2.0": { + "integrity": "sha512-uuBUcBTYfb/r1o98LzCCZk1H90yx0vmZ5m21dpw/q4EUwsKwkCDGI8H0aEdjcZld+Q2jJ5A5ADvPqfb6lzQ/sg==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@connectrpc/connect-web", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@connectrpc/connect@2.2.0": { + "integrity": "sha512-M63OQ1ZFcPUm85CuewJ9G9CMV8LjzGR9935xOnXNQGSazAbwMb3x2W7vXBYM1zqrP7XFD8uxp/dUAhirclgwnQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@connectrpc/connect", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-aix-ppc64@7.0.2": { + "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-aix-ppc64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-darwin-arm64@7.0.2": { + "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-darwin-arm64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-darwin-x64@7.0.2": { + "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-darwin-x64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-freebsd-arm64@7.0.2": { + "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-freebsd-arm64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-freebsd-x64@7.0.2": { + "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-freebsd-x64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-linux-arm64@7.0.2": { + "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-linux-arm64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-linux-arm@7.0.2": { + "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-linux-arm", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-linux-loong64@7.0.2": { + "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-linux-loong64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-linux-mips64el@7.0.2": { + "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-linux-mips64el", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-linux-ppc64@7.0.2": { + "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-linux-ppc64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-linux-riscv64@7.0.2": { + "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-linux-riscv64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-linux-s390x@7.0.2": { + "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-linux-s390x", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-linux-x64@7.0.2": { + "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-linux-x64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-netbsd-arm64@7.0.2": { + "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-netbsd-arm64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-netbsd-x64@7.0.2": { + "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-netbsd-x64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-openbsd-arm64@7.0.2": { + "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-openbsd-arm64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-openbsd-x64@7.0.2": { + "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-openbsd-x64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-sunos-x64@7.0.2": { + "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-sunos-x64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-win32-arm64@7.0.2": { + "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-win32-arm64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/typescript-win32-x64@7.0.2": { + "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/typescript-win32-x64", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:@typescript/vfs@1.6.4": { + "integrity": "sha512-PJFXFS4ZJKiJ9Qiuix6Dz/OwEIqHD7Dme1UwZhTK11vR+5dqW2ACbdndWQexBzCx+CPuMe5WBYQWCsFyGlQLlQ==", + "licence": "MIT", + "evidence": [ + { + "source": "package-lock.json#node_modules/@typescript/vfs", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:debug@4.4.3": { + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "licence": "MIT", + "evidence": [ + { + "source": "package-lock.json#node_modules/debug", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:ms@2.1.3": { + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "licence": "MIT", + "evidence": [ + { + "source": "package-lock.json#node_modules/ms", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:prettier@3.9.8": { + "integrity": "sha512-WRFq3Wn3WId7LLROfMLdH7xaFr2jR62wU8nLO6rQUOLOxNZUviyJQs1M0iIhLexSFy+L+w0ch66wtoO2jRjG0A==", + "licence": "MIT", + "evidence": [ + { + "source": "package-lock.json#node_modules/prettier", + "sha256": "3e536db25743ceb5a021559dbc1f31d57112211c62d94f84df34daca5382709c" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:typescript@5.4.5": { + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/typescript", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "npm:typescript@7.0.2": { + "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "package-lock.json#node_modules/typescript", + "sha256": "5ccbb6790ac9f6995b28d33a66f9c06192eeed2434892bdae8f9badde1614f7d" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:google.protobuf@3.36.1": { + "integrity": "77AqPEoaY1ODE+syYBHti0jXiwQq0J/fUr/fRyYhNlc9oKtH5dZZEr/OLKtdKNVG83PRnCYB2r8B80ZrObzOGQ==", + "licence": "BSD-3-Clause", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/google.protobuf/3.36.1/google.protobuf.nuspec", + "sha256": "d6a4a567ce4889e25d098fd39d13a65ce05c847e8574818edc0d1eee6277eb40" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:grpc.aspnetcore.server.clientfactory@2.83.0": { + "integrity": "DrX1dE9WJNOsaKDQpD1gQaVE567jMNfhpBuG6P2NvGhirf2HZczfIJtd2d1L+steYh0YZ1q57Sa1ZHuufMPYBw==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/grpc.aspnetcore.server.clientfactory/2.83.0/grpc.aspnetcore.server.clientfactory.nuspec", + "sha256": "c136c73c16bb696799979b16ec3e8cedb71f9787134697f595c9329367b46006" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:grpc.aspnetcore.server@2.83.0": { + "integrity": "rWeSaXaSPIIerc82lhHKqmzlp/sgLnG+Zw1c3YEEVp/un+hJKPxJOXWuGUOS2cs3EvcZBZ2tliXsnAg5Mdk2Ew==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/grpc.aspnetcore.server/2.83.0/grpc.aspnetcore.server.nuspec", + "sha256": "b9a51de789abe619de7ee4bb9ec9f30452c4bca13d514e53ac574a0bb96116e3" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:grpc.aspnetcore.web@2.84.0": { + "integrity": "xhpKA/nWQbgFLT0Z9sANWU2n9qMcb7l5Sfo7Z7f+7JZxGxGMEKe9kbGn9K8TxJmsDJ9wlxJKp+b40HsQfuMFEQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/grpc.aspnetcore.web/2.84.0/grpc.aspnetcore.web.nuspec", + "sha256": "9aa433115fb36b18c12cd74b4c1f7f9f0e656500f9a144b115d01c00b020f2d6" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:grpc.aspnetcore@2.83.0": { + "integrity": "PMoR+paO24EgBjBvfCqrmkurBH+RmfOIYThsUv6sGx6LUH0kxhzQkjtZ44mJxU0IwEw64dCzHhIjAM+CmORp3g==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/grpc.aspnetcore/2.83.0/grpc.aspnetcore.nuspec", + "sha256": "3852b062a3142127590a43bb41470c956570ca4dd5a65713c4da92a57de1714e" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:grpc.net.client@2.84.0": { + "integrity": "My6Fms2YCyAbihTBZZ3kLS39iTY2pkMAzGDBTC6XhPOujg70eB07AEJ7tPiW3tZ70bhFzHcc3+d4j3DaIPF3aA==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/grpc.net.client/2.84.0/grpc.net.client.nuspec", + "sha256": "32a43f3448ab90bb71c946533db4d5135cef4728a3ee29bf88d9a0cbf1e67413" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:grpc.core.api@2.84.0": { + "integrity": "p2SOMl6q/GZ4/5MLkgboC/z55g4zKUEruRn/g46QgppjQBVnsLZVBU/9VO7n60ll38G3Eo8Zu9b7x+W01GKFVg==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/grpc.core.api/2.84.0/grpc.core.api.nuspec", + "sha256": "bba00f5d5be8423dd351662e313648b0abd13100ef67d55f6fc29de44c544a96" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:grpc.net.clientfactory@2.83.0": { + "integrity": "j07orG5YnET3n5+TnczHCQsyWL3a4n/lJlIS88B3Zffylpp0RkcPzLv4ILAwKmOWOBvbBHiytPzAwJ8p7JomEQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/grpc.net.clientfactory/2.83.0/grpc.net.clientfactory.nuspec", + "sha256": "ba34068bb1e956e14021209f9576a3fd9c40340f444a7d0c62ddfdef2cf8788b" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:grpc.net.common@2.84.0": { + "integrity": "DPxm/H8G/lDRrz997wM0M2zN/PGqVeZKDakhBbtABEbv6WIW4HI9g3BvntBQT6ZUROuGacMzfyyF9e5kiTVFfQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/grpc.net.common/2.84.0/grpc.net.common.nuspec", + "sha256": "f621aa566e63340b572a4f0bd2b996b934407c77b8cdf121f38578e93ee796cb" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:grpc.tools@2.84.0": { + "integrity": "SarjdfpQYU/mmdu/fWgSW8kEHQ54jiyG2+I4THu9eubtAud+QJf+1iJdGtoKTJ/ZRaI0qAG+7ttsK2WUTao2OQ==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/grpc.tools/2.84.0/grpc.tools.nuspec", + "sha256": "ec22ca632fad79aac17b94fdad74aa17dd999a493b68f6b6e693863737daf2ed" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:microsoft.dotnet.ilcompiler@10.0.11": { + "integrity": "yloFUsIQOzspIsn2cDHrbgikKaWHAZspzj0EWxnWJJpFC89IBW64OXgCECsrrnzGWQvy1iLX9r5/R4zBf7Am3g==", + "licence": "MIT", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/microsoft.dotnet.ilcompiler/10.0.11/microsoft.dotnet.ilcompiler.nuspec", + "sha256": "2c16a1f000bd7a7e5c0864d2b097d5d00afc5d723770751bc6228bd463c6cc56" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:microsoft.extensions.logging.abstractions@8.0.1": { + "integrity": "RIFgaqoaINxkM2KTOw72dmilDmTrYA0ns2KW4lDz4gZ2+o6IQ894CzmdL3StM2oh7QQq44nCWiqKqc4qUI9Jmg==", + "licence": "MIT", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/microsoft.extensions.logging.abstractions/8.0.1/microsoft.extensions.logging.abstractions.nuspec", + "sha256": "7593932df3e935a8e6670efad230c82967bc45ea4065186d9b886670408b95cc" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:microsoft.extensions.dependencyinjection.abstractions@8.0.1": { + "integrity": "fGLiCRLMYd00JYpClraLjJTNKLmMJPnqxMaiRzEBIIvevlzxz33mXy39Lkd48hu1G+N21S7QpaO5ZzKsI6FRuA==", + "licence": "MIT", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/microsoft.extensions.dependencyinjection.abstractions/8.0.1/microsoft.extensions.dependencyinjection.abstractions.nuspec", + "sha256": "1ed9fd0c77d67cc75208b3268df565762916a992f3e246973430dbd77ede2413" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:microsoft.net.illink.tasks@10.0.11": { + "integrity": "IBf7lbovvjGWVWXZX5cJ/cO0WXbId0Zq4BuSeT94mGZuOAP66oMeH9PTBZ9Jpp3Jb6jtK0qm/NyUbPRo1gC/wQ==", + "licence": "MIT", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/microsoft.net.illink.tasks/10.0.11/microsoft.net.illink.tasks.nuspec", + "sha256": "6c10c93cd2958d71fc46d60c940044071e15b57a75d469d68adf80f0dff57da1" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:runtime.linux-x64.microsoft.dotnet.ilcompiler@10.0.11": { + "integrity": "0lJviBev2CvBdrLhMCJ1hmwOKgjbk1ccRy+brEewywtK4TMft1WaVXv112j6OuTQg8ZMbnN/i3KRD3S6o4NJDw==", + "licence": "MIT", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/runtime.linux-x64.microsoft.dotnet.ilcompiler/10.0.11/runtime.linux-x64.microsoft.dotnet.ilcompiler.nuspec", + "sha256": "0d304c7cb54460b35cc188ca792aeb0f81772a6ac85d891e23d98889101aa3a0" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:runtime.win-x64.microsoft.dotnet.ilcompiler@10.0.11": { + "integrity": "D6ZKMo3NeTnos7l5S8bMmiPm4LK+y15Q/uduyPw7FX+xKbeWVWdwlcZGkLLPjLvW4ZO6o3ACanq5HsSXJgrt0g==", + "licence": "MIT", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/runtime.win-x64.microsoft.dotnet.ilcompiler/10.0.11/runtime.win-x64.microsoft.dotnet.ilcompiler.nuspec", + "sha256": "e65322f78f21c985eea3b00e9f7cbc413d7b26a997ae861b08ee5265fc49b412" + } + ], + "scope": "reviewed runtime/build/generator/test closure; package-specific runtime SBOM gate determines redistributed dependencies" + }, + "nuget:arcforges.contracts.foundation@1.0.0-ci.113.1": { + "integrity": "k51yFjKnec92FJEfOM3/6YEhnbi1wfO4gztqjlhLumg7USTjVnA7ab7rE4X/H1cDb62Ny4c2ufn8Xi/CtBaZnA==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/arcforges.contracts.foundation/1.0.0-ci.113.1/arcforges.contracts.foundation.nuspec", + "sha256": "7726a233f9ce81c4373a2ab9423c33d566b919bb2cb90d2b5577cf844bbbbfc4" + } + ], + "scope": "Exact previously published first-party fixture consumed only by the isolated offline PreviousClient test executable; never a production package dependency." + }, + "nuget:arcforges.contracts.publicapi@1.0.0-ci.113.1": { + "integrity": "1ai2jcqdFfKLHahN62N9dqkcSsAEbgK/K5uQi4LDIUFDGaT38/2KJYYykrb/YLO2UyUBpFjxJmTk++A+4mr8Uw==", + "licence": "Apache-2.0", + "evidence": [ + { + "source": "https://api.nuget.org/v3-flatcontainer/arcforges.contracts.publicapi/1.0.0-ci.113.1/arcforges.contracts.publicapi.nuspec", + "sha256": "ff556689167901646fc045bdf691fdd2c8b72b25cb848e9312ff384d0b0e7216" + } + ], + "scope": "Exact previously published first-party fixture consumed only by the isolated offline PreviousClient test executable; never a production package dependency." + } + } +} diff --git a/eng/policy/licence-boundary.json b/eng/policy/licence-boundary.json index 4e954b58..41c85bba 100644 --- a/eng/policy/licence-boundary.json +++ b/eng/policy/licence-boundary.json @@ -100,6 +100,10 @@ "path": "src/public/ts/proto/package.json", "kind": "npm" }, + { + "path": "tests/StructureTests/PreviousClient/PreviousClient.csproj", + "kind": "msbuild" + }, { "path": "tests/StructureTests/StructureTests.csproj", "kind": "msbuild" diff --git a/eng/provenance/NOTICE.txt b/eng/provenance/NOTICE.txt index 9ca8c0b1..67b09691 100644 --- a/eng/provenance/NOTICE.txt +++ b/eng/provenance/NOTICE.txt @@ -9,8 +9,19 @@ Notice scope: source Apache License, Version 2.0, January 2004; preserve the complete terms. The complete Apache-2.0 terms remain in LICENSE and the four public export copies. -contract-bindings-r6 -Source: https://github.com/ArcForges/Contracts @ 671f816ddc9e1a3a75782842234f2e899c3de01a +con17-published-descriptors-r1 +Source: https://github.com/ArcForges/Contracts @ b10b2f6f316bf0c007e00632c5442fc102ebbe6e +Material licence: Apache-2.0 +Notice scope: source +Copyright 2026 ArcForges contributors. +Copyright 2008 Google Inc. All rights reserved. +Copyright 2015, 2019, 2020 gRPC authors. +Copyright 2021-2026 Buf Technologies, Inc. +Copyright 2022-2026 The Connect Authors. +Selected ArcForges contract bindings are generated from Apache-2.0 schemas using Grpc.Tools 2.84.0, protoc-gen-es 2.15.0 and Connect-Kotlin 0.9.0. Shape validators, domain identity adapters and fixture exports use Apache-2.0 repository tooling. Historical protobuf BSD-3-Clause and applicable generator Apache-2.0 attributions are retained. Build tools are not bundled in client packages. Native-grpc-only Android generation remains retired. + +con17-semantic-export-r1 +Source: https://github.com/ArcForges/Contracts @ a1d2f4bd6ff05f80e86c776ce9f7070729b38898 Material licence: Apache-2.0 Notice scope: packages Copyright 2026 ArcForges contributors. diff --git a/eng/provenance/files.json b/eng/provenance/files.json index c75d7095..43c3b1c5 100644 --- a/eng/provenance/files.json +++ b/eng/provenance/files.json @@ -5,11 +5,11 @@ ".editorconfig", ".gitattributes", ".github/CODEOWNERS", - ".github/dependabot.yml", ".github/ISSUE_TEMPLATE/bug.yml", ".github/ISSUE_TEMPLATE/config.yml", ".github/ISSUE_TEMPLATE/proposal.yml", ".github/PULL_REQUEST_TEMPLATE.md", + ".github/dependabot.yml", ".github/workflows/ci.yml", ".github/workflows/security.yml", ".gitignore", @@ -22,12 +22,16 @@ ".python-version", "AGENTS.md", "ArcForges.Contracts.slnx", - "build.gradle.kts", "CODE_OF_CONDUCT.md", "CONTRIBUTING.md", "Directory.Build.props", "Directory.Build.targets", "Directory.Packages.props", + "NOTICE", + "NuGet.config", + "README.md", + "SECURITY.md", + "build.gradle.kts", "docs/architecture.md", "docs/bootstrap-plan.md", "docs/consuming.md", @@ -46,10 +50,13 @@ "docs/validation.md", "docs/wp03-01-foundation.md", "docs/wp03-02-serialization.md", + "eng/Codegen/Codegen.csproj", + "eng/Codegen/packages.lock.json", "eng/build_identity.py", - "eng/central_publish.py", "eng/central-signing/build.gradle.kts", "eng/central-signing/settings.gradle.kts", + "eng/central_publish.py", + "eng/check_compatibility.py", "eng/check_contract_access.mjs", "eng/check_foundation.py", "eng/check_licences.py", @@ -57,16 +64,15 @@ "eng/check_operation_scope.py", "eng/check_provenance.py", "eng/check_serialization.py", - "eng/Codegen/Codegen.csproj", - "eng/Codegen/packages.lock.json", + "eng/compatibility/window.json", "eng/consumer_tools.py", "eng/contract-packages.json", "eng/contracts.py", "eng/dependency_admission.py", "eng/documentation_tools.py", - "eng/foundation_semantics.py", "eng/foundation-baseline.json", "eng/foundation-inventory.json", + "eng/foundation_semantics.py", "eng/generate_fixtures.py", "eng/generate_shapes.py", "eng/generate_values.py", @@ -82,6 +88,7 @@ "eng/policy/dependency-policy.json", "eng/policy/dependency-reviews/con-23-retirement-r1.json", "eng/policy/dependency-reviews/con-23-retirement-r2.json", + "eng/policy/dependency-reviews/con17-previous-client-113-1.json", "eng/policy/dependency-reviews/dependabot-2026-09-26-grpc-2-84-0.json", "eng/policy/dependency-reviews/dependabot-2026-09-26-prettier-3-9-8.json", "eng/policy/dependency-reviews/dependabot-2026-09-26-protobuf-4-36-2.json", @@ -93,6 +100,7 @@ "eng/policy/licence-boundary.json", "eng/policy/product-names.json", "eng/policy/reuse-policy.json", + "eng/provenance/NOTICE.txt", "eng/provenance/artifact-profiles/dokka-2-2-0-r1.json", "eng/provenance/artifact-profiles/dokka-2-2-0-r2.json", "eng/provenance/artifact-profiles/dokka-2-2-0-r3.json", @@ -103,8 +111,9 @@ "eng/provenance/artifact-profiles/dokka-2-2-0-r8.json", "eng/provenance/conflicts/javadoc-script-boundary-r1.json", "eng/provenance/files.json", - "eng/provenance/NOTICE.txt", "eng/provenance/records/canonical-apache-licence-r1.json", + "eng/provenance/records/con17-published-descriptors-r1.json", + "eng/provenance/records/con17-semantic-export-r1.json", "eng/provenance/records/contract-bindings-r2.json", "eng/provenance/records/contract-bindings-r3.json", "eng/provenance/records/contract-bindings-r4.json", @@ -210,6 +219,7 @@ "eng/snapshot_publish.py", "eng/version-sources.json", "fixtures/internal/wp03-00.json", + "fixtures/public/con-17-compat-hash.json", "fixtures/public/hello.json", "fixtures/public/wp03-00.json", "fixtures/public/wp03-01.json", @@ -227,8 +237,6 @@ "internal/proto/arcforges/local/scope/v1/scope.proto", "internal/proto/arcforges/operator/v1/operator.proto", "internal/proto/constraints.json", - "NOTICE", - "NuGet.config", "package-lock.json", "package.json", "public/http/v1/inventory.schema.json", @@ -240,110 +248,117 @@ "public/proto/arcforges/publicapi/v1/content.proto", "public/proto/constraints.json", "public/proto/value-boundaries.json", - "README.md", - "SECURITY.md", "settings-gradle.lockfile", "settings.gradle.kts", "src/internal/dotnet/ArcForges.Contracts.CloudInternal/ArcForges.Contracts.CloudInternal.csproj", - "src/internal/dotnet/ArcForges.Contracts.CloudInternal/packages.lock.json", "src/internal/dotnet/ArcForges.Contracts.CloudInternal/README.md", + "src/internal/dotnet/ArcForges.Contracts.CloudInternal/packages.lock.json", "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/ArcForges.Contracts.LocalRpc.Chat.csproj", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/packages.lock.json", "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/README.md", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/packages.lock.json", "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/ArcForges.Contracts.LocalRpc.Platform.csproj", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/packages.lock.json", "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/README.md", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/packages.lock.json", "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/ArcForges.Contracts.LocalRpc.Sandbox.csproj", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/packages.lock.json", "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/README.md", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/packages.lock.json", "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/ArcForges.Contracts.LocalRpc.Scope.csproj", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/packages.lock.json", "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/README.md", - "src/internal/ts/ai-internal/package.json", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/packages.lock.json", "src/internal/ts/ai-internal/README.md", + "src/internal/ts/ai-internal/package.json", "src/internal/ts/ai-internal/src/index.ts", "src/internal/ts/ai-internal/tsconfig.json", - "src/internal/ts/operator-client/package.json", "src/internal/ts/operator-client/README.md", + "src/internal/ts/operator-client/package.json", "src/internal/ts/operator-client/tsconfig.json", "src/public/dotnet/ArcForges.Cli/ArcForges.Cli.csproj", - "src/public/dotnet/ArcForges.Cli/packages.lock.json", "src/public/dotnet/ArcForges.Cli/Program.cs", "src/public/dotnet/ArcForges.Cli/README.md", + "src/public/dotnet/ArcForges.Cli/packages.lock.json", "src/public/dotnet/ArcForges.Contracts.Events/ArcForges.Contracts.Events.csproj", - "src/public/dotnet/ArcForges.Contracts.Events/packages.lock.json", "src/public/dotnet/ArcForges.Contracts.Events/README.md", + "src/public/dotnet/ArcForges.Contracts.Events/packages.lock.json", "src/public/dotnet/ArcForges.Contracts.Foundation/ArcForges.Contracts.Foundation.csproj", + "src/public/dotnet/ArcForges.Contracts.Foundation/CanonicalSemanticHash.cs", "src/public/dotnet/ArcForges.Contracts.Foundation/ContractSerialization.cs", - "src/public/dotnet/ArcForges.Contracts.Foundation/packages.lock.json", "src/public/dotnet/ArcForges.Contracts.Foundation/README.md", "src/public/dotnet/ArcForges.Contracts.Foundation/ValueBoundaries.cs", + "src/public/dotnet/ArcForges.Contracts.Foundation/packages.lock.json", "src/public/dotnet/ArcForges.Contracts.PublicApi/ArcForges.Contracts.PublicApi.csproj", - "src/public/dotnet/ArcForges.Contracts.PublicApi/packages.lock.json", "src/public/dotnet/ArcForges.Contracts.PublicApi/README.md", + "src/public/dotnet/ArcForges.Contracts.PublicApi/packages.lock.json", "src/public/dotnet/ArcForges.Contracts.Validation/ArcForges.Contracts.Validation.csproj", - "src/public/dotnet/ArcForges.Contracts.Validation/packages.lock.json", "src/public/dotnet/ArcForges.Contracts.Validation/README.md", + "src/public/dotnet/ArcForges.Contracts.Validation/packages.lock.json", "src/public/dotnet/ArcForges.Sdk.Client/ArcForges.Sdk.Client.csproj", "src/public/dotnet/ArcForges.Sdk.Client/ExtensionLeaseClient.cs", - "src/public/dotnet/ArcForges.Sdk.Client/packages.lock.json", "src/public/dotnet/ArcForges.Sdk.Client/README.md", + "src/public/dotnet/ArcForges.Sdk.Client/packages.lock.json", "src/public/dotnet/ArcForges.Sdk.Contracts/ArcForges.Sdk.Contracts.csproj", - "src/public/dotnet/ArcForges.Sdk.Contracts/packages.lock.json", "src/public/dotnet/ArcForges.Sdk.Contracts/README.md", + "src/public/dotnet/ArcForges.Sdk.Contracts/packages.lock.json", + "src/public/kotlin/contract-fixtures/README.md", "src/public/kotlin/contract-fixtures/build.gradle.kts", "src/public/kotlin/contract-fixtures/gradle.lockfile", - "src/public/kotlin/contract-fixtures/README.md", "src/public/kotlin/contract-fixtures/src/main/java/io/github/arcforges/contracts/fixtures/ContractFixtures.java", + "src/public/kotlin/contracts-connect-client/README.md", "src/public/kotlin/contracts-connect-client/build.gradle.kts", "src/public/kotlin/contracts-connect-client/gradle.lockfile", - "src/public/kotlin/contracts-connect-client/README.md", + "src/public/kotlin/contracts-proto/README.md", "src/public/kotlin/contracts-proto/build.gradle.kts", "src/public/kotlin/contracts-proto/gradle.lockfile", - "src/public/kotlin/contracts-proto/README.md", - "src/public/ts/api-client/package.json", "src/public/ts/api-client/README.md", + "src/public/ts/api-client/package.json", "src/public/ts/api-client/src/index.ts", "src/public/ts/api-client/tsconfig.json", - "src/public/ts/contract-fixtures/package.json", "src/public/ts/contract-fixtures/README.md", + "src/public/ts/contract-fixtures/package.json", "src/public/ts/contract-fixtures/tsconfig.json", - "src/public/ts/proto/package.json", "src/public/ts/proto/README.md", + "src/public/ts/proto/package.json", + "src/public/ts/proto/src/semantic-hash.ts", "src/public/ts/proto/src/values.ts", "src/public/ts/proto/src/wire.ts", "src/public/ts/proto/tsconfig.json", - "tests/public/foundation-coverage.mjs", - "tests/public/foundation-links.test.mjs", - "tests/public/foundation-types.ts", - "tests/public/foundation.test.mjs", + "tests/StructureTests/CompatibilityCases.cs", + "tests/StructureTests/FoundationCases.cs", + "tests/StructureTests/FoundationLinkCases.cs", + "tests/StructureTests/PreviousClient/PreviousClient.csproj", + "tests/StructureTests/PreviousClient/Program.cs", + "tests/StructureTests/PreviousClient/packages.lock.json", + "tests/StructureTests/Program.cs", + "tests/StructureTests/SemanticHashCases.cs", + "tests/StructureTests/StructureTests.csproj", + "tests/StructureTests/packages.lock.json", "tests/public/HelloClient/HelloClient.csproj", - "tests/public/HelloClient/packages.lock.json", "tests/public/HelloClient/Program.cs", + "tests/public/HelloClient/packages.lock.json", "tests/public/HelloHost/HelloHost.csproj", - "tests/public/HelloHost/packages.lock.json", "tests/public/HelloHost/Program.cs", + "tests/public/HelloHost/packages.lock.json", "tests/public/KotlinConnectClient/build.gradle.kts", "tests/public/KotlinConnectClient/gradle.lockfile", "tests/public/KotlinConnectClient/gradle/verification-metadata.xml", "tests/public/KotlinConnectClient/settings-gradle.lockfile", "tests/public/KotlinConnectClient/settings.gradle.kts", "tests/public/KotlinConnectClient/src/main/kotlin/io/github/arcforges/tests/Main.kt", - "tests/public/package-consumer.ts", - "tests/public/serialization.test.mjs", - "tests/public/SerializationProbe/packages.lock.json", "tests/public/SerializationProbe/Program.cs", "tests/public/SerializationProbe/SerializationProbe.csproj", + "tests/public/SerializationProbe/packages.lock.json", + "tests/public/foundation-coverage.mjs", + "tests/public/foundation-links.test.mjs", + "tests/public/foundation-types.ts", + "tests/public/foundation.test.mjs", + "tests/public/package-consumer.ts", + "tests/public/semantic-hash.test.mjs", + "tests/public/serialization.test.mjs", "tests/public/structure.test.mjs", "tests/public/wire.test.mjs", - "tests/StructureTests/FoundationCases.cs", - "tests/StructureTests/FoundationLinkCases.cs", - "tests/StructureTests/packages.lock.json", - "tests/StructureTests/Program.cs", - "tests/StructureTests/StructureTests.csproj", "tests/tooling/contract_access.test.mjs", "tests/tooling/test_artifact_retirement.py", "tests/tooling/test_build_identity.py", + "tests/tooling/test_compatibility_matrix.py", "tests/tooling/test_contract_identity.py", "tests/tooling/test_dependency_admission.py", "tests/tooling/test_documentation_provenance.py", @@ -368,345 +383,345 @@ "gradlew": "gradle-wrapper-9-7-1-r1", "gradlew.bat": "gradle-wrapper-9-7-1-r1", "public/LICENSE": "canonical-apache-licence-r1", - "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Proto/Operator.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Shapes/CommitReceipt.g.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Shapes/CommitReceiptValidator.g.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Shapes/ProtoValidation.g.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/Generated/Proto/Chat.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/Generated/Shapes/ProtoValidation.g.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/Generated/Proto/Platform.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/Generated/Shapes/ProtoValidation.g.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/Generated/Proto/Sandbox.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/Generated/Shapes/ProtoValidation.g.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/Generated/Proto/Scope.cs": "contract-bindings-r6", - "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/Generated/Shapes/ProtoValidation.g.cs": "contract-bindings-r6", - "src/internal/ts/ai-internal/src/gen/http.ts": "contract-bindings-r6", - "src/internal/ts/ai-internal/src/shapes/gen/CommitReceipt.ts": "contract-bindings-r6", - "src/internal/ts/operator-client/src/gen/arcforges/operator/v1/operator_pb.ts": "contract-bindings-r6", - "src/internal/ts/operator-client/src/index.ts": "contract-bindings-r6", - "src/internal/ts/operator-client/src/shapes/gen/proto.ts": "contract-bindings-r6", + "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Proto/Operator.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Shapes/CommitReceipt.g.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Shapes/CommitReceiptValidator.g.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Shapes/ProtoValidation.g.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/Generated/Proto/Chat.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/Generated/Shapes/ProtoValidation.g.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/Generated/Proto/Platform.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/Generated/Shapes/ProtoValidation.g.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/Generated/Proto/Sandbox.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/Generated/Shapes/ProtoValidation.g.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/Generated/Proto/Scope.cs": "con17-semantic-export-r1", + "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/Generated/Shapes/ProtoValidation.g.cs": "con17-semantic-export-r1", + "src/internal/ts/ai-internal/src/gen/http.ts": "con17-semantic-export-r1", + "src/internal/ts/ai-internal/src/shapes/gen/CommitReceipt.ts": "con17-semantic-export-r1", + "src/internal/ts/operator-client/src/gen/arcforges/operator/v1/operator_pb.ts": "con17-semantic-export-r1", + "src/internal/ts/operator-client/src/index.ts": "con17-semantic-export-r1", + "src/internal/ts/operator-client/src/shapes/gen/proto.ts": "con17-semantic-export-r1", "src/public/LICENSE": "canonical-apache-licence-r1", - "src/public/dotnet/ArcForges.Contracts.Events/Generated/Proto/Events.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Contracts.Foundation/Generated/Proto/Foundation.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Contracts.Foundation/Generated/Values/Identifiers.g.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Proto/Content.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Proto/Hello.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Proto/HelloGrpc.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Shapes/PartReceipt.g.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Values/Identifiers.g.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Contracts.Validation/Generated/Shapes/PackageInventoryValidator.g.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Contracts.Validation/Generated/Shapes/PartReceiptValidator.g.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Contracts.Validation/Generated/Shapes/ProtoValidation.g.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Proto/Extensions.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Proto/ExtensionsGrpc.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Shapes/PackageInventory.g.cs": "contract-bindings-r6", - "src/public/kotlin/contracts-connect-client/generated/kotlin/io/github/arcforges/contracts/hello/v1/HelloServiceClient.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-connect-client/generated/kotlin/io/github/arcforges/contracts/hello/v1/HelloServiceClientInterface.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/events/v1/EntitlementChanged.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/events/v1/EntitlementChangedOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/events/v1/EventsProto.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ActorChain.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ActorChainOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/AggregateRef.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/AggregateRefOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ApplicationScope.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ApplicationScopeOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArcError.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArcErrorOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArtifactRef.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArtifactRefOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/BlobRef.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/BlobRefOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ByteRange.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ByteRangeOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ContentOrigin.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ContentOriginOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Decimal.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/DecimalOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/EffectCertainty.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ErrorCategory.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ErrorDetails.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ErrorDetailsOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/FoundationProto.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Id.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/IdOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Instant.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/InstantOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/LimitFailure.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/LimitFailureOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaRange.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaRangeOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaTime.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaTimeOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/NativeContentRev.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/NativeContentRevOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageRequest.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageRequestOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageState.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageStateOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Rational.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RationalOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Receipt.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ReceiptOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RequestMeta.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RequestMetaOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceAvailability.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceRef.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceRefOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceVersionRef.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceVersionRefOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResponseMeta.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResponseMetaOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RetryAdvice.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RetryAdviceOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RetryMode.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Revision.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RevisionConflict.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RevisionConflictOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RevisionOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/StateFailure.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/StateFailureOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/TimeRangeUtc.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/TimeRangeUtcOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionFailure.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionFailureOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionedRef.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionedRefOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/HelloProto.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloRequest.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloRequestOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloResponse.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloResponseOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AgentProfile.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AgentProfileOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AggregateBody.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AggregateBodyOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AlignmentSpec.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AlignmentSpecOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationSpec.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationSpecOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationView.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationViewOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/Calibration.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CalibrationOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityArguments.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityArgumentsOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityResult.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityResultOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CaptureMetadata.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CaptureMetadataOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChannelDefinition.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChannelDefinitionOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChatProjectRecord.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChatProjectRecordOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChecksumSpec.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChecksumSpecOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContentProto.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextLifetime.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextRef.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextRefOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextSelector.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextSelectorOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlKind.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlProgress.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlProgressOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlState.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationBody.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationBodyOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationView.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationViewOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorResult.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorResultOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorSpec.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorSpecOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EphemeralSelection.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EphemeralSelectionOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EventTrigger.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EventTriggerOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FamilyResult.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FamilyResultOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameConfiguration.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameConfigurationOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameField.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameFieldOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/HistoryMode.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementRequest.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementRequestOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementResult.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementResultOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementSource.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementSourceOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementThreshold.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementThresholdOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementValue.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementValueOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementWindow.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementWindowOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MemoryRecord.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MemoryRecordOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageDraft.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageDraftOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessagePart.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessagePartOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageView.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageViewOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataEntry.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataEntryOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataScalar.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataScalarOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/PreferenceRecord.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/PreferenceRecordOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SampleRange.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SampleRangeOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScheduleSpec.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScheduleSpecOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeAnnotation.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeAnnotationOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeConfiguration.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeConfigurationOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeFinding.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeFindingOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeMetadata.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeMetadataOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeSelection.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeSelectionOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeTime.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeTimeOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SelectedSample.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SelectedSampleOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SkillRecord.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SkillRecordOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SourceConsentRef.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SourceConsentRefOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/StructuredValue.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/StructuredValueOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskReasonFacet.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskSnapshot.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskSnapshotOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskState.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolProposal.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolProposalOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolResult.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolResultOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerConfiguration.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerConfigurationOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerSpec.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerSpecOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TurnInput.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TurnInputOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueEntry.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueEntryOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueList.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueListOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueRecord.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueRecordOrBuilder.java": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/events/v1/EntitlementChangedKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/events/v1/EventsProtoKt.proto.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ActorChainKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/AggregateRefKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ApplicationScopeKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ArcErrorKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ArtifactRefKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/BlobRefKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ByteRangeKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ContentOriginKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/DecimalKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ErrorDetailsKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/FoundationProtoKt.proto.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/IdKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/InstantKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/LimitFailureKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/MediaRangeKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/MediaTimeKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/NativeContentRevKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/PageRequestKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/PageStateKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RationalKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ReceiptKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RequestMetaKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ResourceRefKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ResourceVersionRefKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ResponseMetaKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RetryAdviceKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RevisionConflictKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RevisionKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/StateFailureKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/TimeRangeUtcKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/VersionFailureKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/VersionedRefKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/hello/v1/HelloProtoKt.proto.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/hello/v1/SayHelloRequestKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/hello/v1/SayHelloResponseKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AgentProfileKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AggregateBodyKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AlignmentSpecKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AutomationSpecKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AutomationViewKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CalibrationKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CapabilityArgumentsKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CapabilityResultKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CaptureMetadataKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ChannelDefinitionKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ChatProjectRecordKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ChecksumSpecKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ContentProtoKt.proto.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ContextRefKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ContextSelectorKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ControlProgressKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ConversationBodyKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ConversationViewKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CursorResultKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CursorSpecKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/EphemeralSelectionKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/EventTriggerKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/FamilyResultKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/FrameConfigurationKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/FrameFieldKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementRequestKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementResultKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementSourceKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementThresholdKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementValueKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementWindowKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MemoryRecordKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MessageDraftKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MessagePartKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MessageViewKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MetadataEntryKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MetadataScalarKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/PreferenceRecordKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SampleRangeKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScheduleSpecKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeAnnotationKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeConfigurationKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeFindingKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeMetadataKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeSelectionKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeTimeKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SelectedSampleKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SkillRecordKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SourceConsentRefKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/StructuredValueKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TaskSnapshotKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ToolProposalKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ToolResultKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TriggerConfigurationKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TriggerSpecKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TurnInputKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ValueEntryKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ValueListKt.kt": "contract-bindings-r6", - "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ValueRecordKt.kt": "contract-bindings-r6", - "src/public/ts/api-client/src/gen/http.ts": "contract-bindings-r6", - "src/public/ts/api-client/src/shapes/gen/PackageInventory.ts": "contract-bindings-r6", - "src/public/ts/api-client/src/shapes/gen/PartReceipt.ts": "contract-bindings-r6", - "src/public/ts/contract-fixtures/src/index.ts": "contract-bindings-r6", - "src/public/ts/proto/src/gen/arcforges/events/v1/events_pb.ts": "contract-bindings-r6", - "src/public/ts/proto/src/gen/arcforges/foundation/v1/foundation_pb.ts": "contract-bindings-r6", - "src/public/ts/proto/src/gen/arcforges/hello/v1/hello_pb.ts": "contract-bindings-r6", - "src/public/ts/proto/src/gen/arcforges/publicapi/v1/content_pb.ts": "contract-bindings-r6", - "src/public/ts/proto/src/index.ts": "contract-bindings-r6", - "src/public/ts/proto/src/shapes/gen/proto.ts": "contract-bindings-r6", - "src/public/ts/proto/src/values/gen/identifiers.ts": "contract-bindings-r6", + "src/public/dotnet/ArcForges.Contracts.Events/Generated/Proto/Events.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Contracts.Foundation/Generated/Proto/Foundation.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Contracts.Foundation/Generated/Values/Identifiers.g.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Proto/Content.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Proto/Hello.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Proto/HelloGrpc.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Shapes/PartReceipt.g.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Values/Identifiers.g.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Contracts.Validation/Generated/Shapes/PackageInventoryValidator.g.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Contracts.Validation/Generated/Shapes/PartReceiptValidator.g.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Contracts.Validation/Generated/Shapes/ProtoValidation.g.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Proto/Extensions.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Proto/ExtensionsGrpc.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Shapes/PackageInventory.g.cs": "con17-semantic-export-r1", + "src/public/kotlin/contracts-connect-client/generated/kotlin/io/github/arcforges/contracts/hello/v1/HelloServiceClient.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-connect-client/generated/kotlin/io/github/arcforges/contracts/hello/v1/HelloServiceClientInterface.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/events/v1/EntitlementChanged.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/events/v1/EntitlementChangedOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/events/v1/EventsProto.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ActorChain.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ActorChainOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/AggregateRef.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/AggregateRefOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ApplicationScope.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ApplicationScopeOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArcError.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArcErrorOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArtifactRef.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArtifactRefOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/BlobRef.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/BlobRefOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ByteRange.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ByteRangeOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ContentOrigin.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ContentOriginOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Decimal.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/DecimalOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/EffectCertainty.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ErrorCategory.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ErrorDetails.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ErrorDetailsOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/FoundationProto.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Id.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/IdOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Instant.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/InstantOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/LimitFailure.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/LimitFailureOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaRange.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaRangeOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaTime.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaTimeOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/NativeContentRev.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/NativeContentRevOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageRequest.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageRequestOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageState.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageStateOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Rational.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RationalOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Receipt.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ReceiptOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RequestMeta.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RequestMetaOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceAvailability.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceRef.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceRefOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceVersionRef.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceVersionRefOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResponseMeta.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResponseMetaOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RetryAdvice.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RetryAdviceOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RetryMode.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Revision.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RevisionConflict.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RevisionConflictOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RevisionOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/StateFailure.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/StateFailureOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/TimeRangeUtc.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/TimeRangeUtcOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionFailure.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionFailureOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionedRef.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionedRefOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/HelloProto.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloRequest.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloRequestOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloResponse.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloResponseOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AgentProfile.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AgentProfileOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AggregateBody.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AggregateBodyOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AlignmentSpec.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AlignmentSpecOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationSpec.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationSpecOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationView.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationViewOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/Calibration.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CalibrationOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityArguments.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityArgumentsOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityResult.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityResultOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CaptureMetadata.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CaptureMetadataOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChannelDefinition.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChannelDefinitionOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChatProjectRecord.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChatProjectRecordOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChecksumSpec.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChecksumSpecOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContentProto.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextLifetime.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextRef.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextRefOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextSelector.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextSelectorOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlKind.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlProgress.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlProgressOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlState.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationBody.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationBodyOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationView.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationViewOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorResult.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorResultOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorSpec.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorSpecOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EphemeralSelection.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EphemeralSelectionOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EventTrigger.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EventTriggerOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FamilyResult.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FamilyResultOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameConfiguration.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameConfigurationOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameField.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameFieldOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/HistoryMode.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementRequest.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementRequestOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementResult.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementResultOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementSource.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementSourceOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementThreshold.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementThresholdOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementValue.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementValueOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementWindow.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementWindowOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MemoryRecord.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MemoryRecordOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageDraft.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageDraftOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessagePart.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessagePartOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageView.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageViewOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataEntry.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataEntryOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataScalar.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataScalarOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/PreferenceRecord.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/PreferenceRecordOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SampleRange.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SampleRangeOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScheduleSpec.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScheduleSpecOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeAnnotation.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeAnnotationOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeConfiguration.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeConfigurationOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeFinding.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeFindingOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeMetadata.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeMetadataOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeSelection.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeSelectionOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeTime.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeTimeOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SelectedSample.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SelectedSampleOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SkillRecord.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SkillRecordOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SourceConsentRef.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SourceConsentRefOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/StructuredValue.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/StructuredValueOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskReasonFacet.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskSnapshot.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskSnapshotOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskState.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolProposal.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolProposalOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolResult.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolResultOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerConfiguration.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerConfigurationOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerSpec.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerSpecOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TurnInput.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TurnInputOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueEntry.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueEntryOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueList.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueListOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueRecord.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueRecordOrBuilder.java": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/events/v1/EntitlementChangedKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/events/v1/EventsProtoKt.proto.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ActorChainKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/AggregateRefKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ApplicationScopeKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ArcErrorKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ArtifactRefKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/BlobRefKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ByteRangeKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ContentOriginKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/DecimalKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ErrorDetailsKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/FoundationProtoKt.proto.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/IdKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/InstantKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/LimitFailureKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/MediaRangeKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/MediaTimeKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/NativeContentRevKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/PageRequestKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/PageStateKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RationalKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ReceiptKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RequestMetaKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ResourceRefKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ResourceVersionRefKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ResponseMetaKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RetryAdviceKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RevisionConflictKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RevisionKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/StateFailureKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/TimeRangeUtcKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/VersionFailureKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/VersionedRefKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/hello/v1/HelloProtoKt.proto.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/hello/v1/SayHelloRequestKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/hello/v1/SayHelloResponseKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AgentProfileKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AggregateBodyKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AlignmentSpecKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AutomationSpecKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AutomationViewKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CalibrationKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CapabilityArgumentsKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CapabilityResultKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CaptureMetadataKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ChannelDefinitionKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ChatProjectRecordKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ChecksumSpecKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ContentProtoKt.proto.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ContextRefKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ContextSelectorKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ControlProgressKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ConversationBodyKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ConversationViewKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CursorResultKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CursorSpecKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/EphemeralSelectionKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/EventTriggerKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/FamilyResultKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/FrameConfigurationKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/FrameFieldKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementRequestKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementResultKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementSourceKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementThresholdKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementValueKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementWindowKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MemoryRecordKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MessageDraftKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MessagePartKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MessageViewKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MetadataEntryKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MetadataScalarKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/PreferenceRecordKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SampleRangeKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScheduleSpecKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeAnnotationKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeConfigurationKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeFindingKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeMetadataKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeSelectionKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeTimeKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SelectedSampleKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SkillRecordKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SourceConsentRefKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/StructuredValueKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TaskSnapshotKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ToolProposalKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ToolResultKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TriggerConfigurationKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TriggerSpecKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TurnInputKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ValueEntryKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ValueListKt.kt": "con17-semantic-export-r1", + "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ValueRecordKt.kt": "con17-semantic-export-r1", + "src/public/ts/api-client/src/gen/http.ts": "con17-semantic-export-r1", + "src/public/ts/api-client/src/shapes/gen/PackageInventory.ts": "con17-semantic-export-r1", + "src/public/ts/api-client/src/shapes/gen/PartReceipt.ts": "con17-semantic-export-r1", + "src/public/ts/contract-fixtures/src/index.ts": "con17-semantic-export-r1", + "src/public/ts/proto/src/gen/arcforges/events/v1/events_pb.ts": "con17-semantic-export-r1", + "src/public/ts/proto/src/gen/arcforges/foundation/v1/foundation_pb.ts": "con17-semantic-export-r1", + "src/public/ts/proto/src/gen/arcforges/hello/v1/hello_pb.ts": "con17-semantic-export-r1", + "src/public/ts/proto/src/gen/arcforges/publicapi/v1/content_pb.ts": "con17-semantic-export-r1", + "src/public/ts/proto/src/index.ts": "con17-semantic-export-r1", + "src/public/ts/proto/src/shapes/gen/proto.ts": "con17-semantic-export-r1", + "src/public/ts/proto/src/values/gen/identifiers.ts": "con17-semantic-export-r1", "tests/public/LICENSE": "canonical-apache-licence-r1", "third-party/dokka/array-buffer-byte-length-LICENSE.txt": "dokka-array-buffer-byte-length-licence-r1", "third-party/dokka/available-typed-arrays-LICENSE.txt": "dokka-available-typed-arrays-licence-r1", @@ -792,9 +807,11 @@ "third-party/dokka/which-collection-LICENSE.txt": "dokka-which-collection-licence-r1", "third-party/dokka/which-typed-array-LICENSE.txt": "dokka-which-typed-array-licence-r1", "third-party/protobuf-generator-LICENSE.txt": "protobuf-generator-licence-r1", - "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Services/ContractServices.g.cs": "contract-bindings-r6", - "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Services/ContractServices.g.cs": "contract-bindings-r6", - "src/public/ts/proto/src/services/gen/catalog.ts": "contract-bindings-r6" + "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Services/ContractServices.g.cs": "con17-semantic-export-r1", + "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Services/ContractServices.g.cs": "con17-semantic-export-r1", + "src/public/ts/proto/src/services/gen/catalog.ts": "con17-semantic-export-r1", + "eng/compatibility/foundation-1.0.0-ci.113.1.binpb": "con17-published-descriptors-r1", + "eng/compatibility/public-api-1.0.0-ci.113.1.binpb": "con17-published-descriptors-r1" }, "artifacts": ["dokka-documentation-resources-r8"] } diff --git a/eng/provenance/records/con17-published-descriptors-r1.json b/eng/provenance/records/con17-published-descriptors-r1.json new file mode 100644 index 00000000..1623c332 --- /dev/null +++ b/eng/provenance/records/con17-published-descriptors-r1.json @@ -0,0 +1,145 @@ +{ + "schemaVersion": 1, + "id": "con17-published-descriptors-r1", + "kind": "generated", + "sourceRepository": "https://github.com/ArcForges/Contracts", + "sourceCommit": "b10b2f6f316bf0c007e00632c5442fc102ebbe6e", + "sourcePaths": [ + "public/proto/arcforges/foundation/v1/foundation.proto", + "public/proto/arcforges/hello/v1/hello.proto", + "public/proto/arcforges/publicapi/v1/content.proto" + ], + "licence": { + "spdx": "Apache-2.0", + "category": "permissive", + "evidence": [ + { + "path": "LICENSE", + "sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30", + "finding": "All selected authored schemas, shape rules, fixtures and orchestration carry the repository Apache-2.0 terms; exact source identities and hashes are bound below." + } + ], + "scope": "WP03.02 adds strict source-generated HTTP-exception JSON codecs, generated per-package service catalogues and the public binary-only transport export to the existing Apache-2.0 package closure. Schemas, generators and independent serialization vectors are Apache-2.0 repository material; third-party generator attribution and immutable prior records remain intact; no external product implementation is imported.", + "copyingPermission": null + }, + "attribution": [ + "Copyright 2026 ArcForges contributors.", + "Copyright 2008 Google Inc. All rights reserved.", + "Copyright 2015, 2019, 2020 gRPC authors.", + "Copyright 2021-2026 Buf Technologies, Inc.", + "Copyright 2022-2026 The Connect Authors." + ], + "targets": [ + { + "path": "eng/compatibility/foundation-1.0.0-ci.113.1.binpb", + "sha256": "c4a1cbf6201d09ee9f3dbbdf3ef96d8be78bc495755da5ab17496efee46cd558", + "normalization": "raw" + }, + { + "path": "eng/compatibility/public-api-1.0.0-ci.113.1.binpb", + "sha256": "0709b7bc039e2ebff9e6865ff362deb1520bc584384fc832bfea4a16bda9c707", + "normalization": "raw" + } + ], + "disposition": "Improve", + "verification": { + "kind": "byte-match", + "command": "python eng/check_compatibility.py --window", + "expected": "Pinned descriptor hashes equal source.json descriptorSha256 of the actual published 1.0.0-ci.113.1 packages, source b10b2f6. This necessary compatibility fixture is not a repeated publication audit.", + "artifacts": [] + }, + "notice": { + "required": true, + "text": "Selected ArcForges contract bindings are generated from Apache-2.0 schemas using Grpc.Tools 2.84.0, protoc-gen-es 2.15.0 and Connect-Kotlin 0.9.0. Shape validators, domain identity adapters and fixture exports use Apache-2.0 repository tooling. Historical protobuf BSD-3-Clause and applicable generator Apache-2.0 attributions are retained. Build tools are not bundled in client packages. Native-grpc-only Android generation remains retired.", + "files": [ + "LICENSE", + "third-party/protobuf-generator-LICENSE.txt", + "eng/provenance/NOTICE.txt" + ], + "distribution": "source", + "reason": "Historical descriptors are test-only compatibility fixtures; they are not exported as a new production contract or package." + }, + "lifetime": { + "status": "permanent", + "owner": "Licensing and Provenance Owner", + "removalTrigger": null + }, + "generation": { + "generators": [ + { + "repository": "https://github.com/protocolbuffers/protobuf", + "commit": "35cd01f9fe9afbeea38cc7b979a3b6bfcde82c03", + "paths": [ + "src/google/protobuf/compiler/csharp/csharp_generator.cc", + "src/google/protobuf/compiler/java/generator.cc", + "src/google/protobuf/compiler/kotlin/generator.cc" + ], + "spdx": "BSD-3-Clause", + "evidence": [ + { + "path": "src/google/protobuf/compiler/csharp/csharp_generator.cc", + "sha256": "8b1977fc091ca196408fd0b88332fe4457e8bde2b1fc9b92327ca0accbb618b6", + "finding": "The generator file header explicitly declares BSD-3-Clause; generated output retains applicable upstream obligations." + }, + { + "path": "src/google/protobuf/compiler/java/generator.cc", + "sha256": "62d1d34fa2003b460eeb793e5c87f7c9ba3a9ab43a06ba6032c0daacbcc15d7d", + "finding": "The generator file header explicitly declares BSD-3-Clause; generated output retains applicable upstream obligations." + }, + { + "path": "src/google/protobuf/compiler/kotlin/generator.cc", + "sha256": "a73a77ee148d87601686875fa7545e27dfedf2162845bc6b04a5b73a63e1fd57", + "finding": "The generator file header explicitly declares BSD-3-Clause; generated output retains applicable upstream obligations." + }, + { + "path": "LICENSE", + "sha256": "6e5e117324afd944dcf67f36cf329843bc1a92229a8cd9bb573d7a83130fea7d", + "finding": "Full governing BSD-3-Clause terms for these explicitly licensed generator files." + } + ] + } + ], + "inputs": [ + { + "repository": "https://github.com/ArcForges/Contracts", + "commit": "b10b2f6f316bf0c007e00632c5442fc102ebbe6e", + "paths": [ + "public/proto/arcforges/foundation/v1/foundation.proto", + "public/proto/arcforges/hello/v1/hello.proto", + "public/proto/arcforges/publicapi/v1/content.proto" + ], + "spdx": "Apache-2.0", + "evidence": [ + { + "path": "public/proto/arcforges/foundation/v1/foundation.proto", + "sha256": "ceda869bf2998ca4bc21c4b7504c365a4662e7f28183e6db81660592d5bcdb3f", + "finding": "Exact previously published Apache-2.0 schema source." + }, + { + "path": "public/proto/arcforges/hello/v1/hello.proto", + "sha256": "92489f89d1898a3d3bbea56c72116416cd0152ae8866c98745739437020c67d9", + "finding": "Exact previously published Apache-2.0 schema source." + }, + { + "path": "public/proto/arcforges/publicapi/v1/content.proto", + "sha256": "a352f31e0bcee5e5523e59cb6bcfe2af04423e78389c67fc0d8d0ab52f104dee", + "finding": "Exact previously published Apache-2.0 schema source." + } + ] + } + ], + "command": "Restore exact ArcForges.Contracts.PublicApi [1.0.0-ci.113.1] for the offline previous-client harness; retain its and Foundation contracts.binpb as immutable fixtures.", + "outputSpdx": "Apache-2.0" + }, + "review": { + "owner": "Licensing and Provenance Owner", + "reviewer": "w-20260927-platform (file-level licence assessment; independent task review remains required)", + "reviewedOn": "2026-09-27", + "decision": "approved", + "rationale": "Reuse exact first-party Apache-2.0 descriptor bytes from the published baseline required by CON.17. Preserve original generator attribution. No retired contract is reintroduced as a production export.", + "baselineCommit": "a1d2f4bd6ff05f80e86c776ce9f7070729b38898", + "reconciliation": false + }, + "supersedes": null, + "artifactTargets": [] +} diff --git a/eng/provenance/records/con17-semantic-export-r1.json b/eng/provenance/records/con17-semantic-export-r1.json new file mode 100644 index 00000000..624b49c5 --- /dev/null +++ b/eng/provenance/records/con17-semantic-export-r1.json @@ -0,0 +1,2135 @@ +{ + "schemaVersion": 1, + "id": "con17-semantic-export-r1", + "kind": "generated", + "sourceRepository": "https://github.com/ArcForges/Contracts", + "sourceCommit": "a1d2f4bd6ff05f80e86c776ce9f7070729b38898", + "sourcePaths": [ + "eng/contract-packages.json", + "eng/contracts.py", + "eng/generate_fixtures.py", + "fixtures/internal/wp03-00.json", + "fixtures/public/con-17-compat-hash.json", + "fixtures/public/hello.json", + "fixtures/public/wp03-00.json", + "fixtures/public/wp03-01.json", + "fixtures/public/wp03-02.json", + "internal/ai-http/v1/schema.json", + "internal/proto/arcforges/local/chat/v1/chat.proto", + "internal/proto/arcforges/local/platform/v1/platform.proto", + "internal/proto/arcforges/local/sandbox/v1/sandbox.proto", + "internal/proto/arcforges/local/scope/v1/scope.proto", + "internal/proto/arcforges/operator/v1/operator.proto", + "internal/proto/constraints.json", + "public/http/v1/inventory.schema.json", + "public/http/v1/schema.json", + "public/proto/arcforges/events/v1/events.proto", + "public/proto/arcforges/extensions/v1/extensions.proto", + "public/proto/arcforges/foundation/v1/foundation.proto", + "public/proto/arcforges/hello/v1/hello.proto", + "public/proto/arcforges/publicapi/v1/content.proto", + "public/proto/constraints.json", + "public/proto/value-boundaries.json" + ], + "licence": { + "spdx": "Apache-2.0", + "category": "permissive", + "evidence": [ + { + "path": "LICENSE", + "sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30", + "finding": "All selected authored schemas, shape rules, fixtures and orchestration carry the repository Apache-2.0 terms; exact source identities and hashes are bound below." + } + ], + "scope": "WP03.02 adds strict source-generated HTTP-exception JSON codecs, generated per-package service catalogues and the public binary-only transport export to the existing Apache-2.0 package closure. Schemas, generators and independent serialization vectors are Apache-2.0 repository material; third-party generator attribution and immutable prior records remain intact; no external product implementation is imported.", + "copyingPermission": null + }, + "attribution": [ + "Copyright 2026 ArcForges contributors.", + "Copyright 2008 Google Inc. All rights reserved.", + "Copyright 2015, 2019, 2020 gRPC authors.", + "Copyright 2021-2026 Buf Technologies, Inc.", + "Copyright 2022-2026 The Connect Authors." + ], + "targets": [ + { + "path": "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Proto/Operator.cs", + "sha256": "e10c60c0576825a17c26ed03b07bf45ad0e98ca93763a578d3fdd46613938cae", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Shapes/CommitReceipt.g.cs", + "sha256": "6c0a7fa715ffdadacf6b9965458cf464d440f6056e846dc849bd8724169babaa", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Shapes/CommitReceiptValidator.g.cs", + "sha256": "e4e86541abe73dd43e5b2f89558f3730afeeb9797b99582478297f940274848a", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.CloudInternal/Generated/Shapes/ProtoValidation.g.cs", + "sha256": "6b7a4607f79f632e35f27551d4e85134222c4e32eae3a0f67b506aeb157bf919", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/Generated/Proto/Chat.cs", + "sha256": "b7b35fefb991f98913d3f3586c696eb667c727c831f478338886d2f98cb5a6c6", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Chat/Generated/Shapes/ProtoValidation.g.cs", + "sha256": "679c535bc8032fa6cf296fa7b93b338a9a33db8d6e767bf88fd21df981357d8f", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/Generated/Proto/Platform.cs", + "sha256": "22d31db7bb514b215d5aa20e6cd230aed7ede730d303bca9670d90a3f05a56f1", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Platform/Generated/Shapes/ProtoValidation.g.cs", + "sha256": "e891a89ecc2d704d3e4e91b5b2f8c8358f59afd9669bc01eb119b4cb78e6405b", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/Generated/Proto/Sandbox.cs", + "sha256": "bd1bf0afbdc8fe7ef1890e13760705b3713a13b7de0230c01b7b1e43ea0e7269", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Sandbox/Generated/Shapes/ProtoValidation.g.cs", + "sha256": "4e233d99e0cb8ec38a8a1646abf8e491d3920024db4f5c7a389f75874214341a", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/Generated/Proto/Scope.cs", + "sha256": "29352108dd58c65fcd6ae47190a90f92e7ad71a1936a48643752a5dd116b1282", + "normalization": "lf" + }, + { + "path": "src/internal/dotnet/ArcForges.Contracts.LocalRpc.Scope/Generated/Shapes/ProtoValidation.g.cs", + "sha256": "c035add35c4ab044e73a35d79c2175ac06ebd00ed4441e87cf3de448c163ce95", + "normalization": "lf" + }, + { + "path": "src/internal/ts/ai-internal/src/gen/http.ts", + "sha256": "2f77ad4309a03b099db14173dc84ad79c2eb05acc7af908f1bd307c5e1be6094", + "normalization": "lf" + }, + { + "path": "src/internal/ts/ai-internal/src/shapes/gen/CommitReceipt.ts", + "sha256": "242ff9d688b460806ddff00bc3a3371d1160952d04d3dd4ac15292ecc6143401", + "normalization": "lf" + }, + { + "path": "src/internal/ts/operator-client/src/gen/arcforges/operator/v1/operator_pb.ts", + "sha256": "6604d82da2537f469186376f0487e6c7a08152736a2aea0264e4abc21e0acabe", + "normalization": "lf" + }, + { + "path": "src/internal/ts/operator-client/src/index.ts", + "sha256": "d14861c0f7de332e30317a56a5acee58b86a17d7aa55460d1f458f253decd5e4", + "normalization": "lf" + }, + { + "path": "src/internal/ts/operator-client/src/shapes/gen/proto.ts", + "sha256": "4f269c398a54e60946a0192b8c0f3ab529f4373e8f768742ba265654866c4021", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.Events/Generated/Proto/Events.cs", + "sha256": "815584ad9125ce01f187091596b3bab2c6c5388f97fe81310f7b12c7055386e6", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.Foundation/Generated/Proto/Foundation.cs", + "sha256": "18b597b052fe137b5697d9b34cf13f55348d5d0757fff0af3a315be0c3e3fe14", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.Foundation/Generated/Values/Identifiers.g.cs", + "sha256": "e6f061eae9ac6da634f4dc7430e0b8302184e47230ca497e9ab117f5b615b67a", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Proto/Content.cs", + "sha256": "f8d94bd4ad0eab553def1452212db81a498014186cc908dac1c54f5504883722", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Proto/Hello.cs", + "sha256": "009300e6d8a46305d409d7920757347775fcf5dfc8f87ecc729be05d87b917eb", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Proto/HelloGrpc.cs", + "sha256": "92049cb1d4cfc512499e1a3126140b3c6d8aa8f28f6398e6a79588fc352f3c75", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Services/ContractServices.g.cs", + "sha256": "0286d33f4a32db0e111a5394b98b8b8124e03528270bdcf0c053103d27f10f79", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Shapes/PartReceipt.g.cs", + "sha256": "c5fc2e21df017212204fbaf68648d4c8afe7c1fa69d53b29c824c116c21ee808", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.PublicApi/Generated/Values/Identifiers.g.cs", + "sha256": "c91bf74af6a20ae42c1732e149d3619dc16bd1b201cc76860952648136f6c49d", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.Validation/Generated/Shapes/PackageInventoryValidator.g.cs", + "sha256": "9cce0e4b875e6821e6ca5765d240f38539e1bd497f126d9dfb09054bd4870729", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.Validation/Generated/Shapes/PartReceiptValidator.g.cs", + "sha256": "a2ceeb9441b6dc39a8f26ad098ebe4bdcb4a41ba44353a2e5d1e757875c36835", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Contracts.Validation/Generated/Shapes/ProtoValidation.g.cs", + "sha256": "09c11327a9bbc42d8ca166570741cbeaaf37c3e6a0766108324bf6925a1c585f", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Proto/Extensions.cs", + "sha256": "79e3c1de76e534df603d721b9da1a8cdcb0f8b4737d4c776b469d90c2937c447", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Proto/ExtensionsGrpc.cs", + "sha256": "b9d73d5c8d06bebfdb00a3fc52ec7abf9c809700e32207240ee552fcc917473c", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Services/ContractServices.g.cs", + "sha256": "f00b657422ef45db617c4c89e55bd129392d0602be82ba102b344b96a2fb1722", + "normalization": "lf" + }, + { + "path": "src/public/dotnet/ArcForges.Sdk.Contracts/Generated/Shapes/PackageInventory.g.cs", + "sha256": "cd91500d2f6870fffa11b0d3eef53d886664f77825c054706d00daf5eabab307", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-connect-client/generated/kotlin/io/github/arcforges/contracts/hello/v1/HelloServiceClient.kt", + "sha256": "990b77a0d1e1bc844355b1fe19914187660f842b175d29cb26b4f5fd3e6559a4", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-connect-client/generated/kotlin/io/github/arcforges/contracts/hello/v1/HelloServiceClientInterface.kt", + "sha256": "32b55e844500d7d6ac0c081b4c3d50cb4feaaefe5b24bcba708d7e515d1f8e3b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/events/v1/EntitlementChanged.java", + "sha256": "f1651ea86a69749686de5335406129bfe778f22ecf1d821be96d613f0299cd39", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/events/v1/EntitlementChangedOrBuilder.java", + "sha256": "dea61b2cfc0d3673b1aa8d8613e9e5cac5b02f8f99de3752dbf8b08323574462", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/events/v1/EventsProto.java", + "sha256": "ce385ae3f764756fa5e367a623e084c348b7b25fc897f3c0b765047e6235f84d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ActorChain.java", + "sha256": "e469988ffa939f3aa1f2d18a80adda608a8ecfaa1458ded2d5e94b2b111f36e3", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ActorChainOrBuilder.java", + "sha256": "27ee3db37561bd24bde2f7065994e0719f50abfb7f7b1f55c5ce3e0dc4d7e804", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/AggregateRef.java", + "sha256": "5ca342085c648d5f40ca93b88050d0737fd0b23f383aefb9f37368fd5d47435b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/AggregateRefOrBuilder.java", + "sha256": "8640d078901a3044196b0f3c72134d0c01977ecd4c9e95afe9fea8dd4ee774b8", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ApplicationScope.java", + "sha256": "481bd89784c1d1d9f7210f7fad6f2d9ea3f8e4589dcdf72e5592ec26d968f74a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ApplicationScopeOrBuilder.java", + "sha256": "1d78b93c6e9aabbd193908dac46d593985791eb722a871e8c66d0135f84e2a47", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArcError.java", + "sha256": "41759ab06da5ab491b416a6ace4aba5ca6de5fcbbe7022ad9882435e4940a048", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArcErrorOrBuilder.java", + "sha256": "05155dd38fbd28b86ffe308c64a35e2666efac2f89bdc8bd7fb8368b49c6b418", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArtifactRef.java", + "sha256": "67528ef961578e39ae2b2a3b4cda38e7d4fc82c7855899b309e8268b25d29b1e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ArtifactRefOrBuilder.java", + "sha256": "3b1340e36c03338262017f58ef90a8006c02329c36479b94cb56df9632bc3b5a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/BlobRef.java", + "sha256": "0cbcf0cbe1dc6786526d507d3815524717d2e5b20b75b344d999f046034c6aba", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/BlobRefOrBuilder.java", + "sha256": "9a034ce665fa5c9e108fc504e1f6cd49118a8f26ef0f02115d99c881bde41489", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ByteRange.java", + "sha256": "7608e9bbc381130b4a18724af275e42080c634055da9ea60a8f355a1160a34f7", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ByteRangeOrBuilder.java", + "sha256": "a0f7a8d63f8faa1e380722723d9da5759866ac328f311fbb77b200a582aaa131", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ContentOrigin.java", + "sha256": "3235ca65c876e126f5b9e52bcfb972581d05aa5a3d5015508f4a175d6731540d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ContentOriginOrBuilder.java", + "sha256": "7c5b1f100f8940d8a97b753cf2e423adfb252469ac53b5638c664c4104504e4e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Decimal.java", + "sha256": "4eba90670dd1c6051863350f06b5a2eaf53a0c7cd031ff264877580f43516ab0", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/DecimalOrBuilder.java", + "sha256": "ecff746cee89e091fcfa49904934028b0909b0b3098a1d8151a710fdce959e03", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/EffectCertainty.java", + "sha256": "79732345b9d39a7f475211e1362b9b73d5577ace596d2537ef66e35e391004d8", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ErrorCategory.java", + "sha256": "c7af39da9a6d8ab7a9f037f069c39706182895b78c05fa2aa13ed80cfa04dd58", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ErrorDetails.java", + "sha256": "4094df41b5c5a9612539122f50ce6b71ca109b06ca7b8362b59cc9da5a64867e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ErrorDetailsOrBuilder.java", + "sha256": "c85f989bb88ad6c42d2c7981114180fc9aabd2fd97858341f2ce8a577a6d0775", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/FoundationProto.java", + "sha256": "e00379ac4af65db8d9c581c72330a259b88c5b5918ce6a7f684f479072171f99", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Id.java", + "sha256": "a0c4a9fba689e8b3a0f17a7fc8e2afa3cd965e990ffe009791bdf50cc639c061", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/IdOrBuilder.java", + "sha256": "839b166873748b95e746b2938e031749812f10afebe41a59ac43b666465bab51", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Instant.java", + "sha256": "ab1ec79114ddaf1d503bc0ab6eccf16ba0a9916e05865139f6ca473c5787fb57", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/InstantOrBuilder.java", + "sha256": "f8994f6c9e50dc3f296220ab642129492af13709205a92b0af8cc72e3401e86f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/LimitFailure.java", + "sha256": "1b12ac7d877839075996ee93fa63f22588c86019cd147529da9257ffb11e6d64", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/LimitFailureOrBuilder.java", + "sha256": "3c6ca262f7f015d52ad31b4fb918f41e9b63fc62baea44eb504302c4191ad87b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaRange.java", + "sha256": "9d502ad73d2b3d2a5370dd666356b545d5ffa4bd7a9b3b51edb404dfffe3ba27", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaRangeOrBuilder.java", + "sha256": "10290d6bb2d15157ec0cd2039d7db54d275af7080eb2b8d4950834d5f1d26595", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaTime.java", + "sha256": "d435b376d958f5ed185185e3867c8422b40cfc84d28ee8ed5533261dd524b007", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/MediaTimeOrBuilder.java", + "sha256": "79b45f62a50328c2aa6b231292438876eab786d246180c7c1a90a281a3c94010", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/NativeContentRev.java", + "sha256": "c50f0c212062994f1bcf13e8dfbe5158c2042a6b40b448cf24f78925957aaf46", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/NativeContentRevOrBuilder.java", + "sha256": "cd9f37449419231ea74962f0e87b0df3458c1a520120e8f50c3bad58234e7700", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageRequest.java", + "sha256": "547c55d0c15b5912c007c1318e9d153f597cd13b91ec3d37d07391fdc3132949", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageRequestOrBuilder.java", + "sha256": "ebd571a75c75c60abacfb21b08eb1f4e7f214717d2c220d9ce092a56b1b96c45", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageState.java", + "sha256": "a9f64ae3cfae9e047f2f37b3379a3f1c9dc27c86a31e2ced057028ef3c7771a5", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/PageStateOrBuilder.java", + "sha256": "068c10fb39683f3937ca37c6f8f0a88a7d29b5fb387600735ed03206a7b8f73a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Rational.java", + "sha256": "e8ca5c051f81ec463c1ae55827c7dfc36e0e146c25af06bd5140f46692f65a24", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RationalOrBuilder.java", + "sha256": "8c681cd83328d0412ad93314ff3cb1bcb0e5d2f891b70860eb1a165e90765ea0", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Receipt.java", + "sha256": "836a380ff454c9c841177765edce4890045af2d9812041d24a15f60d87c1dfe4", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ReceiptOrBuilder.java", + "sha256": "44ca675570ae903e704d4dba0fc65581479b02613a607f986dcc4a36d9018d1a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RequestMeta.java", + "sha256": "4baf3c9ecbd379ce3855e9e8ea52ae39d9b4bad81afcce5dea93cf4e4918a091", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RequestMetaOrBuilder.java", + "sha256": "df735bed58347a0deeff8aa29fabc1fc8c7736cd112944f2e4dd3726fe6e388c", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceAvailability.java", + "sha256": "e91b649ba8ad7aceb5ce0d2c9248c8e2a2e6007f048361c509838d845d0a7e28", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceRef.java", + "sha256": "415d760b39c7dea45cb8703660a9222564ff2c6fa95d1fcde65cdb79d1d7f27d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceRefOrBuilder.java", + "sha256": "b5ca0f32ba2275d6fd3e173810692e0f75b1118dd137fd49564010e2015ef414", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceVersionRef.java", + "sha256": "a64da7611f128bae3fc327c9efa362e9ff9cbe1748282c702b67bd69d8374458", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResourceVersionRefOrBuilder.java", + "sha256": "47073dc4380c3629728046915970673c8afeea8e8cd8a9262db890f2ab2b913e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResponseMeta.java", + "sha256": "0a2cad41082005ab6e4715bc8f679836c7b55275154a04cd8856f428dd5be66b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/ResponseMetaOrBuilder.java", + "sha256": "2b57501e9693bf8226c5b5d27d70232eef49e182a0c083a9b55a95581bd61e70", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RetryAdvice.java", + "sha256": "02c57b0de06c99bbbd865330501791ee976fefdf204129076b25a85406b22e7e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RetryAdviceOrBuilder.java", + "sha256": "62979680ee33448777aa4feca8559989e19a408ec1dd1552584ff749564ba733", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RetryMode.java", + "sha256": "0300c1d54f3d2070b3ed70a61e8011c412472708b8a2bdc56b75e14cd797a419", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/Revision.java", + "sha256": "b4b7f7a66efd15356900fcf0342e686c7ece2e60903f71dd41b91a4b5a91e112", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RevisionConflict.java", + "sha256": "f4949bcb85e1864efec2a48f571b6e1716e59a5afe1de519eda24163af8a0a22", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RevisionConflictOrBuilder.java", + "sha256": "009d3940c3f35f237fa8651aaf16c1430a5d76aea4079004334e8755ada79848", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/RevisionOrBuilder.java", + "sha256": "449a11473d7ee235d5b1e80df6b06a43786d8d2d6c897ec87560984085c2dff8", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/StateFailure.java", + "sha256": "bdfc17f0004c2525afa00e838352c3b4742501d5203a1acd3b9edf84ea55466c", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/StateFailureOrBuilder.java", + "sha256": "4945371fc2f6c339117c3c1fd4fdf6bdde706544ce98aa3afa8dc3d6c7ed4d9c", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/TimeRangeUtc.java", + "sha256": "9ed1a8a181467a9a04cbe9b8fe3a7f79b7c297f9a834e4f3a46c107d6e831524", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/TimeRangeUtcOrBuilder.java", + "sha256": "ea8ac9d5a42e5492b674ef54341772f4da54b4f6c77c77236ce1958c1026ed21", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionFailure.java", + "sha256": "3862a2be735400af87a8aa57cde56572074b17d41b183f65315709fe58c30114", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionFailureOrBuilder.java", + "sha256": "657056a0bc0688efae70618ba0a541f0fd65782da26b597eb2b8700ce045192f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionedRef.java", + "sha256": "3131061fa28e11f5494dff299b495e81ead0906695b117d55bfbe51856fdca75", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/foundation/v1/VersionedRefOrBuilder.java", + "sha256": "1bbe39ad30027c20fcf206af6c9482802c9bc96adac899f83e6e2b9ba1b72465", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/HelloProto.java", + "sha256": "53954801755cd825c80fa9b2721f4eef714287f4c428cdb574b4c81b90e25686", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloRequest.java", + "sha256": "d7084f9c9349faeb2b9a516d740a1f45ead6da42cefe9094b479674071e91a4d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloRequestOrBuilder.java", + "sha256": "6cce3dca4baf6a40e288fa301f802205f987254448277e54b45e0ec8ec94c35e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloResponse.java", + "sha256": "31eccd856428b5b95e2e68219d5bb90f742e3c3e83322eaaea6313437131b57b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/hello/v1/SayHelloResponseOrBuilder.java", + "sha256": "d5d83d2a9dc95bbf4013b49f473d69c0f132591fbcf9d9eba6e1cb7b8223a956", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AgentProfile.java", + "sha256": "6c5a200412c2221952c4dc4bed4bfbd716c8ce924d543ccb6a2321ffd98f1cc2", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AgentProfileOrBuilder.java", + "sha256": "56a666b79f43bc23e9aefb7b9dcc025dbb9e601d2f81e1988b92de65277a647b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AggregateBody.java", + "sha256": "2918bd401c3200e079e8bf113768d920287e72243c37a0e8d0febe6c04f0192f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AggregateBodyOrBuilder.java", + "sha256": "897a610217c8da043e09fa6778e485db814900e3ccd6d747062c98ddfa1f2839", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AlignmentSpec.java", + "sha256": "681dc595dc5feb2d9a3aab1d1e738d861168097bca5983d671ce4ba2b3e1132e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AlignmentSpecOrBuilder.java", + "sha256": "eca61ae005d19e0b77654a34f166bae9a652e762b7790e14c8c369aaf1023c75", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationSpec.java", + "sha256": "b89bd1ab08c23862eac81751628cd67b2ae59ecf44c012512503a8cadea1ab39", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationSpecOrBuilder.java", + "sha256": "abd26578b358521088c1928a23cb9771943737ee97e517f4de416e10cb49874d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationView.java", + "sha256": "d20c348e1c6e9c146ea8a73028640d6cac95bc4dff8efe96c77df778d4dd934a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/AutomationViewOrBuilder.java", + "sha256": "beb0ecf4e6856c03fdee1769234ef3eeecfdf7236d274b9d03a6b886a0ea79fe", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/Calibration.java", + "sha256": "c373ba330f148946842e06727f2f6cdbef57699f4be474a1b3621e29f59c631c", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CalibrationOrBuilder.java", + "sha256": "a27c61d714eefe68312afc4d6111862a45ed333830463511a9489936376bc775", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityArguments.java", + "sha256": "366d2973666df1491fd086cb7dc4b84aad0afabda3a2243a282e643761c46438", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityArgumentsOrBuilder.java", + "sha256": "d651682cf61b03876506cf609c79d76dc7091ccbf309c7c66de45f5ce1ca3254", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityResult.java", + "sha256": "42e926ffbe3323ec9cff9f4cd6e9c14fec4bcba252fe3f4302fd4c73c97c86c2", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CapabilityResultOrBuilder.java", + "sha256": "80731a1304a4d612dc2d9feac100b45b11ea416bfe439dbe2ca8a2a32f99226f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CaptureMetadata.java", + "sha256": "3a0a2ca7fddfff710335c8e9599c202c09c12c42677d3976845e6444a404a82b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CaptureMetadataOrBuilder.java", + "sha256": "ef5dc9a1f829d0baa7d0198de42f20129547ab6884ad1b085a21bc750cbb3ba1", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChannelDefinition.java", + "sha256": "a426d1c429b9228c9fce8eea8bc2aed5270e9e24f209559fa062b2b6aecd33be", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChannelDefinitionOrBuilder.java", + "sha256": "ea991359f3eb142d40597d5e4c3513cc57fc51ac30083333a34030138c9e1de1", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChatProjectRecord.java", + "sha256": "7660938af7164105e904179fe2a4c712bb727ccb3c0bf0f96516b94fa96df59d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChatProjectRecordOrBuilder.java", + "sha256": "5b3a7228c53126baba33c4efa00ad26331c4ace0f6eb504ad84a5942903db139", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChecksumSpec.java", + "sha256": "3d4bea904bd99ff8c19e7a1374fab017a6781bca776ebff9e22f056af7d45f32", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ChecksumSpecOrBuilder.java", + "sha256": "70e5c9d396a6db567c0d0cb290b2cb0f94b3b3d17efd2af3452d6b7093c30564", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContentProto.java", + "sha256": "05d2fc1232adbbb2e7b5d1da5f355f95c8fdede972e3050bd9ad620e8c0e5edb", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextLifetime.java", + "sha256": "aa7793144a7a102ffc5088c1d3012cc738232b75c7f36d239ecdf65f27d0545b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextRef.java", + "sha256": "b4da6836dd2fb166f27b1f0e3bafe23c37341cc38f3bd2f7a55c95331c3cc3a9", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextRefOrBuilder.java", + "sha256": "ffdc79d955b7599fde79a9ed9f8011ac1925f6b3556c1c7f68fa418346cf28e8", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextSelector.java", + "sha256": "fcaaa050cf67287303e745efe65bdef8c7bc8c1bb23fc01d774eff5baeb66929", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ContextSelectorOrBuilder.java", + "sha256": "1b0b5090c0d0c53ec409abd582a3e1916d5453524c2ae106b6fa7441811b3a7b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlKind.java", + "sha256": "19bd19e78fd90d74a8de8373c81f871473623859088526c389a5235fa45cc2f5", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlProgress.java", + "sha256": "f9f98fa2b2bf3067b4bb1a1cbcfa43eec15f7113d274955bcdc1e6175022c185", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlProgressOrBuilder.java", + "sha256": "85b3cb0f7dba508c4c4004a0221320178c38414f6841ce9ed0f6844d24f21d0b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ControlState.java", + "sha256": "1465f0a26d098d1a62654f12202cd6609a6ca3e6fef4f18a7fe8d4a258bc95ab", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationBody.java", + "sha256": "cc6b723a8f729c52c4ab50a49144e647f4bf1daf1a20c9691fd6be3f01dffd44", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationBodyOrBuilder.java", + "sha256": "f600709e2deacfc55bc6896298c2a7f63d406eef8a0003d82b730aedf99c17a1", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationView.java", + "sha256": "caa9b7ca8f49bbb56683da3416b344ca9daef024f8ca1a5681bfa2707edf34ac", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ConversationViewOrBuilder.java", + "sha256": "ff1271087da4a523eddb08bb187d57abe37fa8741d3c5f27b917306b793935aa", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorResult.java", + "sha256": "bb11a128308b416b2fe479c42e0f08097dfcdb71c1d341036a63235d2ece379d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorResultOrBuilder.java", + "sha256": "199eae9379316f7146b1f31065e8022cd6dd651afb9fee96147e5b43ab2fd6eb", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorSpec.java", + "sha256": "353cf3957c459b3f083f682e0f0315f5385df9d4c022485afe64c900934148a9", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/CursorSpecOrBuilder.java", + "sha256": "72248ce898838227189d6c5e49796d379bb14b192054665c6b583e20df69c0b9", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EphemeralSelection.java", + "sha256": "e311bd98eca273ffb5c8bb19c69ef9d770a94f215bfe85456d3303363d74a363", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EphemeralSelectionOrBuilder.java", + "sha256": "1bda926285d7f2f4330de7a470727d6115d6638e522d4252db2a5e0d06873b33", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EventTrigger.java", + "sha256": "e88ab3efb629125dbb678161b15b225e919ec935e01bf3104df846cb1f9e3ef7", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/EventTriggerOrBuilder.java", + "sha256": "f4a23bd9525047e342e7eb329ac9508d0627f5c5ce52adb0c52a10496293a114", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FamilyResult.java", + "sha256": "baa83b1dc6b7c971fc2e93b8e9a1c165c14570a1be60b6a1dd24367a2450ea65", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FamilyResultOrBuilder.java", + "sha256": "56aa700113b85090ac923d7fb0a52934142bb4d119c5ec744b83c071ca0e837e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameConfiguration.java", + "sha256": "7e00f0ae09bddf16d33f5656a1a439cec531cdc9474e88986557e36c4ab056c2", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameConfigurationOrBuilder.java", + "sha256": "a3eadd5679e5d7b3317c202fd9bd5735b5422b390b700d063473acb476f690cf", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameField.java", + "sha256": "a503bf1d8d74199794fe358672e8232fcd7cc8d5ed2909027135f2b8e98e9dbb", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/FrameFieldOrBuilder.java", + "sha256": "987984f7bc20dfe0cc4bde6fda5dbc63cb74be65bb86abd60f1634bceca8ae4e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/HistoryMode.java", + "sha256": "bd24d3ae2ec35cc489302cd6ba3c49e98956928f72e88c4d0ae756f060de34b9", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementRequest.java", + "sha256": "84655299b94397a2115dd9b9c48c0207495a72f086c1ef4f04dcd9f6df6d4d8c", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementRequestOrBuilder.java", + "sha256": "cb691f8647a2441740cd198527a5dcf8609db6b6bdc8e4bc04ddf2454d463bf0", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementResult.java", + "sha256": "5b431b2b354aa603137aed48ff1f725533415eba8c474a3b9191092ae2e67118", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementResultOrBuilder.java", + "sha256": "254a6d3753ef212e62294e230f0f100b18e6543c90fcd9fa6bf38fb040c6d05d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementSource.java", + "sha256": "ff6f9d903a9ca8cce284942c853d33960a5013299410a07a6abccbc769507a93", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementSourceOrBuilder.java", + "sha256": "162e708f08303c7555b2a04f03575e3e98380b977d8ed3ee86cb232da0d37f13", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementThreshold.java", + "sha256": "881778cece316252aba2b1bf8bdf49820b5dc21c3908169a527196f753174eeb", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementThresholdOrBuilder.java", + "sha256": "33efe04987201993d70743c6812071b06018de3dd47d588278b71d452a8aa19a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementValue.java", + "sha256": "841c51101eb558cf7dcb59bfcb617d46dfe4838a812b1006b9eda5c2362ee6f2", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementValueOrBuilder.java", + "sha256": "37a6614ffd61ad53a7b5c7b1a3b66bc7069e322ff62b61662a27581384055497", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementWindow.java", + "sha256": "d04b7b01a20d9fd7a4c4e33c7aad4e80ce7fad3bb5227b62a1c98cc9d1590622", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MeasurementWindowOrBuilder.java", + "sha256": "c97834765fdf6abd635a7208437cdf06b72c67062e06b8f6ea98001d0f0f5577", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MemoryRecord.java", + "sha256": "12dd63d1e8cd677b2857b037c9a10021553888536ae0ca92c35192001c6cec6e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MemoryRecordOrBuilder.java", + "sha256": "1c49b04ca8a9fa876a4acfadf1b8dda56cb522d93f4345bc92718902105491ca", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageDraft.java", + "sha256": "70fa3fce03462200d77ddeadae654164e88a4485910956c729167c7072e909b5", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageDraftOrBuilder.java", + "sha256": "cbec6bca6a19c737a9d4d11d4ab25147417b4871410fa7f5701f1ee47687badd", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessagePart.java", + "sha256": "22969a1f2dbb3faaec441a66f0f759c4b70c50d852ec14de7cb592ec225490fb", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessagePartOrBuilder.java", + "sha256": "232944fe7fb1451e59c418099941c95cc06f1edd3c3aeacaaa4aa104d4fbaac6", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageView.java", + "sha256": "f192d72bc4b8ca50435d0c14e1305f0b9bce338cc1bf9ee9adc9f57f5aa35b6d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MessageViewOrBuilder.java", + "sha256": "8f8cc08e6e2c25b0cb6809d093101d4a188e107bf7698b3e3bec832c60bcbfb6", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataEntry.java", + "sha256": "722550840611e160cad9a38938d3cabddbc9f7de785af4d7df316471b368cb8d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataEntryOrBuilder.java", + "sha256": "df6ec79177921af9703d5f4fc643445a3c01ab00298320133bd215cfbae7e382", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataScalar.java", + "sha256": "1784529094d66632e5d26dc0506cd60213aabb65194d3baef6798873af91e84b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/MetadataScalarOrBuilder.java", + "sha256": "56b772e4cdff51e338dbf2848954e56e39b97aa4fbdafbc4c37ad20e2f70aebf", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/PreferenceRecord.java", + "sha256": "67b3c1a2a2172f924add313697a2cff7d2b2bc17f74c1294e6a8d974e3c00ada", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/PreferenceRecordOrBuilder.java", + "sha256": "5744c169e656b06609841912feda5516fdc4ab0924faaab625fa7f348786cddd", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SampleRange.java", + "sha256": "78ca7ac2271801db44e02d9e64eceb18e7954cf9137d329f35585186286ca72e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SampleRangeOrBuilder.java", + "sha256": "71f89649b45b1c2a514efc1c37db953442e31e8b11b3060d992cadd8a3e0694a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScheduleSpec.java", + "sha256": "ea7c9803991d9df2bdd781fac60b6e2c78c3bd68a53f429e1cc6241929a7dc9f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScheduleSpecOrBuilder.java", + "sha256": "378df50600f9afad98491ffc898dc0c69ff6dbbda162c72e69b72a6a4d9403a8", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeAnnotation.java", + "sha256": "13dc126f49f1f349abc80b02fadd34d7a5ebccd1742727c1a8fbb9eecd16f8cc", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeAnnotationOrBuilder.java", + "sha256": "31187d8bfe0af4044f735e3519d64da9d72107900e406a11c229e9c8c3038261", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeConfiguration.java", + "sha256": "764a098e051af81bf781a5dca5907adceb54b7c2edc34cff20daf50304c1985a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeConfigurationOrBuilder.java", + "sha256": "f1c103c72f9e3ed29d417c192648b62ce306745a6285bebfdfcb128b5eaefe9f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeFinding.java", + "sha256": "717b3d451cad02ec2e5943ac6ab6027012374c0521a45acb4a69e7c71005dc57", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeFindingOrBuilder.java", + "sha256": "16f56bdcc74eaab45dd75b9b9778019d9fdce7fcc02256f81cba5c142ff97459", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeMetadata.java", + "sha256": "71cec151edadf9fcc82878351e1b34b8f3648fcc47525aa144f0ecdb3a5169eb", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeMetadataOrBuilder.java", + "sha256": "1b3bbbc616e7f9ea4a01ccdeeecf088fea58e878f8bf7e62c12f40de0e961c2e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeSelection.java", + "sha256": "77d5dbd8a1722c25c360a2c553de4af3962916abaf56c25c0ed546efd091e1a6", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeSelectionOrBuilder.java", + "sha256": "4786ea9486db7185926bb105ae64b74746be9e42b7aa7343d3e825fc3e4bd73d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeTime.java", + "sha256": "81e3658b672ca3b9a3a0aabce3cfd3ed2d836eff1af1be44e496a18836e3073e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ScopeTimeOrBuilder.java", + "sha256": "52522e8c2416be6aba05c31a4ca765ae22f9909a7406886089282874af8c4947", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SelectedSample.java", + "sha256": "5911debda85c7a210f35cfeace3505c6dd14c2d20ba4a0b0bf202e9198e7b948", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SelectedSampleOrBuilder.java", + "sha256": "3b0ce49c8562def6189bdb32cc7123759c359ebf323f34b07967396200936e02", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SkillRecord.java", + "sha256": "cdf2a799f3ce504e7807f07412ef6ab75b0cf5f46d9d585336d68e91ce8a8b78", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SkillRecordOrBuilder.java", + "sha256": "898a0b972f03b0859674aeec1d120baae7e00da1c973580857c3c21499ac17b0", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SourceConsentRef.java", + "sha256": "fefa583c17dff08853ba02b9b888551d39967b2aba005e89844d575bf932e8a3", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/SourceConsentRefOrBuilder.java", + "sha256": "fc7beeaefdd0adae48c880d4016b8193c3b42323cd446cdf8c5308011419348b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/StructuredValue.java", + "sha256": "1598fd9c24570330967d8e4f6c7d86fa66ccfc36ae61fd179f72fb054246695a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/StructuredValueOrBuilder.java", + "sha256": "16c306202c2bd783be4f15eeffee96bf804d0c25374c04c6a24abdfd2fbc5231", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskReasonFacet.java", + "sha256": "5925128cc65285cdaea3369eb57476afe7295fdba16e361b46e5afc35c1ef576", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskSnapshot.java", + "sha256": "c59e19ad31b2f1ec8027c8d2e4abad00e8cdfcae59b9cdccbdafa98a5662239b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskSnapshotOrBuilder.java", + "sha256": "539a994cb000c294238e6df269e711c7d2efa74343f1456d7663844d7d76aec9", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TaskState.java", + "sha256": "2718775583ebfea0f02dc1df842c87defe66d99351032b5f31a941dcf0d6a940", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolProposal.java", + "sha256": "3008ac9bc2a7ff6e36b2af432ed53461139bc2b80470221b5051f8a3c0c6f55e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolProposalOrBuilder.java", + "sha256": "e376ad7ee324dce7701c86340860689d5ce74b9e074c6dfaf12f5c4ea4c218d5", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolResult.java", + "sha256": "37792e082e2730e772a5e363ac66b4442e80b5092f9e28dbb58df28d8d5b422b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ToolResultOrBuilder.java", + "sha256": "cf899b74f43bad27a32603b4e109e11eb29cf475804783991f298b5473ec11e4", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerConfiguration.java", + "sha256": "5e3a64ba71637b16c2ca58bd7190c8e8118d4208c760727ad1a4ba465141e9ef", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerConfigurationOrBuilder.java", + "sha256": "5433df54397acd1b04df9c53df123910ced0e3e2366d811444b49c9865afd67f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerSpec.java", + "sha256": "5a4eaa0f0438f34953f473b8b1eb21ecd8b025aac193f138ee3cc48880e73ce0", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TriggerSpecOrBuilder.java", + "sha256": "23bf2bce69ae18aacbbf084635000d312139b25cb6da60972066f1ada0ee4d7e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TurnInput.java", + "sha256": "570bb78840b6a574ed74393f4300901d893dc79ca729b1e4f3d81fc2f06610fb", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/TurnInputOrBuilder.java", + "sha256": "95aaa4b1ee6276e4acc9bcc73a6d13da038a7bff716af146518a305c6bf5a110", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueEntry.java", + "sha256": "4dc27078be567ce0acd9729fc10c52dbd72b035ef3d0934835c4bf589344c260", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueEntryOrBuilder.java", + "sha256": "8ff7824c50b36c39545abb862a7e192ce30e0995b8e3378cd68e92984d8572d3", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueList.java", + "sha256": "3e5034cc4ca73b0c9e2a1280d52a44909390ab3ed9891d15a2fbeefe64faf7d6", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueListOrBuilder.java", + "sha256": "13d1ee3ba096b3e61d5380f115fe07ce29fabd8ef863b3f03dd3e606b53ffa32", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueRecord.java", + "sha256": "e7994e41fc04e26611615bed87d77d5fbe7a14b9330a69eb5620e6baa61a3de2", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/java/io/github/arcforges/contracts/publicapi/v1/ValueRecordOrBuilder.java", + "sha256": "77c14356c5d38cc595ec458b5840285968c8d5af2cbba7860eaedeb1d666c78c", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/events/v1/EntitlementChangedKt.kt", + "sha256": "fe8ebfcc9648408fe502f08a8a2723dc5a437b126f9676b2922bf7fa2a31b528", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/events/v1/EventsProtoKt.proto.kt", + "sha256": "1db62e96f448dac65b8d49a99349a065f5ff7feff0a1bac7a6e8071172a67658", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ActorChainKt.kt", + "sha256": "4cf8082790f9e6458ab3fe712e7d872fcb5862e76ce6de40bac461a70dac59c5", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/AggregateRefKt.kt", + "sha256": "b311238a98caabb19dcd929ca76242c73311cd5084866ebd8d90d01099b7fdf1", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ApplicationScopeKt.kt", + "sha256": "83d0e34721e59593a62e34285ee0dbd6415e8d7288d600d4edaa759a3a349ce8", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ArcErrorKt.kt", + "sha256": "32b965355b0ecaff8c70a36d7cd79864c0d00bd180fcbec31750649a225025a1", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ArtifactRefKt.kt", + "sha256": "c15a3a3b8abe4a809cfc0b54fb77d4052b427c0b6a633576109feeb1775d4a80", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/BlobRefKt.kt", + "sha256": "78180dec46322b0985a659b735f0036024fdcba5d8641de6277906d76052dcd5", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ByteRangeKt.kt", + "sha256": "672cc25a376834bee0d7eb8b1895cee8f0c2f348d51fc61a4f54399d86100895", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ContentOriginKt.kt", + "sha256": "94a920442d04ddc090de59c152eda17b00228ac3ca2cf96c91eea686bb280875", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/DecimalKt.kt", + "sha256": "d257c9fce9193ea989b057d90f8cd7ead5d8887e3c2245bfe1f7258b860d6033", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ErrorDetailsKt.kt", + "sha256": "c1f0385e384567dafb6211f9fdb9daca78ee9ba14daa3b917595d3d5a2e8082e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/FoundationProtoKt.proto.kt", + "sha256": "99f4e6e3daaac7ced2a1dd41c62fc87cbeba6b19cf7557f181703dfbde444565", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/IdKt.kt", + "sha256": "a82bdcef00c1697afb7f12696def78a30cd281cfd09e3742b9fb08ad65d25410", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/InstantKt.kt", + "sha256": "02ae32542532961606cdeb3773376eadfa13e67367201d3d875775dcb74fc9da", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/LimitFailureKt.kt", + "sha256": "490c1e2fc02a81e1cc35267be5d0925d870bb3a2ce0971a945a0631e003fd939", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/MediaRangeKt.kt", + "sha256": "ec8248c594c6b45b3f058ae895a15c62b0498206e106c01975320a644537b59d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/MediaTimeKt.kt", + "sha256": "30b76504b38d4b0edc1ce21e525e37d63dbf514f4e01052ae60666056faf9165", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/NativeContentRevKt.kt", + "sha256": "b34322ae96a82e5e39a48273cd92d560d322e5c1b3320c9c3f309482f211724a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/PageRequestKt.kt", + "sha256": "af86715ef3ecc7a790537f9930ba69111913988d32f9c759ddd0c0d827656d94", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/PageStateKt.kt", + "sha256": "1bc0e2278cba2bdf672114f3d5a5562b888878568c173f452ada5aa7960117a4", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RationalKt.kt", + "sha256": "d221fef6f61e51403a376e9b66a621528e0fbab2086733cf7e3e505a82f4f353", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ReceiptKt.kt", + "sha256": "633d2f2e253c9eee040025f35b5d06147d595ed90447a9ccb680830faeef7382", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RequestMetaKt.kt", + "sha256": "5e61c64d69c20f776c41272f2ac1c174b715c9a6e8dd34f1ba0847f060391dce", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ResourceRefKt.kt", + "sha256": "d7b2b7a44172b04b4b8e6998086230beeb2745351c3ca130e0d87fb1165df3e8", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ResourceVersionRefKt.kt", + "sha256": "e8cc5081cbe8fb0a33a5f5cd91ce498aeaea696866c0b6bb8ac3855c44077a57", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/ResponseMetaKt.kt", + "sha256": "f8f499884810b908ab71f70f87ea43bcd2579e6a4b6a230f6c7b8aa5f66d3333", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RetryAdviceKt.kt", + "sha256": "8bca147f4687902ac98b545e083cf6718ad802d35558cbd195aa71089d9db283", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RevisionConflictKt.kt", + "sha256": "bff06769af5625833a81e9f3f1e3d42ab6c7eb1b7440f924e5f801f963a3b86e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/RevisionKt.kt", + "sha256": "9b6c2f4d01c669ce8283226eb31f3ea0edfaece14162d1fee79d6b525133cb83", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/StateFailureKt.kt", + "sha256": "c19c377c9f4f17d7e0f32cd072ba60c1107712186f1368c688fdf848c2370da6", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/TimeRangeUtcKt.kt", + "sha256": "3fcf36c235d663bfb6844177946556a17a3faf2ecb8d25e37b4198d0a987f9b6", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/VersionFailureKt.kt", + "sha256": "386340e2635090263d6dacda90bfe8334a923f2eb6a745d3d86bd39d54d867c1", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/foundation/v1/VersionedRefKt.kt", + "sha256": "5cfa97b24ceb9d067fbd6781f398e3c48d075ea0dd25dc4f12ff1956bf550e09", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/hello/v1/HelloProtoKt.proto.kt", + "sha256": "858ffdee11fcb438e594b231a8c5870add28da12f0004e25202e579aae34651a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/hello/v1/SayHelloRequestKt.kt", + "sha256": "6592591e75b92d28cdadd8d5bce7713b9128fe02283bed2f4f1c756eb39a0ddb", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/hello/v1/SayHelloResponseKt.kt", + "sha256": "fb82759414a4817fb9a932eb6e7a57edd602af796f75ab125c6f986eff546397", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AgentProfileKt.kt", + "sha256": "a45eb550798e3843485b17ae17d6ac7659533749804f089221c0c3afb379ce30", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AggregateBodyKt.kt", + "sha256": "69b777adcf39f8b27530597ac02f54be9ae051d6f5ec37fba9b2bad7a0d1b563", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AlignmentSpecKt.kt", + "sha256": "d7f3625bb5edf73dd6d4cc35237aa291225c7a9c8b1a118ac4543dadc1ec6b21", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AutomationSpecKt.kt", + "sha256": "87262a7c66542d7e201db95234b5eefe873cf589824988ca8c2703562b4fe77c", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/AutomationViewKt.kt", + "sha256": "42ca16cc55aab8c19f2d1f4746109ac61a2c4f154ca6ea31fd2520ea38fa6ff4", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CalibrationKt.kt", + "sha256": "bbfec0f770637c8f7f62f5d01dd346b4ab43a3f4c7661e5d603fe0d78967ac97", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CapabilityArgumentsKt.kt", + "sha256": "5ec398abe370d01a676829dc65fce1c17f7c208fd614d5c8036029f2d5c2e7e4", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CapabilityResultKt.kt", + "sha256": "b6d85047500639cdda64eccbc8962cc79d2596768d7bfc5b265b8ecc73af3b04", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CaptureMetadataKt.kt", + "sha256": "f199fe8818771fd6f32503e006747cefba7a8aca29fc1d2923145bb512bf7022", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ChannelDefinitionKt.kt", + "sha256": "db249c177d04b60e49ac94801578e10373964a821d87c6a6610a1bd3968f969e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ChatProjectRecordKt.kt", + "sha256": "7009b0ca43ec9c6cd0ad17859e1a49220fd6e2476949eb0f25e31fb1a77eae6d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ChecksumSpecKt.kt", + "sha256": "fec1fd2861d531bed711a4afa2b0e548ddd6644133be1c32ed6cc1a473aa123c", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ContentProtoKt.proto.kt", + "sha256": "4f638e31002baf902121d1a1a5e163adc66d5e681f12d8f522e8c2e489f67eb1", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ContextRefKt.kt", + "sha256": "1221123d137a796a53384b6f20ac550d933f619cbe8473e27c21a4549fcfe513", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ContextSelectorKt.kt", + "sha256": "215c296f0fc5440aeeff29d58e79297495b073e4a19570e4b3c8df31b3e29d53", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ControlProgressKt.kt", + "sha256": "afc80c601d79951d69bdd6c9f2743279bec9014606e73c9c1b7af47cf835f74f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ConversationBodyKt.kt", + "sha256": "00b514b24860d4b4989856ca91bbd2771bfa65a39d1eb9827858475c82e7fa62", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ConversationViewKt.kt", + "sha256": "ece0ebe05850b16ef7329e9072edb6d5e4eadaedf7fcdbbcd792b8716ceb1034", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CursorResultKt.kt", + "sha256": "667799eb159cbae20f757409e7e617c22888c99c167b9a1e153474c33498393d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/CursorSpecKt.kt", + "sha256": "c0cd26501492f28712d9546e30f881306b63ad4ee58a433133ffe455f28d0564", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/EphemeralSelectionKt.kt", + "sha256": "309e3ac8801924bf1b1862b287d6785d5fe8760dee646f78870b21b3dad138d5", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/EventTriggerKt.kt", + "sha256": "c8f3a26748bef1f6b5324cb03930a0307e99315441444b20cf6d6fae4e3d45d1", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/FamilyResultKt.kt", + "sha256": "ba3deabc8d1cd5f5164d82e7f13b37c7aa765fb5bd990a1497d6e36dcd4bba01", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/FrameConfigurationKt.kt", + "sha256": "ffe4c2581a442f2006d9302c655b089878d7b9d135ee0349bb2f78503145848a", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/FrameFieldKt.kt", + "sha256": "3ac1bd94c1294852a1a785f64302a3c4e278c19ffc9986f7c08bbb6d484a983d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementRequestKt.kt", + "sha256": "d3232e7c8d9fdecfd1af15257e1e837e1a9f1d8c52029cfd1eb80bdbb9889ca3", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementResultKt.kt", + "sha256": "87b023e59605c6422b8eff250abe6baf6f1af4a5ee18f35ec4edb15b28d39f28", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementSourceKt.kt", + "sha256": "a1228315d44b8a85fdafd66736443252312aa1f55f928d3d1206c7d8f3e7018b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementThresholdKt.kt", + "sha256": "e2f1de6413ca028ecd77df0ffc324374fd66cd028f2f1f8785cf49d4b15ce42c", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementValueKt.kt", + "sha256": "d0d6b655934d477bc9763547736e534f8a8955c0536b2db5f4cba31ddebea83b", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MeasurementWindowKt.kt", + "sha256": "39dcde653dc1b827bb74c7e63da735f3fced5e3d02d8c8770d6f822a20b6318e", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MemoryRecordKt.kt", + "sha256": "dde3ba508c486d7b6b6bf6229775c62e8c712babb6f69bb26656403465365cc6", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MessageDraftKt.kt", + "sha256": "9aae599e3e367d42a7d2086a4744249058a7f25c9ba778beb3c265010df92abe", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MessagePartKt.kt", + "sha256": "848322f72b1c7328f11a7f626ef7d732999e5c56f6d6cb6c8df0ffffe6fad237", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MessageViewKt.kt", + "sha256": "f6cefa2bf61f68afa3ebbc0fcbc744401006f5b962685dc4afc202718b7b7d1f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MetadataEntryKt.kt", + "sha256": "2390edf52e86323024be8d9aa01c44ea52785c3493278dcf6dbf922af6e372f2", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/MetadataScalarKt.kt", + "sha256": "21a683c15a00ec9cd2a259895cfd5086c8fa717d5361b55d05690ba81e0ff26f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/PreferenceRecordKt.kt", + "sha256": "f5d0ce8f38134d97b0b54fc6ef8cc92cdce0aa55af1ae37eeef65ed69c6a9e73", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SampleRangeKt.kt", + "sha256": "d2d8f984ae3e3fa744445df736d0544ab5fc617e5c2702a234ece2c4b38c8447", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScheduleSpecKt.kt", + "sha256": "8cc489b09bf4fae75b968cefdd6be93bdd748c6fec4d4c023f711c30337c36c7", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeAnnotationKt.kt", + "sha256": "f053632bfd69c41752466a1efe0a26bb90a531a841aa7a789ff449de4f2a92f6", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeConfigurationKt.kt", + "sha256": "7a6f4581bdb524646d29451eaa2b4f60f562a9ad11d971463944270da926cd71", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeFindingKt.kt", + "sha256": "a918f2ee1f9b20244cb4ddd9740bf26285d01d765a6f0ab4f46cee8e8c57dc98", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeMetadataKt.kt", + "sha256": "dc75fb5c7728aad77bf27a1e9575d63e6e47f79bf6b6bdb5766064aabd0925f8", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeSelectionKt.kt", + "sha256": "f71cf5604534eb5cbd887519343ab1901672df74c13dfa538a7a9c346621ebfc", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ScopeTimeKt.kt", + "sha256": "9c8aa14f88b68b8c912b5e603917d224041d3afc9fde99bee838e23b1d68b659", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SelectedSampleKt.kt", + "sha256": "5922589945edaf49e2137189755d1f3d42c8db46d6d12d6a4383d74baa8999d4", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SkillRecordKt.kt", + "sha256": "f2fe507dac1630b4b0021eeb0948498149da80ddae29a2a6b962e1c4d0bd8c93", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/SourceConsentRefKt.kt", + "sha256": "7fbb8ace1fcd083c57625af24b6f4d0feb09766b0a042ae506352f738424f6e6", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/StructuredValueKt.kt", + "sha256": "58a4d915cc539604fc27419fc1ca148fa920c341f06f1d8c52f16dd66cbf9c98", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TaskSnapshotKt.kt", + "sha256": "577eaca45d93bc74f485242d56e70693976ff22cc9b521ec780a9f8776eb843f", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ToolProposalKt.kt", + "sha256": "348582b04acb704846cfe171b039b16dfa5f4284903e9be08e51d4f230a76e0d", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ToolResultKt.kt", + "sha256": "a54378b2e31f4cd2bee7671403cb3d55bab2cde124b45df19275b80fcc1bcd59", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TriggerConfigurationKt.kt", + "sha256": "6381acd929afb5bad9383fcf273a235fffa7cd2419cf2b08377c089f46669809", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TriggerSpecKt.kt", + "sha256": "b43c59195cedd658a3b2132c0f7cfa0e7727e3b4c5e217c7965afabfc1cb8827", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/TurnInputKt.kt", + "sha256": "c5db96fea68d7df830e07d0d424df5a5520af412d3abc52e4c0a7e50a1bb8f87", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ValueEntryKt.kt", + "sha256": "200deac55d8a15fdd98d57bc974d721a6c88e7b0a153983c660824e64e53e3e6", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ValueListKt.kt", + "sha256": "18af73fffb2196e492950371072c285085546bb4c1095bc42638071dddbbbb26", + "normalization": "lf" + }, + { + "path": "src/public/kotlin/contracts-proto/generated/kotlin/io/github/arcforges/contracts/publicapi/v1/ValueRecordKt.kt", + "sha256": "29b6e185b0a2703dcd59255db2ce8ab208cb7dc1f9f06b6308b05bb56f30a892", + "normalization": "lf" + }, + { + "path": "src/public/ts/api-client/src/gen/http.ts", + "sha256": "c2d964d185d5ab0e0288401468780cae66284af73c9d3165ce5b8978e2664a82", + "normalization": "lf" + }, + { + "path": "src/public/ts/api-client/src/shapes/gen/PackageInventory.ts", + "sha256": "b644ffac577d48ed17a5cc4d1015697ba8e1bd0603087601cbc1e5d929b9d01f", + "normalization": "lf" + }, + { + "path": "src/public/ts/api-client/src/shapes/gen/PartReceipt.ts", + "sha256": "e19df4d0461e49eabee97cf44c31c348c8295e4d6bd37374c4178ad1f34e18ae", + "normalization": "lf" + }, + { + "path": "src/public/ts/contract-fixtures/src/index.ts", + "sha256": "d6103a6836787faa59945c3106708e29b871548cfa31d297086e3808ad55a10d", + "normalization": "lf" + }, + { + "path": "src/public/ts/proto/src/gen/arcforges/events/v1/events_pb.ts", + "sha256": "a27e66f4552827cd094a026b37a3f2cd4beac1e6bc1c4043d5fa77a35bbde1ca", + "normalization": "lf" + }, + { + "path": "src/public/ts/proto/src/gen/arcforges/foundation/v1/foundation_pb.ts", + "sha256": "b79c7c1231d85fc1385366d8260bfc01261f577b5b2f6bfd0b9f9c960788030b", + "normalization": "lf" + }, + { + "path": "src/public/ts/proto/src/gen/arcforges/hello/v1/hello_pb.ts", + "sha256": "793a78310bceb84d08cdb402f69f15da22a1882f53c3b93c5ea4f688c46704dc", + "normalization": "lf" + }, + { + "path": "src/public/ts/proto/src/gen/arcforges/publicapi/v1/content_pb.ts", + "sha256": "29b0edd012e3e76ff2c1b7223c8869224d6d0e9be2862ff78e5bc643901e599b", + "normalization": "lf" + }, + { + "path": "src/public/ts/proto/src/index.ts", + "sha256": "f637d0b976ad65604ed5dde8fb61245bfd59b788171cb4dfaacca475e7cffefe", + "normalization": "lf" + }, + { + "path": "src/public/ts/proto/src/services/gen/catalog.ts", + "sha256": "835b8e11f1112aa7496b87c0b554bad2159ab84d393bd2f0222a90303438ad8c", + "normalization": "lf" + }, + { + "path": "src/public/ts/proto/src/shapes/gen/proto.ts", + "sha256": "5fe6e144d6babe4194717e5e47d01a99073ccf68dd3d04654d23463caf488f58", + "normalization": "lf" + }, + { + "path": "src/public/ts/proto/src/values/gen/identifiers.ts", + "sha256": "f93d058ebfcb43ab486de32de647e8f0feb0b47703ce8dde1e86c45d2c13e63f", + "normalization": "lf" + } + ], + "disposition": "Improve", + "verification": { + "kind": "regeneration", + "command": "python eng/contracts.py generate --check", + "expected": "The existing generators reproduce the semantic-hash barrel export and public fixture package including the independently authored CON17 vectors; other generated targets retain their accepted ownership.", + "artifacts": [] + }, + "notice": { + "required": true, + "text": "Selected ArcForges contract bindings are generated from Apache-2.0 schemas using Grpc.Tools 2.84.0, protoc-gen-es 2.15.0 and Connect-Kotlin 0.9.0. Shape validators, domain identity adapters and fixture exports use Apache-2.0 repository tooling. Historical protobuf BSD-3-Clause and applicable generator Apache-2.0 attributions are retained. Build tools are not bundled in client packages. Native-grpc-only Android generation remains retired.", + "files": [ + "LICENSE", + "third-party/protobuf-generator-LICENSE.txt", + "eng/provenance/NOTICE.txt" + ], + "distribution": "packages", + "reason": "The generated bindings are distributed. Every package NOTICE retains the applicable generator attribution and protobuf licence text; runtime dependency notices remain separate." + }, + "lifetime": { + "status": "permanent", + "owner": "Licensing and Provenance Owner", + "removalTrigger": null + }, + "generation": { + "generators": [ + { + "repository": "https://github.com/protocolbuffers/protobuf", + "commit": "35cd01f9fe9afbeea38cc7b979a3b6bfcde82c03", + "paths": [ + "src/google/protobuf/compiler/csharp/csharp_generator.cc", + "src/google/protobuf/compiler/java/generator.cc", + "src/google/protobuf/compiler/kotlin/generator.cc" + ], + "spdx": "BSD-3-Clause", + "evidence": [ + { + "path": "src/google/protobuf/compiler/csharp/csharp_generator.cc", + "sha256": "8b1977fc091ca196408fd0b88332fe4457e8bde2b1fc9b92327ca0accbb618b6", + "finding": "The generator file header explicitly declares BSD-3-Clause; generated output retains applicable upstream obligations." + }, + { + "path": "src/google/protobuf/compiler/java/generator.cc", + "sha256": "62d1d34fa2003b460eeb793e5c87f7c9ba3a9ab43a06ba6032c0daacbcc15d7d", + "finding": "The generator file header explicitly declares BSD-3-Clause; generated output retains applicable upstream obligations." + }, + { + "path": "src/google/protobuf/compiler/kotlin/generator.cc", + "sha256": "a73a77ee148d87601686875fa7545e27dfedf2162845bc6b04a5b73a63e1fd57", + "finding": "The generator file header explicitly declares BSD-3-Clause; generated output retains applicable upstream obligations." + }, + { + "path": "LICENSE", + "sha256": "6e5e117324afd944dcf67f36cf329843bc1a92229a8cd9bb573d7a83130fea7d", + "finding": "Full governing BSD-3-Clause terms for these explicitly licensed generator files." + } + ] + }, + { + "repository": "https://github.com/grpc/grpc", + "commit": "3252a89f10d8e92997862167ca7d095ecda85973", + "paths": [ + "src/compiler/csharp_generator.cc" + ], + "spdx": "Apache-2.0", + "evidence": [ + { + "path": "src/compiler/csharp_generator.cc", + "sha256": "e530568c3ee5c889fefbed7430fcb96817a3866eebeeaafc2d30cd8326a6acf4", + "finding": "The generator file header explicitly declares Apache-2.0; generated output retains applicable upstream obligations." + }, + { + "path": "LICENSE", + "sha256": "58c86a3f2b5cca0ebdf9ed3e7f4e6dc38e3b38796d8c3dc92064c62a4e39d0dd", + "finding": "Full governing Apache-2.0 terms for these explicitly licensed generator files." + } + ] + }, + { + "repository": "https://github.com/bufbuild/protobuf-es", + "commit": "f72f5295c853b7be8c0828f350e4f2803c8afdde", + "paths": [ + "packages/protoc-gen-es/src/protoc-gen-es-plugin.ts" + ], + "spdx": "Apache-2.0", + "evidence": [ + { + "path": "packages/protoc-gen-es/src/protoc-gen-es-plugin.ts", + "sha256": "25d3dd51af9def8c18cf5636726d72805c9e653ccfc4c43717ae21bdcfed19ae", + "finding": "The generator file header explicitly declares Apache-2.0; generated output retains applicable upstream obligations." + }, + { + "path": "LICENSE", + "sha256": "c04b4216f1cd4c5a4f7fb2f2a1b0ae70d847e9e0cac7c9dee9bf8cc03177c449", + "finding": "Full governing Apache-2.0 terms for these explicitly licensed generator files." + } + ] + }, + { + "repository": "https://github.com/connectrpc/connect-kotlin", + "commit": "98f32633c462f6b17673a2a6504def7d3222da1c", + "paths": [ + "protoc-gen-connect-kotlin/src/main/kotlin/com/connectrpc/protocgen/connect/Generator.kt" + ], + "spdx": "Apache-2.0", + "evidence": [ + { + "path": "protoc-gen-connect-kotlin/src/main/kotlin/com/connectrpc/protocgen/connect/Generator.kt", + "sha256": "5ed68f3229db6e9a39b7d4a3aa2076d4e5c391949547f42c063f78ba34b6572b", + "finding": "The generator file header explicitly declares Apache-2.0; generated output retains applicable upstream obligations." + }, + { + "path": "LICENSE", + "sha256": "d8e16f7c884f3678b5cba0e5612e55903752945dc2006fcef2167356ecda8ceb", + "finding": "Full governing Apache-2.0 terms for these explicitly licensed generator files." + } + ] + }, + { + "repository": "https://github.com/ArcForges/Contracts", + "commit": "671f816ddc9e1a3a75782842234f2e899c3de01a", + "paths": [ + "eng/contracts.py", + "eng/foundation_semantics.py", + "eng/generate_fixtures.py", + "eng/generate_shapes.py", + "eng/generate_values.py", + "eng/kotlin_tools.py" + ], + "spdx": "Apache-2.0", + "evidence": [ + { + "path": "eng/contracts.py", + "sha256": "fc9e816e9dcba4f7c90fd35f4a2fffe8056600c6fe76eb38165a2838802726ef", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "eng/foundation_semantics.py", + "sha256": "880e7736000c5141c24f51a32918c9cf87de464ecd88fd54d51f3d9cf495cee4", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "eng/generate_fixtures.py", + "sha256": "0417ade78531767c655d27d72999ec3916929283a8acf2d63b8af214af16ff88", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "eng/generate_shapes.py", + "sha256": "db9522dc0e822fc3b8b08d4f95277b238a129dfbfb2143d1090a4e4a251a8bce", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "eng/generate_values.py", + "sha256": "0c3316bcd3402399ac24f3513a919818044509d8510f2eebf5719f16b3201355", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "eng/kotlin_tools.py", + "sha256": "219ff48ab12c421b63942047d16e61c6282ee6fa1af69c4148337be8e52d3325", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "LICENSE", + "sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + } + ] + }, + { + "repository": "https://github.com/ArcForges/Contracts", + "commit": "a1d2f4bd6ff05f80e86c776ce9f7070729b38898", + "paths": [ + "eng/contracts.py" + ], + "spdx": "Apache-2.0", + "evidence": [ + { + "path": "LICENSE", + "sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30", + "finding": "Repository-authored export barrel generator uses Apache-2.0." + }, + { + "path": "eng/contracts.py", + "sha256": "a7803ebe2a17e2a86bfb792c05f91a1b9bcd51d273da81152efa28711b528ab0", + "finding": "Exact export generator source snapshot; unchanged binding generator evidence is retained." + } + ] + }, + { + "repository": "https://github.com/ArcForges/Contracts", + "commit": "39612a52d25245cf6b1bbc7142b5a7864c00be53", + "paths": [ + "eng/generate_fixtures.py" + ], + "spdx": "Apache-2.0", + "evidence": [ + { + "path": "eng/generate_fixtures.py", + "sha256": "0417ade78531767c655d27d72999ec3916929283a8acf2d63b8af214af16ff88", + "finding": "Existing Apache fixture exporter regenerates the package index from the public fixture inputs." + } + ] + } + ], + "inputs": [ + { + "repository": "https://github.com/ArcForges/Contracts", + "commit": "671f816ddc9e1a3a75782842234f2e899c3de01a", + "paths": [ + "eng/contract-packages.json", + "fixtures/internal/wp03-00.json", + "fixtures/public/hello.json", + "fixtures/public/wp03-00.json", + "fixtures/public/wp03-01.json", + "internal/ai-http/v1/schema.json", + "internal/proto/arcforges/local/chat/v1/chat.proto", + "internal/proto/arcforges/local/platform/v1/platform.proto", + "internal/proto/arcforges/local/sandbox/v1/sandbox.proto", + "internal/proto/arcforges/local/scope/v1/scope.proto", + "internal/proto/arcforges/operator/v1/operator.proto", + "internal/proto/constraints.json", + "public/http/v1/inventory.schema.json", + "public/http/v1/schema.json", + "public/proto/arcforges/events/v1/events.proto", + "public/proto/arcforges/extensions/v1/extensions.proto", + "public/proto/arcforges/foundation/v1/foundation.proto", + "public/proto/arcforges/hello/v1/hello.proto", + "public/proto/arcforges/publicapi/v1/content.proto", + "public/proto/constraints.json", + "public/proto/value-boundaries.json" + ], + "spdx": "Apache-2.0", + "evidence": [ + { + "path": "eng/contract-packages.json", + "sha256": "9567c392329f5db7cdcace051e9c7806c7b7ae163bd6d2ed3fff734a5e1a9569", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "fixtures/internal/wp03-00.json", + "sha256": "165a82cf362ff2b05a220724e042915769f467697261035d71bb0c6ffce5fe96", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "fixtures/public/hello.json", + "sha256": "5e1fe5f94dfad301514a341b1f52f5a113943dc1837c7c4f817caaa4ea886b4e", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "fixtures/public/wp03-00.json", + "sha256": "919b5585f9c403648dbe797e71a4da4d3dbd85eecd5dede2b3f5f9b948ec6a69", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "fixtures/public/wp03-01.json", + "sha256": "38919422eaa333bf94ce3b98264ec811f6ccff8c8e3e9ac9efe2bd10c3f2b886", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "internal/ai-http/v1/schema.json", + "sha256": "d74b35c88fcc220d23b2d94dd48d3e3a6a53f0bf5b4cafe93f75c09ba6b07831", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "internal/proto/arcforges/local/chat/v1/chat.proto", + "sha256": "3e9c76af5aefc63c78d21609e09d7106cf809f8e271d2382c3f0c15cdb4cd519", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "internal/proto/arcforges/local/platform/v1/platform.proto", + "sha256": "519bd579aa83cfaa00e05d981c8d646524bddb8c27be22e67573c190e5762800", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "internal/proto/arcforges/local/sandbox/v1/sandbox.proto", + "sha256": "f97dbd60a9bc471bfc58f0cc8998b40e3fef4ddb8b10dbea8906e89fafe02574", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "internal/proto/arcforges/local/scope/v1/scope.proto", + "sha256": "027b0f72e1d1285fa3b2fcc13130400f8e8f0e801601485fef63e7a102b014c4", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "internal/proto/arcforges/operator/v1/operator.proto", + "sha256": "30e9f7ef3124839417839a25f7be2a43a954947d688387cea4faff09ddcf66e8", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "internal/proto/constraints.json", + "sha256": "92fe9ee7c97d6dee8f79e4c98e61fb16f3acb0a291e15a53c20af22f4c00b6ea", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "public/http/v1/inventory.schema.json", + "sha256": "2d17acc663de43ff847e522ddb16f32b1e7ec356df7db7dcafe8342d3fb014ce", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "public/http/v1/schema.json", + "sha256": "8d4c1282c0f93452a0304e44c832179d4c6f65fa563ae53517aa324af87105ce", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "public/proto/arcforges/events/v1/events.proto", + "sha256": "ea0ac740c06bbb5b81724b4a7e601110424cabc4940b07e579cf97d852880f43", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "public/proto/arcforges/extensions/v1/extensions.proto", + "sha256": "188c3667e1887926efd0df3bd3cb3574a2d8573ee0271171c7f96622d5dc8642", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "public/proto/arcforges/foundation/v1/foundation.proto", + "sha256": "8412a262ed890e1048680d437c8cbb42ea4e94a31b9c62ee08b0ba3007f53f9e", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "public/proto/arcforges/hello/v1/hello.proto", + "sha256": "92489f89d1898a3d3bbea56c72116416cd0152ae8866c98745739437020c67d9", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "public/proto/arcforges/publicapi/v1/content.proto", + "sha256": "15acce6e5618843a24115f8e5ddf64aba5e4fb60ca55dcb926a1900dc46d078f", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "public/proto/constraints.json", + "sha256": "69b5e9a861d5e2e914bbfd1817dc15481965868ab719564308c99b77845a4f2f", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "public/proto/value-boundaries.json", + "sha256": "b4d7eaa24ec864c69426fa5d679cf1e2d4536b8ed720e4371fb4a3ee94bc5111", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + }, + { + "path": "LICENSE", + "sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30", + "finding": "Reviewed exact Apache-2.0 schema, rule, fixture or generator input at the bound source snapshot." + } + ] + }, + { + "repository": "https://github.com/ArcForges/Contracts", + "commit": "39612a52d25245cf6b1bbc7142b5a7864c00be53", + "paths": [ + "fixtures/public/con-17-compat-hash.json" + ], + "spdx": "Apache-2.0", + "evidence": [ + { + "path": "fixtures/public/con-17-compat-hash.json", + "sha256": "61272b4e1bb12f83eadc4b60384c2734918e1814db829b02d9a127ef532d43b4", + "finding": "Exact independently authored CON17 canonical semantic hash golden/refusal input exported to the public fixture package." + } + ] + } + ], + "command": "python eng/contracts.py generate --check", + "outputSpdx": "Apache-2.0" + }, + "review": { + "owner": "Licensing and Provenance Owner", + "reviewer": "w-20260927-platform (file-level licence assessment; independent task review remains required)", + "reviewedOn": "2026-09-27", + "decision": "approved", + "rationale": "The generator-owned proto barrel exports the first-party semantic hash module, and the public fixture package exports the exact owned CON17 golden/refusal vectors. Existing bindings retain their accepted input lineage; no package, upstream generator or licence boundary changes.", + "baselineCommit": "a1d2f4bd6ff05f80e86c776ce9f7070729b38898", + "reconciliation": false + }, + "supersedes": "contract-bindings-r6", + "artifactTargets": [] +} diff --git a/fixtures/public/con-17-compat-hash.json b/fixtures/public/con-17-compat-hash.json new file mode 100644 index 00000000..d6ba5450 --- /dev/null +++ b/fixtures/public/con-17-compat-hash.json @@ -0,0 +1,127 @@ +{ + "schemaVersion": "con-17-compat-hash.v1", + "license": "Apache-2.0", + "authority": "registry04 section 2 / WP03.06; these examples are not production command profiles", + "vectors": [ + { + "id": "property-order-a", + "input": "{\"schemaVersion\":\"example.v1\",\"z\":true,\"a\":\"9007199254740993\"}", + "canonical": "{\"a\":\"9007199254740993\",\"schemaVersion\":\"example.v1\",\"z\":true}", + "sha256": "228310716bcef7eb64ee57c4de81194c51c2b14c912cbc94422a069396a09699" + }, + { + "id": "property-order-b", + "input": " { \"a\":\"9007199254740993\",\"z\":true,\"schemaVersion\":\"example.v1\" } ", + "canonical": "{\"a\":\"9007199254740993\",\"schemaVersion\":\"example.v1\",\"z\":true}", + "sha256": "228310716bcef7eb64ee57c4de81194c51c2b14c912cbc94422a069396a09699" + }, + { + "id": "missing", + "input": "{\"schemaVersion\":\"example.v1\"}", + "canonical": "{\"schemaVersion\":\"example.v1\"}", + "sha256": "1c183843911cec857d2e9d52987c347ff50dd52b7a8ef1d8e46f58922afdd8c6" + }, + { + "id": "explicit-null", + "input": "{\"schemaVersion\":\"example.v1\",\"value\":null}", + "canonical": "{\"schemaVersion\":\"example.v1\",\"value\":null}", + "sha256": "5b2d9cf5a055a61d82bd7dfd89dfa2dc11c7484505a33fb39c9d117fb4ddfb45" + }, + { + "id": "empty-array", + "input": "{\"value\":[],\"schemaVersion\":\"example.v1\"}", + "canonical": "{\"schemaVersion\":\"example.v1\",\"value\":[]}", + "sha256": "e11497b034e66a29928f6a03220a7680f8846fd19236ccf3e9cd42fd992ebc56" + }, + { + "id": "exact-maxima", + "input": "{\"u\":\"18446744073709551615\",\"i\":\"9223372036854775807\",\"decimal\":\"0.000000001\",\"schemaVersion\":\"example.v1\"}", + "canonical": "{\"decimal\":\"0.000000001\",\"i\":\"9223372036854775807\",\"schemaVersion\":\"example.v1\",\"u\":\"18446744073709551615\"}", + "sha256": "de1afe4a563c5ac077a813690fd74ba6c7819d64922bd921c318ac7b7b73964c" + }, + { + "id": "unicode-preserved", + "input": "{\"value\":\"A中😀é\",\"schemaVersion\":\"example.v1\"}", + "canonical": "{\"schemaVersion\":\"example.v1\",\"value\":\"A中😀é\"}", + "sha256": "ce4fb4888658b79efa5454bfbac48183a872907372766e21097b2c697a8f05ee" + }, + { + "id": "owner-nfc", + "input": "{\"value\":\"é\",\"other\":\"é\",\"schemaVersion\":\"example.v1\"}", + "nfcPaths": ["/value"], + "canonical": "{\"other\":\"é\",\"schemaVersion\":\"example.v1\",\"value\":\"é\"}", + "sha256": "e8728c4b8c35bed53f7e95096d62661a62bfab014925bc01b6fd2ac08ef85aa6" + }, + { + "id": "escaped-controls", + "input": "{\"schemaVersion\":\"example.v1\",\"value\":\"\\u0000\\b\\f\\n\\r\\t\\\"\\\\/\"}", + "canonical": "{\"schemaVersion\":\"example.v1\",\"value\":\"\\u0000\\b\\f\\n\\r\\t\\\"\\\\/\"}", + "sha256": "05f696b27e37f383291d617bdb3b5caaee2d68d3c25933da1cbfd4fe0fc68b75" + }, + { + "id": "numeric-properties-sort-ordinal", + "input": "{\"2\":\"two\",\"10\":\"ten\",\"schemaVersion\":\"example.v1\"}", + "canonical": "{\"10\":\"ten\",\"2\":\"two\",\"schemaVersion\":\"example.v1\"}", + "sha256": "f0780853a18bead8642372690716b53df4916925a43ac968b330a131a90ad7b3" + }, + { + "id": "uuid-hash-bytes", + "input": "{\"schemaVersion\":\"example.v1\",\"id\":\"00112233-4455-6677-8899-aabbccddeeff\",\"bytes\":\"ABEiM0RVZneImaq7zN3u_w\"}", + "canonical": "{\"bytes\":\"ABEiM0RVZneImaq7zN3u_w\",\"id\":\"00112233-4455-6677-8899-aabbccddeeff\",\"schemaVersion\":\"example.v1\"}", + "sha256": "1c6d420632e17ded885dbc7222b56fbe54ce3086b9a9131b9149806e2462a688" + }, + { + "id": "nested-ordered-array", + "input": "{\"schemaVersion\":\"example.v1\",\"items\":[{\"b\":false,\"a\":null},\"x\"]}", + "canonical": "{\"items\":[{\"a\":null,\"b\":false},\"x\"],\"schemaVersion\":\"example.v1\"}", + "sha256": "97bc10b813950b79ffda938cfe8a207af84e6feea49aebb7f86d330a1c085c07" + } + ], + "invalid": [ + { + "id": "duplicate", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":null,\"a\":true}" + }, + { + "id": "escaped-duplicate", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":null,\"\\u0061\":true}" + }, + { + "id": "unpaired-high", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":\"\\ud800\"}" + }, + { + "id": "unpaired-low", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":\"\\udfff\"}" + }, + { + "id": "non-ascii-key", + "input": "{\"schemaVersion\":\"example.v1\",\"中\":null}" + }, + { + "id": "unsafe-number", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":9007199254740993}" + }, + { + "id": "float-number", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":0.1}" + }, + { + "id": "nonfinite", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":NaN}" + }, + { + "id": "missing-version", + "input": "{\"a\":true}" + }, + { + "id": "invalid-normalization", + "input": "{\"schemaVersion\":\"example.v1\"}", + "nfcPaths": ["/missing"] + }, + { + "id": "trailing-comma", + "input": "{\"schemaVersion\":\"example.v1\",}" + } + ] +} diff --git a/package.json b/package.json index 4663af75..3bc4ef5b 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "generate": "python eng/contracts.py generate", "generate:check": "python eng/contracts.py generate --check", "build": "npm run build --workspace @arcforges/proto && npm run build --workspace @arcforges/api-client && npm run build --workspace @arcforges/contract-fixtures && npm run build --workspace @arcforges/ai-internal && npm run build --workspace @arcforges/operator-client", - "test": "node --test tests/public/wire.test.mjs tests/public/structure.test.mjs tests/public/foundation-links.test.mjs tests/public/serialization.test.mjs && tsc --noEmit --strict --target es2022 --module nodenext tests/public/foundation-types.ts", + "test": "node --test tests/public/wire.test.mjs tests/public/structure.test.mjs tests/public/foundation-links.test.mjs tests/public/serialization.test.mjs tests/public/semantic-hash.test.mjs && tsc --noEmit --strict --target es2022 --module nodenext tests/public/foundation-types.ts", "format:check": "prettier --check .", "format": "prettier --write .", "verify": "python eng/contracts.py verify-local" diff --git a/src/public/dotnet/ArcForges.Contracts.Foundation/CanonicalSemanticHash.cs b/src/public/dotnet/ArcForges.Contracts.Foundation/CanonicalSemanticHash.cs new file mode 100644 index 00000000..702adce2 --- /dev/null +++ b/src/public/dotnet/ArcForges.Contracts.Foundation/CanonicalSemanticHash.cs @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: Apache-2.0 +using System.Security.Cryptography; +using System.Text; +using System.Text.Json; + +namespace ArcForges.Contracts.Foundation; + +/// Registry04 semantic JSON for new owner profiles, never protobuf byte hashing. +public static class CanonicalSemanticHash +{ + /// + /// Canonicalizes an owner-projected JSON object with an explicit schemaVersion. + /// Exact numeric values, UUIDs, hashes and bytes must already use the owner's + /// canonical string adapters. Numbers are rejected rather than rounded. + /// NFC is applied only at the supplied RFC6901 string paths. Existing native + /// content and content-origin hash formats are not routed through this API. + /// + public static string Canonicalize(string json, IReadOnlySet? nfcPaths = null) + { + ArgumentNullException.ThrowIfNull(json); + ValidateScalars(json); + if (Encoding.UTF8.GetByteCount(json) > 4 * 1024 * 1024) + throw new ArgumentException("Semantic input exceeds 4 MiB.", nameof(json)); + using var document = JsonDocument.Parse(json, new JsonDocumentOptions { MaxDepth = 32 }); + var root = document.RootElement; + if (root.ValueKind != JsonValueKind.Object || !root.TryGetProperty("schemaVersion", out var profile) + || profile.ValueKind != JsonValueKind.String || string.IsNullOrEmpty(profile.GetString())) + throw new ArgumentException("An explicit owner schemaVersion is required.", nameof(json)); + var normalized = new HashSet(StringComparer.Ordinal); + var output = new StringBuilder(); + Write(root, "", output, nfcPaths, normalized); + if (nfcPaths is not null && !normalized.SetEquals(nfcPaths)) + throw new ArgumentException("Every normalization path must identify a present string.", nameof(nfcPaths)); + return output.ToString(); + } + + /// Returns lower-case SHA-256 of the canonical UTF-8 JSON. + public static string Hash(string json, IReadOnlySet? nfcPaths = null) => + Convert.ToHexStringLower(SHA256.HashData(Encoding.UTF8.GetBytes(Canonicalize(json, nfcPaths)))); + + private static void Write(JsonElement value, string path, StringBuilder output, + IReadOnlySet? nfcPaths, HashSet normalized) + { + switch (value.ValueKind) + { + case JsonValueKind.Object: + var properties = value.EnumerateObject().ToArray(); + var names = new HashSet(StringComparer.Ordinal); + foreach (var property in properties) + { + if (!names.Add(property.Name) || property.Name.Any(c => c > 127)) + throw new ArgumentException("Duplicate or non-ASCII semantic property name."); + } + Array.Sort(properties, (left, right) => StringComparer.Ordinal.Compare(left.Name, right.Name)); + output.Append('{'); + for (var index = 0; index < properties.Length; index++) + { + if (index != 0) output.Append(','); + var property = properties[index]; + Quote(property.Name, output); + output.Append(':'); + Write(property.Value, path + "/" + property.Name.Replace("~", "~0", StringComparison.Ordinal) + .Replace("/", "~1", StringComparison.Ordinal), output, nfcPaths, normalized); + } + output.Append('}'); + break; + case JsonValueKind.Array: + output.Append('['); + var itemIndex = 0; + foreach (var item in value.EnumerateArray()) + { + if (itemIndex != 0) output.Append(','); + Write(item, path + "/" + itemIndex.ToString(System.Globalization.CultureInfo.InvariantCulture), output, nfcPaths, normalized); + itemIndex++; + } + output.Append(']'); + break; + case JsonValueKind.String: + var text = value.GetString()!; + ValidateScalars(text); + if (nfcPaths?.Contains(path) == true) + { + text = text.Normalize(NormalizationForm.FormC); + normalized.Add(path); + } + Quote(text, output); + break; + case JsonValueKind.True: output.Append("true"); break; + case JsonValueKind.False: output.Append("false"); break; + case JsonValueKind.Null: output.Append("null"); break; + default: throw new ArgumentException("Semantic numbers must use exact canonical strings."); + } + } + + private static void ValidateScalars(string value) + { + for (var index = 0; index < value.Length; index++) + { + if (!char.IsSurrogate(value[index])) continue; + if (!char.IsHighSurrogate(value[index]) || index + 1 >= value.Length || !char.IsLowSurrogate(value[index + 1])) + throw new ArgumentException("Unpaired surrogate in semantic input."); + index++; + } + } + + private static void Quote(string value, StringBuilder output) + { + ValidateScalars(value); + output.Append('"'); + foreach (var character in value) + { + switch (character) + { + case '"': output.Append("\\\""); break; + case '\\': output.Append("\\\\"); break; + case '\b': output.Append("\\b"); break; + case '\f': output.Append("\\f"); break; + case '\n': output.Append("\\n"); break; + case '\r': output.Append("\\r"); break; + case '\t': output.Append("\\t"); break; + default: + if (character < 32) output.Append("\\u").Append(((int)character).ToString("x4", System.Globalization.CultureInfo.InvariantCulture)); + else output.Append(character); + break; + } + } + output.Append('"'); + } +} diff --git a/src/public/ts/contract-fixtures/src/index.ts b/src/public/ts/contract-fixtures/src/index.ts index db5e6e5c..2e716a59 100644 --- a/src/public/ts/contract-fixtures/src/index.ts +++ b/src/public/ts/contract-fixtures/src/index.ts @@ -1,6 +1,137 @@ // SPDX-License-Identifier: Apache-2.0 // Generated by eng/generate_fixtures.py from fixtures/public. Do not edit. export const publicFixtures = { + "con-17-compat-hash.json": { + "schemaVersion": "con-17-compat-hash.v1", + "license": "Apache-2.0", + "authority": "registry04 section 2 / WP03.06; these examples are not production command profiles", + "vectors": [ + { + "id": "property-order-a", + "input": "{\"schemaVersion\":\"example.v1\",\"z\":true,\"a\":\"9007199254740993\"}", + "canonical": "{\"a\":\"9007199254740993\",\"schemaVersion\":\"example.v1\",\"z\":true}", + "sha256": "228310716bcef7eb64ee57c4de81194c51c2b14c912cbc94422a069396a09699" + }, + { + "id": "property-order-b", + "input": " { \"a\":\"9007199254740993\",\"z\":true,\"schemaVersion\":\"example.v1\" } ", + "canonical": "{\"a\":\"9007199254740993\",\"schemaVersion\":\"example.v1\",\"z\":true}", + "sha256": "228310716bcef7eb64ee57c4de81194c51c2b14c912cbc94422a069396a09699" + }, + { + "id": "missing", + "input": "{\"schemaVersion\":\"example.v1\"}", + "canonical": "{\"schemaVersion\":\"example.v1\"}", + "sha256": "1c183843911cec857d2e9d52987c347ff50dd52b7a8ef1d8e46f58922afdd8c6" + }, + { + "id": "explicit-null", + "input": "{\"schemaVersion\":\"example.v1\",\"value\":null}", + "canonical": "{\"schemaVersion\":\"example.v1\",\"value\":null}", + "sha256": "5b2d9cf5a055a61d82bd7dfd89dfa2dc11c7484505a33fb39c9d117fb4ddfb45" + }, + { + "id": "empty-array", + "input": "{\"value\":[],\"schemaVersion\":\"example.v1\"}", + "canonical": "{\"schemaVersion\":\"example.v1\",\"value\":[]}", + "sha256": "e11497b034e66a29928f6a03220a7680f8846fd19236ccf3e9cd42fd992ebc56" + }, + { + "id": "exact-maxima", + "input": "{\"u\":\"18446744073709551615\",\"i\":\"9223372036854775807\",\"decimal\":\"0.000000001\",\"schemaVersion\":\"example.v1\"}", + "canonical": "{\"decimal\":\"0.000000001\",\"i\":\"9223372036854775807\",\"schemaVersion\":\"example.v1\",\"u\":\"18446744073709551615\"}", + "sha256": "de1afe4a563c5ac077a813690fd74ba6c7819d64922bd921c318ac7b7b73964c" + }, + { + "id": "unicode-preserved", + "input": "{\"value\":\"A\u4e2d\ud83d\ude00e\u0301\",\"schemaVersion\":\"example.v1\"}", + "canonical": "{\"schemaVersion\":\"example.v1\",\"value\":\"A\u4e2d\ud83d\ude00e\u0301\"}", + "sha256": "ce4fb4888658b79efa5454bfbac48183a872907372766e21097b2c697a8f05ee" + }, + { + "id": "owner-nfc", + "input": "{\"value\":\"e\u0301\",\"other\":\"e\u0301\",\"schemaVersion\":\"example.v1\"}", + "nfcPaths": [ + "/value" + ], + "canonical": "{\"other\":\"e\u0301\",\"schemaVersion\":\"example.v1\",\"value\":\"\u00e9\"}", + "sha256": "e8728c4b8c35bed53f7e95096d62661a62bfab014925bc01b6fd2ac08ef85aa6" + }, + { + "id": "escaped-controls", + "input": "{\"schemaVersion\":\"example.v1\",\"value\":\"\\u0000\\b\\f\\n\\r\\t\\\"\\\\/\"}", + "canonical": "{\"schemaVersion\":\"example.v1\",\"value\":\"\\u0000\\b\\f\\n\\r\\t\\\"\\\\/\"}", + "sha256": "05f696b27e37f383291d617bdb3b5caaee2d68d3c25933da1cbfd4fe0fc68b75" + }, + { + "id": "numeric-properties-sort-ordinal", + "input": "{\"2\":\"two\",\"10\":\"ten\",\"schemaVersion\":\"example.v1\"}", + "canonical": "{\"10\":\"ten\",\"2\":\"two\",\"schemaVersion\":\"example.v1\"}", + "sha256": "f0780853a18bead8642372690716b53df4916925a43ac968b330a131a90ad7b3" + }, + { + "id": "uuid-hash-bytes", + "input": "{\"schemaVersion\":\"example.v1\",\"id\":\"00112233-4455-6677-8899-aabbccddeeff\",\"bytes\":\"ABEiM0RVZneImaq7zN3u_w\"}", + "canonical": "{\"bytes\":\"ABEiM0RVZneImaq7zN3u_w\",\"id\":\"00112233-4455-6677-8899-aabbccddeeff\",\"schemaVersion\":\"example.v1\"}", + "sha256": "1c6d420632e17ded885dbc7222b56fbe54ce3086b9a9131b9149806e2462a688" + }, + { + "id": "nested-ordered-array", + "input": "{\"schemaVersion\":\"example.v1\",\"items\":[{\"b\":false,\"a\":null},\"x\"]}", + "canonical": "{\"items\":[{\"a\":null,\"b\":false},\"x\"],\"schemaVersion\":\"example.v1\"}", + "sha256": "97bc10b813950b79ffda938cfe8a207af84e6feea49aebb7f86d330a1c085c07" + } + ], + "invalid": [ + { + "id": "duplicate", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":null,\"a\":true}" + }, + { + "id": "escaped-duplicate", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":null,\"\\u0061\":true}" + }, + { + "id": "unpaired-high", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":\"\\ud800\"}" + }, + { + "id": "unpaired-low", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":\"\\udfff\"}" + }, + { + "id": "non-ascii-key", + "input": "{\"schemaVersion\":\"example.v1\",\"\u4e2d\":null}" + }, + { + "id": "unsafe-number", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":9007199254740993}" + }, + { + "id": "float-number", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":0.1}" + }, + { + "id": "nonfinite", + "input": "{\"schemaVersion\":\"example.v1\",\"a\":NaN}" + }, + { + "id": "missing-version", + "input": "{\"a\":true}" + }, + { + "id": "invalid-normalization", + "input": "{\"schemaVersion\":\"example.v1\"}", + "nfcPaths": [ + "/missing" + ] + }, + { + "id": "trailing-comma", + "input": "{\"schemaVersion\":\"example.v1\",}" + } + ] + }, "hello.json": { "cases": [ { diff --git a/src/public/ts/proto/src/index.ts b/src/public/ts/proto/src/index.ts index f4dd0806..1aa49726 100644 --- a/src/public/ts/proto/src/index.ts +++ b/src/public/ts/proto/src/index.ts @@ -7,4 +7,5 @@ export * from "./gen/arcforges/publicapi/v1/content_pb.js"; export * from "./shapes/gen/proto.js"; export * from "./values.js"; export * from "./wire.js"; +export * from "./semantic-hash.js"; export * from "./services/gen/catalog.js"; diff --git a/src/public/ts/proto/src/semantic-hash.ts b/src/public/ts/proto/src/semantic-hash.ts new file mode 100644 index 00000000..c7bb41b1 --- /dev/null +++ b/src/public/ts/proto/src/semantic-hash.ts @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: Apache-2.0 +// WHATWG APIs exist in Node and supported browsers without importing Node types. +declare const TextEncoder: { new (): { encode(input: string): Uint8Array } }; +declare const crypto: { + subtle: { digest(algorithm: string, data: Uint8Array): Promise }; +}; + +function scalars(value: string): void { + for (let index = 0; index < value.length; index++) { + const code = value.charCodeAt(index); + if (code < 0xd800 || code > 0xdfff) continue; + const next = value.charCodeAt(++index); + if (code > 0xdbff || !(next >= 0xdc00 && next <= 0xdfff)) + throw new TypeError("Unpaired surrogate in semantic input"); + } +} + +class SemanticReader { + private at = 0; + constructor(private readonly input: string) {} + document(): unknown { + const value = this.value(0); + this.space(); + if (this.at !== this.input.length) throw new SyntaxError("Trailing semantic input"); + return value; + } + private space(): void { + while (this.at < this.input.length && /[\x20\t\r\n]/.test(this.input[this.at]!)) this.at++; + } + private string(): string { + const start = this.at++; + let escaped = false; + while (this.at < this.input.length) { + const character = this.input[this.at++]!; + if (!escaped && character === '"') { + const result: unknown = JSON.parse(this.input.slice(start, this.at)); + if (typeof result !== "string") throw new SyntaxError("Expected string"); + scalars(result); + return result; + } + if (!escaped && character === "\\") escaped = true; + else escaped = false; + } + throw new SyntaxError("Unterminated semantic string"); + } + private value(depth: number): unknown { + this.space(); + const kind = this.input[this.at]; + if (kind === '"') return this.string(); + for (const [literal, value] of [ + ["true", true], + ["false", false], + ["null", null], + ] as const) { + if (this.input.startsWith(literal, this.at)) { + this.at += literal.length; + return value; + } + } + if (kind !== "{" && kind !== "[") + throw new SyntaxError("Numbers require exact canonical strings"); + if (depth >= 32) throw new SyntaxError("Semantic depth exceeds 32"); + this.at++; + const close = kind === "{" ? "}" : "]"; + const object: Record = Object.create(null) as Record; + const array: unknown[] = []; + this.space(); + if (this.input[this.at] === close) { + this.at++; + return kind === "{" ? object : array; + } + for (;;) { + this.space(); + if (kind === "{") { + if (this.input[this.at] !== '"') throw new SyntaxError("Expected property name"); + const key = this.string(); + if (/[^\x00-\x7f]/.test(key) || Object.hasOwn(object, key)) + throw new SyntaxError("Duplicate or non-ASCII semantic property"); + this.space(); + if (this.input[this.at++] !== ":") throw new SyntaxError("Expected colon"); + object[key] = this.value(depth + 1); + } else array.push(this.value(depth + 1)); + this.space(); + const delimiter = this.input[this.at++]; + if (delimiter === close) return kind === "{" ? object : array; + if (delimiter !== ",") throw new SyntaxError("Expected comma"); + } + } +} + +/** + * Registry04 JSON for a new owner profile with an explicit schemaVersion. + * Exact numbers, UUIDs, hashes and bytes use the owner's canonical string adapters. + * NFC is opt-in at RFC6901 string paths; existing content formats retain their own hash. + */ +export function canonicalSemanticJson( + json: string, + nfcPaths: ReadonlySet = new Set(), +): string { + scalars(json); + if (new TextEncoder().encode(json).byteLength > 4 * 1024 * 1024) + throw new RangeError("Semantic input exceeds 4 MiB"); + const root = new SemanticReader(json).document(); + if ( + root === null || + typeof root !== "object" || + Array.isArray(root) || + typeof (root as Record).schemaVersion !== "string" || + !(root as Record).schemaVersion + ) + throw new TypeError("An explicit owner schemaVersion is required"); + const normalized = new Set(); + function write(value: unknown, path: string): string { + if (typeof value === "string") { + if (nfcPaths.has(path)) { + value = value.normalize("NFC"); + normalized.add(path); + } + return JSON.stringify(value); + } + if (value === null || typeof value === "boolean") return JSON.stringify(value); + if (Array.isArray(value)) + return "[" + value.map((item, index) => write(item, path + "/" + index)).join(",") + "]"; + const object = value as Record; + return ( + "{" + + Object.keys(object) + .sort() + .map( + (key) => + JSON.stringify(key) + + ":" + + write(object[key], path + "/" + key.replaceAll("~", "~0").replaceAll("/", "~1")), + ) + .join(",") + + "}" + ); + } + const result = write(root, ""); + if (normalized.size !== nfcPaths.size) + throw new TypeError("Every normalization path must identify a present string"); + return result; +} + +/** SHA-256 over canonical UTF-8, returned as lower-case hexadecimal. */ +export async function canonicalSemanticHash( + json: string, + nfcPaths?: ReadonlySet, +): Promise { + const bytes = new TextEncoder().encode(canonicalSemanticJson(json, nfcPaths)); + const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", bytes)); + return Array.from(digest, (value) => value.toString(16).padStart(2, "0")).join(""); +} diff --git a/tests/StructureTests/CompatibilityCases.cs b/tests/StructureTests/CompatibilityCases.cs new file mode 100644 index 00000000..d3eeb320 --- /dev/null +++ b/tests/StructureTests/CompatibilityCases.cs @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: Apache-2.0 +using Google.Protobuf; +using ArcForges.Contracts.Foundation.V1; +using ArcForges.Contracts.Hello.V1; + +internal static class CompatibilityCases +{ + internal static void Run(string mode, string directory) + { + if (mode == "current") + { + var request = SayHelloRequest.Parser.ParseFrom(File.ReadAllBytes(Path.Combine(directory, "previous-request.bin"))); + if (request.Name != "A中😀" || Revision.Parser.ParseFrom(File.ReadAllBytes(Path.Combine(directory, "previous-int64.bin"))).Value != 9007199254740993 + || ArcForges.Contracts.Foundation.V1.Decimal.Parser.ParseFrom(File.ReadAllBytes(Path.Combine(directory, "previous-decimal.bin"))).Value != "0.000000001") + throw new InvalidOperationException("Current codec changed exact previous-client meaning"); + var response = new SayHelloResponse { Message = "Hello, " + request.Name + "!" }.ToByteArray(); + var future = Convert.FromHexString("9a0603667574"); // field 99, length 3, UTF-8 "fut" + File.WriteAllBytes(Path.Combine(directory, "current-response.bin"), [.. response, .. future]); + File.WriteAllBytes(Path.Combine(directory, "current-request.bin"), new SayHelloRequest { Name = "minimum" }.ToByteArray()); + return; + } + if (mode != "verify") throw new ArgumentException("Unknown current compatibility mode"); + var minimum = SayHelloResponse.Parser.ParseFrom(File.ReadAllBytes(Path.Combine(directory, "minimum-response.bin"))); + if (minimum.Message != "Hello, minimum!") throw new InvalidOperationException("Current client rejected minimum response"); + if (!File.ReadAllBytes(Path.Combine(directory, "current-response.bin")).AsSpan() + .SequenceEqual(File.ReadAllBytes(Path.Combine(directory, "previous-retained-response.bin")))) + throw new InvalidOperationException("Additive field retention failed across previous/current codecs"); + Console.WriteLine("Bidirectional previous published/current codec matrix passed; Hello is a packaging demonstration, not product service acceptance."); + } +} diff --git a/tests/StructureTests/PreviousClient/PreviousClient.csproj b/tests/StructureTests/PreviousClient/PreviousClient.csproj new file mode 100644 index 00000000..0b9ada30 --- /dev/null +++ b/tests/StructureTests/PreviousClient/PreviousClient.csproj @@ -0,0 +1,11 @@ + + + + Exe + Apache-2.0 + Apache + + + + + diff --git a/tests/StructureTests/PreviousClient/Program.cs b/tests/StructureTests/PreviousClient/Program.cs new file mode 100644 index 00000000..8d723e3a --- /dev/null +++ b/tests/StructureTests/PreviousClient/Program.cs @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: Apache-2.0 +using Google.Protobuf; +using ArcForges.Contracts.Foundation.V1; +using ArcForges.Contracts.Hello.V1; + +if (args.Length != 2) throw new ArgumentException("PreviousClient "); +var directory = Path.GetFullPath(args[1]); +Directory.CreateDirectory(directory); +// This executable references the exact previously published package, never a +// current source project. File exchange exercises codecs offline, not a live RPC. +if (args[0] == "emit") +{ + File.WriteAllBytes(Path.Combine(directory, "previous-request.bin"), new SayHelloRequest { Name = "A中😀" }.ToByteArray()); + File.WriteAllBytes(Path.Combine(directory, "previous-int64.bin"), new Revision { Value = 9007199254740993 }.ToByteArray()); + File.WriteAllBytes(Path.Combine(directory, "previous-decimal.bin"), new ArcForges.Contracts.Foundation.V1.Decimal { Value = "0.000000001" }.ToByteArray()); + return; +} +if (args[0] != "verify-and-serve") throw new ArgumentException("Unknown previous-client mode"); +var responseBytes = File.ReadAllBytes(Path.Combine(directory, "current-response.bin")); +var response = SayHelloResponse.Parser.ParseFrom(responseBytes); +if (response.Message != "Hello, A中😀!") throw new InvalidOperationException("Previous client rejected current response"); +// The current fixture appends tag 99, representing an additive future read field. +// The old generated assembly must retain it when storing/re-emitting the message. +if (!response.ToByteArray().AsSpan().SequenceEqual(responseBytes)) throw new InvalidOperationException("Previous client lost unknown response field"); +File.WriteAllBytes(Path.Combine(directory, "previous-retained-response.bin"), response.ToByteArray()); +var request = SayHelloRequest.Parser.ParseFrom(File.ReadAllBytes(Path.Combine(directory, "current-request.bin"))); +if (request.Name != "minimum") throw new InvalidOperationException("Minimum server could not read current request"); +File.WriteAllBytes(Path.Combine(directory, "minimum-response.bin"), new SayHelloResponse { Message = "Hello, " + request.Name + "!" }.ToByteArray()); +Console.WriteLine("Previous published client/current handler and current client/minimum handler offline codecs passed."); diff --git a/tests/StructureTests/PreviousClient/packages.lock.json b/tests/StructureTests/PreviousClient/packages.lock.json new file mode 100644 index 00000000..66fd41ef --- /dev/null +++ b/tests/StructureTests/PreviousClient/packages.lock.json @@ -0,0 +1,38 @@ +{ + "version": 2, + "dependencies": { + "net10.0": { + "ArcForges.Contracts.PublicApi": { + "type": "Direct", + "requested": "[1.0.0-ci.113.1, )", + "resolved": "1.0.0-ci.113.1", + "contentHash": "1ai2jcqdFfKLHahN62N9dqkcSsAEbgK/K5uQi4LDIUFDGaT38/2KJYYykrb/YLO2UyUBpFjxJmTk++A+4mr8Uw==", + "dependencies": { + "ArcForges.Contracts.Foundation": "1.0.0-ci.113.1", + "Google.Protobuf": "3.36.1", + "Grpc.Core.Api": "2.84.0" + } + }, + "ArcForges.Contracts.Foundation": { + "type": "Transitive", + "resolved": "1.0.0-ci.113.1", + "contentHash": "k51yFjKnec92FJEfOM3/6YEhnbi1wfO4gztqjlhLumg7USTjVnA7ab7rE4X/H1cDb62Ny4c2ufn8Xi/CtBaZnA==", + "dependencies": { + "Google.Protobuf": "3.36.1" + } + }, + "Google.Protobuf": { + "type": "CentralTransitive", + "requested": "[3.36.1, )", + "resolved": "3.36.1", + "contentHash": "77AqPEoaY1ODE+syYBHti0jXiwQq0J/fUr/fRyYhNlc9oKtH5dZZEr/OLKtdKNVG83PRnCYB2r8B80ZrObzOGQ==" + }, + "Grpc.Core.Api": { + "type": "CentralTransitive", + "requested": "[2.84.0, )", + "resolved": "2.84.0", + "contentHash": "p2SOMl6q/GZ4/5MLkgboC/z55g4zKUEruRn/g46QgppjQBVnsLZVBU/9VO7n60ll38G3Eo8Zu9b7x+W01GKFVg==" + } + } + } +} \ No newline at end of file diff --git a/tests/StructureTests/Program.cs b/tests/StructureTests/Program.cs index 71555720..c049bfcd 100644 --- a/tests/StructureTests/Program.cs +++ b/tests/StructureTests/Program.cs @@ -9,6 +9,11 @@ using Validation = ArcForges.Contracts.Validation.ContractShapeValidation; var root = args.Length >= 1 ? Path.GetFullPath(args[0]) : Directory.GetCurrentDirectory(); +if (args.Length == 3 && args[1].StartsWith("--compatibility-", StringComparison.Ordinal)) +{ + CompatibilityCases.Run(args[1]["--compatibility-".Length..], Path.GetFullPath(args[2])); + return 0; +} if (args.Contains("--foundation-links", StringComparer.Ordinal)) { FoundationLinkCases.Run(); @@ -59,6 +64,7 @@ Console.WriteLine($"Validated {count} independent shape fixtures, duplicate-key rejection and SDK caller-owned invocation."); FoundationLinkCases.Run(); FoundationCases.Run(root, args.Contains("--foundation-exchange", StringComparer.Ordinal)); +SemanticHashCases.Run(root); return 0; static bool Proto(JsonElement value, Func validate) where T : IMessage, new() diff --git a/tests/StructureTests/SemanticHashCases.cs b/tests/StructureTests/SemanticHashCases.cs new file mode 100644 index 00000000..874c1214 --- /dev/null +++ b/tests/StructureTests/SemanticHashCases.cs @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: Apache-2.0 +using System.Text.Json; +using ArcForges.Contracts.Foundation; + +internal static class SemanticHashCases +{ + internal static void Run(string root) + { + using var document = JsonDocument.Parse(File.ReadAllText(Path.Combine(root, "fixtures/public/con-17-compat-hash.json"))); + foreach (var vector in document.RootElement.GetProperty("vectors").EnumerateArray()) + { + var paths = Paths(vector); + var input = vector.GetProperty("input").GetString()!; + if (CanonicalSemanticHash.Canonicalize(input, paths) != vector.GetProperty("canonical").GetString() + || CanonicalSemanticHash.Hash(input, paths) != vector.GetProperty("sha256").GetString()) + throw new InvalidOperationException("Semantic golden mismatch: " + vector.GetProperty("id").GetString()); + } + foreach (var vector in document.RootElement.GetProperty("invalid").EnumerateArray()) + { + var refused = false; + try { CanonicalSemanticHash.Canonicalize(vector.GetProperty("input").GetString()!, Paths(vector)); } + catch (Exception exception) when (exception is ArgumentException or JsonException or InvalidOperationException) { refused = true; } + if (!refused) throw new InvalidOperationException("Invalid semantic input accepted: " + vector.GetProperty("id").GetString()); + } + const string command = """{"schemaVersion":"example-command.v1","operationId":"setValue","realm":"official","workspaceId":"00112233-4455-6677-8899-aabbccddeeff","actorId":"11223344-5566-7788-99aa-bbccddeeff00","revisionKind":"cloud","revisionValue":"1","fields":{"value":null}}"""; + if (CanonicalSemanticHash.Hash(command) == CanonicalSemanticHash.Hash(command.Replace("\"revisionValue\":\"1\"", "\"revisionValue\":\"2\"", StringComparison.Ordinal))) + throw new InvalidOperationException("Owner revision must affect command identity."); + Console.WriteLine("Validated shared C#/TypeScript canonical semantic hash golden vectors and refusals."); + } + + private static HashSet Paths(JsonElement vector) => vector.TryGetProperty("nfcPaths", out var paths) + ? paths.EnumerateArray().Select(item => item.GetString()!).ToHashSet(StringComparer.Ordinal) + : new HashSet(StringComparer.Ordinal); +} diff --git a/tests/StructureTests/StructureTests.csproj b/tests/StructureTests/StructureTests.csproj index ae2fe52a..f63b87df 100644 --- a/tests/StructureTests/StructureTests.csproj +++ b/tests/StructureTests/StructureTests.csproj @@ -6,6 +6,7 @@ Apache + diff --git a/tests/public/semantic-hash.test.mjs b/tests/public/semantic-hash.test.mjs new file mode 100644 index 00000000..098cf371 --- /dev/null +++ b/tests/public/semantic-hash.test.mjs @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: Apache-2.0 +import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; +import { test } from "node:test"; +import { + canonicalSemanticJson, + canonicalSemanticHash, +} from "../../src/public/ts/proto/dist/semantic-hash.js"; + +const fixture = JSON.parse( + readFileSync(new URL("../../fixtures/public/con-17-compat-hash.json", import.meta.url), "utf8"), +); +for (const vector of fixture.vectors) { + test("semantic hash: " + vector.id, async () => { + const paths = new Set(vector.nfcPaths ?? []); + assert.equal(canonicalSemanticJson(vector.input, paths), vector.canonical); + assert.equal(await canonicalSemanticHash(vector.input, paths), vector.sha256); + }); +} +for (const vector of fixture.invalid) { + test("semantic refusal: " + vector.id, () => { + assert.throws(() => canonicalSemanticJson(vector.input, new Set(vector.nfcPaths ?? []))); + }); +} +test("depth and raw surrogate refusal", () => { + assert.throws(() => + canonicalSemanticJson( + '{"schemaVersion":"example.v1","value":"' + String.fromCharCode(0xd800) + '"}', + ), + ); + assert.throws(() => + canonicalSemanticJson( + '{"schemaVersion":"example.v1","value":' + "[".repeat(33) + "null" + "]".repeat(33) + "}", + ), + ); +}); +test("owner revision changes command semantic identity", async () => { + const command = + '{"schemaVersion":"example-command.v1","operationId":"setValue","realm":"official","workspaceId":"00112233-4455-6677-8899-aabbccddeeff","actorId":"11223344-5566-7788-99aa-bbccddeeff00","revisionKind":"cloud","revisionValue":"1","fields":{"value":null}}'; + assert.notEqual( + await canonicalSemanticHash(command), + await canonicalSemanticHash(command.replace('"revisionValue":"1"', '"revisionValue":"2"')), + ); +}); diff --git a/tests/tooling/test_compatibility_matrix.py b/tests/tooling/test_compatibility_matrix.py new file mode 100644 index 00000000..2e0a190e --- /dev/null +++ b/tests/tooling/test_compatibility_matrix.py @@ -0,0 +1,107 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Deliberate compiled-descriptor breaks must fail before publication.""" +from copy import deepcopy +from pathlib import Path +import sys +import unittest + +sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "eng")) +from check_compatibility import compare, descriptor, fields, retained + + +def integer(value): + result = bytearray() + while value >= 128: + result.append((value & 127) | 128) + value >>= 7 + return bytes(result + bytes([value])) + + +def member(tag, value): + if isinstance(value, int): + return integer(tag << 3) + integer(value) + if isinstance(value, str): + value = value.encode("utf-8") + return integer((tag << 3) | 2) + integer(len(value)) + value + + +def compiled(): + # Exact FileDescriptorSet / FileDescriptorProto field numbers, independent + # of the production reader. One message, enum and unary method suffice to + # exercise each immutable element, including int64 versus uint64. + field = b"".join(member(k, v) for k, v in [(1, "revision"), (3, 1), (4, 1), (5, 3), (10, "revision")]) + message = member(1, "Request") + member(2, field) + enum = member(1, "State") + member(2, member(1, "UNKNOWN") + member(2, 0)) + method = member(1, "Read") + member(2, ".fixture.Request") + member(3, ".fixture.Request") + service = member(1, "Api") + member(2, method) + file = member(1, "fixture.proto") + member(2, "fixture") + member(4, message) + member(5, enum) + member(6, service) + return member(1, file) + + +class CompatibilityTests(unittest.TestCase): + def setUp(self): + self.old = descriptor(compiled()) + self.new = deepcopy(self.old) + + def test_identical_descriptors(self): + self.assertEqual(compare(self.old, self.new), []) + + def test_additive_response_field_and_method(self): + self.new["messages"][".fixture.Request"][2] = {"name": "added"} + self.new["services"][".fixture.Api"]["NewMethod"] = {"input": ".fixture.Request"} + self.assertEqual(compare(self.old, self.new), []) + + def test_deletion_refused(self): + del self.new["messages"][".fixture.Request"][1] + self.assertIn("deleted member", compare(self.old, self.new)[0]) + + def test_reuse_and_exact_type_presence_changes_refused(self): + for key, replacement in [("name", "other"), ("type", 4), ("label", 3), + ("oneof", "new_group"), ("optional", 1), + ("typeName", ".different.Message"), ("jsonName", "other")]: + with self.subTest(key=key): + current = deepcopy(self.old) + current["messages"][".fixture.Request"][1][key] = replacement + self.assertTrue(compare(self.old, current)) + + def test_enum_number_and_rpc_streaming_changes_refused(self): + self.new["enums"][".fixture.State"]["UNKNOWN"] = 1 + self.new["services"][".fixture.Api"]["Read"]["serverStreaming"] = 1 + self.assertEqual(len(compare(self.old, self.new)), 2) + + def test_removed_message_enum_service_refused(self): + for kind in self.new: + self.new[kind].clear() + self.assertEqual(len(compare(self.old, self.new)), 3) + + def test_unknown_descriptor_metadata_is_ignored(self): + self.assertEqual(descriptor(compiled() + member(100, b"future")), self.old) + + def test_malformed_descriptor_refused(self): + for raw in [b"", b"\x00", b"\x0a\x7fshort", b"\x08" + b"\xff" * 10, + compiled()[:-1], compiled() + compiled()]: + with self.subTest(raw=raw): + with self.assertRaises(ValueError): + descriptor(raw) + + def test_fixed_width_truncation(self): + for raw in [b"\x09abc", b"\x0dabc"]: + with self.assertRaises(ValueError): + fields(raw) + + def test_retirement_is_exact_and_does_not_waive_other_namespaces(self): + model = deepcopy(self.old) + model["messages"][".arcforges.foundation.v1.Request"] = deepcopy(model["messages"][".fixture.Request"]) + result = retained(model, {"messages": ["Request"]}) + self.assertNotIn(".arcforges.foundation.v1.Request", result["messages"]) + self.assertIn(".fixture.Request", result["messages"]) + self.assertIn(".arcforges.foundation.v1.Request", model["messages"]) + result = retained(model, {"fields": {"Request": [{"name": "other", "tag": 1}]}}) + self.assertIn(1, result["messages"][".arcforges.foundation.v1.Request"]) + result = retained(model, {"fields": {"Request": [{"name": "revision", "tag": 1}]}}) + self.assertNotIn(1, result["messages"][".arcforges.foundation.v1.Request"]) + self.assertIn(1, result["messages"][".fixture.Request"]) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/tooling/test_dependency_admission.py b/tests/tooling/test_dependency_admission.py index ea9fbf3f..5ed979b3 100644 --- a/tests/tooling/test_dependency_admission.py +++ b/tests/tooling/test_dependency_admission.py @@ -40,12 +40,39 @@ def test_retirement_hash_exceptions_match_only_observed_exact_rows(self): changed = re.sub('[0-9a-f]{64}', '0' * 64, line) self.assertIsNone(re.fullmatch(pattern, changed)) + def test_con17_secret_exceptions_reject_other_paths_keys_digests_and_tokens(self): + config = tomllib.loads((ROOT / '.gitleaks.toml').read_text()) + paths = ['eng/policy/dependency-reviews/con17-previous-client-113-1.json', + 'eng/policy/dependency-policy.json'] + # Historical SHA verified from pre-rebase 8050e7f4c87eb40803c36cbc66979069246ed3dc; + # subsequent actual source snapshots are a1d2f4b and beb433af (CI findings). + digests = ['622d53ff60931677847ab90c550721b7630c13e167133bd13688215e46f5ae1e', + '9de84aa03629c593bad2d795db15f7edb83c5f01cb37b2cb1aca012c67660cbf', + '145298928cd567802b7e8504f75b765270f95539fe9f12d2d65405b4d6c8dc92'] + source = 'eng/policy/contract-access.json' + self.assertEqual(hashlib.sha256((ROOT / source).read_bytes().replace(b'\r\n', b'\n')).hexdigest(), digests[-1]) + for allow, path, expected in zip(config['allowlists'][17:], paths, [digests, digests[1:]], strict=True): + self.assertEqual(allow['targetRules'], ['generic-api-key']) + self.assertEqual(allow['condition'], 'AND') + self.assertEqual(allow['regexTarget'], 'line') + self.assertEqual(allow['paths'], ['^' + re.escape(path) + '$']) + for other in [path + '.backup', 'src/secrets.json', 'eng/policy/dependency-reviews/other.json']: + self.assertIsNone(re.fullmatch(allow['paths'][0], other)) + for pattern, digest in zip(allow['regexes'], expected, strict=True): + self.assertIsNotNone(re.fullmatch(pattern, f' "{source}": "{digest}",')) + for line in [f'"{source}": "' + '0' * 64 + '"', + f'"secret_key": "{digest}"', f'"{source}": "ghp_actual_credential"', + f'"{source}": "{digest}", "token": "extra"']: + self.assertIsNone(re.fullmatch(pattern, line)) + def setUp(self): self.policy = json.loads((ROOT / POLICY).read_text()) self.graph = inventory(ROOT) def test_current_closure(self): - self.assertEqual(audit(stable=True)['result'], 'passed') + self.assertEqual(audit()['result'], 'passed') + with self.assertRaisesRegex(ValueError, 'Stable closure contains prerelease: nuget:arcforges.contracts.'): + audit(stable=True) def test_forbidden_licence(self): next(iter(self.policy['closure'].values()))['licence'] = 'AGPL-3.0-only' @@ -128,7 +155,7 @@ def test_public_internal_guard_required(self): def test_secret_scan_exceptions_are_exact_public_source_rows(self): config = tomllib.loads((ROOT / '.gitleaks.toml').read_text()) self.assertEqual(config['extend'], {'useDefault': True}) - self.assertEqual(len(config['allowlists']), 17) + self.assertEqual(len(config['allowlists']), 19) allow = config['allowlists'][0] self.assertEqual(allow['targetRules'], ['generic-api-key']) self.assertEqual(allow['condition'], 'AND') @@ -278,7 +305,7 @@ def test_secret_scan_exceptions_are_exact_public_source_rows(self): self.assertIsNone(re.fullmatch(config['allowlists'][12]['paths'][0], 'eng/provenance/artifact-profiles/dokka-2-2-0-r8.json')) for source in sources: self.assertEqual(hashlib.sha256((ROOT / source).read_bytes().replace(b'\r\n', b'\n')).hexdigest(), self.policy['inputHashes'][source]) - self.assertEqual([len(item['regexes']) for item in config['allowlists']], [4, 2, 15, 4, 15, 45, 60, 4, 4, 4, 4, 4, 60, 2, 4, 15, 4]) + self.assertEqual([len(item['regexes']) for item in config['allowlists']], [4, 2, 15, 4, 15, 45, 60, 4, 4, 4, 4, 4, 60, 2, 4, 15, 4, 3, 2]) if __name__ == '__main__':