Skip to content

Commit 443ee45

Browse files
committed
docs
1 parent 3cad6c8 commit 443ee45

3 files changed

Lines changed: 22 additions & 15 deletions

File tree

AGENTS.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ This file defines how AI agents work in this solution.
2121
- Solution root: `.` (`DotPilot.slnx`)
2222
- Projects or modules with local `AGENTS.md` files:
2323
- `DotPilot`
24+
- `DotPilot.ReleaseTool`
2425
- `DotPilot.Tests`
2526
- `DotPilot.UITests`
2627
- Shared solution artifacts:
@@ -141,7 +142,11 @@ For this app:
141142
- `global.json` pins the .NET SDK and Uno SDK version used by the app and tests
142143
- `DotPilot/DotPilot.csproj` keeps `GenerateDocumentationFile=true` with `CS1591` suppressed so `IDE0005` stays enforceable in CI across all target frameworks without inventing command-line-only build flags
143144
- GitHub Actions workflows must use descriptive names and filenames that reflect their purpose; do not use a generic `ci.yml` catch-all because build validation and release automation are separate operator flows
144-
- GitHub Actions must be split into at least one validation workflow for normal builds/tests and one release workflow for version bumping, release-note generation, desktop publishing, and GitHub Release publication
145+
- GitHub Actions must be split into at least one validation workflow for normal builds/tests and one release workflow for CI-driven version resolution, release-note generation, desktop publishing, and GitHub Release publication
146+
- the release workflow must run automatically on pushes to `main`, build desktop apps, and publish the GitHub Release without requiring a manual dispatch
147+
- desktop release versions must use the `ApplicationDisplayVersion` value in `DotPilot/DotPilot.csproj` as a manually maintained two-segment prefix, with CI appending the final segment from the build number (for example `0.0.<build-number>`)
148+
- the release workflow must not take ownership of the first two version segments; those remain manually edited in source, while CI supplies only the last numeric segment and matching release tag/application version values
149+
- for CI and release automation in this solution, prefer existing `dotnet` and `MSBuild` capabilities plus small workflow-native steps over Python or adding a separate helper project for simple versioning and release-note tasks
145150
- prefer MIT-licensed GitHub and NuGet dependencies when they materially accelerate delivery and align with the current architecture
146151
- prefer official `.NET` AI evaluation libraries under `Microsoft.Extensions.AI.Evaluation*` for response-quality, tool-usage, and safety evaluation instead of custom or third-party evaluation stacks by default
147152
- prefer `Microsoft Agent Framework` telemetry and observability patterns with OpenTelemetry-first instrumentation and optional Azure Monitor or Foundry export later
@@ -313,6 +318,7 @@ Ask first:
313318
### Likes
314319

315320
- Follow the canonical MCAF tutorial when bootstrapping or upgrading the agent workflow.
321+
- Commit cohesive code-change batches promptly while debugging, especially before switching focus or starting long verification runs, so the branch state stays inspectable and pushable.
316322
- Keep the root `AGENTS.md` at the repository root.
317323
- Keep the repo-local agent skill directory limited to current `mcaf-*` skills.
318324
- Keep the solution file name cased as `DotPilot.slnx`.

docs/ADR/ADR-0002-split-github-actions-build-and-release.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ That shape no longer matches the repository workflow:
1616

1717
- normal validation should stay focused on build and test feedback
1818
- release publishing has different permissions, side effects, and operator intent
19-
- the release path now needs version bumping in `DotPilot/DotPilot.csproj`
19+
- the release path now needs CI-derived version resolution from `DotPilot/DotPilot.csproj`
2020
- desktop releases must publish platform artifacts and create a GitHub Release with feature-oriented notes
2121

2222
Keeping all of that in one catch-all workflow makes the automation harder to reason about, harder to secure, and harder to operate safely.
@@ -30,23 +30,22 @@ We will split GitHub Actions into two explicit workflows:
3030
- runs on normal integration events
3131
- does not publish desktop artifacts or create releases
3232
2. `release-publish.yml`
33-
- runs only from explicit release intent through `workflow_dispatch`
34-
- may run only from `main` or `release/*`
35-
- bumps `ApplicationDisplayVersion` and `ApplicationVersion` in `DotPilot/DotPilot.csproj`
36-
- tags the release, publishes desktop outputs for macOS, Windows, and Linux, and creates the GitHub Release
33+
- runs automatically on pushes to `main`
34+
- resolves the release version from the two-segment `ApplicationDisplayVersion` prefix in `DotPilot/DotPilot.csproj` plus the GitHub Actions build number
35+
- publishes desktop outputs for macOS, Windows, and Linux, and creates the GitHub Release
3736
- prepends repo-owned feature summaries and feature-doc links to GitHub-generated release notes
3837

3938
## Decision Diagram
4039

