Hold a joining module at the build it ran, own its directories by its own group, and take a library only when its act is done (hq ADR 0328 review, ADR 0334)

A held module is composed exactly as before it joined, at the build its machine runs, so its port, resources and
contributions stay. A joining module's directories belong to its user and its own group, and its tools' directories
are refused closed to that group; the runner joins it where the engine can say so. A take records the root and is
taken only when the engine states the act done. Libraries' paths and verdicts count modules pulled in by a
requirement, and a unit takes the identity.
This commit is contained in:
2026-10-13 00:03:18 +02:00
parent 7ea6d36eab
commit 96e15f8693
16 changed files with 763 additions and 106 deletions
+4 -3
View File
@@ -261,9 +261,10 @@ type Rendering struct {
LibraryGroups map[string]int
TakenLibraries map[string]bool
LibraryPaths map[string][]string
// Held is, by module, the library a joining module that ran here before waits on: until every library it uses
// is taken its containers keep the user they ran as, so it is left out of the declaration (§8).
Held map[string]string
// RunnerJoinsOwnGroups says this machine's engine puts the tool runner's account in a joining module's own group
// (novox/hq ADR 0334 §2: its statement's contract is link.OwnGroupContract or later); to an older one the
// identity's runner is not sent.
RunnerJoinsOwnGroups bool
}
// RootField is a user resource's field saying the account must never become root without a person