feat: mirror OHOS kotlinx-coroutines-test 1.8.0-KBA-002 - #144
Merged
Conversation
bytemain
force-pushed
the
task141-coroutines-test-mirror
branch
from
August 18, 2026 15:47
15df8f7 to
6b67b92
Compare
Task #141 follow-up to task #93. Adds the frozen 45-file closure for org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0-KBA-002 and its available-at kotlinx-coroutines-test-ohosarm64 module, plus a Hosted carrier that validates the contract and resolves the authority bytes from an empty cache. The file set is empirical: the authority publishes no directory listing, so it was derived from Gradle module metadata and then probed. Neither coordinate ships a .spdx.json, and only the OHOS module has a javadoc jar, so this closure is not shaped like task #121/#127. The authority actually supplies 50 files for these two coordinates, not 45. The difference is the root -kotlin-tooling-metadata.json and its 4 checksum sidecars, which take no part in dependency resolution and are absent from Raft for the already-published sibling family kotlinx-coroutines-core 1.8.0-KBA-002 and atomicfu 0.23.2-KBA-001. This task keeps that family shape and mirrors 45, but the gap is now named in the manifest and bound by contract as authority_files=50, because a create-only Maven write can never be yanked. The 45-vs-50 split was measured by a 228-probe suffix sweep, and the probe grid is recorded in the manifest so the next coordinate does not depend on recall. The resolver asserts module metadata only for the OHOS platform module and checks the root as artifact bytes. Resolving the multiplatform root on a JVM runner selects jvmApiElements-published, which redirects via available-at to kotlinx-coroutines-test-jvm, a platform this task does not mirror; that redirect is a property of the resolving host, not of the frozen bytes. The run prints that the mirrored root resolves for OHOS targets only. atomicfu 0.23.2-KBA-001 and kotlinx-coroutines-core 1.8.0-KBA-002 are already public. kotlin-stdlib 2.0.21-KBA-001 is absent from Raft but is a pre-existing condition of the already-published and already-consumed coroutines-core-ohosarm64, so it is recorded as a conditional closure member and is not published by this task. This commit publishes nothing. Plan is ALL_ABSENT 45/45, 0 conflict. Signed-off-by: BiSheng <raft-mobile-bisheng@mail.build>
bytemain
force-pushed
the
task141-coroutines-test-mirror
branch
from
August 18, 2026 16:16
6b67b92 to
586df6f
Compare
bytemain
marked this pull request as ready for review
August 18, 2026 18:05
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task #141 follow-up to task #93, requested by @mingqi.
What this does
Freezes and mirrors the OHOS
kotlinx-coroutines-testgraph into Raft Artifactswith original coordinates and exact Tencent authority bytes:
org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0-KBA-002org.jetbrains.kotlinx:kotlinx-coroutines-test-ohosarm64:1.8.0-KBA-002This PR publishes nothing. No token, PUT, dispatch or consumer change.
The
publishjob is skipped and runs only on explicitworkflow_dispatchwithpublish=true.Exact
586df6f3fe66d75ab268aab0b046dc697f4feb673dbfd5adc69b871b0bc72277f150d49e6842e6e7bfd6ddda2bf21a29ed4cfb960aeef991d561cd876934159d1036df56e1776c9120a030afbc42a310+396/-0, single commit, DCO signedFrozen closure
c22ae909916db9e2d2732124710a08aff0cb36a79c08c24b210f30788af6f56557c45a26d73f97b28e8a81c7b7c7a95e79e6c8663461409c67143ead73977675Primaries: root
.pom/.module/.jar(metadata, 14,799) /-sources.jar;ohosarm64
.pom/.module/.klib(78,170) /-sources.jar/-javadoc.jar.The file set is empirical, not templated. The authority serves no directory
listing, so it was derived from Gradle module metadata and then probed for every
classifier and sidecar candidate. Two shape differences from task #121/#127 that
a reviewer should re-derive rather than assume: neither coordinate publishes a
.spdx.json, and the root has no-javadoc.jarwhile the OHOS module does.Disclosure: the mirrored root is OHOS-only
The first Hosted attempt (run
32155693516) failed and the failure was realsignal, not flake. Resolving the multiplatform root on a JVM runner selects
jvmApiElements-published, which redirects throughavailable-attokotlinx-coroutines-test-jvm-- a platform this task deliberately does notmirror.
That redirect is a property of the resolving host, not of the frozen bytes. The
resolver therefore asserts module metadata only for the OHOS platform module and
checks the root as artifact bytes, and the run prints:
Consequence a reviewer should weigh: after publication, a non-OHOS consumer
resolving this root from Raft alone would 404 on its platform module. That is in
scope as specified -- the task is the OHOS coroutine-test graph -- but it should
be an accepted, recorded limitation rather than a surprise.
Authority superset: 50 files, 45 mirrored
Review of task #142 by @cc-希乐 found a real gap my first probe grid missed. The
authority also supplies, for the root coordinate only:
I re-verified this independently, then ran a deliberately wide 228-probe suffix
sweep across both coordinates to check there was no third gap. Result: the
authority supplies exactly 50 files, this manifest freezes 45, and the
difference is exactly those 5.
Resolution: keep 45, disclose explicitly. Reasons:
kotlinx-coroutines-core:1.8.0-KBA-002and
atomicfu:0.23.2-KBA-001both have this file on the authority (200) andboth lack it on Raft (404, with their
.pomat 200 as positive control).Including it here would make this the only member of the family carrying it.
be added by a later task. Under irreversibility, excluding is the reversible
choice.
The record is now correct and machine-enforced rather than prose: the manifest
carries
authority_files=50, anexcluded=line naming the tooling metadata andits sidecars, an
authority_superset=note, the fullprobe_grid=used, and anauthority_listing=note that the authority answers a directory URL with HTTP200 and a not-browseable notice, never 404 — so a check treating "no listing"
as 404 would be reading the wrong signal.
authority_filesis bound in the task141contract and fails closed if edited.Dependency closure
The
ohosArm64ApiElements-publishedvariant declaresatomicfu:0.23.2-KBA-001,kotlinx-coroutines-core:1.8.0-KBA-002andkotlin-stdlib:2.0.21-KBA-001.The first two, with their
ohosarm64modules, are already public in Raft.kotlin-stdlib:2.0.21-KBA-001is Raft 404, but that gap is pre-existing andnot introduced here: the already-published and already-consumed
kotlinx-coroutines-core-ohosarm64:1.8.0-KBA-002declares the identicaldependency and resolves today because conflict resolution selects a higher
published stdlib (
2.0.21-KBA-003/2.0.21-KBA-010, both public).It is recorded as a conditional closure member and is not published here.
Per @mingqi, if the real empty-cache OHOS resolve turns out to require the stdlib
coordinate, the writer stops before PUT and reports rather than silently folding
it into this release.
Carrier contents
publish/predecessors/task141-coroutines-test-manifest.tsv-- the 45-row frozen manifesttools/raft-artifacts/mirror_maven_manifest.py-- adds the141contract bindingtools/raft-artifacts/test_mirror_maven_manifest.py-- 5 new tests, suite 20/20tools/raft-artifacts/task141-coroutines-test-resolver/-- empty-cache authority resolve.github/workflows/task141-coroutines-test-mirror.yml-- contract + resolve jobsCausal mutation coverage: inventory-packet binding, klib digest, authority
origin, and dropping one file each fail closed.
Hosted
Run
32159384473on this exact:source-contractSUCCESS,tencent-authority-resolveSUCCESS,publishSKIPPED. Compose PR Exact Matrix32159384595, Task12132159384430, Task12732159384559all SUCCESS.Contract suite is 22/22 with 5 causal mutations.
Gate order
frozen packet -> Hosted -> one independent review (I do not self-review) ->
create-only writer on the existing
RAFT_ARTIFACTS_PUBLISH_TOKENchannel ->anonymous byte readback -> empty-cache resolve -> Mobile OHOS
compileTest.No Mobile source edit and no consumer cutover in this task.