@@ -7,14 +7,15 @@ description: Coordinate substantial module work across an orchestrator session a
77
88Substantial module work is easier to review and integrate when it is split into
99small, independently verifiable changes. Use one parent (orchestrator) session
10- to own the plan and integration branch , and use narrowly scoped child sessions
11- for the work that can proceed independently.
10+ to own the plan and integration, and use narrowly scoped child sessions for the
11+ work that can proceed independently.
1212
1313This complements [ Module bootstrap] ( ../get-started/module-bootstrap.md ) . During
1414bootstrap, the shared branch is an ** integration branch** for the load-bearing
15- core. For a larger change to an existing module, it is usually a ** release
16- branch** representing the intended release. In both cases, child pull requests
17- target the shared branch and the parent owns the pull request to ` main ` .
15+ core. For an existing module, follow the repository's
16+ [ trunk-based development] ( ../specification/principles-and-practices.md#trunk-based-development )
17+ default: child pull requests use short-lived branches and target ` main ` .
18+ Use a stacked pull request only when a dependency requires it.
1819
1920## Roles and boundaries
2021
@@ -23,13 +24,13 @@ target the shared branch and the parent owns the pull request to `main`.
2324The orchestrator:
2425
2526- defines the outcome, boundaries, dependencies, and acceptance criteria
26- - creates the integration or release branch and its draft pull request to
27- ` main `
27+ - creates the bootstrap integration branch and its draft pull request to
28+ ` main ` when the module needs one
2829- gives each child one reviewable unit of work and the branch it must target
2930- keeps shared design decisions, naming, and cross-cutting changes coherent
3031- reviews each child pull request, runs the relevant validation, and integrates
3132 it into the shared branch
32- - owns release readiness and the final pull request to ` main `
33+ - owns release readiness for the coordinated change set
3334
3435The orchestrator coordinates the work; it does not become a second place where
3536the implementation is silently changed. Changes outside a child's scope should
@@ -43,8 +44,10 @@ describe its change without referring to unrelated planned work.
4344
4445Each child:
4546
46- 1 . starts from the shared integration or release branch
47- 2 . opens a ** draft pull request** targeting that branch, not ` main `
47+ 1 . starts from ` main ` , or from the bootstrap integration branch when one is
48+ required
49+ 2 . opens a ** draft pull request** targeting ` main ` , or the bootstrap integration
50+ branch when one is required
48513 . implements and validates only its assigned scope
49524 . updates the documentation and tests required by that scope
50535 . reports the result to the orchestrator before asking for integration
@@ -93,20 +96,22 @@ specific validation pass.
9396
9497### Integrate deliberately
9598
96- Merge children into the shared branch only after their checks and review are
97- complete. Integrate independent children in any order. For dependent work,
98- either wait for the prerequisite to merge or make the dependency explicit in a
99- stacked branch arrangement; do not make a child appear independent by copying
100- unreviewed changes.
99+ Merge children only after their checks and review are complete. Merge
100+ independent children into ` main ` in any order. For dependent work, either wait
101+ for the prerequisite to merge or make the dependency explicit in a stacked
102+ branch arrangement; do not make a child appear independent by copying
103+ unreviewed changes. During bootstrap, merge children into the integration
104+ branch, then merge that branch to ` main ` when the load-bearing core is ready.
101105
102- Keep the shared branch buildable. Resolve conflicts in the orchestrator's
103- context, rerun affected checks after integration, and record any cross-cutting
104- decision in the relevant pull request or issue.
106+ Keep ` main ` or the bootstrap integration branch buildable. Resolve conflicts in
107+ the orchestrator's context, rerun affected checks after integration, and record
108+ any cross-cutting decision in the relevant pull request or issue.
105109
106110## Release readiness
107111
108- Keep the parent pull request to ` main ` in draft until the shared branch is a
109- coherent release candidate. Before marking it ready, confirm:
112+ Release readiness is a property of the integrated change, not a reason to keep
113+ a long-lived release branch. Before marking a bootstrap integration pull
114+ request ready, or reporting a coordinated trunk-based change complete, confirm:
110115
111116- every child pull request is merged, closed with a documented reason, or
112117 explicitly deferred with a follow-up issue
@@ -118,12 +123,13 @@ coherent release candidate. Before marking it ready, confirm:
118123 [ test specification] ( ../reference/test-specification.md )
119124- user-facing documentation, examples, and generated-help inputs describe the
120125 integrated behavior
121- - the release pull request records the outcome, links the child pull requests,
122- and identifies related issues without claiming unrelated work
126+ - the parent or coordinating pull request records the outcome, links the child
127+ pull requests when one exists, and identifies related issues without claiming
128+ unrelated work
123129- the version and prerelease intent match
124130 [ Versioning and releases] ( versioning-and-releases.md )
125131
126- If the branch is not ready, keep the parent pull request in draft and create
132+ If the change is not ready, keep the relevant pull request in draft and create
127133another focused child task or follow-up issue. Once it is ready, follow [ Your
128134first release] ( ../get-started/your-first-release.md ) and the canonical MSX
129135[ definition of ready for review] ( https://msx.no/docs/Ways-of-Working/Definition-of-Ready-and-Done/#definition-of-ready-for-review ) .
@@ -132,10 +138,8 @@ first release](../get-started/your-first-release.md) and the canonical MSX
132138
133139- Use [ Module bootstrap] ( ../get-started/module-bootstrap.md ) when a new module
134140 needs a load-bearing core before its first release.
135- - Use a release branch for a larger post-release effort, as described in
136- [ Principles and practices] ( ../specification/principles-and-practices.md ) .
137- - Use an ordinary topic branch for a self-contained change that does not need
138- coordination across several child sessions.
141+ - For an existing module, use short-lived topic branches targeting ` main ` , as
142+ described in [ Principles and practices] ( ../specification/principles-and-practices.md ) .
139143- Use a stacked pull request only when the changes genuinely depend on one
140144 another; see [ MSX branching and
141145 merging] ( https://msx.no/docs/Ways-of-Working/Branching-and-Merging/ ) .
0 commit comments