ww: package-level -c -o names the single package's test artifact

The last Open-driver-work bullet. `-c -o <name>` replaces the fixed
<package>.test stem for exactly one package; the coordinator rejects a
multi-package fan-out ("cannot use -o with multiple packages", Go's
`go test -o` rule) and -o without -c is rejected at the driver
("needs -c for a package target" — a plain run executes from the temp
root, so a caller-owned name has nothing to name). Both driver stages
byte-identical wording; -S keeps its single-file-only reject.

package_test gains the contract row (naming, fixed-stem absence,
artifact runs, both rejects, both drivers); the tree-mode -o row's
pinned wording follows the contract.
This commit is contained in:
2026-08-08 17:30:36 +09:00
parent cf90c50c38
commit 192ddd4c66
5 changed files with 150 additions and 22 deletions

View File

@@ -207,9 +207,14 @@ at every `-j` level, and `-j 1` — the default — matches the former
sequential loop exactly. Measured on the 31-package `lib/...` walk:
7.0s sequential, 2.4s at `-j 4`. With `-c`, it publishes each exact
`<package>.test` binary and adjacent `<package>.test.sepwork` tree in the
package directory; those become caller-owned artifacts. Without `-c`, it
removes the temporary binary and scratch with its workspace. The language
runtime owns individual `@test` functions.
package directory; those become caller-owned artifacts. `-c -o <name>`
names that artifact instead of the fixed stem, for exactly one package:
the coordinator rejects a multi-package fan-out ("cannot use -o with
multiple packages", Go's `go test -o` rule), and `-o` without `-c` is
rejected at the driver ("needs -c for a package target") because a plain
run always executes from the temp root. Without `-c`, it removes the
temporary binary and scratch with its workspace. The language runtime
owns individual `@test` functions.
Separate compilation is the only driver build path; no compatibility mode
switch remains.
@@ -320,11 +325,8 @@ timeout policy in this architecture.
## Open driver work
Carried over from the dissolved project plan; each is deliberate scope, not
drift:
- A package-level `-o` contract (single-file `ww test -o` exists; directory
packages publish fixed `<package>.test` stems under `-c`).
None; the package-level `-o` contract (the last carried bullet) landed as
`-c -o <name>` for exactly one package.
## Validation policy