4140
```mermaid
4241
flowchart LR
4342
Change["Push or pull request"]
44-
ReleaseIntent["Manual release dispatch"]
43+
ReleaseIntent["Push to main"]
4544
Validation["build-validation.yml"]
4645
Release["release-publish.yml"]
4746
Quality["Format + build + analyze"]
4847
Tests["Unit + coverage + UI tests"]
49-
Version["Version bump in DotPilot.csproj"]
48+
Version["Version resolved from DotPilot.csproj prefix + CI build number"]
5049
Publish["Desktop publish matrix"]
5150
GitHubRelease["GitHub Release with feature notes"]
5251
@@ -72,7 +71,7 @@ This keeps unrelated concerns coupled and makes ordinary CI runs carry release-s
7271

7372
Rejected.
7473

75-
The repository needs the release version recorded in `DotPilot/DotPilot.csproj`, not only in Git tags or GitHub Release metadata.
74+
The repository still needs a manual source-of-truth prefix in `DotPilot/DotPilot.csproj`, but the final build segment should be CI-derived so every `main` release is unique without generating a release-only source commit.
7675

7776
### 3. Store release notes entirely as manual workflow input
7877

@@ -85,19 +84,20 @@ That makes release quality depend on operator memory instead of repo-owned histo
8584
### Positive
8685

8786
- Validation runs are easier to understand and remain side-effect free.
88-
- Release automation has a clear permission boundary and operator trigger.
87+
- Release automation has a clear permission boundary and automatic `main` trigger.
8988
- Desktop publish artifacts move to the workflow that actually needs them.
9089
- Release notes now combine GitHub-generated notes with repo-owned feature context.
90+
- Release numbers stay predictable: humans own the major/minor prefix in source and CI owns the last segment.
9191

9292
### Negative
9393

94-
- Release automation now depends on branch write permissions for the workflow token or an equivalent release credential strategy.
95-
- The repository gains dedicated helper scripts for version bumping and release-note generation that must stay aligned with `DotPilot.csproj`.
94+
- Release automation now depends on the GitHub Actions run number remaining a suitable build-number source for releases.
95+
- The repository gains workflow-owned release logic that must stay aligned with `DotPilot.csproj`, git history, and `docs/Features/`.
9696

9797
## Implementation Impact
9898

9999
- Rename the old validation workflow to `build-validation.yml`.
100-
- Add `release-publish.yml` plus repo-owned scripts for version bumping and release-summary generation.
100+
- Add `release-publish.yml` with workflow-native `dotnet`/`git` steps for release-version resolution and release-summary generation.
101101
- Update `docs/Architecture.md` and root governance rules to reference the split workflow model.
102102

103103
## References

docs/Architecture.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ This file is the required start-here architecture map for non-trivial tasks.
1010
- **Current product shell:** [../DotPilot/](../DotPilot/) already contains the visual workbench concepts that future work must preserve: a left navigation shell, a central session surface, a right-side inspector, and a separate agent-builder surface.
1111
- **Target runtime direction:** the planned product architecture uses an embedded `Orleans` silo, `Microsoft Agent Framework` orchestration, provider adapters for external agent runtimes, local runtime adapters, `MCPGateway` for tool federation, `RagSharp` for repo intelligence, and OpenTelemetry-first observability.
1212
- **Planning artifacts:** the control-plane direction is captured in [ADR-0001](./ADR/ADR-0001-agent-control-plane-architecture.md), the CI/release workflow split is captured in [ADR-0002](./ADR/ADR-0002-split-github-actions-build-and-release.md), and the operator experience is captured in [agent-control-plane-experience.md](./Features/agent-control-plane-experience.md).
13-
- **Automated verification today:** [../DotPilot.Tests/](../DotPilot.Tests/) contains in-process `NUnit` tests, [../DotPilot.UITests/](../DotPilot.UITests/) contains browser-driven `Uno.UITest` UI coverage, GitHub Actions `Build Validation` gates normal changes, and `Desktop Release` owns version bumping, desktop publishing, and GitHub Release publication.
13+
- **Automated verification today:** [../DotPilot.Tests/](../DotPilot.Tests/) contains in-process `NUnit` tests, [../DotPilot.UITests/](../DotPilot.UITests/) contains browser-driven `Uno.UITest` UI coverage, GitHub Actions `Build Validation` gates normal changes, and `Desktop Release` runs automatically on pushes to `main` to publish desktop artifacts and create the GitHub Release.
1414

1515
## Scoping
1616

@@ -161,7 +161,8 @@ flowchart TD
161161
- The preferred runtime direction is an embedded `Orleans` host with `Microsoft Agent Framework`.
162162
- Provider integrations are SDK-first where viable.
163163
- Evaluation should use `Microsoft.Extensions.AI.Evaluation*`, and observability should be OpenTelemetry-first.
164-
- GitHub Actions now separates validation from release so normal CI stays fast and side-effect free while release automation owns versioning, desktop publishing, and GitHub Release publication.
164+
- GitHub Actions now separates validation from release so normal CI stays fast and side-effect free while release automation owns desktop publishing and GitHub Release publication on `main`.
165+
- Desktop release versions are derived from the two-segment `ApplicationDisplayVersion` prefix in `DotPilot.csproj` plus the CI build number as the final segment.
165166

166167
## Known Repository Risks
167168

0 commit comments

Comments
 (0)