feat: introduce .buildmark.yaml configuration support and align related documentation#131
Conversation
- Add '## Configuration File' section to README.md after Usage - Add '# Configuration File' section to docs/user_guide/introduction.md covering connector settings, report sections, and item routing rules - Add BuildMark-Config-* requirements to build-mark.yaml requirements file Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
|
@copilot Now please update the design documentation - specifically docs/design/introduction.md and docs/design/build-mark/build-mark.md (the Software Structure, Folder Layout, and System Design. Specifically show the breakdown of System/Subsystem/Unit to handle the configuration file and use it in the tool. |
- Update docs/design/introduction.md:
- Add Configuration subsystem to Scope section
- Add Configuration subsystem (5 units) to Software Structure tree
- Add Configuration/ folder and files to Folder Layout
- Update docs/design/build-mark/build-mark.md:
- Add Configuration row to System Architecture table
- Add .buildmark.yaml row to External Interfaces table
- Update Data Flow diagram to show BuildMarkConfigReader
- Update Self-contained constraint to mention optional config file
- Add Configuration File section to Integration Patterns
- Create docs/design/build-mark/configuration/configuration.md:
- New Configuration subsystem design document
- Covers BuildMarkConfig, BuildMarkConfigReader, ConnectorConfig,
SectionConfig, and RuleConfig units
- Documents interfaces and interactions
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Done in commit 535ec3d. Three design files were updated:
Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
…figuration design - Fix MD060 table alignment issues in build-mark.md (ItemControls row) and configuration.md (BuildMarkConfig, SectionConfig, ReadAsync rows) - Expand ConnectorConfig interface table with GitHub and AzureDevOps properties - Add GitHubConnectorConfig unit with Owner, Repo, BaseUrl properties - Add AzureDevOpsConnectorConfig placeholder unit (reserved for future use) - Update Interactions section in configuration.md: GitHubRepoConnector reads GitHubConnectorConfig from result.Config.Connector.GitHub - Update repo-connectors.md Interactions: note GitHubConnectorConfig passed from Program via result.Config.Connector.GitHub - Update build-mark.md Configuration File pattern to describe GitHub property carrying GitHubConnectorConfig passed to GitHubRepoConnector - Add new units to Software Structure tree in introduction.md - Add GitHubConnectorConfig.cs and AzureDevOpsConnectorConfig.cs to Folder Layout Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
|
@copilot Now let's flow this new configuration stuff down to the other subsystems and units in the design document and requirements for both the new and existing subsystems and units. For example the GitHubRepoConnector should probably take a GitHubConnectorConfig. |
Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/18d8f83e-9584-40ef-92c9-fb55c24cd753 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Done in commit 40b8c58. The configuration types are now flowed through all affected units: Design docs updated:
Requirements files updated:
|
- Add BuildNotes subsystem docs (build-notes.md, build-information.md, item-info.md, version.md, version-tag.md, web-link.md) - Move ProcessRunner docs to Utilities subsystem - Add ItemRouter unit doc to RepoConnectors - Add GitHub sub-subsystem docs (github.md, github-repo-connector.md) - Add Mock sub-subsystem docs (mock.md, mock-repo-connector.md) - Update build-mark.md, introduction.md, utilities.md, repo-connectors.md - Update repo-connector-base.md, repo-connector-factory.md, self-test.md, validation.md - Delete old process-runner.md, github-repo-connector.md, mock-repo-connector.md from repo-connectors root Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
…nterval to Utilities Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/10baf5c8-912f-4c4a-ab60-5f7b6188be9f Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
…ies; fix Sub-Subsystem terminology Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/10baf5c8-912f-4c4a-ab60-5f7b6188be9f Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 104 out of 106 changed files in this pull request and generated 5 comments.
Comments suppressed due to low confidence (1)
src/DemaConsulting.BuildMark/Utilities/VersionInterval.cs:66
- If
LowerBound/UpperBoundis non-null but not parseable as a version,Containscurrently ignores that bound (effectively treating it as unbounded). That can make invalid intervals match unexpectedly. Consider treating an unparsable bound as a non-match (return false), or validate bounds duringParseso invalid intervals are rejected earlier.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…it (#134) * feat: implement rules/sections routing integration - Add Configure and ApplyRules methods to RepoConnectorBase for centralized routing - Add HasRules protected property to detect when rules are configured - Add RoutedSections property to BuildInformation record - Update ToMarkdown to render custom sections when RoutedSections is set - Update MockRepoConnector to apply routing rules when configured - Update GitHubRepoConnector to apply routing rules when configured - Update Program.cs to call Configure on connectors created from config (not factory) - Add RunRulesRouting self-validation test to Validation.cs - Add unit tests: RepoConnectorBaseTests, extended MockRepoConnectorTests, BuildInformationTests, and GitHubRepoConnectorTests - Update design docs and reqstream yaml files Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> * fix: address code review feedback - Fix TestableRepoConnector.GetBuildInformationAsync to return minimal valid BuildInformation instead of null, preventing potential NullReferenceException - Improve comment on extra sections in ApplyRules to explain the scenario - Add comment explaining tuple discard in AppendRoutedSections loop Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> * Add rules routing docs, requirement, and end-to-end test for GitHubRepoConnector Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/14d76d1d-b9ef-4070-b14f-fa9dd3426801 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> * fix: resolve all lint failures (YAML line-length and markdown table alignment) Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/16b84817-c0a6-4fb9-a425-8242a9745659 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
* Fix all review issues: requirements linkage, README, design docs, test coverage Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/3918c333-4f67-42c8-9a1c-ee892f1a0db6 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> * Fix inverted assertion in BuildInformation ordering test Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/a37c8d0b-2277-4135-bca0-802186087981 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> * Fix review findings: TrimEnd in TryRunAsync, VersionInfo test AAA and property assertions, program.md and validation.md design docs Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/1960a6a1-8eb2-465d-9852-38a659d1eb30 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> * Fix review findings: correct MockRepoConnector hash lookup, ItemControlsParser empty set, ItemRouter tests and docs, RepoConnectorFactory async Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> * Fix ordering assertion: replace IsLessThanOrEqualTo with Assert.IsTrue for unambiguous ascending check Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/36222094-6d73-4faa-b11c-6bb4a2b7af7a Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> * Fix ordering assertion: use IsLessThanOrEqualTo(upperBound, value) with correct argument order Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/64c1829e-933a-47ec-893f-ce8d8483fe38 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> * Update self-validation to expect explicit build version hash Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/b612f886-71a8-4870-b5ef-b22e576547cf Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> * Major project refactoring * Move version units to a new Version subsystem. * Linting cleanups * Improve testing for requirements coverage. * Lint fixes. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> Co-authored-by: Malcolm Nixon <Malcolm.Nixon@hiarc.inc>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 144 out of 145 changed files in this pull request and generated 11 comments.
Comments suppressed due to low confidence (5)
src/DemaConsulting.BuildMark/Version/VersionIntervalSet.cs:57
VersionIntervalSet.Contains(VersionTag)currently delegates toversion.Numbers, which drops any pre-release information (e.g.,1.0.0-rc.1becomes1.0.0). This can yield incorrect containment results for intervals that include pre-release bounds. Delegate toContains(version.Semantic.Comparable)(orContains(version.Semantic.CompareVersion)) to preserve SemVer ordering.
src/DemaConsulting.BuildMark/RepoConnectors/ItemControlsParser.cs:24- Unused
using DemaConsulting.BuildMark.Utilities;will trigger build failures with analyzers when warnings are treated as errors. Remove the unused using.
docs/design/build-mark/version/version-interval.md:120 - This design doc refers to
VersionInfooverloads forVersionInterval/VersionIntervalSet, but the code implements overloads forVersionTaginstead. Update these method signatures/descriptions to match the current API so the design stays accurate.
docs/reqstream/build-mark/version/version-interval.yaml:39 - This requirements doc still references
VersionInfooverloads for interval containment, but the implementation usesVersionTag. UpdateVersionInforeferences toVersionTag(and remove the backward-compatibility rationale ifVersionInfono longer exists).
src/DemaConsulting.BuildMark/Version/VersionCommitTag.cs:23 using DemaConsulting.BuildMark.Version;is redundant here (the file is already innamespace DemaConsulting.BuildMark.Version;) and will be flagged as an unnecessary/unused using with code-style analyzers enabled. Remove the using directive.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@copilot apply changes based on the comments in this thread |
Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/fc411fd4-e97d-4512-980c-3447d83b1554 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Applied in 5248aa4. I updated the stale config/version docs and requirements to match the current implementation, removed the orphaned VersionInfo requirements file, fixed the Unix shell test arguments, removed the workflow BOM, and re-ran build, targeted tests, lint, and ReqStream validation successfully. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
Pull Request
Description
Introduces
.buildmark.yamlconfiguration support for BuildMark and aligns the surrounding implementation, design documentation, user documentation, and requirements with the current behavior.This update also incorporates follow-up review feedback by correcting stale configuration and version documentation, removing obsolete requirements content, fixing a portable shell-command test case, removing unused usings, and removing the UTF-8 BOM from the push workflow file.
Type of Change
Related Issues
Pre-Submission Checklist
Before submitting this pull request, ensure you have completed the following:
Build and Test
dotnet build --configuration Releasedotnet test --configuration Releasedotnet run --project src/DemaConsulting.BuildMark --configuration Release --framework net10.0--no-build -- --validateCode Quality
dotnet format --verify-no-changesQuality Checks
Please run the following checks before submitting:
./lint.sh(Unix/macOS) orcmd /c lint.bat/./lint.bat(Windows)Testing
Documentation
Additional Notes
Key updates included in this PR:
.buildmark.yamlconfiguration support and related design/requirements coverageVersionsubsystem structure andVersionTag-based APIsVersionInforequirements fileProcessRunnertest.github/workflows/build_on_push.yamlValidation performed during the update work:
dotnet builddotnet testdotnet tool restore && dotnet reqstream --requirements requirements.yaml --lint./lint.sh