fix(targets): admit distinct host slices and one-sided digests (#10016)

* fix(targets): select a preferred Mach-O host subtype

Host admission refused every extra slice of the host CPU type, so arm64
plus arm64e and arm64e ABI variants never became universal targets. Rank
known subtypes and keep the earliest capability variant. Identical
subtypes and ties between unlisted bases still fail closed.

* fix(artifacts): treat a one-sided declared digest as metadata

An all-zero Godot MD5 was visible only because limitation text differed.
After comparison stopped using that prose, a claim on one side and no
claim on the other lost its metadata dimension. Compare the structured
integrity claim instead.

* fix(browser): keep unavailable resource inventories unknown

Directional coverage treated a resource retained from an invalid protocol
tree as an addition against a complete peer. An unavailable collection is
not a truncated sample, so it cannot prove membership.

* fix(native): read the admitted Mach-O slice for metadata

Capability-variant admission chose the first slice, then dispatch
metadata and slice tools ranked the FAT file again and rejected that
pair. Pass the admitted offset, and refuse a winner set that repeats
a subtype.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
This commit is contained in:
morlutoandCursor Agent authored and GitHub committed 2026-11-11 03:41:55 -05:00
1 parent 30f96aef39
commit ada8fcfe82
17 files changed
+536 -38

No files matched your search

+3 -2
View File
@@ -164,8 +164,9 @@ export interface BinaryTargetResolverOptions {
/**
* Resolve and classify a readable local target before a provider is selected.
* FAT Mach-O inputs select the host-compatible architecture, otherwise their
* first declared supported slice, so setup remains non-interactive; unsupported
* FAT Mach-O inputs select the host-compatible slice. Several subtypes of that
* family use subtype preference, then the earliest capability variant.
* Otherwise the first foreign family declared once is selected. Unsupported
* or ambiguous inputs are returned as typed errors.
*/
export const parseBinaryTarget = async (