ww: invalidate partial package commits
This commit is contained in:
@@ -4558,7 +4558,17 @@ loader-owned deterministic error before producers. Compiler-owned scope or use
|
||||
errors may invoke the compiler, but the driver removes that action's staged
|
||||
`.new` unit/export/assembly/object/archive files instead of renaming them. No
|
||||
completion/status marker is written, and no publication occurs after a failed
|
||||
compile.
|
||||
compile. If an artifact rename itself fails after an earlier rename has
|
||||
published part of a new generation, the driver removes every committed unit
|
||||
voucher as well as the remaining staged files. Before the first artifact
|
||||
rename, it must successfully remove the workdir identity stamp; failure is a
|
||||
pre-commit rejection that leaves the prior artifact generation untouched. The
|
||||
stamp remains absent after any partial commit, and later actions in that
|
||||
invocation cannot take the freshness shortcut. Each non-reusable action also
|
||||
loses its old unit voucher before its producers run. The next request must
|
||||
therefore rebuild the incomplete action set and reconsider direct importers; a
|
||||
partly replaced `.wwi` or a failed importer can never make an old importer
|
||||
voucher look fresh.
|
||||
|
||||
Package kind follows the declaration. `package main`, not a path component,
|
||||
marks a command. A path ending in `main` remains importable when it declares a
|
||||
|
||||
@@ -236,7 +236,12 @@ union; command and production/internal/external/generated-main variants retain
|
||||
canonical action ownership; vendor expansion changes identity but not the
|
||||
declared qualifier; compiler argv contains only direct `.wwi` inputs; and its
|
||||
named rejected actions leave neither committed nor staged action artifacts or a
|
||||
published binary. Together with the existing directory, recursive, vendor,
|
||||
published binary. It also forces a staged multi-artifact commit to fail after
|
||||
the interface rename, then proves that both stages invalidate old unit vouchers
|
||||
and reconsider the importer rather than accepting a mixed warm generation. A
|
||||
separate injected stamp-removal failure proves the pre-commit gate leaves all
|
||||
previously committed artifacts byte-identical.
|
||||
Together with the existing directory, recursive, vendor,
|
||||
exact-argv, command, and persistent-workdir observers, the package suite proves
|
||||
archive-only link argv and exact warm/rejection-state behavior without
|
||||
duplicating those broader mechanisms in this observer.
|
||||
|
||||
Reference in New Issue
Block a user