docs: close Phase 0 protocol gaps

This commit is contained in:
2026-08-10 17:15:44 +09:00
parent 90afbb1c2e
commit 9671cc2feb

View File

@@ -165,7 +165,7 @@ absence of a garbage collector says nothing about version resolution.
| **module** | A distributable, versioned source tree rooted by one `ww.mod`, declaring one globally stable module identity and containing zero or more packages. |
| **project** | The module or standalone package selected by the user's current command, including its declared products. |
| **workspace** | A local, non-published set of module-identity-to-directory overlays described by `ww.work`. It changes location, never identity. |
| **dependency** | A typed directed edge: package import, generated-input edge, tool edge, native-provider edge, runtime edge, or ordered link edge. The edge kind is never implicit. |
| **dependency** | A typed directed edge: package import, generated-input edge, tool edge, native-provider edge, runtime edge, ordered link edge, or source-input edge. A source-input edge is content-rooted and has no producer action; it is valid in template/final action inputs but never in `GraphEdgeV1`. The edge kind is never implicit. |
| **target/platform descriptor** | A canonical architecture/platform/ABI/object/CPU/runtime description. An action labels descriptors by role: execution `B`, product `H`, and optional compiler-output `T`. A target triple is only a short lookup name. |
| **artifact** | An immutable byte string or canonical directory tree produced by an action and named by a content digest. Materialized files are copies or links, not the artifact's identity. |
| **toolchain** | An immutable descriptor and content closure containing the compiler, action protocol, export/ABI versions, target descriptors, resource files, runtime implementations, and pinned assembler/linker/archive tools. |
@@ -394,13 +394,15 @@ The schema tables in section 6.9 close all remaining fields. There is
deliberately no general `[settings]` escape hatch.
The root `main` package is the default executable product, named after the
module's last segment. Libraries need no product declaration to be imported.
module's last segment, with explicit normalized linkage `dynamic` and runtime
`hosted`. Libraries need no product declaration to be imported.
Additional or non-default outputs are explicit:
```text
product "inspect" {
kind = "exe"
root = "cmd/inspect"
linkage = "dynamic"
}
```
@@ -1280,8 +1282,9 @@ digest. `GraphSnapshotV1` tags are 1 schema, 2 logical root, 3 sorted
4 optional typed action-record digest, and 5 optional typed action-result digest.
`GraphEdgeV1` tags are 1 consumer node ID, 2 consumer input slot, 3 producer node
ID, 4 producer output name, and 5 edge kind; edges sort by that five-field tuple.
Non-action source inputs live only in the consumer template rather than invented
graph nodes. The project index contains only its typed graph-snapshot digest.
The `source-input` kind is invalid in `GraphEdgeV1`. Non-action source inputs
live only in the consumer template rather than invented graph nodes. The project
index contains only its typed graph-snapshot digest.
#### Target, toolchain, native, interface, and handoff records
@@ -2093,6 +2096,7 @@ select one explicitly:
product "hello" {
kind = "exe"
root = "."
linkage = "dynamic"
providers = [
{ slot = "c:zlib@1", use = "example.org/zlib#zlib-linux-aarch64" }
]