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;
- B/H/T, target descriptor, profile, language/compiler/export/object/runtime
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.
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 |
| 10 | input slots | sorted `(name, edge kind, producer/output or source ref, type, mode)` |
| 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 |
| 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
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,
shared library, header/sysroot tree, generated output, tool/resource, CRT,
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,
2 package identity, 3 platform/object/runtime ABI, 4 package-object digest, 5
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
`(artifact digest, mode, relative destination)`, 4 runtime-resolution policy, 5