Files
werkator/docs/prs/2026-09-16-PR#74-branch-owned-follow-ups.md
miandmhoennig 1f48337249
werkator build succeeded after 02:20
werkator/deploy build succeeded after 00:07
Allow branch-owned sandboxed follow-up builds (#74) (#74)
Co-authored-by: mhoennig <michael@hoennig.de>
Reviewed-on: #74
2026-09-16 12:52:22 +02:00

64 lines
2.8 KiB
Markdown

> **WARNING:** This document describes only the change applied in this PR.
> It may already be outdated once the next PR is merged.
> Historic PR-documentation is not maintained along with new PRs — treat it as a snapshot, not as current documentation.
## The Problem
A branch could describe its tests but could not build downloadable samples after they passed.
All follow-up triggers were pinned, even when the follow-up inherited the same sandbox as the tests.
Deployment authority and ordinary build dependencies need different rules.
## Non-Goals
This change does not install Keluna's desktop build environment or enable ARM64 compilation.
It does not change sandbox policies, credential access or follow-up scheduling semantics.
## The Scenarios
### Feature: Branch-owned sandboxed follow-ups
#### Scenario#74.01: Build samples after successful tests
- **Given** a host-enforced Docker or Werkdock sandbox
- **When** a branch defines a sample build after its test build
- **Then** the sample build inherits the sandbox and runs at the successful test's commit
- **And** the branch can change an existing ordinary follow-up's predecessor and selectors
##### Verified by
- [ConfigLoaderTest](../../src/test/kotlin/de/hoennig/werkator/config/ConfigLoaderTest.kt)
- [FollowUpTriggerTest](../../src/test/kotlin/de/hoennig/werkator/watcher/FollowUpTriggerTest.kt)
#### Scenario#74.02: Keep deployments under host control
- **Given** an explicit host trigger or a follow-up with host execution, Docker socket access or instance restart
- **When** a branch tries to add or override its dependency
- **Then** the host policy remains in effect
- **And** sandboxed deployment triggers explicitly configured on the host stay pinned too
##### Verified by
- [ConfigLoaderTest](../../src/test/kotlin/de/hoennig/werkator/config/ConfigLoaderTest.kt)
#### Scenario#74.03: Reject cyclic dependencies
- **Given** a branch defining sandboxed follow-ups
- **When** their dependencies form a cycle
- **Then** configuration validation refuses that branch configuration
##### Verified by
- [ConfigLoaderTest](../../src/test/kotlin/de/hoennig/werkator/config/ConfigLoaderTest.kt)
## The Solution
Keep track of trigger blocks explicitly authored in instance defaults, the applied fragment and the repository's machine configuration.
Pin these blocks regardless of the sandbox.
Allow branch-owned follow-up dependencies only under the primary configuration's inherited sandbox policy, without Docker socket access or instance restart.
Preserve default sandbox flags even when a named build overrides only an environment variable and the branch removes its default definition.
Existing cycle validation and follow-up execution at the predecessor's commit remain in place.
## Additional Changes
Version 1.19.0 documents the new behavior in the release notes, configuration reference and init template.