native-build: introduce executor model

This commit is contained in:
2026-04-06 05:26:34 +02:00
parent 006ffee615
commit f41a916f45
14 changed files with 961 additions and 106 deletions

View File

@@ -337,7 +337,7 @@ Current metadata split:
The promoted store objects record explicit Fruix-native metadata including at least:
- executor / executor-version
- executor kind / name / version
- run-id / guest-host-name
- closure path
- source store provenance
@@ -353,6 +353,42 @@ This is the current Fruix-native answer to the question:
- where should immutable native-build identity live?
- `/frx/store/...`
### Native-build executor model
Fruix now has an explicit executor model for native base builds.
Current executor kinds are:
- `host`
- `ssh-guest`
- `self-hosted`
and the intended future extension points are:
- `jail`
- `remote-builder`
The important change is architectural:
- declared source identity stays the same
- expected artifact kinds stay the same
- result/promotion metadata shape stays the same
- only the executor policy changes
So “where the build runs” is now treated as executor policy rather than as a separate native-build architecture each time.
Current end-to-end validated executors for the staged-result-plus-promotion model are:
- `ssh-guest`
- `self-hosted`
Both now converge on the same Fruix-native flow:
1. run the build under a selected executor
2. stage a result root under `/var/lib/fruix/native-builds/...`
3. emit the same promotion/provenance shape
4. promote the result into immutable `/frx/store/...` objects
## Deployment patterns
### 1. Build-first workflow