Skip to content

Commit 6744ca2

Browse files
Give module coordination and review explicit author actions
1 parent a351032 commit 6744ca2

2 files changed

Lines changed: 86 additions & 85 deletions

File tree

Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
---
22
title: Module development orchestration
3-
description: Coordinate substantial module work across an orchestrator session and narrowly scoped child sessions, then integrate it safely for release.
3+
description: Coordinate scoped module changes through an orchestrator, child sessions, and verified integration.
44
---
55

66
# Module development orchestration
77

8-
Substantial module work is easier to review and integrate when it is split into
9-
small, independently verifiable changes. Use one parent (orchestrator) session
10-
to own the plan and integration, and use narrowly scoped child sessions for the
11-
work that can proceed independently.
8+
Coordinate module work as small, independently verifiable changes. Use one
9+
parent (orchestrator) session for the plan and integration. Assign independent
10+
work to narrowly scoped child sessions.
1211

13-
This complements [Module bootstrap](../get-started/module-bootstrap.md). During
14-
bootstrap, the shared branch is an **integration branch** for the load-bearing
15-
core. For an existing module, follow the repository's
12+
During [Module bootstrap](../get-started/module-bootstrap.md), the shared
13+
**integration branch** holds the load-bearing core. For an existing module,
14+
follow the repository's
1615
[trunk-based development](../specification/principles-and-practices.md#trunk-based-development)
1716
default: child pull requests use short-lived branches and target `main`.
1817
Use a stacked pull request only when a dependency requires it.
@@ -27,36 +26,34 @@ The orchestrator:
2726
- creates the bootstrap integration branch and its draft pull request to
2827
`main` when the module needs one
2928
- gives each child one reviewable unit of work and the branch it must target
30-
- keeps shared design decisions, naming, and cross-cutting changes coherent
29+
- keeps shared design decisions, naming, and cross-cutting changes consistent
3130
- reviews each child pull request, runs the relevant validation, and integrates
3231
it into the shared branch
3332
- owns release readiness for the coordinated change set
3433

35-
The orchestrator coordinates the work; it does not become a second place where
36-
the implementation is silently changed. Changes outside a child's scope should
37-
become a new child task or an explicitly recorded decision.
34+
The orchestrator does not change a child's implementation without a recorded
35+
scope decision. For changes outside a child's scope, the orchestrator should
36+
create a separate child task or record an explicit decision.
3837

3938
### Child session
4039

41-
A child session owns one cohesive change, such as one public function and its
42-
tests, one documentation page, or one focused fix. A child should be able to
43-
describe its change without referring to unrelated planned work.
40+
A child session owns one cohesive change. Examples include one public function
41+
with tests, one documentation page, or one focused fix. A child should be able
42+
to describe its change without references to unrelated planned work.
4443

45-
Each child:
44+
For each assigned change:
4645

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
51-
3. implements and validates only its assigned scope
52-
4. updates the documentation and tests required by that scope
53-
5. reports the result to the orchestrator before asking for integration
46+
1. Start from `main` or the required bootstrap integration branch.
47+
2. Open a **draft pull request** that targets the same branch.
48+
3. Implement only the assigned scope. Validate the assigned change.
49+
4. Update the documentation and tests required by that scope.
50+
5. Before you request integration, report the result to the orchestrator.
5451

55-
Use the repository's normal [branching and merging
52+
Follow the repository's [branching and merging
5653
practice](https://msx.no/docs/Ways-of-Working/Branching-and-Merging/) and the
57-
shared [workflow](https://msx.no/docs/Ways-of-Working/Workflow/) for the
58-
ordinary branch, draft PR, implementation, test, and review loop. This page
59-
only describes how to coordinate several such changes.
54+
shared [workflow](https://msx.no/docs/Ways-of-Working/Workflow/) for branches,
55+
draft PRs, implementation, tests, and review. This page describes how to
56+
coordinate those changes.
6057

6158
## Coordination protocol
6259

@@ -73,9 +70,9 @@ The orchestrator's handoff should include:
7370
- the validation expected before the child reports completion
7471
- the orchestrator session's identifier or communication channel
7572

76-
If the child discovers a missing prerequisite or a conflicting design choice,
77-
it should stop at that boundary and report it rather than expanding its scope
78-
silently.
73+
If a prerequisite is missing or a design decision conflicts, the child should
74+
stop at that boundary. The child should report the problem instead of
75+
expanding its scope without a record.
7976

8077
### Require a useful completion report
8178

@@ -88,50 +85,53 @@ The child reports:
8885
- decisions or risks the orchestrator must review
8986
- follow-up issues for work that does not belong in the child pull request
9087

91-
The orchestrator treats this as input to review, not as a substitute for
92-
review. Read the diff, verify the acceptance criteria, and run the smallest
93-
relevant checks before merging. Use
88+
The completion report does not replace review. Before you merge, read the
89+
diff. Make sure that it satisfies the acceptance criteria. Run the smallest
90+
relevant checks. Use
9491
[Validating before review](validating-before-review.md) for the PSModule
95-
specific validation pass.
92+
validation pass.
9693

9794
### Integrate deliberately
9895

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.
96+
After checks and review are complete, merge independent child pull requests
97+
into `main` in any order. For dependent work, wait for the prerequisite to
98+
merge or use an explicit stacked branch arrangement. Do not copy unreviewed
99+
changes to make a child appear independent.
105100

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.
101+
During bootstrap, merge child pull requests into the integration branch.
102+
When the load-bearing core is ready, merge that branch to `main`.
103+
104+
Keep `main` or the bootstrap integration branch buildable. Resolve conflicts
105+
in the orchestrator's context. After integration, rerun the affected checks.
106+
Record cross-cutting decisions in the relevant pull request or issue.
109107

110108
## Release readiness
111109

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:
110+
Release readiness applies to the integrated change. It does not justify a
111+
long-lived release branch. Before you mark a bootstrap integration pull
112+
request ready, examine the integrated change against these conditions.
113+
Apply the same conditions before you report a coordinated trunk-based change
114+
complete:
115115

116116
- every child pull request is merged, closed with a documented reason, or
117117
explicitly deferred with a follow-up issue
118118
- the integrated branch passes the applicable build, test, lint, and
119119
documentation checks
120-
- the final tree still follows
120+
- the final tree follows
121121
[Structuring your module](structuring-your-module.md), the module
122122
[repository standard](../reference/repository-standard.md), and the
123123
[test specification](../reference/test-specification.md)
124124
- user-facing documentation, examples, and generated-help inputs describe the
125125
integrated behavior
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
126+
- if a parent or coordinating pull request exists, it records the outcome,
127+
links the child pull requests, and identifies related issues without claiming
128128
unrelated work
129129
- the version and prerelease intent match
130130
[Versioning and releases](versioning-and-releases.md)
131131

132-
If the change is not ready, keep the relevant pull request in draft and create
133-
another focused child task or follow-up issue. Once it is ready, follow [Your
134-
first release](../get-started/your-first-release.md) and the canonical MSX
132+
If the change is not ready, keep the relevant pull request in draft.
133+
Create a focused child task or follow-up issue for the remaining work.
134+
When the change is ready, follow [Your first release](../get-started/your-first-release.md) and the canonical MSX
135135
[definition of ready for review](https://msx.no/docs/Ways-of-Working/Definition-of-Ready-and-Done/#definition-of-ready-for-review).
136136

137137
## Relationship to other work
@@ -140,6 +140,6 @@ first release](../get-started/your-first-release.md) and the canonical MSX
140140
needs a load-bearing core before its first release.
141141
- For an existing module, use short-lived topic branches targeting `main`, as
142142
described in [Principles and practices](../specification/principles-and-practices.md).
143-
- Use a stacked pull request only when the changes genuinely depend on one
144-
another; see [MSX branching and
143+
- Use a stacked pull request only when one change depends on another.
144+
See [MSX branching and
145145
merging](https://msx.no/docs/Ways-of-Working/Branching-and-Merging/).

‎docs/content/guides/validating-before-review.md‎

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,89 @@
11
---
22
title: Validating before review
3-
description: PSModule-specific validation checks that extend the shared MSXOrg Build/Implement workflow step before a draft pull request is marked ready.
3+
description: Validate a module change against design, documentation, and PowerShell requirements before independent review.
44
---
55

66
# Validating before review
77

8-
Use this page after scaffolding a module change or implementing a function and before you finish self-review or mark a draft pull request ready. It extends the shared MSXOrg [Workflow Build step](https://msx.no/docs/Ways-of-Working/Workflow/#build) and [Implement guidance](https://msx.no/docs/Ways-of-Working/Workflow-Stages/Implement/) with the PSModule-specific validation checks that module repositories must pass.
8+
Use this sequence after you scaffold a module change or implement a function. Run it before you complete self-review or mark a draft pull request ready. It extends the shared MSXOrg [Workflow Build step](https://msx.no/docs/Ways-of-Working/Workflow/#build) and [Implement guidance](https://msx.no/docs/Ways-of-Working/Workflow-Stages/Implement/). Module repositories must satisfy these PSModule-specific validation requirements.
99

10-
Do not repeat the shared workflow here. Follow the shared branch → draft PR → implement → test → self-review loop first, then run this PSModule pass to confirm the change still fits the module's design, documentation, and PowerShell standards.
10+
Follow the shared branch → draft PR → implement → test → self-review loop first. Then run this author-side validation sequence for module design, documentation, and PowerShell standards.
1111

1212
## Validation sequence
1313

1414
1. **Module design alignment**
1515

16-
Confirm that the change fits the module's archetype and the module-specific design rules before reviewing individual files.
16+
Before you review individual files, make sure that the change fits the module's archetype and design rules.
1717

18-
Check:
18+
Make sure that:
1919

20-
- the module still follows the right archetype from [Module types](../reference/module-types.md)
21-
- the change respects the layout, private-helper boundaries, context rules, and SOLID guidance in [PowerShell module standard](../reference/powershell-module-standard.md)
20+
- the module follows the applicable archetype from [Module types](../reference/module-types.md)
21+
- the change follows the layout, private-helper boundaries, context rules, and SOLID guidance in [PowerShell module standard](../reference/powershell-module-standard.md)
2222
- the function belongs in this module instead of a different module, a shared helper, or a follow-up issue
2323

24-
A human contributor or agent should be able to explain why this change belongs in this module, in this shape, without inventing new local rules.
24+
A contributor or agent should be able to explain why this change and its design belong in this module. The explanation should not introduce local rules.
2525

2626
2. **Module documentation**
2727

28-
Confirm that the repository-level and group-level documentation still matches the delivered behavior.
28+
Make sure that the repository-level and group-level documentation describes the delivered behavior.
2929

30-
Check:
30+
Make sure that:
3131

32-
- `README.md` still answers the start-page questions and reflects any user-visible behavior, prerequisites, or setup changes from [Repository Standard](../reference/repository-standard.md#readme-default)
33-
- the relevant public command-group overview page (`src/functions/public/<Group>/<Group>.md`) exists or is updated when the change affects that group's purpose or usage, per [PowerShell module standard](../reference/powershell-module-standard.md#repository-layout)
34-
- any module-level documentation under `docs/` or other published surfaces is updated when the change adds or changes guidance that should not live only in comment-based help
32+
- `README.md` answers the start-page questions and reflects user-visible behavior, prerequisites, or setup changes from [Repository Standard](../reference/repository-standard.md#readme-default)
33+
- the relevant public command-group overview page (`src/functions/public/<Group>/<Group>.md`) exists or reflects changes to that group's purpose or usage, as required by [PowerShell module standard](../reference/powershell-module-standard.md#repository-layout)
34+
- module-level documentation under `docs/` or other published surfaces includes guidance that should not appear only in comment-based help
3535

36-
If the change teaches the user something new, confirm that the user can discover it from the published documentation surfaces, not only from the diff.
36+
If the change affects user guidance, make sure that users can find it in published documentation, not only the diff.
3737

3838
3. **Function structure**
3939

40-
Confirm that each changed function still follows the expected repository anatomy.
40+
Make sure that each changed function follows the repository layout.
4141

42-
Check:
42+
Make sure that:
4343

4444
- public functions live under `src/functions/public/<Group>/` and private helpers live under `src/functions/private/<Group>/`
4545
- file placement, grouping, and exported surface match [Structuring your module](structuring-your-module.md) and the layout rules in [PowerShell module standard](../reference/powershell-module-standard.md#repository-layout)
4646
- there are no nested helper functions, multi-function files, or naming shortcuts that break the "one declaration per file" rule
4747

48-
This step is about shape, not behavior: the goal is that a reader or tool can find the module surface and its helpers exactly where PSModule expects them.
48+
This step concerns file layout, not function behavior. The layout lets readers and tools locate the module's public functions and private helpers.
4949

5050
4. **Function documentation**
5151

52-
Confirm that every changed function carries complete comment-based help and that the help matches the implementation contract.
52+
Make sure that every changed function has complete comment-based help that matches the implementation contract.
5353

54-
Check:
54+
Make sure that:
5555

5656
- comment-based help is present for every changed function, including private helpers
5757
- help sections, examples, `.INPUTS`, `.OUTPUTS`, and parameter documentation match the function contract from [MSX PowerShell Functions](https://msx.no/docs/Coding-Standards/PowerShell/Functions/)
5858
- every public function has a first `.LINK` entry using an absolute HTTPS URL whose path matches the generated command documentation path
59-
- public-function links and usage examples are current enough that generated documentation will stay accurate
59+
- public-function links resolve and usage examples match the implemented parameters and outputs
6060

61-
Do not treat help as optional cleanup. In PSModule repositories, the function help is part of the delivered behavior.
61+
Function help is part of the delivered behavior in PSModule repositories. Do not defer help as optional cleanup.
6262

6363
5. **PowerShell best practices**
6464

65-
Confirm that the implementation still reads like idiomatic PowerShell after the mechanical checks pass.
65+
After the mechanical checks pass, review the implementation against the PowerShell standards.
6666

67-
Check:
67+
Make sure that:
6868

6969
- advanced-function structure, parameter typing and validation, `ShouldProcess`, output behavior, and error handling align with [MSX PowerShell](https://msx.no/docs/Coding-Standards/PowerShell/) and [MSX PowerShell Functions](https://msx.no/docs/Coding-Standards/PowerShell/Functions/)
70-
- the code also satisfies the PSModule-specific conventions in [PowerShell module standard](../reference/powershell-module-standard.md), especially around private helpers, context handling, and repository layout
71-
- PSScriptAnalyzer warnings are addressed or intentionally justified, but review does not stop there; also look for awkward parameter design, leaky transport details, non-idiomatic output, or code that technically passes lint but is not good PowerShell
70+
- the code satisfies the PSModule-specific conventions in [PowerShell module standard](../reference/powershell-module-standard.md), including private helpers, context handling, and repository layout
71+
- PSScriptAnalyzer warnings have fixes or intentional justifications
7272

73-
PSScriptAnalyzer is part of the validation loop, not the whole loop.
73+
Do not limit the review to PSScriptAnalyzer. Also examine parameter design, exposed transport details, output behavior, and deviations from PowerShell conventions, even when lint passes.
7474

7575
6. **Coding standards alignment**
7676

77-
Run one final cross-check against the shared MSX coding standards before leaving self-review.
77+
Before you complete self-review, compare the change with the shared MSX coding standards.
7878

79-
Check:
79+
Make sure that:
8080

8181
- naming, documentation, error handling, testing expectations, and security posture align with the relevant pages under [MSX Coding Standards](https://msx.no/docs/Coding-Standards/)
82-
- the change follows the shared "written once, referenced everywhere" rule by linking canonical guidance instead of copying it into local docs or code comments, as described in [Agentic Development](https://msx.no/docs/Capabilities/agentic-development/)
83-
- the draft PR description, issue progress, and any follow-up issues reflect what actually shipped and what still belongs out of scope
82+
- the change follows the shared "written once, referenced everywhere" rule from [Agentic Development](https://msx.no/docs/Capabilities/agentic-development/)
83+
- local documentation and code comments link to canonical guidance instead of copying it
84+
- the draft PR description, issue progress, and follow-up issues describe the delivered change and its exclusions
8485

85-
This is the last author-side gate before a PSModule draft PR is ready for independent review.
86+
This completes the author-side validation before independent review of a PSModule draft PR.
8687

8788
## Where this connects
8889

0 commit comments

Comments
 (0)