docs: distinguish provider requirements from selections

This commit is contained in:
2026-08-10 19:06:57 +09:00
parent 9671cc2feb
commit d7c57e97e8

View File

@@ -936,7 +936,8 @@ A `ww.package` action consumes:
- the compiler/backend and toolchain resources; - the compiler/backend and toolchain resources;
- B/H/T, target descriptor, profile, language/compiler/export/object/runtime - B/H/T, target descriptor, profile, language/compiler/export/object/runtime
protocols, and manifest/lock schemas; protocols, and manifest/lock schemas;
- package-specific native-provider declarations; and - package-specific predeclared native-provider slots, distinct from selected
concrete provider declarations; and
- its literal built-in environment and sandbox policy. - its literal built-in environment and sandbox policy.
It emits `.wwe`, one target object, and canonical link metadata. A private change It emits `.wwe`, one target object, and canonical link metadata. A private change
@@ -1244,7 +1245,7 @@ A profile is toolchain data, not an open project map:
| 9 | environment | sorted literal map, no secrets | | 9 | environment | sorted literal map, no secrets |
| 10 | input slots | sorted `(name, edge kind, producer/output or source ref, type, mode)` | | 10 | input slots | sorted `(name, edge kind, producer/output or source ref, type, mode)` |
| 11 | source selection | ordered selected membership plus reasons | | 11 | source selection | ordered selected membership plus reasons |
| 12 | native/link template | closed provider and ordered link records | | 12 | native/link template | closed predeclared provider slots, concrete providers, and ordered link records |
| 13 | outputs | sorted name/path/type/mode/canonicalization | | 13 | outputs | sorted name/path/type/mode/canonicalization |
| 14 | sandbox/reproducibility | exact policy/version/bounds/class | | 14 | sandbox/reproducibility | exact policy/version/bounds/class |
@@ -1257,6 +1258,14 @@ ABI/layout/contract digests embedded in a referenced sidecar or contract are
semantic verification values, not authority to read another object. No producer semantic verification values, not authority to read another object. No producer
action key substitutes for a content digest. action key substitutes for a content digest.
The tag-12 native/link record separately encodes the sorted predeclared provider
slots, concrete selected-provider declarations, and the optional ordered link
policy or resolved plan. A `ww.package` action contains exactly its
`PackageConfigV1` native-slot list and empty concrete-provider and link-policy/
plan values; finalization copies that slot list unchanged. Concrete provider
selection does not enter a package action merely because the provider satisfies
one of those slots.
Finalization interns every source, direct export, package/native object, archive, Finalization interns every source, direct export, package/native object, archive,
shared library, header/sysroot tree, generated output, tool/resource, CRT, shared library, header/sysroot tree, generated output, tool/resource, CRT,
loader, script, and init dispatcher into exactly one named template input. loader, script, and init dispatcher into exactly one named template input.
@@ -1534,7 +1543,10 @@ canonical type graph; 8 sorted exported declarations/constants/foreign symbols;
defines excluded non-semantic fields. `PackageLinkV1` (`.wwlm`) tags are 1 schema, defines excluded non-semantic fields. `PackageLinkV1` (`.wwlm`) tags are 1 schema,
2 package identity, 3 platform/object/runtime ABI, 4 package-object digest, 5 2 package identity, 3 platform/object/runtime ABI, 4 package-object digest, 5
defined/required foreign symbols, 6 predeclared provider slots/contracts, 7 init defined/required foreign symbols, 6 predeclared provider slots/contracts, 7 init
symbol/dependency facts, 8 install/link requirements. It cannot add a graph edge. symbol/dependency facts, 8 install/link requirements. Tag 6 contains exactly one
compiler-derived `ProviderContractV1` for each package action tag-12 predeclared
slot, and its sorted slot projection must equal that predeclared list. It cannot
add a provider slot or graph edge.
`InstallManifestV1` tags are 1 schema, 2 product identity/key, 3 sorted entries `InstallManifestV1` tags are 1 schema, 2 product identity/key, 3 sorted entries
`(artifact digest, mode, relative destination)`, 4 runtime-resolution policy, 5 `(artifact digest, mode, relative destination)`, 4 runtime-resolution policy, 5