Move a module on a merge only when its build source holds a changed file (hq ADR 0267, issue 363)

Every merge to the controller's repository planned the controller, the
build seat's holder and the route proxy in three gated tiers, whatever it
changed (issue 338). The planner now maps a merge's files onto the build
source each module's newest trunk build said: a README moves nothing, the
controller's command the controller alone, the proxy's program the proxy
alone. A module with none said, or one an open plan has yet to build, is
read whole as before. Sharing a repository draws no packages edge any more,
and one recorded before neither widens nor orders a plan.
This commit is contained in:
jochen
2026-10-10 03:11:11 +02:00
parent abe5f7dc17
commit 8da82dbe38
18 changed files with 543 additions and 140 deletions
+11
View File
@@ -226,10 +226,21 @@ type Module struct {
RollOut bool `json:"roll-out,omitempty"`
// Reads are the other repositories its build read source from.
Reads []string `json:"reads,omitempty"`
// Sources are the build source its newest build said it read, per repository (novox/hq ADR 0267): a
// context of Reads by name with its paths, or the module's own repository (Own). Absent, the module's
// build reads every file of each of Reads and of its own directory, as before.
Sources []BuildSource `json:"sources,omitempty"`
// Manifest is the module as the mesh holds it: artifacts resolved to the builds it runs.
Manifest json.RawMessage `json:"manifest"`
}
// BuildSource is the build source a module's build read in one repository (novox/hq ADR 0267).
type BuildSource struct {
Repository string `json:"repository,omitempty"`
Own bool `json:"own,omitempty"`
Paths []string `json:"paths"`
}
// Edge is one build dependency: From is built standing on To.
type Edge struct {
From string `json:"from"`